16
58 Anuário da Produção de Iniciação Científica Discente 2006 Módulo rastreador veicular com software embarcado Autor: Márcio André Kviatkovski - Tec. em Programação e Desenvolvimento de Sistemas Professor Orientador: Ms. Marcelo Zani* Centro Universitário Anhanguera - Unidade Leme Artigo apresentado no 6º Congresso Nacional de Iniciação Científica - CONIC 2006 RESUMO Um Sistema Embarcado é um aparelho ou dispositivo contendo um hardware processado ou controlado que possa ser programado e de um software capaz de controlar o dispositivo (TAURION, 2005). Entretanto, este hardware necessita de um gerenciador que realizará as tarefas necessárias através de requisitos ao hardware, necessários para a realização do monitoramento de veículos a distância, sendo o software para estes sistemas conhecidos como softwares embutidos ou softwares embarcados, por serem gravados em uma memória especial dentro do dispositivo controlador ou processador do hardware. A versão de um software embarcado, instalado em um dispositivo recebe o nome de firmware. Desta forma, o presente trabalho descreve os procedimentos para a confecção de um dispositivo específico para rastreamento de veículos, dotado de um sistema telemétrico capaz de transmitir as informações de posicionamento e velocidade do veículo monitorado via rede de telefonia celular. O dispositivo poderá ser controlado ou monitorado através de um telefone celular comum. Palavras-chave: rastreabilidade, sistemas embarcados, monitoramento a distância. INTRODUÇÃO Nos últimos anos temos visto uma crescente utilização de sistemas embarcados em praticamente todos os objetos construídos pelo homem. Antes apenas utilizados em sistemas complexos como sistemas industriais, aeronaves e navios, hoje vêem sistemas embarcados em geladeiras, televisores e fornos de microondas. Um sistema embarcado é um sistema computacional de propósito específico, que é complementarmente encapsulado pelo dispositivo que controla. Diferente de sistemas de propósito geral, como um computador pessoal, um sistema embarcado possui necessidades específicas e realiza tarefas pré definidas. Dessa forma, um sistema embarcado pode ser entendido como sendo um sistema de controle computadorizado. O centro de muitos sistemas embutidos é um microprocessador ou um microcontrolador, programados para realizarem poucas tarefas (muitas vezes apenas uma tarefa). Essa característica separa os sistemas embarcados de outros sistemas computadorizados, que possuem hardware com propósito geral e carregam software externos dinamicamente. Muitas vezes, os sistemas embarcados também são destinados à produção em massa, o que reduz o custo e otimiza o produto (TAURION, 2005). OBJETIVOS Desenvolver de um dispositivo específico para o rastreamento de veículos, dotado de um sistema telemétrico capaz de transmitir as informações de posicionamento e velocidade do veículo monitorado via rede de telefonia celular. O dispositivo poderá ser controlado ou monitorado através de um telefone celular comum. METODOLOGIA Pesquisa bibliográfica sobre hardware e software *Bolsista FUNADESP

Módulo rastreador veicular com software embarcado

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Módulo rastreador veicular com software embarcado

58 • Anuário da Produção de Iniciação Científica Discente 2006

Módulo rastreador veicular com software embarcado

Autor: Márcio André Kviatkovski - Tec. em Programação e Desenvolvimento de SistemasProfessor Orientador: Ms. Marcelo Zani*

Centro Universitário Anhanguera - Unidade LemeArtigo apresentado no 6º Congresso Nacional de Iniciação Científica - CONIC 2006

RESUMO

Um Sistema Embarcado é um aparelho oudispositivo contendo um hardware processado oucontrolado que possa ser programado e de um softwarecapaz de controlar o dispositivo (TAURION, 2005).Entretanto, este hardware necessita de um gerenciadorque realizará as tarefas necessárias através de requisitosao hardware, necessários para a realização domonitoramento de veículos a distância, sendo o softwarepara estes sistemas conhecidos como softwaresembutidos ou softwares embarcados, por serem gravadosem uma memória especial dentro do dispositivocontrolador ou processador do hardware. A versão deum software embarcado, instalado em um dispositivorecebe o nome de firmware. Desta forma, o presentetrabalho descreve os procedimentos para a confecçãode um dispositivo específico para rastreamento deveículos, dotado de um sistema telemétrico capaz detransmitir as informações de posicionamento e velocidadedo veículo monitorado via rede de telefonia celular. Odispositivo poderá ser controlado ou monitorado atravésde um telefone celular comum.

Palavras-chave: rastreabilidade, sistemasembarcados, monitoramento a distância.

INTRODUÇÃO

Nos últimos anos temos visto uma crescenteutilização de sistemas embarcados em praticamente todosos objetos construídos pelo homem. Antes apenasutilizados em sistemas complexos como sistemasindustriais, aeronaves e navios, hoje vêem sistemas

embarcados em geladeiras, televisores e fornos demicroondas.

Um sistema embarcado é um sistemacomputacional de propósito específico, que écomplementarmente encapsulado pelo dispositivo quecontrola. Diferente de sistemas de propósito geral, comoum computador pessoal, um sistema embarcado possuinecessidades específicas e realiza tarefas pré definidas.Dessa forma, um sistema embarcado pode ser entendidocomo sendo um sistema de controle computadorizado.O centro de muitos sistemas embutidos é ummicroprocessador ou um microcontrolador, programadospara realizarem poucas tarefas (muitas vezes apenas umatarefa). Essa característica separa os sistemasembarcados de outros sistemas computadorizados, quepossuem hardware com propósito geral e carregamsoftware externos dinamicamente. Muitas vezes, ossistemas embarcados também são destinados à produçãoem massa, o que reduz o custo e otimiza o produto(TAURION, 2005).

OBJETIVOS

Desenvolver de um dispositivo específico para orastreamento de veículos, dotado de um sistematelemétrico capaz de transmitir as informações deposicionamento e velocidade do veículo monitorado viarede de telefonia celular. O dispositivo poderá sercontrolado ou monitorado através de um telefone celularcomum.

METODOLOGIA

Pesquisa bibliográfica sobre hardware e software*Bol

sist

a FU

NAD

ESP

Page 2: Módulo rastreador veicular com software embarcado

Anuário da Produção de Iniciação Científica Discente 2006 • 59

embarcado (escolha do material).Pesquisa para o desenvolvimento do protótipo

(hardware específico).Pesquisa sobre as tecnologias de GPS -

fundamental para a leitura da posição do módulo.Pesquisa sobre tecnologia de envio e recebimento

