Página Principal Noções
Básicas Algoritmos
Genéticos Redes Neurais
Multiagentes
Cognição Software
Artigos Tutoriais
Links Quem
sou eu
A IA surgiu nos anos 50 quando, nos Estado Unidos, John McCarthy reuniu vários pesquisadores para estudar e propor uma nova área do conhecimento denominada Inteligência Artificial, a qual tem origem nos estudos da cibernética.
A IA tem por objetivo tornar uma máquina capaz de executar tarefas que, devido a sua natureza cognitiva, até então os seres humanos eram os únicos capazes de executar. Tem como meta principal a construção de uma máquina inteligente e, consequentemente, pesquisar a natureza da inteligência. Isto é conseguido investigando como as pessoas pensam quando estão tentando tomar decisões e resolver problemas, dividindo esses processos de pensamentos em etapas básicas e implementando um programa que solucione o problema usando essas mesmas etapas.
Dentro da IA existe um imenso leque de técnicas, cada qual com a sua aplicabilidade e utilidade, dentre as quais se destaca a Inteligência Computacional e seus derivados, conforme será visto mais adiante. Segundo Elaine Rich [RIC94]:
"Inteligência Artificial(IA) é o estudo de como fazer os computadores realizarem coisas que, no momento as pessoas fazem melhor. "
SISTEMAS ADAPTATIVOS
Como seu nome diz, baseiam-se na adaptação ao meio ambiente como o principal motivo e finalidade da evolução. Iniciaram com o estudo de Holland e alunos (1962) na aplicação de operadores genéticos a problemas artificiais de adaptação [GUI98].
Muitos processos encontrados no mundo-real que requeiram algum tipo de controle são por natureza não-lineares tendo os seus parâmetros alterados de acordo com as variações do ambiente em que se encontram. Levando em conta que os métodos convencionais de controle são, em geral, lineares e não-adaptativos, um controlador com uso dessa técnica pode ser configurado para obter um bom resultado em um ponto específico e sob determinadas circunstâncias ou por um período limitado da execução, o que exige constantes reconfigurações para poder ser usado em situações em que os pontos operacionais se apresentam de forma distintas.
Esta necessidade de reconfiguração tem gerado e conduzido a investigação e criação de modelos e controladores adaptativos, capazes de se auto-configurar para se adaptar às características correntes do processo ou do ambiente em que estão inseridos. Portanto, sistemas adaptativos são aqueles que atingem a solução através de sucessivos ajustes e interações com o problema. Desta forma, a natureza sempre demonstrou, para o homem, diversos sistemas adaptativos naturais que foram reproduzidos, de forma muito simplificada, em modelos computacionais [SCH98].
Seguem alguns exemplos de sistemas adaptativos:
![]() |
Controle de Sistemas Dinâmicos; |
![]() |
Indução e Otimização de Bases de Regras; |
![]() |
Encontrar Novas Topologias Conexionistas: |
|
|
![]() |
|
![]() |
Simulação de Modelos Biológicos; |
![]() |
Evolução Interativa de Imagens; |
![]() |
Composição Musical. |
INTELIGÊNCIA COMPUTACIONAL (IC)
A inteligência artificial, tradicionalmente, trabalha com bases de dados e bases de regras, realizando inferências lógicas até convergir para uma conclusão. Este processo é caracterizado como comportamento inteligente, quando a tarefa executada é classificada como inteligente, se realizada por seres humanos.
Devido à dificuldade existente para que sistemas inteligentes tradicionais resolvam determinadas classes de problemas, como reconhecimento de padrões ou sistemas reativos, intensificaram-se as pesquisas no campo da IC. Como pode ser visto na figura 1.1, as técnicas mais conhecidas de IC são [PAL97]: ·
![]() |
![]() |
![]() |
![]() |
O objeto de estudo deste trabalho são os Algoritmos Genéticos, os quais estão inseridos no item denominado computação evolutiva. Portanto dentre as técnicas de IC acima citadas, segue somente uma breve descrição sobre computação evolutiva. Mas, não ignorando a importância dos sistemas construídos a partir da modelagem de sistemas neurais artificiais ou baseados em lógica fuzzy.
COMPUTAÇÃO EVOLUTIVA (CE)
A Computação Evolutiva surgiu no final dos anos 60, quando John Holland começou a estudar a possibilidade de incorporar os mecanismos naturais de seleção e sobrevivência para a resolução de problemas de inteligência Artificial (IA), os quais já tinham encontrado solução na natureza mas não apresentavam uma abordagem satisfatória em sistemas computacionais. Como resultado de sua pesquisa, Holland lançou seu livro Adaptation in Natural and Artificial Systems [HOLL75] o qual é considerado o ponto de partida da CE.
O termo de Computação Evolutiva engloba um amplo leque de técnicas de resolução de problemas complexos de busca e aprendizagem que se baseiam na simulação dos processos descritos nas Teorias da Evolução, cujo objetivo fundamental não se trata de reproduzir os fenômenos que ocorrem na natureza, mas sim de tirar proveito das idéias por trás deles.
Devido ao alto esforço computacional exigido, a utilização prática de sistemas com técnicas de CE só foi viabilizada a partir dos anos 80 com o surgimento de computadores de alto desempenho (para a época) e baixo custo, sendo a partir de então, amplamente utilizada para resolver com êxito certos problemas de engenharia e das ciências sociais que até então não encontravam forma prática de implementação em modelos computacionais. Deste período são os trabalhos de Goldberg [GOL89] e de Davis [DAV91], os quais propõe soluções para problemas da vida real.
Provavelmente, devido aos trabalhos, à divulgação destes autores e às novas possibilidades apresentadas, o crescimento da CE foi impressionante, tendo na atualidade inúmeras aplicações funcionando com êxito, como, por exemplo, na área industrial, onde atuam em controles de redes de distribuição de gás até o desenho de turbinas e o cálculo de estratégias de mercado (isso para citar uma pequena parte).
A CE baseia-se fundamentalmente no uso dos Algoritmos Evolutivos (AE's), cujo propósito é conduzir uma busca estocástica, fazendo evoluir um conjunto de estruturas e selecionando de modo interativo as mais adequadas. Um AE é considerado mais eficiente quanto melhor seja seu desempenho na solução de um determinado problema, independente de sua fidelidade aos conceitos biológicos. Na verdade, a maioria dos algoritmos que seguem este enfoque são extremamente simples do ponto de vista biológico mas, mesmo assim, se apresentam como poderosas e eficientes ferramentas de busca.
A Computação Evolutiva divide-se então, como podemos visualizar na figura 1.1, em cinco paradigmas básicos [PAL97]: ·
![]() |
![]() |
![]() |
![]() |
![]() |
Figura 1.1 - Esquema da Taxonomia dos Sistemas Naturais
ALGORITMOS EVOLUTIVOS (AE'S)
Como já foi dito anteriormente, a Computação Evolutiva (CE) sustenta-se nos AE's, os quais têm como finalidade a "sobrevivência do mais apto", que é conseguida por meio de "adaptação ao ambiente", ou seja, maior chance de sobrevivência dos mais aptos e estes, consequentemente, maior possibilidade de gerar descendentes, transmitindo as suas características genéticas.
Ao executar um AE, é criada uma população de indivíduos que nada mais são do que um conjunto de possíveis soluções para um determinado problema, os quais são submetidos a determinadas transformações (cruzamento, mutação, ...) sendo, cada ciclo completo de transformação e seleção denominado geração. Logo, para podermos gerar um AE, devemos ter:
![]() |
Uma população de indivíduos (conjunto de soluções candidatas); |
![]() |
Um processo de seleção que avalie a aptidão de cada indivíduo da população; |
![]() |
Um processo de transformação, o qual gerará novas soluções à partir das existentes. |
Tendo cumprido esses requisitos, pode-se realizar a implantação de um AE, cujo principal paradigma são os Algoritmos Genéticos, os quais serão descritos de forma mais aprofundada mais adiante. Essas técnicas tem sido utilizadas com resultados bastante satisfatórios em diversas técnicas como [MIT96]:
Otimização: ampla variedade de tarefas de otimização, incluindo otimização numérica e problemas de otimização combinatória como o desenho de circuitos ou o problema do caixeiro viajante. ·
Programação automática: para fazer evoluir programas de computador para tarefas específicas e para projetar outras estruturas computacionais (como autômatos celulares). ·
Aprendizado artificial: para muitas aplicações de aprendizado artificial, incluindo tarefas de classificação e predição, como predição do tempo ou de estruturas protéicas. ·
Economia: para desenvolver estratégias de venda, e para o surgimento de mercados econômicos. ·
Ecologia: para modelar fenômenos ecológicos. · Genética das populações: para estudar questões em genética das populações como: "Sob quais condições um gene, por recombinação, será evolutivamente viável?". ·
Evolução e aprendizado: para estudar como o aprendizado individual e a evolução das espécies se afetam entre si. ·
Sistemas sociais: para estudar aspectos evolutivos de sistemas sociais, como a evolução do comportamento social em colônias de insetos e, de forma mais geral, a evolução da cooperação e comunicação em sistemas multi-agentes. ·
Controladores robóticos: para realizar controle de tarefas desenvolvidas por equipamentos robóticos, como planejamento de trajetórias para robôs móveis, desvio de obstáculos ou controle de manipuladores mecânicos.
Esta lista não apresenta uma relação exaustiva, mas dá uma noção geral do tipo de tarefas para as quais os AE's vem sendo usados.
Página Principal
Noções Básicas
Algoritmos Genéticos
Redes Neurais Multiagentes
Cognição Software
Artigos Tutoriais
Links Quem
sou eu