de informações através da rede de telefonia(caracterizando o módulo como telemétrico).

Desenvolvimento do software embarcado emlinguagem C.

Apresentação e testes do Protótipo final.Instalação em um veículo para testes a fim de

colher informações.Análise das informações colhidas.Constatação da funcionalidades (porcentagem de

eficiência).

DESENVOLVIMENTO

IntroduçãoOs sistemas embarcados são sistemas

computadorizados no consenso comum. Eles podemincluir todos os recursos especificamente incluídos noscomputadores comuns de uso geral. Os sistemasembarcados podem ser utilizados desde players portáteisde músicas até controladores em tempo real parasistemas espaciais (JASINSKI, 2006).

Muitos dos sistemas embarcados comerciais sãodestinados a fazer muitas tarefas a um custo baixo.Muitos, mas não todos, possuem limitações emprocessamento de tempo real, portanto são menosutilizados em sistemas críticos. Algumas operaçõespodem precisar de uma resposta muito rápida em algumasfunções, enquanto outras funções provavelmente nãonecessitem de velocidade. Esses sistemas devem serdimensionados com uma combinação entre o hardwareespecífico e o software, especialmente projetado paraos requisitos do sistema.

O software escrito para muitos sistemasembarcados, especialmente os que não possuem drivesde discos são muitas vezes chamados firmware. Portanto,o firmware é osoftware queestá embutidono dispositivode hardware,normalmenteem um ou maischip dememória ROMou memóriaFlash.

Os programas de um sistema embarcadofreqüentemente rodam com recursos limitados dehardware: normalmente ele não possuem drive de disco,sistemas operacionais, teclados ou monitores. O softwarenão pode ter nada remoto como em um sistema dearquivos, pois não há controladores de disco. Mas se umfor necessário, um drive de memória Flash pode substituirum drive mecânico. Se uma interface com o usuário énecessária, ela pode ser um teclado reduzido com umdisplay de cristal líquido, como monitor.

Os sistemas embarcados residem em máquinasque rodam continuamente por anos sem apresentaremerros. Contudo, o software embarcado é geralmentedesenvolvido e testado mais cuidadosamente que umsoftware para computadores pessoais. Muitos sistemasembutidos evitam partes mecânicas móveis como drivesde discos, chaves ou botões por esses dispositivos nãoserem muito confiáveis comparados com os componentesem estado sólido como uma memória Flash.

Além disso, o sistema embarcado pode estar forado alcance dos seres humanos (como em locais insalubresou de difícil acesso), então os sistemas embarcadosdevem ser capazes de se reiniciarem sempre que umacorrupção de dados catastrófica acontecer. Estafuncionalidade é usualmente efetuada por uma parteeletrônica chamada de watchdog timer, que reinicia ocomputador automaticamente a menos que o softwarenão o faça.

Módulo rastreador veicular com software embarcado

Page 3: Módulo rastreador veicular com software embarcado

60 • Anuário da Produção de Iniciação Científica Discente 2006

Constituição dos sistemas embarcadosBasicamente, todo sistema embarcado é

constituído por um hardware desenvolvidoespecificamente para uma determinada tarefa, umdispositivo microcontrolador ou microprocessador e umsoftware embutido na placa ou processador quecontrolará todo o conjunto.

O HardwareO hardware pode ser considerado como uma

motherboard (placa-mãe) de um computador pessoalcomum. Ela possui todas as ligações físicas necessáriasentre as partes, como alimentação elétrica, barramentode dados, entrada e saída de dados, conexões paracontrole de outros dispositivos elétricos e etc.Normalmente, o hardware é desenvolvido visando atenderà necessidade do projeto e nada mais (JASINSKI, 2006).

Seguem as fotos da montagem do hardwaredesenvolvido.

Unidade Central de ProcessamentoAliado ao hardware, há a unidade de

processamento central. Normalmente representada porum microcontrolador ou microprocessador.

Sistemas Embarcados MicrocontroladosSão pequenos sistemas computacionais bastante

poderosos que englobam em um único chip, interfacesde entrada/saída digitais e analógicas e alguns periféricos(memória RAM, memória Flash, interfaces seriais,conversores analógicos/digitais e temporizadores/contadores).

Os microcontroladores são responsáveis porexecutar e armazenar os programas escritos para eles(firmware). O crescimento dos sistemas embutidos muitose deve a este componente, devido à sua versatilidade,custo e praticidade no desenvolvimento. Devido a estesfatores, o microcontrolador é muito utilizado em sistemaembarcados de pequeno porte.

Existem diversos fabricantes, modelos e tamanhosde microcontroladores no mercado que atendem adiferentes aplicações e, de acordo com a necessidadedo seu projeto, adota-se aquele que apresentar a melhorrelação custo/benefício.

A figura aolado mostra omicrocon-troladorATmega8, da Atmel.Trata-se de umdispositivo comarquitetura RISCavançada. Realiza130 instru-ções epode executar até16 MIPS (milhõesde instruções por

segundo) à 16MHz. Possui 8Kb de memória Flash parao programa, 512Kb para armazenar dados e 1Kb dememória SRAM interna.

Sistemas Embarcados MicroprocessadosOs microprocessadores são componentes

dedicados ao processamento de informações comcapacidade de cálculos matemáticos e endereçamentode memória externa.

Utilizam barramento de dados, controle eendereços para fazer acesso aos periféricos de entradae saída e dependem de memória externa paraarmazenamento e execução do programa.

Normalmente possuem uma velocidade maior deprocessamento e são empregados em sistemas embutidosque exigem operações mais complexas.

Módulo rastreador veicular com software embarcado

Page 4: Módulo rastreador veicular com software embarcado

Anuário da Produção de Iniciação Científica Discente 2006 • 61

Ao contrário dos microcontroladores, por seremos microprocessadores mais destinados à cálculos eprocessamentos, estes dispositivos não possuemperiféricos embutidos (como portas seriais, conversoresA/D, etc.), memória RAM ou Flash para o programa.Ele depende de que estes componentes sejam interligadosexternamente a ele através de seu hardware. Devido aestes fatores, seu custo tende a ficar maior, possibilitandoa sua utilização apenas em sistemas de grande porte oude outras tarefas críticas.

Por outro lado, esses componentes adicionaispodem ser dimensionados conforme a necessidade e odesenvolvedor não fica preso ao que o dispositivofornece. É o caso de um programa muito grande quenão cabe na memória Flash de um microcontrolador.Neste caso, o desenvolvedor terá que usar uma memóriaFlash externa maior para comportar o programa, casonão seja possível reduzir o tamanho do programa. Nestecaso, o custo da memória Flash do microcontrolador estáperdido. Se o mesmo sistema embarcado utilizar ummicroprocessador, este custo adicional não existirá, poisnormalmente o microprocessador não possui memóriaFlash interna, e a memória externa poderá serdimensionada para comportar bem o firmware.

O Software EmbarcadoO software embarcado é o programa que controla

o microcontrolador ou microprocessador que, por sua vez,desempenham as suas funções finais através de seuhardware. Normalmente ele é escrito em uma linguagemde alto nível, como a linguagem C/C++, Pascal ou, atérecentemente, Java, mas também é muito difundido alinguagem Assembly para esta finalidade.

O software embarcado, instalado no móduloprocessador do equipamento, é o responsável por toda ainteligência instalada no dispositivo final, seja ele umtelefone celular, uma máquina de lavar roupas, ummicroondas ou um veículo (TAURION, 2005).

Utilizando técnicas de processamento em temporeal e o conceito de multitarefas, o software embarcadogarante o funcionamento preciso e rápida resposta dodispositivo embarcado.

O programa normalmente é escrito com a ajudade um computador pessoal. Através de um ambiente dedesenvolvimento integrado (IDE - integrated developmentenvironment), o desenvolvedor escreve o programa, faztestes através de simuladores e depois grava o programana memória Flash do microcontrolador por meio de umcabo de dados conectado entre a porta serial docomputador e um dispositivo gravador, especialmentevendido para gravar o microcontrolador.

Ao ladoestão ilustradasos passos para aprogramação domicrocontrola-dor. No primeiropasso, o progra-ma é escrito etestado; no se-

gundo passo, o programa é transferido para o hardwareprogramador, que grava o programa no microcontrolador.Em seguida, o microcontrolador é removido doprogramador e no quarto passo, inserido no hardware dosistema embarcado.

Existem situações onde a gravação pode ser feitadiretamente no hardware final do sistema embarcado.Este é o caso da linha de microcontroladores AVR daAtmel. Este tipo de processador utilizam a tecnologiaIn-System Programmable Flash para gravar diretamenteo programa no microcontrolador. Para tanto, basta que odesenvolvedor disponibilize a conexão necessária nohardware para gravar o programa.

Como nomodelo anterior,no primeiropasso foidesenvolvido osoftware etestado. Oprograma entãoé enviado a umprogramador(nº2), quetransfere o

programa diretamente para microcontrolador instaladono hardware embarcado (nº3).

Outros meios envolvem interação de outroshardwares, como In-Circuito Emulator (ICE) ou In-Circuit Debugger (ICD), mas basicamente o papel dessesaparelhos sãoos mesmos jádescritos.

Ao ladotemos a Placade CircuitoImpresso eM ó d u l oMontado.

Módulo rastreador veicular com software embarcado

Page 5: Módulo rastreador veicular com software embarcado

62 • Anuário da Produção de Iniciação Científica Discente 2006

Tipos de arquiteturas em softwareembarcados

Há diversos tipos básicos diferentes dearquiteturas do software em uso atualmente:

O controle por laço de repetição (ControlLoop)

Neste tipo de projeto, o software implementa umlaço de repetição do bloco executável (loop). Dentrodessa repetição são chamadas as sub-rotinas. Cadasubrotina gerencia uma parte do hardware ou software.Embora algumas interrupções possam ser feitas, elasgeralmente ajustam flags ou atualizam contadores quesão lidos pelo resto do software.

#include <avr/io.h>#include <stdio.h>

int main(void){

//Inicialização de variáveis ou sub-rotinas ...

//laço de repetição while(1)

{ sub_rotina_A();

sub_rotina_B(); }

return 0;}

O código apresentado é um exemplo de arquiteturacom controle por laço de repetição utilizando o compiladorGNU/gcc para microcontroladores AVR da Atmel.Repare que durante toda a vida útil do sistema, a repetiçãodo laço nunca acabará, o que garante a funcionalidade

do sistema. Se o controle de execução da rotina sair dolaço, o programa se dará como encerrado e processadornão executará nenhuma tarefa mais.

Existem pinos no microcontrolador que se foraplicado nível alto, baixo ou simplesmente mudar deestado, o dispositivo pode pular para uma função especial.Esta função é registrada no Vetor de Endereços deInterrupções do processador no momento em que oprograma é gravado no microcontrolador. Dessa forma,quando um interrupção está para acontecer, omicrocontrolador verifica se há uma rotina apontandopara a interrupção e a dispara.

Uma simples chamada de API (ApplicationProgram Interface) habilita ou desabilita as interrupções.Se for utilizada, as interrupções podem também chamarsub-rotinas e aguardar por outras interrupções quandoterminar a sua execução. Esta é uma das técnicas parase construir um exokernel. Exokernel é o nome de umsistema operacional desenvolvido pelo grupo “Parallel andDistributed Operating Systems” do MassachusettsInstitute of Technology (MIT), e trata-se de uma classesimilar de sistemas operacionais. A idéia dos exokernelsé dar o máximo de abstração possível aosdesenvolvedores, permitindo a eles escolher dentre tantasdecisões para atingir a funcionalidade do hardware.

Os tipos de interrupção são pré determinados naarquitetura do microcontrolador, ou seja, cada fabricantedetermina quais interrupções serão aceitas por seusmicrocontroladores, bem como em que momento serãodisparadas.

#include <avr/signal.h>

INTERRUPT(SIG_ADC){ //código da interrupção}

int main(void){ for (;;) { //Comandos opcionais. } return 0;}

No caso do exemplo acima, a interrupçãoSIG_ADC é gerada quando o conversor Analógico/Decimal (ADC) da família de microcontroladores AVRda Atmel completou sua operação. Note que, no exemploacima, é opcional a rotina main possuir alguma instrução.

Módulo rastreador veicular com software embarcado

Page 6: Módulo rastreador veicular com software embarcado

Anuário da Produção de Iniciação Científica Discente 2006 • 63

Como o software foi projetado para rodar umadeterminada rotina em uma situação específica, qualquercódigo adicional na rotina main não se torna necessário,a não ser que realmente seja necessário ativar algumaoutra sub-rotina ou inicialização de variáveis.

Tipicamente, há algumas sub-rotinas ordenadas noloop que gerenciam uma lista de softwares timers(contadores de tempo) usando uma interrupção de temporeal periodicamente. Quando um timer conta até atingirseu ponto auge, diz-se que ele expirou. Portanto, quandoum timer expira, uma subrotina associada a ele éexecutada, ou então um flag pode ser ajustado.

A programação usando interrupções (interrupçõesde hardware ou softwares timers) é muito poderosa, masna arquitetura de controle por laço de repetição, podeacontecer de uma subrotina dentro do loop demorar maisque o normal para executar. Se isto acontecer, e umainterrupção indevida ou inesperada for gerada antes dotérmino da subrotina, uma falha lógica pode comprometero restante da execução do software.

Cabe ao projetista do software prever falhas destetipo e prever em seu software o controle necessário paraevitar erros no funcionamento do sistema todo.

Para amenizar ainda mais a incidência de falhasna execução do programa, algumas funções complexas,como controle da combustão interna de um sistema deinjeção eletrônica, utilizam de tabelas multidimensionais.Em vez de fazerem cálculos complexos, o código entãopesquisa o valor correto na tabela. O software podeinterpolar entre várias entradas na tabela, reduzindo oseu tamanho e também o seu tempo de execução.

Uma fraqueza principal de um laço de controlesimples é que não garante um momento certo deresponder a qualquer evento de hardware.

Escrevendo cuidadosamente, o código podefacilmente assegurar que nada incapacite as interrupçõespor muito tempo durante a sua execução. Assim o códigoda interrupção pode funcionar em perfeito sincronismo.

Outra grande fraqueza deste sistema é que elepode se tornar complexo demais para se adicionar novascaracterísticas. Alguns algoritmos que levam muito tempopara rodar devem ser cuidadosamente quebrados paraque pequenas peças de códigos rodem a cada tempoatravés do laço principal.

A força deste sistema é sua simplicidade e empartes pequenas de software o laço é geralmenteexecutado rapidamente a ponto de se tornar muitoeficiente.

Outra vantagem é que este sistema garante que osoftware sempre será executado. Não há nenhum outrosistema operando de forma misteriosa para gerenciar osoftware embarcado.

Multitarefa Não PreemptivaEste sistema é muito similar ao anterior, exceto

que o laço de repetição está oculto em uma API. Estemétodo define uma série de tarefas, e cada tarefa começasua própria pilha de sub-rotinas. Então, quando uma tarefase torna obsoleta, ela chama uma rotina obsoleta(geralmente chamada “pause”, “wait”, “yield”, etc.)

Uma arquitetura com propriedades similares deveter uma fila do evento, e ter um laço de repetição queremova os eventos e chame as sub-rotinas baseadas emum campo da fila de entradas.

As vantagens e desvantagens são muito similarao controle por laço de repetição, exceto que adicionarnovo software se torna mais fácil. É necessário apenasescrever uma nova tarefa ou adicioná-la à fila deinterpretação.

Tarefas PreemptivasConsiderando os sistemas não preemptivos listados

acima, se forem rodados a partir de um temporizador ououtra interrupção preemptiva, teremos o conceito deTarefas Preemptivas.

Contudo, o sistema é completamente diferente.Qualquer peça de código pode danificar os dados de outratarefa – eles devem ser precisamente separados. Acessoa dados compartilhados deve ser rigidamente controladospor alguma estratégia de sincronismo, por exemplo, filasde mensagens ou semáforos. Recentemente, uma técnicachamada de sincronismo sem bloqueio foi desenvolvida.

Freqüentemente, neste estágio, as empresasdesenvolvedoras compram um sistema operacional detempo real de terceiros. Esta pode ser uma ótima decisãose a empresa não possuir funcionários com as habilidadespara escrever um, ou se o porte do sistema operacionaldo hardware será usado em diversos produtos.

Vantagens dos sistemas embarcadosQualquer equipamento eletro-eletrônico digital ou

analógico, pode conter um sistema embarcado. Isso fazcom que o equipamento apresente mais qualidade einteligência, tornando-se um diferencial no mercado,possibilitando novas e flexíveis funções que antes eramlimitadas pelo hardware.

Adotar um sistema embarcado em umequipamento pode assustar muitas empresas,principalmente as conservadoras, mais deixar essaevolução de lado é perder novos mercados e aoportunidade de aumentar o valor agregado do produto.

A indústria automobilística e de eletrodomésticos,são setores que estão a frente do assunto, com produtoscada vez mais digitais e programáveis. Um automóvel euma máquina de lavar, por exemplo, possuem recursos

Módulo rastreador veicular com software embarcado

Page 7: Módulo rastreador veicular com software embarcado

64 • Anuário da Produção de Iniciação Científica Discente 2006

que antigamente eram difíceis de imaginar e que hojesimplificam a vida das pessoas que os utilizam.

O grande crescimento nas vendas de aparelhosde telefonia móvel nos últimos anos, nos mostra o grandepotencial dos produtos que possuem sistemas embutidos.

Os segmentos que mais demandam uso destessoftwares são telecomunicações (35%), eletrônica deconsumo (20%), automação industrial (19%) e automotivo(10%), além de outros como sistemas médicos,aerospaciais dentre outros. Estes equipamentos tornam-se cada vez mais sofisticados, demandando mais e maiscomplexidade no seu hardware e software embarcado.

Abre-se um novo e promissor campo para osprofissionais e empreendedores de software, pois omercado mundial de software embarcado já é grande(estimado em mais de 21 bilhões de dólares) e crescerapidamente. Há pelo menos dez vezes mais dispositivosque embutem software, como celulares, set-top-boxes edispositivos eletrônicos em automóveis que emcomputadores pessoais, e esta diferença está seacumulando cada vez mais.

AplicaçõesOs sistemas embarcados podem ser aplicados em

pequenos projetos com microcontroladores simples detamanho inferior a 1 cm, e até mesmo em sistemasmicroprocessados interligados em rede, gerenciandograndes processos. Na maioria dos casos são aplicadosem máquinas e equipamentos.

É possível, por exemplo, substituir um CLP(Controlador Lógico Programável) em uma máquina delavar roupas de porte industrial, por um sistemaembarcado. A vantagem disso, é que a placa eletrônica(hardware) desenvolvida especialmente para a máquinade lavar atende ao número de entradas/saídas e possuium software (firmware) exclusivo com funcionalidadesoperacionais do equipamento. Isso reduz o custo e tornao equipamento proprietário e diferenciado.

Um painel elétrico também poderá conter umsistema embutido para controlar a iluminação do ambientede um shopping ou supermercado, o que permitirá umasupervisão centralizada das luzes acesas, em um ambientegráfico de fácil operação. A economia no consumo, porotimizar os recursos energéticos, oferecerá flexibilidadepara a operação e comodidade para os usuários.

Aplicações que exigem controle climático, podemcontar com os sistemas embutidos para gerenciar econtrolar sistemas de ar condicionado, fornos, câmarasfrias, etc.

As empresas desenvolvedoras de equipamentoelétrico ou eletrônico, analisam o fato de aumentar ainteligência de seus produtos com um sistema embarcado.

O custo compensará os novos recursos e benefícios queesse sistema trará ao equipamento/produto.

RESULTADO

Após testes realizados no protótipo derastreamento montado e instalado em um veículo pode-se verificar os resultados positivos dos testes defuncionalidades através de acionamentos realizados paraverificação do tempo de resposta do sistema emexecução, resultados estes, dentro dos parâmetrosestabelecidos pela engenharia de software como:eficiente, segurança e confiabilidade.

Veja abaixo os testes obtidos:

Módulo rastreador veicular com software embarcado

Page 8: Módulo rastreador veicular com software embarcado

Anuário da Produção de Iniciação Científica Discente 2006 • 65

CONCLUSÃO

Os sistemas embarcados são uma realidade cadavez mais crescente na tecnologia tanto internacional,quanto nacional. De fato, a construção de equipamentosmais inteligentes é uma tendência para o futuro, pois trásde forma rápida e prática o avanço tecnológico paradentro de nossas casas, em eletrodomésticos, eletro-eletrônicos em geral, nos veículos e outros aparelhos.

Os sistemas embarcados podem reduzir o custode fabricação dos aparelhos e dispositivos e trazer valoragregado, contribuindo para a concorrência de mercado.

Também cria novos empregos: abre espaço emum mercado de desenvolvimento especializado, até entãomuito fraco ou não existente.

Enfim, como todo avanço tecnológicoindispensável, os sistemas embarcados vieram para ficar,e em um futuro próximo, estaremos tão dependentesdesse consumo quanto a outros produtos contemporâneos.

REFERÊNCIAS BIBLIOGRÁFICAS

TAURION, C. Software Embarcado: A Nova Onda daInformática, primeira edição. Editora Brasport, São Paulo, SãoPaulo, Brasil, 2005.Tópicos em Desenvolvimento de Software Embarcado, porRicardo Jasinski. Disponível em<http://www.lme.citec.cefetpr.br/jasinski/>. Acesso em marçode 2006.Sistemas embarcados. Disponível em <http://pt.wikipedia.org/wiki/Sistemas_embarcados>. Acesso em março de 2006Embedded System. Disponível em <http://en.wikipedia.org/wiki/Embedded_system>. Acesso em março de 2006.Exokernel, definição. Disponível <http://en.wikipedia.org/wiki/Exokernel>. Acesso em março de 2006.Microcontroladores AVR. Disponível em<http://en.wikibooks.org/wiki/Atmel_AVR>. Acesso em marçode 2006.Data Sheet do ATmega8. Disponível em<http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf>. Acesso em março de 2006

Módulo rastreador veicular com software embarcado

Page 9: Módulo rastreador veicular com software embarcado

66 • Anuário da Produção de Iniciação Científica Discente 2006

Problema de seqüenciamento e dimensionamentode lotes com tempos e custos de preparação damáquina dependentes da seqüência utilizandoAlgoritmo Genético

Autor: Denilson Tadeu Ferrari - Ciência da ComputaçãoProfessora Orientadora: Ms. Jeanne Dobgenski*

Faculdades de ValinhosArtigo apresentado no 6º Congresso Nacional de Iniciação Científica - CONIC 2006Artigo premiado, CONIC 2006, na categoria concluído área de Engenharias e Tecnologias

*Bol

sist

a FU

NAD

ESP

RESUMO

Este trabalho descreve o problema deseqüenciamento e dimensionamento de lotes, com tempose custos de preparação da máquina dependentes daseqüência e propõe uma forma de solução baseada emalgoritmos genéticos. O objetivo do trabalho é obtersoluções factíveis e de qualidade. O algoritmo genéticoimplementado se mostrou viável para esta classe deproblemas.

Palavras-chave: otimização combinatória,problemas de seqüenciamento e dimensionamento delotes, algoritmos genéticos.

INTRODUÇÃO

Este trabalho trata do problema de seqüenciamentoe dimensionamento de lotes, com tempos e custos depreparação da máquina dependentes da seqüência que éum dos problemas existentes em ambiente de produção.

Este problema procura encontrar a seqüência emque os itens devem ser produzidos em cada período equal a quantidade de produção de cada item que está naseqüência de produção encontrada. Essa solução deveatender as demandas dos itens nos períodos, às restriçõesde disponibilidade de tempo (capacidade) para a produçãodos itens no período e as restrições de produção mínima.Todos esses dados são parâmetros do problema e são

fornecidos pela empresa. Além disso, a soluçãoencontrada para resolver o problema deve minimizar oscustos totais de produção.

Levando em consideração que nos dias atuais asindústrias procuram cada vez mais a eficiência naprodução, para atender as demandas dentro dos prazos,para ter o menor custo possível na produção e estocagemdos produtos, faz-se necessário o estudo deste problemapara determinar possíveis soluções.

Problemas desta natureza podem ser expressosmatematicamente. Segundo Luna e Goldbarg (2005) osmodelos de Pesquisa Operacional1 (PO) são estruturadosde forma lógica e amparados no ferramental matemáticode representação, objetivando claramente adeterminação das melhores condições de funcionamentopara os sistemas representados. Ou seja, os modelosmatemáticos auxiliam no entendimento do problema, suascaracterísticas e peculiaridades, de forma a facilitar aimplementação de uma técnica de solução voltada a esseproblema.

OBJETIVO

O objetivo deste estudo é o entendimento e acompreensão do problema de dimensionamento eprogramação de lotes com tempos e custos de preparaçãoda máquina (setup) dependentes da seqüência,considerando uma máquina, em que é abordado umameta-heurística de Algoritmo Genético (AG) para se

Page 10: Módulo rastreador veicular com software embarcado

Anuário da Produção de Iniciação Científica Discente 2006 • 67

obter as melhores soluções possíveis para o problema.O modelo matemático estudado é o apresentado por Meyr(1998).

METODOLOGIA

Para o entendimento e compreensão desteproblema foi necessário um levantamento bibliográfico eleitura de artigos relacionados ao problema matemático,que apresenta características de otimização combinatória,e a Algoritmo Genético.

Para a melhor compreensão do modelo matemáticoproposto por Meyr (1998) foram feitas simulações comexemplos numéricos, as quais foram executadasmanualmente para auxiliar na análise das minúcias doproblema. De forma a ser uma ferramenta importanteno momento da implementação do AG.

Apresentação do Problema

O problema de dimensionamento e programaçãode lotes apresenta muitas variáveis, parâmetros erestrições que influenciam na solução.

O horizonte de planejamento para este problema,consiste em um número pré-definido de macro-períodos(t) que são divididos em um número fixo de micro-períodos (s). É possível existir micro-períodos semprodução de algum produto, o qual será representado deforma negativa, indicando um item não produzido nomicro-período.

Parâmetros

Este problema apresenta diversos parâmetrosnecessários para a solução do problema, os quais sãodescritos nesta seção.

• Número de produtos ou itens (N) - é aquantidade de produtos diferentes.

• Número de períodos (M) - é a quantidade demacro-períodos no horizonte de planejamento.

• Conjunto de micro-período (St) - é o conjuntode micro-períodos pertencentes ao macro-período e é

um limitante ao número de produtos que será produzidodentro do macro-período.

• Demanda (dit) - regula a necessidade de se obterdeterminada quantidade do produto no macro-período t.

• Custo de estoque (hi) - é o custo que se tempara estocar uma unidade de produto num período t.

• Estoque inicial (Ii0) - é o estoque inicial doproduto no início do horizonte de planejamento.

• Capacidade disponível (Kt) - é a capacidadedisponível em tempo no macro-período t.

• Consumo da capacidade (ai) - é o consumoda capacidade em tempo necessário para se produziruma unidade do produto.

• Tempo de preparação da máquina (pij) - é otempo em que se leva para preparar a máquina paraproduzir um produto, sendo que a máquina se encontrapreparada para produzir outro produto.

• Tamanho mínimo do lote (Mi) - é a quantidademínima do produto que se pode produzir por lote.

• Estado de setup inicial (yi0) - estado depreparação da máquina, se a máquina se encontrapreparada ou não para produzir o produto no início dohorizonte de planejamento. 1 está preparada e 0 não estápreparada.

• Custo de preparação da máquina (c) - é ocusto que se tem em preparar a máquina para produzirdeterminado produto. Para a resolução do problema,pode-se utilizar duas formas de determinar o custo desetup:

Custo de setup independente da seqüência (cj):considera-se o custo de preparação doproduto j para o qual a máquina deverá serpreparada, independentemente, de qualproduto foi anteriormente produzido namáquina.

Custo de setup dependente daseqüência (cij): considera-se o custo depreparação dependente quando a alteraçãoda produção de um item i por outro j, possuicusto diferente da alteração do item j parao item i. Ou seja, se a máquina estava

preparada para produzir um item i e, precisou-se prepara-la para produzir o item j, com um custo cij, este custo édiferente daquele referente à preparação da máquina, aqual produziu o item j e necessita ser preparada para oitem i, com um custo cji.

Variáveis

As variáveis do problema são aquelas queinformarão a seqüência correta de produção, asquantidades de produção dos itens nos períodos e os

Problema de seqüenciamento e dimensionamento de lotes com tempos ecustos de preparação da máquina dependentes da seqüência utilizando Algoritmo Genético

Page 11: Módulo rastreador veicular com software embarcado

68 • Anuário da Produção de Iniciação Científica Discente 2006

estoques desses itens em cada período. As variáveisdevem, necessariamente, satisfazer todas as restriçõesdo problema simultaneamente.

• Custo final - Função objetivo - a função quecalcula o menor custo final possível de produção ao longodo horizonte de planejamento, dado por:

• Estoque (Iit) - é a quantidade em estoque doproduto i no macro-período t.

• Quantidade do produto produzido (xis) - é aquantidade do produto produzida no micro-período, sendoque a quantidade de produção não pode ser negativa(xise”0) e é restringida pelas restrições (3) e (4).

A restrição (3) restringe a quantidade produzidado item i dentro da capacidade disponível em cadamacro-período.

A restrição (4) indica que o item i só é produzidono micro-período s se a máquina está preparada paraele e, se a capacidade existente é suficiente para suaprodução.

• Estado de setup (yis) - é o estado depreparação da máquina para a produção do produto ino micro-período s, de forma que a máquina possaestar preparada para produzir apenas um produto noinício do micro-período s.

• Mudança de setup (zijs) - identifica se houveou não mudança de setup na máquina do produto i parao produto j no início do micro-período s.

A restrição (7) evita a ocorrência de alteração desetup sem a produção do item i. As restrições (7) e (8)

possuem características essenciais para o problema. Esteestudo é descrito a seguir, conforme trabalho desenvol-vido por Dobgenski (2006).

A restrição (7) evita que a máquina seja prepara-da para um produto sem que este seja produzido, o quepode levar a uma avaliação errada dos custos de prepa-ração da máquina numa solução ótima. Isto também ocor-re se a matriz dos custos de preparação da máquina nãosatisfizer a seguinte desigualdade triangular:

Se esta desigualdade (8) é satifeita, então otamanho mínimo do lote pode ser zero, isto é Mj = 0, nãohá necessidade da restrição (7). Esta desigualdadetriangular diz que o custo de preparar a máquina duasvezes, para a produção de produtos diferentes, deve sermaior ou igual ao custo de prepará-la uma única vez,para produzir um único produto. Mas, o contrário podeocorrer e ser a opção mais barata. Ou seja, para passarde um produto A para outro B (os quais deverão serproduzidos) pode ser mais barato preparar a máquina apartir de A para um outro item C (sem que este sejaproduzido) e então preparar novamente a máquina apartir de C para B, do que prepará-la a partir de A e irdiretamente a B. Esta é a razão de usar o tamanho mínimode lote. Observe o exemplo dado na Tabela 1.

O exemplo da tabela 1 foi executado no Gams emduas versões: uma considerando a restrição (7) e a outrafazendo Mj = 0. As duas soluções são listadas naTabela 2.

Problema de seqüenciamento e dimensionamento de lotes com tempos ecustos de preparação da máquina dependentes da seqüência utilizando Algoritmo Genético

Page 12: Módulo rastreador veicular com software embarcado

Anuário da Produção de Iniciação Científica Discente 2006 • 69

Observa-se que no modelo que não considera arestrição (7), foi realizada uma mudança do produto 2para o produto 1, no micro-período 3 (o que implica numcusto de preparar a máquina a partir do produto 2 paraproduzir o 1), e não houve produção do item 1, e emseguida mudança do produto 1 para o produto 3 (maisum custo de preparar a máquina a partir de 1 paraproduzir 3). Isto ocorreu porque é mais barato passar doproduto 2 para o 1 e daí para o 3, c21 + c13 = 3+3=6 ec23=8 e porque não foi limitada uma quantidade mínimade produção para cada item, como o Mj. Este exemplocausa uma avaliação errada na função objetivo, porquehouve uma preparação da máquina para um item quenão teve produção naquele momento, simplesmente, porser essa troca era mais barata. Mas não é isso que ocorrena realidade.

Para uma análise mais completa da restrição (7),pode-se verificar o que ocorre com a produção nasdiversas formas de estado de preparação da máquinadefinidas pela variável yjs. A Tabela 3 mostra o queacontece com a variável xjs para cada estado de yjs.

DESENVOLVIMENTO

Nesta seção é apresentado um resumo doAlgoritmo Genético e as definições necessárias para asua aplicação ao problema de seqüenciamento edimensionamento de lotes, com tempos e custos depreparação da máquina dependentes da seqüência.

Algoritmo Genético

A inteligência artificial tem muitas linhas de atuaçãoe, neste trabalho, aborda-se uma de suas linhas: oAlgoritmo Genético (AG). O AG pode ser definido como:“desenvolvimento de computações artificiais inspiradasnas computações biológicas realizadas pelos seres vivospara viver e se reproduzir” (BITTENCOURT, 1998).

O AG foi inventado por John Holland edesenvolvido por ele, seus alunos e companheiros naUniversidade de Michigan, nas décadas de 60 e 70.Holland não tinha a intenção de desenvolver um algoritmopara resolução de problemas, mas um estudo formal do

Problema de seqüenciamento e dimensionamento de lotes com tempos ecustos de preparação da máquina dependentes da seqüência utilizando Algoritmo Genético

Page 13: Módulo rastreador veicular com software embarcado

70 • Anuário da Produção de Iniciação Científica Discente 2006

fenômeno de adaptação natural e como estes mecanismospoderiam ser importados para a computação.

Características gerais dos AGs:• São algoritmos de otimização global, baseados

nos mecanismo de seleção natural e na genética;• Não são buscas aleatórias não-direcionadas, pois

exploram informações históricas para encontrar novospontos de busca onde são esperados melhoresdesempenhos (Rezende 2003).

O pseudocódigo 1 apresenta o diagrama geral dociclo de vida de um AG:

Representação

O primeiro passo a ser considerado para se utilizaros AGs é a representação das estruturas a seremutilizadas para que se possa trabalhar o problema daforma correta.

Os AGs trabalham com populações de indivíduosou cromossomos. Um cromossomo é representado poruma estrutura de dados, geralmente vetor ou cadeia devalores binários. E, neste artigo o cromossomo adotadoé o horizonte de planejamento (Figura 1), o qual representauma seqüência de produção para resolver o problema,cujo objetivo é a minimização dos custos de produção. Éimportante ressaltar que este estudo define apenas aseqüência de produção, sendo que a quantidade deprodução dos itens definidos na seqüência é calculadapor meio da função desenvolvida por Dobgenski (2001).

Neste estudo o critério de parada adotado é umnúmero definido de gerações ou a ocorrência de umaquantidade determinada de populações sem evolução.

Seleção

O principio básico dos AGs segue o critério deseleção natural proposto por Charles Darwin (1858) emseu livro “A Origem das Espécies” em que os indivíduos

procuram se cruzar com indivíduos mais aptos para gerarproles mais adaptadas.

Para que o processo de seleção privilegie osindivíduos mais aptos, a cada cromossomo é atribuídoum valor resultante de uma função objetivo.

A função objetivo ou fitness é uma informaçãosobre o cromossomo e, esta informação é a sua nota quereflete a qualidade da solução que ela representa.

• Método da Roleta

O método da roleta é o método de seleção, doscromossomos que sofrerão cruzamento, mais utilizadosem AG e seu funcionamento se baseia numa roleta,como a de jogos de azar. Isto é, cada indivíduo temuma probabilidade de ser sorteado. Esta probabilidadeé calculada com base em sua função objetivo, osindivíduos mais adaptados (melhor fitness) possuemmais chances de serem selecionados. Ou seja, cadaindivíduo da população é representado na roleta porfatias proporcionais ao seu fitness, conforme ilustra afigura 2 com as soluções S1, S2, S3 e S4, sendo queesta última possui a maior chance de escolha.

Operadores Genéticos

Um conjunto de operadores é necessário para queapós populações sucessivas possa ocorrer uma melhorano fitness. Estes operadores são: cruzamento (crossover)e mutação.

• Cruzamento Order Operator (OX)

O crossover OX constrói um descendenteescolhendo uma subseqüência do tour de um pai epreservando a ordem relativa do outro pai.

Problema de seqüenciamento e dimensionamento de lotes com tempos ecustos de preparação da máquina dependentes da seqüência utilizando Algoritmo Genético

Page 14: Módulo rastreador veicular com software embarcado

Anuário da Produção de Iniciação Científica Discente 2006 • 71

• Cruzamento Uniforme (Máscara)

O crossover de máscara não utiliza pontos decruzamento, mas determina, por meio de uma máscara,quais os genes de cada cromossomo que serão trocadosentre os pais.

• Mutação

O operador de mutação é necessário para inserçãoe manutenção da diversidade da genética da população,alterando qualquer gene da estrutura escolhida. Destaforma a mutação contorna o problema de mínimos locais,pois altera levemente a direção da busca.

• Estratégia Populacional

Ao final da geração de uma nova população épossível escolher quais indivíduos irão fazer parte da

próxima população. Para isso existem duasestratégias muito conhecidas:

• elitismo - trata-se da seleção dasmelhores soluções;

• salvacionismo - procura-se manter amelhor solução e os outros indivíduos sãoescolhidos aleatoriamente.

RESULTADOS COMPUTACIONAIS

A utilização de técnicas populacionaispara a resolução de problemas de otimização,assim como o Algoritmo Genético, é indicadapara formulações complexas que trabalham

com grande número de variáveis e restrições, como é ocaso do problema em estudo nesta pesquisa.

O AG foi testado com 40 instâncias do problema,que podem ser divididos em 4 grupos, como segue:

• Arquivos entre 01 e 10, representam o primeirogrupo que contém parâmetros como: 4 itens,6 períodos e 80% da capacidade disponívelutilizados para produção;

• Arquivos entre 11 e 20, representamo segundo grupo que contém parâmetroscomo: 4 itens, 6 períodos e 90% da capacidadedisponível utilizados para produção.

• Arquivos entre 21 e 30, representamo terceiro grupo que contém parâmetros como:4 itens, 5 períodos e 90% da capacidadedisponível utilizados para produção.

• Arquivos entre 31 e 40, representamo quarto grupo que contém parâmetros como:5 itens, 5 períodos e 90% da capacidadedisponível utilizados para produção.

Para a obtenção dos resultados foi utilizado umcomputador modelo IBM-PC com processador 1 GHz,memória 128 MB RAM, sistema operacional Windows2000. Para a codificação em linguagem C das técnicascomputacionais, apresentadas na seção anterior, utilizousoftware de licença gratuita o Dev-C++ com compilador

GCC.A técnica adotada para seleção dos

indivíduos que fariam parte da próxima geraçãoseria inicialmente um misto entre a duasestratégias descritas (elitismo e salvacionismo).Para isso seria mantido um percentual baixoda população selecionada por meio do elitismo,sendo o restante selecionado porsalvacionismo, caso a melhor solução já

houvesse sido selecionada no elitismo as demais seriamaleatoriamente escolhidas. Mas, como os resultados nãoforam satisfatórios optou-se por utilizar somente o

Problema de seqüenciamento e dimensionamento de lotes com tempos ecustos de preparação da máquina dependentes da seqüência utilizando Algoritmo Genético

Page 15: Módulo rastreador veicular com software embarcado

72 • Anuário da Produção de Iniciação Científica Discente 2006

salvacionismo, o que proporcionou uma boa exploraçãodo espaço de busca.

As tabelas 4, 5, 6 e 7 apresentam os resultadosobtidos para as 40 instâncias testadas. Foram utilizadaspopulações de 200 indivíduos com possibilidade de 500gerações. No entanto, ao passar 100 gerações semevolução o AG é finalizado. A diferença mencionada nastabelas é à distância em percentual entre a solução ótimae a solução obtida pelo AG.

Problema de seqüenciamento e dimensionamento de lotes com tempos ecustos de preparação da máquina dependentes da seqüência utilizando Algoritmo Genético

Page 16: Módulo rastreador veicular com software embarcado

Anuário da Produção de Iniciação Científica Discente 2006 • 73

Dentre os experimentos computacionais não foipossível encontrar soluções fatíveis para uma instânciado grupo 3 e três instâncias do grupo 4. É compreensívelque isto ocorra devido à complexidade do problema, emespecial esses dois grupos que possuem uma utilizaçãode 90% da capacidade disponível nos períodos para umasolução factível. Isto faz com que a capacidade restante(10%) seja limitada para efetuar cálculos em busca deuma solução factível para a instância testada.

Observa-se que ao utilizar o cruzamento OX, assoluções apresentaram baixa variação na solução final àmedida que houve aumento na taxa de mutação,conforme pode ser observado nas tabelas 6 e 7. Noentanto, ao observar as tabelas 4 e 5, verifica-se que ocruzamento máscara proporcionou maior variação nassoluções finais à medida que a taxa de mutação foiaumentada. Os melhores resultados foram encontradoscom uma taxa de crossover de 60% e taxa de mutaçãode 50%. O algoritmo foi capaz de obter soluçõessatisfatórias em um pequeno intervalo de tempo.

CONSIDERAÇÕES FINAIS

Todo modelo matemático consistente é umaferramenta importante na análise do comportamento doproblema, assim como, fornece as informaçõesnecessárias para as definições de estruturas de dadosadequadas e auxilia na implementação de rotinas quetratam de ações específicas do problema.

O bom desempenho do algoritmo genético paraeste problema é conseqüência direta da representaçãoescolhida. A divisão do cromossomo em partes distintassimplifica os processos de busca e a recombinação, aoreduzir o tamanho do espaço de busca. Porém existemmomentos em que o espaço de soluções deve serdiversificado, para isso utilizou a técnica de seleçãosalvacionista e a mutação.

Acredita-se que uma análise mais detalhada noalgoritmo de evolução empregado pode trazer aindamelhores resultados, mas é importante salientar que osresultados alcançados mostram a possibilidade emempregar técnicas evolucionistas para resolver essaclasse de problemas combinatórios, uma vez que técnicasexatas são inviáveis.

A continuação do estudo deste problema e detécnicas evolucionistas e populacionais para resolvê-lodeve ser explorada com mais profundidade, visto a grandevariedade de características apresentadas pelo problema.

REFERÊNCIAS BIBLIOGRÁFICAS

DOBGENSKI, J; Problema de sequenciamento e

dimensionamento de lotes, com tempos e custos de preparaçãoda máquina dependentes da seqüência, working paper,Unicamp, 2006.DOBGENSKI, J; Scatter Search aplicado ao problema dedimensionamento e programação de lotes em uma máquina,Revista de Informática, Valinhos, V. IV, N. 5, 163-182, 2001.LAKATOS, E. M. e Marconi, M. A., Fundamentos de metologiacientífica, Editora Atlas, 2001.LUNA, H. P. L.; GOLDBARG, M. C., Otimização Combinatóriae Programação Linear, Rio de Janeiro, Campus, 2005.MEYR, H., Simultaneous lotsizing and combining local searchwith dual reoptimization, Working paper, University ofAugsburg, July 1998.BITTENCOURT, Guilherme, Inteligência Artificial:Ferramentas e Teorias, Florianópolis, UFSG, 1998.MITCHELL, M., Intruduction to Genetic Algorithms,Massachusetts, London, England: The MIT Press, 1997.REZENDE, Solange O., Sistemas Inteligentes: fundamentos eaplicações, Barrueri, SP, Manole, 2003.DARWIN, Charles, A origem das espécies, Trad. de EugênioAmado. Belo Horizonte, Villa Rica, 1994.

NOTAS

1Pesquisa Operacional é uma tradicional disciplina quecongrega diversas das mais consagradas técnicas demodelagem matemática (LUNA E GOLDBARG, 2005).

Problema de seqüenciamento e dimensionamento de lotes com tempos ecustos de preparação da máquina dependentes da seqüência utilizando Algoritmo Genético