Computação Bioinspirada aplicada à Robótica

Transcrição

Computação Bioinspirada aplicada à Robótica
Capítulo
4
Computação Bioinspirada aplicada à Robótica
Talles Henrique de Medeiros, Luís Fabrício Wanderley Góes, Milene Barbosa Carvalho e Ilg Menezes
Abstract
The Bio-Inspired Computing is new paradigm in computer science based on Nature’s phenomena. It uses concepts, principles and mechanisms studied in biological sciences to
design computer programs that reproduce natural systems behavior. These Bio-Inspired
programs can solve complex and unsolved problems in a simple and efficient way. Among
these problems, Robotics is an open area with problems that requires these kind of intelligent systems. In this work, we remark some principles of Bio-Inspired Computing and
their applications in Intelligent Robots.
Resumo
A Computação Bioinspirada ou Natural é um novo paradigma da Ciência da Computação
inspirado nos fenômenos da Natureza. Utiliza características das Ciências Biológicas na
computação projetada por seres humanos para uso metafórico de conceitos, princípios
e mecanismos fundamentando sistemas naturais. Muitos problemas, até então não resolvidos ou mesmo de difícil solução, podem ser elegantemente resolvidos por Sistemas
Naturais. Entre eles a Robótica, um campo especial de amplas possibilidades de aplicação destes sistemas inteligentes. Neste texto, destacaremos os princípios de algumas
técnicas deste paradigma e suas aplicações na implementação de Robôs Inteligentes.
4.1. Introdução
A natureza apresenta inúmeros exemplos de soluções elegantes e eficientes para um grande
número de problemas. Estas soluções estão presentes nas mais diversas espécies de seres
vivos. É fácil perceber quando abelhas se organizam para construir uma colméia facilitando a sobrevivência do enxame ou espalhando o pólen de uma planta, permitindo a
fecundação de uma outra planta. É interessante, também, o modo como uma colônia de
formigas consegue estabelecer uma rota entre o ninho e a comida, para suprir suas necessidades de alimento, entre vários outros exemplos. Estas soluções são, em geral, o
resultado de um processo evolutivo. Esta é uma das principais características presentes
em sistemas biológicos e que os tornam alternativas muito atrativas para a computação.
Técnicas tradicionais de computação, muitas vezes, não são eficientes para resolver um grande número de problemas que são facilmente resolvidos por processos naturais como, por exemplo, problemas de otimização e reconhecimento de padrões. Então,
busca-se entender e modelar os processos complexos que ocorrem na Natureza para obter ganhos de conhecimento da Ciência Natural e na Ciência da Computação. As idéias
extraídas de sistemas naturais já vêm sendo utilizadas com muito sucesso para o desenvolvimento de ferramentas tecnológicas capazes de resolver problemas de complexidade
elevada, cujas soluções eram, até então, desconhecidas ou inatingíveis [DG97a]. A computação tem buscado inspirações na Natureza para lidar com estes tipos de problemas.
Este texto, então, apresentará os fundamentos básicos desse novo paradigma: conhecido
como Computação Bioinspirada ou Natural, e suas possibilidades de aplicações no campo
da Robótica.
A Computação Bioinspirada utiliza características, inspiradas pela Natureza, na
computação projetada por seres humanos para o uso metafórico de conceitos, princípios
e mecanismos fundamentando sistemas naturais. Esta área de pesquisa investiga o relacionamento entre a computação e a biologia, estudando como computadores podem ser
utilizados para modelar a natureza e como soluções encontradas pela natureza podem
originar novos paradigmas de computação.
As técnicas da Computação Bioinspirada podem ser classificadas por diferentes
critérios [CDR+ 04]. Entre eles estão: a origem da inspiração, a dimensão do sistema
biológico e o dispositivo físico utilizado para a implementação da técnica. Neste texto,
por limitação de espaço, destacamos as técnicas segundo a origem de sua inspiração. Esta
classificação sugere duas classes, das quais a primeira é o tema deste texto:
Computação Bioinspirada: Projeto de algoritmos baseado em princípios biológicos.
Exemplos: Redes Neurais Artificiais, Sistemas Imunológicos Artificiais, Computação Evolucionária, Inteligência de Enxames, etc.
Bioinformática: Emprego de técnicas computacionais para resolução de problemas da
Biologia Molecular. Exemplos: Reconhecimento de Genes, Predição de Estruturas
de Proteínas, Alinhamento de Seqüências, etc.
Os Sistemas Biológicos inteligentes não seguem processos tradicionais de manufatura. Assim, não são compostos por partes pré-fabricadas e caracterizam-se por serem
projetados por processos de evolução natural. Estes sistemas são, muitas vezes, controlados por sistemas baseados no sistema nervoso e são formados por componentes que
trabalham juntos, em grupos, rebanhos ou enxames. Algumas de suas sub-áreas são:
Redes Neurais Artificiais, Computação Evolutiva (Algoritmos Genéticos, Programação
Genética, Estratégias Evolutivas), Sistemas Imunológicos Artificiais, Vida Artificial e Inteligêcia de Enxames (ou coletiva).
A Computação Bioinspirada, então, desenvolve algoritmos e ferramentas. Baseiase na capacidade computacional do sistema nervoso para resolver problemas de reconhecimento de padrões, quando trabalha com Redes Neurais Artificiais. Analisa as pro-
priedades emergentes de colônias de organismos na solução problemas de otimização,
aproximando a computação da Inteligência de Enxames. E, através da Computação Evolutiva, busca, na capacidade da Evolução Natural, melhorar a adaptação dos indivíduos
ao ambiente no decorrer de várias gerações.
Neste texto, por limitação de espaço, tornou-se necessária uma abordagem simplificada das técnicas da Computação Bioinspirada. Para isso, destacaremos as seguintes
teorias:
• Redes Neurais Artificiais;
• Sistemas Imunológicos Artificiais;
• Computação Evolucionária;
• Inteligência de Enxames.
A Robótica é o nosso objeto de estudo, no qual destacamos as principais aplicações dos algoritmos bioinspirados. No campo da Robótica, podemos destacar os problemas de exploração, visão, reconhecimento de padrões, fala etc.
Este texto está organizado da seguinte maneira: na Seção 4.1 são apresentados
os fundamentos básicos de algumas das principais técnicas da Computação Bioinspirada.
Na Seção 4.2 será apresentada uma breve introdução aos conceitos da Robótica, principalmente sob a visão da Robótica Inteligente. A Seção 4.3 é dedicada aos trabalhos já
divulgados da Computação Bioinspirada na solução de problemas tradicionais no campo
da Robótica.
4.2. Técnicas de Computação Bioinspirada
Esta seção é dedicada a apresentação de quatro técnicas de computação bioinspirada.
Aqui descreveremos os princípios de cada uma, alguns conceitos básicos e os importantes
algoritmos de cada paradigma.
4.2.1. Redes Neurais Artificiais - RNAs
As Redes Neurais Artificiais são modelos matemáticos que se assemelham às estruturas
neurais biológicas e que têm capacidade computacional adquirida por meio de aprendizado e generalização [BCL00, Hay94]. O aprendizado em RNAs está normalmente
associado à capacidade de as mesmas adaptarem os seus parâmetros como conseqüência
de sua interação com o meio externo. Também como acontece com os seres vivos, o
processo de aprendizado das RNAs é interativo e, por meio dele, a rede deve melhorar
o seu desempenho gradativamente à medida que interage com o meio externo. O critério de desempenho que determina a qualidade do modelo neural e o ponto de parada de
treinamento são pré-estabelecidos pelos parâmetros de treinamento.
O passo fundamental para o surgimento das RNAs foi o modelo matemático proposto por McCulloch e Pitts, em 1943 [MP43]. O modelo, denominado neurônio MCP
(McCulloch e Pitts), é descrito por um conjunto de n entradas no qual cada entrada é
multiplicada por um determinado peso e, em seguida, os resultados são somados e comparados a um limiar. Esse modelo é amplamente citado na literatura da área de RNAs
[BCL00]. A Figura 4.1 é uma visão esquemática do nodo MCP.
O processo de informação em RNAs é feito por meio de estruturas neurais em
que o armazenamento e o processo de informação são realizados de maneira paralela e
distribuída por elementos processadores relativamente simples (os neurônios), como estão
representados na Figura 4.1. Esta característica torna a RNA uma alternativa promissora
para problemas cuja solução ainda apresenta dificuldades para computação tradicional.
w1
X1
w2
X2
.
.
.
f(u)
y
u
.
.
.
wn
Xn
Figura 4.1. Modelo de um Neurônio MCP.
Arquiteturas Neurais
A arquitetura de uma RNA é composta por neurônios e conexões, que simulam as sinapses. Cada um dos neurônios (nodos) executam funções simples, mas quando combinados
resultam na estrutura de uma RNA capaz de solucionar problemas complexos. Uma rede
do tipo feed-foward é apresentada na Figura 4.2, onde cada nodo tem a função do nodo
MCP apresentado na Figura 4.1. Esta rede possui n entradas, duas camadas ocultas de
nodos, uma camada de saída com P saídas.
f1(x)
W1
1
W2
1
W3
f3(x)
2
2
1
Saidas
Entradas
1
f2(x)
2
3
3
P
N
K
M
1
Camada 1
1
1
Camada 3
Camada 2
Figura 4.2. Modelo de uma RNA feed-foward do tip MLP.
Basicamente, uma rede é subdividida em camadas: camada de entrada, camadas
intermediárias ou escondidas e camada de saída. Um exemplo desse arranjo é expresso
na Figura 4.2. A topologia mais simples de uma RNA apresenta uma única camada. As
redes MLPs são uma topologia específica na área de RNAs.
O funcionamento de uma rede MLP é síncrono, ou seja, dada uma entrada (um vetor) esta é propagada para a saída multiplicada pelos pesos de cada camada, aplicando-se
a função de ativação e propagando-se esse valor para a camada seguinte até que a camada
de saída seja atingida. Por ser constituída por um conjunto de nodos MCPs, pode-se definir funções de ativação diferenciadas para cada nodo da MLP. Geralmente, definem-se
funções de ativação iguais em uma mesma camada. É necessário lembrar que uma rede
que apresenta somente funções de ativação lineares nas camadas intermediárias é equivalente a uma rede de uma única camada. A topologia da MLP mais utilizada apresenta
uma camada escondida e é capaz de implementar qualquer função multivarivável contínua [Cyb89], ou seja, isto representa a capacidade universal de aproximação de funções
das RNAs.
O Aprendizado
O aprendizado das RNAs é obtido por meio de exemplos, dos quais o algoritmo é capaz
de extrair o conhecimento necessário para a resolução do problema em questão. O conhecimento obtido é armazenado nos pesos da RNA para, posteriormente, gerar a resposta da
rede para novos exemplos.
O aprendizado em sistemas biológicos envolve ajustes nas sinapses existentes entre os neurônios. De forma similar, o aprendizado em RNAs envolve o ajuste iterativo dos
pesos de suas conexões por meio da apresentação de um conjunto de exemplos de treinamento. O ajuste dos pesos é realizado pela utilização de um algoritmo de aprendizado,
seguindo um certo paradigma de aprendizado. As regras de ajuste dos pesos podem ser
categorizadas da seguinte forma:
Correção de Erros: o ajuste dos pesos é realizado de modo a minimizar o erro da resposta rede para os exemplos de treinamento;
Hebbiano: o ajuste dos pesos está associado à correlação dos valores de saída produzidos pelos nodos conectados;
Competitivo: os nodos da rede competem entre si para definir qual destes nodos produzirá a resposta da rede;
Boltzman: método estocástico baseado na termodinâmica e teoria da informação.
Além disto, existe o paradigma de aprendizado no qual estas regras de ajuste podem ser aplicadas. Os paradigmas de aprendizado computacional podem ser definidos
como:
Aprendizado Supervisionado: caracterizado pela existência de um professor externo à
rede que tem a função de monitorar a resposta yi da mesma para cada conjunto de
entrada xi . O ajuste é feito de modo que a resposta da rede aproxime-se da saída
desejada ydi ;
Aprendizado por Reforço: caracterizado por um processo de punição e recompensa da
rede para cada resposta obtida. O conjunto de treinamento é formado somente pelos
exemplos de entrada xi , mas há existência de um crítico analisando as respostas da
rede;
Aprendizado Não-Supervisionado: é caracterizado pela inexistência das saídas desejadas e de um crítico das respostas. O conjunto de treinamento é composto somente
pelos exemplos de entrada e, por meio deles, a rede identificará as características
estatisticamente relevantes, tornando possível o agrupamento dos exemplos semelhantes.
Espera-se, então, que uma rede treinada com alguns exemplos estatisticamente
representativos seja capaz de apresentar saídas aceitáveis para novos exemplos. A isto
dá-se o nome de generalização.
A Capacidade de Generalização
Em problemas de aprendizado, o conjunto de treinamento é composto por uma amostragem do problema real. Para este conjunto limitado de exemplos do problema, a rede deve
ser capaz de obter uma aproximação da função que gere estas amostras (exemplos). O
resultado do treinamento pode ser uma rede sobreparametrizada, quando a rede possui
mais parâmetros que o necessário para o problema. Entretanto, uma rede torna-se subparametrizada quando apresenta menos parâmetros que o necessário para aproximar-se da
função geradora das amostras. Ambos os fenômenos, a sobreparametrização e a subparametrização, influenciam nas respostas das redes. Com isto, a rede perde sua capacidade
de generalização.
O problema do ajuste de modelos neurais e de equilíbrio entre redes sub e sobreparametrizadas foi descrito formalmente em [GBD92]. Uma rede capaz de apresentar boa
capacidade de generalização possui um estrutura adequada ao problema em questão, de
modo que apresente respostas coerentes para novos exemplos de entrada cuja saída seja
desconhecida.
Modelos Neurais
Os primeiros modelos de redes são conhecidos como a rede Perceptron [Ros58] e a Adaline [WH60].
A rede Perceptron utiliza o algoritmo de aprendizado supervisionado baseado no
ajuste dos pesos pelo método da correção de erros. Frank Rosenblatt, o autor do artigo que
descreve a rede Perceptron, mostrou em um teorema que, se o Percetron pode solucionar
um dado problema, então o algoritmo por correção de erros irá obter os pesos necessários
para a solução do problema. Já a rede Adaline, originada quase que em paralelo com
o modelo Perceptron, utiliza o ajuste dos pesos w por meio da Regra Delta, conforme a
Equação 1:
w(k+1) = w(k) + η.e(k) . f 0 (h(k) ).x(k)
(1)
onde f 0 (h(k) ) é a derivada primeira da função de ativação do nodo, e(k) é o erro da resposta
da rede e η é conhecida como a taxa de aprendizado.
As redes Perceptron foram criticadas por sua limitação computacional em solucionar somente problemas linearmente separáveis [MP69]. Para problemas não linearmente separáveis, foi necessária a construção de redes com camadas intermediárias. Em
[RHW86] foi descrito um novo algoritmo de treinamento de redes Muti-Layer Perceptron.
Este algoritmo, denominado Backpropagation, têm importância histórica fundamental
para a comunidade de RNAs por ser o grande responsável pela retomada das pesquisas, até então praticamente inativas. O algoritmo Backpropagation apresenta duas fases:
a fase feedfoward e a fase backward. O algoritmo backpropagation é uma generalização
da Regra Delta das redes Adaline conforme a Equação 2:
w(k+1) = w(k) − η.∇J(k)
(2)
2
p
A função de custo J(k) é definida pela equação J = 21 ∑i=1
d i − yi , sendo a saída
y da rede uma função dos pesos e das funções de ativação. O ajuste dos pesos é realizado
em duas etapas: propagando-se a entrada da rede para a sua saída (forward), calculandose o erro e propagando-o novamente para a entrada (backward). Para uma rede de duas
camadas, a atualização dos pesos é feita da seguinte maneira para os nodos de saída:
w ji(k+1) = w ji(k) + η d j(k) − y j(k) f 0 (net j(k) )xHi(k)
(3)
onde net j é a saída linear do nodo j da camada de saída e xH é a saída dos nodos da camada
escondida após a aplicação da função de ativação. Para os nodos da camada escondida:
p h
whji(k+1) = whji(k) + η.x(k)
. fH0 (ri(k) ). ∑ δ j(k) .w ji(k)
(4)
j=1
onde wh são os pesos da camada escondida, xh é a entrada da RNA, fH0 é a derivada da
função de ativação da camada escondida e ri é a saída linear do neurônio i da camada
escondida.
Uma descrição detalhada das equações de ajuste dos pesos para cada camada é
amplamente encontrada na literatura [BCL00]. As desvantagens do algoritmo Backpropagation consistem na sua baixa velocidade de convergência e na sua limitação de busca
de soluções, pois trata-se de um algoritmo de busca local. Tal fato é observado na própria
formulação do algoritmo. Por se tratar de um algoritmo que depende somente do gradiente
local, caso haja um mínimo local próximo1 , o algoritmo ficará preso. Uma das maneiras
de melhorar a resposta de uma rede utilizando esse algoritmo consiste no treinamento de
múltiplas redes com pesos inicializados aleatoriamente. Nesse caso, a probabilidade de
uma rede convergir para uma região próxima ao mínimo global é maior. Entretanto, tal
procedimento apresenta um elevado custo computacional e não é capaz de garantir uma
boa solução. O Algoritmo 1 apresenta os passos para o ajuste dos pesos de uma Rede
Neural Artificial.
1 região
de gradiente nulo
Algoritmo 1 Algoritmo Backpropagation
1: Inicialize os pesos da rede (valores aleatórios);
2: repete
3:
Erro = 0;
4:
para cada padrão de treinamento faça
5:
para cada camada i da rede, i = 1, 2, · · · , n faça
6:
para cada nodo ni j da i-ésima camada faça
7:
Calcule saída y produzida do nodo;
8:
fim para
9:
fim para
10:
e = saidadese jada − y;
11:
para cada camada i da rede, i = n, n − 1, · · · , 1 faça
12:
para cada nodo ni j da i-ésima camada faça
13:
Ajuste os pesos do nodo;
14:
fim para
15:
fim para
16:
Erro = Erro + e;
17:
fim para
18: até Erro > ε
Aprendizado Multiobjetivo
Para o controle da generalização, o aprendizado das RNAs deve levar em conta algum
outro objetivo, além do erro do conjunto de treinamento. Uma abordagem para o treinamento de RNAs por meio de otimização multiobjetivo foi proposta por [RT00]. Esta
abordagem utiliza, além da soma do erro quadrático ∑ e2 do conjunto de treinamento, a
norma euclidiana kwk do vetor de pesos da RNA. Como mostrado em [RT00], os objetivos ∑ e2 e kwk são conflitantes e decisivos na definição da qualidade de modelos neurais.
A soma dos erros define quão próximo do conjunto de treinamento, que define o problema, a resposta da RNA está. Quanto menor a norma dos pesos, mais suave deverá
ser a resposta do modelo neural. A medida da norma, portanto, é uma medida da suavidade desta respota. Baseado no princípio que as soluções de melhor generalização devem
ter um mínimo kwk para um ∑ e2 fixo, e um mínimo ∑ e2 para um kwk fixo, o algorimo
multiobjetivo proposto por [RT00] procura por soluções dentro do Conjunto Pareto-ótimo
[CH83, Tak03].
A Figura 4.3 mostra uma forma genérica do conjunto Pareto no espaço dos objetivos. Embora o conjunto Pareto possa apresentar alguma variação de acordo com o
problema, o esquema da figura realça a característica de os mesmo serem objetivos conflitantes. O conjunto Pareto é composto por soluções em que um dos objetivos não pode
ser mais minimizado sem que o outro aumente. O conjunto Pareto se constitui em um
fronteira entre as soluções factíveis (conjunto2) e as não-factíveis (conjunto1). Deste
modo, todas as soluções implementadas estarão acima da fronteira do conjunto.
É razoável imaginar, portanto, que as soluções Pareto-ótimas se constituem no
conjunto restrito adequado para a busca da solução de melhor generalização.
Norma
conjunto2
Conjunto
conjunto1
Erro
Figura 4.3. Conjunto Pareto-ótimo no espaço de objetivos erro e norma.
O algorimo multiobjetivo, o MOBJ [RT00], utiliza métodos de otimização multiobjetivo para encontrar soluções Pareto-ótimas. Dentre as quais, aquela que apresentar o
menor erro de validação ou menor auto-correlação [Med04] é, portanto, selecionada como
a rede de melhor capacidade de generalização dentre as redes geradas pelo algoritmo.
As RNAs têm sido utilizadas com sucesso em inúmeras aplicações de classificação de padrões, tarefas de previsão, aproximação de funções, modelagem de processos
físicos entre outras aplicações. Um dos problemas para quem as utiliza é a dificuldade de
definição dos seus parâmetros, por exemplo: números de nodos de cada camada, o tipo
de função de ativação, a taxa de aprendizado.
É preciso ficar claro que existem vários modelos de RNAs e que, neste texto,
nos resumimos a detalhar o modelo MLP. Porém, para cada tipo de problema haverá um
modelo mais adequado que outro. Entre outros modelos podemos citar: os Mapas AutoOrganizáveis (SOM), as Redes de Funções de Base Radial (RBFs), as redes de Hopfield
[Hay94].
4.2.2. Sistemas Imunológicos Artificiais - SIAs
Entre os modelos mais recentes com inspiração biológica encontram-se os Sistemas Imunológicos Artificiais (SIA) [CVZ00, dCT02, SHF97]. Estes sistemas são compostos por
metodologias inteligentes para a solução de problemas do mundo real [Das98].
O Sistema Imunológico é de fundamental importância para os seres vivos e, por
isso, precisa ser extremamente eficiente. É um sistema no qual existem diferentes componentes e mecanismos atuantes. Alguns destes elementos são otimizados para defesa
de um único agente infeccioso, outros são projetados para atuar em vários agentes infecciosos. É um sistema extremamente redundante, o que significa que podem existir
diferentes mecanismos atuantes contra um único elemento estranho no organismo. Do
ponto de vista da computação e da engenharia, a presença de mecanismos de memória
e aprendizagem são características fundamentais do Sistema Imunológico Natural. Isto
significa que o nosso organismo é capaz de extrair informações úteis dos agentes infecciosos e “memorizá-las” para futuros casos de infecções pelo mesmo agente ou similares.
A seguir, antes de abordarmos os Sistemas Imunológicos Artificiais, daremos uma breve
descrição do mecanismo de defesa do nosso organismo.
4.2.2.1. Mecanismo Básico de Defesa do Sistema Imunológico Biológico
Nosso organismo é protegido por uma grande variedade de células e moléculas operando
em harmonia, até que um antígeno apareça e torne-se o alvo principal do Sistema Imunológico. Pela Figura 4.4 podemos ter uma noção do mecanismo de reconhecimento de
um antígeno e a ativação do Sistema Imunológico. As células apresentadoras de antígeno
Figura 4.4. Esquema simplificado dos mecanismos de reconhecimento e ativação do Sistema Imunológico.
(APCs) especializadas circulam pelo corpo ingerindo e digerindo patógenos encontrados,
transformando-os em peptídeos antigênicos. Parte destes peptídeos ligam-se à moléculas
do complexo de histocompatibilidade principal (MHC) e são apresentados sob a forma de
um complexo MHC/peptídeo. As células T têm a função de reconhecer diferentes complexos MHC/peptídeo. Uma vez ativadas, as células T dividem-se e secretam linfocinas
(sinais químicos) que mobilizam outros componentes do Sistema Imunológico. Diferente
dos receptores das células T, entretanto, os receptores das células B são capazes de reconhecer partes livres solúveis dos antígenos, sem as moléculas do MHC. As células B, que
também possuem moléculas receptoras de especificidade única em suas superfícies, respondem a estes sinais. As células B ativadas dividem-se e diferenciam-se em plasmócitos,
secretando anticorpos em altas taxas. A ligação dos anticorpos aos antígenos encontrados
faz com que o patógeno seja neutralizado, levando à sua destruição. Algumas células B e
T transformam-se em células de memória, as quais permanecem na circulação garantindo
uma resposta rápida e eficaz contra uma futura exposição àquele antígeno [dC01].
4.2.2.2. A Modelagem do Sistema Artificial
No Brasil, o primeiro tutorial sobre Sistemas Imunológicos Artificiais e Suas Aplicações
foi proferido pelo, então, estudante de doutorado em Engenharia Elétrica da UNICAMP,
Leandro Nunes de Castro, no VI Simpósio Brasileiro de Redes Neurais (SBRN), realizado
no Rio de Janeiro em novembro de 2000 1 . No ano de 2001, a revista IEEE Transactions
on Evolutionary Computation trouxe uma edição especial sobre os Sistemas Imunológicos Artificiais. A expectativa é que estes modelos, ainda que muito simplificados, demonstrem as vantagens do sistema natural, considerado o nosso sistema mais complexo.
Dentre elas destacamos algumas [dCT02, Cor05, FPP86]:
Reconhecimento de Padrões: A facilidade de construção de moléculas específicas para
cada antígeno é exclusividade do Sistema Imunológico;
Auto-Identificação: O Sistema Imunológico tem a incrível capacidade de identificar
qualquer corpo estranho e de eliminá-lo;
Autonomia: O funcionamento dos seus componentes é completamente autônomo, independente de qualquer elemento central. Possui a capacidade de se auto-reparar
parcialmente, substituindo células deficientes;
Adaptação Dinâmica: O sistema não é capaz de armazenar células e moléculas capazes
de detectar todos os corpos estranhos possíveis. Mas tem um funcionamento que,
devido à elevada taxa de morte e produção de novas células, é capaz de se adaptar
rapidamente a novos agentes desconhecidos;
Aprendizagem e Memória: Apesar da limitada capacidade do sistema, quando é detectado um corpo estranho, as células responsáveis por detectá-lo e eliminá-lo são
mais estimuladas a reproduzir-se e permanecem no sistema por mais tempo. Este
funcionamento é semelhante ao da memória.
A elaboração de um algoritmo baseado na imunologia consiste de 3 aspectos:
• Representação dos componentes;
• Funções de afinidade entre os componentes, quantificando a interação entre eles;
• Conjunto dos algoritmos imunológicos que controlam o comportamento do sistema.
Para cada aspecto, será feita uma breve descrição do que é realizado pelo sSstema Imunológico Artificial.
1 Hoje
o prof. Dr. Leandro Nunes de Castro leciona na Universidade Católica de Santos, em Santos-SP.
Representação dos Componentes
A representação matemática de um anticorpo e um antígeno contribui para a definição do
tipo de distância empregado na avaliação da função de afinidade. A forma generalizada
de uma molécula m, seja ela um anticorpo (Ab) ou mesmo um antígeno (Ag), pode ser
representada por uma cadeia de L atributos m = hm1 ; m2 ; · · · ; mLi. Os atributos podem
ser de qualquer tipo: inteiros, reais, bits ou outros símbolos, dependendo da aplicação do
SIA.
A representação dos componentes determina o tipo de função de afinidade ideal
para o algoritmo. Então, os anticorpos (moléculas do sistema), e os antígenos (moléculas invasoras do organismo), são modelados por cadeias de L atributos do espaço de
representação do problema.
Funções de Afinidade
Nesta fase, o objetivo é encontrar uma função que relacione os anticorpos e os antígenos. Esta medida está condicionada à representação dos componentes e define o grau de
complementariedade entre eles. A afinidade entre um anticorpo e um antígeno é uma medida de distância (ou similaridade) entre as cadeias de atributos, por exemplo, a distância
Euclidiana. Como a melhor função de afinidade é a que possui a maior complementariedade entre as duas cadeias, quanto maior for a distância entre as moléculas, maior será
a afinidade entre elas. A Figura 4.5 representa a idéia da complementariedade entre as
moléculas.
Figura 4.5. Esquema do Reconhecimento via a Idéia de Complementariedade.
Considerando a distância Euclidiana, se um anticorpo for representado pela cadeia
Ac = hAc1 , Ac2 , · · · , AcL i e um antígeno representado pela cadeia Ag = hAg1 , Ag2 , · · · , AgL i,
então a função de afinidade entre estas moléculas pode ser representada pela Equação 5,
s
L
D=
∑ (Abi − Agi)2
(5)
i=1
ou então pela distância de Manhatan, conforme a Equação 6:
L
D = ∑ |Abi − Agi |
i=1
(6)
Para a representação binária dos atributos de cada cadeia, a função de afinidade é
melhor obtida utilizado-se a distância de Hamming:
L
D = ∑ δi
(7)
i=1
onde δi = 1 se Abi 6= Agi ou δi = 0, caso contrário.
Define-se, ainda, um limiar ε para a afinidade (ou complementariedade) a partir
do qual considera-se que houve reconhecimento. Isto é, se D ≥ ε diz-se que o anticorpo
reconhece o antígeno. A medida de afinidade funciona como uma função de avaliação da
molécula. As que têm melhor avaliação são mais selecionadas pelo operador de reprodução. Porém, nada obriga que a avaliação seja feita apenas com base na afinidade entre
pares de moléculas. Podem considerar-se outros fatores, como o número de antígenos reconhecidos por um anticorpo ou o grau de interação do anticorpo com outros anticorpos.
Quando mais fatores são levados em consideração, é comum atribuir a avaliação por nível
de estimulação, englobando todos os fatores.
Algoritmos Imunológicos
Nesta fase abordamos os algoritmos computacionais que modelam os diferentes mecanismos e teorias imunológicas. Entre eles destacam-se: os Modelos de Medula Óssea
(MMO), o Algoritmo de Seleção Negativa (ASN), o Algoritmo de Seleção Clonal (CLONALG) e os Modelos Contínuos da Rede Imunológica [dC01]. De acordo com [dCT03],
estes algoritmos podem ser classificados em duas famílias:
Modelos baseados em Populações: definem o modo como os componentes do sistema
interagem com os agentes externos;
Modelos de Redes Imunológicas: usados para simular redes imunológicas, incluindo
sua estrutura, dinâmica e metadinâmica.
Os modelos de medula óssea são utilizados para a geração de cadeias de atributos
que representam os repertórios imunológicos; o ASN possui aplicações em detecção de
anomalias, como segurança computacional e predição de séries temporais; o algoritmo
CLONALG tem várias aplicações no reconhecimento de padrões e otimização multimodal e combinatorial; e os modelos contínuos de rede imunológica são normalmente
empregados em processos de robótica e controle [CVZ00]. Dos modelos de algoritmos
citados, destacaremos dois deles: o Algoritmo de Seleção Negativa e o de Seleção Clonal.
Algoritmos Imunológicos: Algoritmo de Seleção Negativa - ASN
Este algoritmo foi inicialmente projetado para o processo de detecção de anomalias, como
a proteção de sistemas de informação. O ASN é executado em duas fases conforme o
Algoritmo 2:
Algoritmo 2 Algoritmo da Seleção Negativa - ASN
1: Defina o conjunto S de cadeias próprias que deseja-se proteger;
2: Gere cadeias P aleatoriamente e avalie a afinidade entre elas e as S do sistema;
3: para Cada cadeia P gerada faça
4:
se Afinidade Di de Pi ≥ εa então
5:
A cadeia P reconhece o próprio sistema e deve ser eliminada;
6:
senão
7:
Armazene-a em um conjunto R de detectores;
8:
fim se
9: fim para
10: Dado o conjunto S;
11: para Cada cadeia S a ser protegida faça
12:
se Afinidade Di (Si , Ri ) ≥ εb então
13:
Um elemento não próprio foi identificado;
14:
fim se
15: fim para
O algoritmo ASN é capaz de realizar tarefas de reconhecimento de padrões armazenando informações do conjunto complementar que se deseja proteger. Deste modo, o
padrão não-próprio é reconhecido como um elemento diferente do próprio sistema.
Cadeias Próprias (S)
Gere Cadeias Aleatoriamente (R0)
Match
Conjunto de
Detectores (R)
Não
Conjunto de Detectores (R)
Sim
Rejeita
(a)
Cadeias
Protegidas (S)
Match
Não
Sim
Não-Próprio
Detectado
(b)
Figura 4.6. Diagrama de Fluxos do Algoritmo de Seleção Negativa. (a) Censoriamento e (b) Monitoramento das cadeias protegidas.
Algumas observações sobre o ASN:
• O tamanho do conjunto de detectores não cresce necessariamente com o número de
cadeias a serem protegidas;
• A probabilidade de detecção de anomalias aumenta exponencialmente com a quantidade de algoritmos de detecção independentes;
• O processo de detecção é simétrico;
• A geração de detectores apresenta um custo exponencial em relação ao tamanho do
conjunto de cadeias a serem protegidas devido a geração aleatória das cadeias do
conjunto R, ocasionando repetições de várias cadeias.
Algoritmos Imunológicos: Algoritmo de Seleção Clonal - CLONALG
Os principais aspectos considerados para o desenvolvimento do algoritmo de seleção clonal são: manutenção das células de memória funcionalmente independentes do repertório,
seleção e reprodução (clonagem) das células mais estimuladas, morte das células menos
estimuladas, maturação de afinidade e reseleção dos clones com maiores afinidades antigênicas, geração e manutenção de diversidade, hipermutação proporcional à afinidade
celular [dC01]. Este algoritmo pode ser utilizado em tarefas de Reconhecimento de Padrões, Aprendizagem de Máquina e Otimização.
Algoritmo 3 Algoritmo da Seleção Clonal - CLONALG
1: Gere um conjunto P de candidatos a solução, composto pelo subconjunto de células
de memória M mais o restante P{r} da população P = P{r} ∪ M;
2: Selecione os n melhores indivíduos P{r} da população P, com base em uma medida
de afinidade;
3: Reproduza os indivíduos selecionados gerando uma população temporária de clones.
A quantidade de filhos de cada indivíduo é diretamente proporcional à sua afinidade;
4: Submeta a população de clones a um esquema de hipermutação, em que a taxa de
mutação seja proporcional à afinidade do anticorpo. Uma população de anticorpos
maduros é gerada C? ;
5: Selecione os melhore indivíduos de C? para compor o conjunto de memória M;
6: Susbstitua d anticorpos por novos indivíduos.
O processo de seleção do algoritmo CLONALG pode utilizar métodos probabilísticos para selecionar os indivíduos da população. A Figura 4.7 mostra a seqüência de
passos do algoritmo CLONALG.
O passo de hipermutação do algoritmo de seleção clonal utiliza um mecanismo
denominado maturação da afinidade. Este mecanismo faz com que o algoritmo aumente
globalmente a afinidade entre os anticorpos e os antígenos.
O aspecto distintivo da hipermutação por maturação de afinidade é que cada anticorpo tem uma taxa de mutação independente, que é uma função da sua afinidade com
o antígeno. Deste modo, os anticorpos que já possuem uma afinidade grande são pouco
alterados. Por outro lado, os anticorpos que estão mais afastados de reconhecer a solução
ótima são modificados de forma mais drástica, na expectativa de se pesquisarem outras
zonas do espaço de soluções.
É necessário definir uma função de dependência entre a taxa de mutação e a afinidade. Quando estamos trabalhando com problemas de otimização, normalmente não
conhecemos o ótimo previamente. De modo que é conveniente que a função da taxa de
hipermutação seja dependente da afinidade normalizada D? = DD
. Uma função freqüenmax
temente utilizada para este fim é:
Nd
P {r }
M
Seleção
P {n }
Re-Seleção
Clonagem
C
Maturação
C *
Figura 4.7. Diagrama do Algoritmo de Seleção Clonal - CLONALG.
pkij (t) = α(D? ) = exp(−ρD? )
(8)
onde ρ é um parâmetro que define a curvatura da função.
Além dos modelos de SIA acima descritos, existe a abordagem híbrida com os Algoritmos Genéticos, as Redes Neurais Artificiais, os Sistemas Nebulosos (“Fuzzy”). Os
SIAs constituem-se numa técnica muito poderosa e que deverá ainda ser melhor explorado. Vários resultados interessantes, porém, já foram obtidos na aplicação dos SIAs em
reconhecimento de padrões [DN00], mineração de dados, robótica, otimização, controle,
detecção de falhas [DKWB04], escalonamento e segurança de sistemas de informação
[KB99], etc [dCT03, CVZ00].
4.2.3. Computação Evolucionária
Esta seção apresenta uma breve introdução aos principais conceitos dos sistemas baseados na Teoria da Evolução Natural e Genética, conhecida como Computação Evolutiva
ou Evolucionária. Entre as subáreas da Computação Evolutiva, destacamos os Algoritmos Genéticos, mas ainda podemos citar as Estratégias de Evolução e a Programação
Genética.
As pesquisas nesta área tiveram início na década de 50, tratando de sistemas para
a resolução de problemas que utilizam modelos computacionais baseados na teoria da
evolução natural [Bac96]. Em 1996, Back propõe o agrupamento dos sistemas de Computação Evolutiva em três grandes categorias:
Algoritmos Genéticos: cujos princípios podem ser encontrados em trabalhos de John
Holland nos anos 60 [Hol92]. Os algoritmos genéticos foram desenvolvidos com
o propósito de formalizar matematicamente e explicar rigorosamente processos de
adaptação em sistemas naturais, e desenvolver sistemas artificiais que buscam simular os mecanismos originais encontrados em sistemas naturais [Zub00];
Estratégias Evolutivas: propostas na década de 60 com o objetivo de solucionar problemas de otimização de parâmetros;
Programação Genética: uma extensão dos Algoritmos Genéticos e que foi desenvolvida com o intuito de evoluir um conjunto de programas de computador, ao invés
de uma cadeia de bits.
Pelo limite de espaço deste texto, abordaremos somente os Algoritmos Genéticos
(AGs) por apresentarem maiores aplicações no campo da engenharia. Antes disso, faremos uma rápida introdução à Teoria da Evolução Natural e à Genética, necessária para
compreensão da nomenclatura e inspiração dos AGs.
4.2.3.1. Evolução Natural e Genética
Em meados do século XIX, o mundo acreditava que cada espécie havia sido criada separadamente por um ser supremo ou por meio de geração espontânea. O trabalho do
naturalista Carolus Linnaeus sobre a classificação biológica de organismos despertou o
interesse pela similaridade entre certas espécies, levando a acreditar na existência de alguma relação entre elas. Outros naturalistas como Jean Baptiste Lamark e Thomas Robert
Malthus desenvolveram trabalhos que vieram a influenciar a teoria da seleção natural.
Após 20 anos de observações e experimentos, Charles Darwin apresentou, em
1859, o livro A origem das espécies por meio da seleção natural com sua teoria completa,
sustentada por muitas evidências colhidas durante suas viagens. Seu trabalho influenciou
não somente o futuro da biologia, mas da botânica, zoologia, os pensamentos políticos,
religiosos, filosóficos e econômicos. A Teoria da Evolução e a Computação nasceram
praticamente na mesma época: Charles Babbage, um dos precursores da computação
moderna e amigo pessoal de Darwin, desenvolveu sua máquina analítica em 1833.
Por volta de 1900, Gregor Mendel desenvolveu seus trabalhos sobre os princípios
básicos de herança genética,os quais tiveram grande influência sobre os trabalhos futuros
relacionados à evolução. A moderna teoria da evolução combina a genética e as idéias
de Darwin e Wallace sobre a seleção natural, criando o princípio básico de Genética
Populacional.
Nas décadas de 50 e 60, muitos biológos começaram a desenvolver simulações
computacionais de sistemas genéticos. Entretanto, foi através de John Holland que desenvolveramse as primeiras pesquisas sobre o tema. Em 1975 foi publicado o livro Adaptation in
Natural and Artificial Systems, hoje considerado como referência básica sobre Algoritmos Genéticos [Hol92]. A partir de então, a computação evolucionária vêm sendo aplicada com sucesso nos mais diversos problemas de otimização e aprendizado de máquina
[Rez03].
4.2.3.2. Algoritmos Genéticos
Destacaremos agora, os principais aspectos e as características dos Algoritmos Genéticos
que os tornam ferramentas interessantes de otimização para inúmeros problemas [Gol89,
GH88].
Otimização é a busca da melhor solução para um dado problema. Consiste em
tentar várias soluções e utilizar a informação obtida neste processo de forma a encontrar
soluções cada vez melhores. Um exemplo simples de otimização é a melhoria da imagem
das televisões com antena acoplada no próprio aparelho. Através do ajuste manual da
antena, várias soluções são testadas, guiadas pela qualidade de imagem obtida na TV, até
a obtenção de uma resposta ótima, ou seja, uma boa imagem.
As técnicas de otimização geralmente apresentam:
• Um espaço de busca, onde estão todas as possíveis soluções do problema;
• Uma função objetivo (algumas vezes chamada de função de aptidão na literatura
de AGs), utilizada para avaliar as soluções produzidas, associando uma nota a cada
uma delas.
As técnicas de otimização tradicionais iniciam seu processamento com um único
candidato que, iterativamente, é manipulado utilizando algumas heurísticas, normalmente
estatísticas, diretamente associadas ao problema a ser solucionado. Na prática, apesar de
não serem métodos suficientemente robustos, são amplamente utilizados com sucesso em
inúmeras aplicações.
Por outro lado, os AGs operam sobre uma população de soluções candidatas em
paralelo. Assim, elas podem fazer a busca em diversas áreas do espaço de solução. Como
resultado, os AGs têm mais chances de atingir as áreas mais promissoras do espaço de
busca. Os AGs diferem-se dos métodos tradicionais de busca e otimização principalmente
em quatro aspectos:
• trabalham com uma codificação do conjunto de parâmetros e não com os próprios
parâmetros;
• trabalham com uma população e não com um único ponto;
• utilizam informações de custo ou recompensa e não derivadas ou outro conhecimento auxiliar;
• utilizam regras de transição probabilísticas e não determinadas.
O primeiro passo dos AGs é a geração de uma população inicial de indivíduos
(possíveis soluções). Durante o processo evolutivo, esta população é avaliada e cada indivíduo recebe uma nota (denominada de aptidão), refletindo a qualidade da solução que ele
representa. Em geral, os indivíduos mais aptos são selecionados e os menos aptos são descartados. Os indivíduos selecionados podem sofrer modificações em suas características
fundamentais através dos operadores de cruzamento e mutação, gerando descendentes
Algoritmo 4 Algoritmo Genético
1: T ⇐ 0;
2: Gere população inicial P(0);
3: para Cada indivíduo i da população atual P(t) faça
4:
Avalie aptidão do indivíduo i;
5: fim para
6: enquanto Critério de Parada não for satisfeito faça
7:
t = t + 1;
8:
Selecione a população P(0) a partir de P(t − 1);
9:
Aplique operadores de cruzamento sobre P(t);
10:
Aplique operadores de mutação sobre P(t);
11:
Avalie P(t);
12: fim enquanto
para a próxima geração. Este processo é repetido até que uma solução satisfatória seja
encontrada. O Algoritmo 4 apresenta um ciclo de um Algoritmo Genético:
Apesar de aparentemente simples, estes algoritmos são capazes de resolver problemas complexos de uma maneira muito elegante. Além disso, não estão limitados por
suposições do espaço de busca, por características de descontiuidades, multimodalidade,
diferenciabilidade da função de custo do problema abordado [Tak03]. A seguir, descreveremos os aspectos que devem ser considerados na implementação de um AG.
Representação dos Parâmetros
O primeiro aspecto é a representação, ou seja, a codificação escolhida deve mapear o
espaço de soluções no espaço de codificação utilizado, preservando as características do
problema. Uma codificação inadequada pode acarretar em convergência prematura do
algoritmo, resultando em um ótimo local. A representação do indivíduo poder ser feita
por inteiros, reais ou binários.
A representação binária é historicamente importante, uma vez que foi utilizada
nos trabalhos pioneiros de Holland [Hol92]. Além disso, é a representação mais aplicada
por ser facilmente utilizada, manipulada e simples de ser analisada teoricamente. Porém,
alguns problemas de otimização necessitam que seus parâmetros sejam codificados, por
exemplo, com números reais.
Processo de Seleção
De acordo com o princípio da teoria de Darwin: “Quanto melhor um indivíduo se adaptar
ao seu meio ambiente, maior será sua chance de sobreviver e gerar descendentes”. Portanto, o AG deverá, a cada geração encontrar um população de indivíduos mais aptos. O
AG começa com um população de N indivíduos, que podem ser gerados aleatoriamente.
Inspirado no processo de seleção natural de seres vivos, o AG seleciona os melhores indivíduos da população inicial (aqueles de alta aptidão) para gerar os filhos (que
são variantes dos pais) através dos operadores de cruzamento e mutação. Uma população
intermediária é utilizada para alocar os indivíduos pais selecionados. Geralmente, os pais
são selecionados com probabilidade proporcional à sua aptidão. Portanto, a probabilidade
de seleção pi de um indivíduo si com aptidão fi é dada por:
pi =
fi
N
∑i=1 fi
(9)
Dois métodos são bem conhecidos para a realização da seleção dos indivíduos:
o Método da Roleta e a Seleção por Torneio. Na seleção por roleta, cada indivíduo é
representado em uma roleta proporcionalmente à aptidão. Portanto, os indivíduos com
maior aptidão ocupam maior fatia da roleta. O Algoritmo 5 descreve o método da roleta.
Algoritmo 5 Seleção pelo Método da Roleta
1: Total ⇐ ∑N
i=1 f i ;
2: rand ⇐ randômico(0, total);
3: total parcial ⇐ 0;
4: i ⇐ 0;
5: repete
6:
i ⇐ i + 1;
7:
total parcial ⇐ total parcial + fi ;
8: até total parcial ≥ rand
9: Retornar o indivíduo si
Quando o método de seleção por torneio é utilizado, n indivíduos são escolhidos
aleatoriamente, com a mesma probabilidade. O indivíduo com maior aptidão, entre os
escolhidos, é selecionado para compor a população intermediária. O processo se repete
até que se consiga a população intermediária com o número de indivíduos desejados.
Uma estratégia que busca melhorar a convergência dos AGs é o Elitismo, que
passa um certo número de melhores indivíduos para a próxima geração. Geralmente, a
elite tem um tamanho reduzido, 1 a 2 indivíduos para cada 50 indivíduos. Esta escolha
pode ser feita diretamente ou por sorteio [CDR+ 04].
Cruzamento e Mutação
Os operadores de cruzamento e a mutação são os principais mecanismos de busca dos
AGs para explorar regiões desconhecidas do espaço de busca. O cruzamento é aplicado
a um par de indivíduos retirados da população intermediária, gerando dois indivíduos
filhos. Cada um dos indivíduos pais tem sua cadeia de bits cortada em uma posição
aleatória produzindo duas cabeças e duas caudas. As caudas são trocadas gerando dois
novos indivíduos. O operador de cruzamento pode ser apresentado esquematicamente
pela Figura 4.8.
O operador de mutação é responsável por modificar aleatoriamente um ou mais
bits da cadeia que representa um indivíduo. A probabilidade de mutação é chamada de
Ponto de Cruzamento
Pai 1
1
1
1
0
0
0
1 0
Pai 2
1
0
0
1
1
1 0 1
Filho 1
1
1
1
0
0
1 0 1
Filho 2
1
0
0
1
1 0
1 0
Figura 4.8. Esquema de representação do operador de cruzamento.
taxa de mutação. Os valores para a taxa de mutação são geralmente pequenos. O objetivo
da mutação é evitar que as soluções obtidas se concentrem em um ótimo local, explorando regiões desconhecidas do espaço de busca. Considerando o caso particular de uma
codificação binária, podemos exemplificar o operador de mutação com a Figura 4.9.
Ponto de Mutação
0 1
Pai 1
1
1
1
0
0
0
Pai 1
1
1
1
0
0
1 0 1
Figura 4.9. Esquema de representação do operador de mutação.
4.2.4. Inteligência de Enxames
O comportamento de insetos sociais tem inspirado o desenvolvimento de técnicas baseadas nessas organizações para solucionar problemas complexos [ESK01, BDT99]. Essa
abordagem busca abstrair e simular algumas das características encontradas em populações de seres vivos como a autonomia, a auto-organização, a emergência e o funcionamento distribuído. Algumas colônias já vem sendo estudadas há algum tempo como as
formigas, abelhas, aves e lagartos. Por serem, por enquanto, a colônia mais aplicada para
solução de problemas de otimização discreta, nosso texto estará concentrado somente nas
Colônias de Formigas.
Otimização por Colônia de Formigas - ACOs
Esta seção é destinada ao método de otimização heurístico baseado no comportamento
social de colônias de formigas [DMC91, DG97b, DD99b]. A inspiração para este método
partiu da experiência com a colônia de formigas Iridomyrmex humilis a uma fonte de
alimento através de dois caminhos distintos [GADP89].
O experimento foi planejado de maneira que as formigas, ao percorrerem ambas as
direções, tinham sempre que optar por um ou outro caminho. Após uma fase transitória,
Figura 4.10. Inteligência Coletiva de Pássaros e Peixes.
a maioria das formigas acabava por escolher o mesmo caminho. A probabilidade de
selecionar o caminho de menor distância aumentava à medida em que a diferença de
tamanho entre os caminhos tornava-se maior.
Figura 4.11. Esquema da Experiência com as Formigas Iridomyrmex humilis.
A explicação para tal comportamento está relacionada à substância denominada
feromônio, depositada pelas formigas durante sua locomoção. Quando as formigas chegam a um ponto de decisão, como a intersecção entre dois caminhos distintos, elas fazem
uma escolha probabilística baseada na quantidade de feromônio presente nestes caminhos.
Então, quanto maior a quantidade de feromônio em um caminho, maior a probabilidade
deste ser escolhido. Inicialmente, não existe feromônio nos caminhos, portanto, a probabilidade de escolha é a mesma para ambos os caminhos.
Quando os caminhos têm distâncias distintas, a taxa de chegada de formigas na
fonte de alimentos vindas pelo menor caminho é maior. Sendo assim, ao iniciar a viagem de retorno ao ninho, estas formigas irão encontrar mais ferômonio sobre o menor
caminho. Este fato estimulará mais formigas a seguí-lo, e assim cada vez mais, até que a
grande maioria das formigas acabe optando pelo mesmo caminho. Este processo ocorre
da mesma maneira no sentido inverso.
O Problema do Caixeiro Viajante
A primeira aplicação do algoritmo de colônia de formigas foi para o clássico problema do
Caixeiro Viajante [DG97a].
Inicialmente, m formigas são distribuídas pelas cidades segundo algum critério
pré-estabelecido e todos os caminhos (i, j) ∈ E são inicializados com a mesma quantidade
τi j (1) > 0 de feromônio. Em seguida, cada formiga k(k = 1, · · · , m) seleciona as próximas
cidades a serem visitadas, por meio da seguinte regra de decisão probabilística:
pkij (t) =
[τi j (t)]α [ηi j ]β
se j ∈ Nik ; senão, pkij (t) = 0.
α
β
[τ
(t)]
[η
]
k
∑l∈Ni i j
ij
(10)
onde:
• pkij (t) ⇒ probabilidade da cidade j ser escolhida pela formiga k, atualmente situada
na cidade i, durante a t-ésima iteração do algoritmo;
• τi j (t) ⇒ intensidade do feromônio no caminho (i, j) ∈ E na t-ésima iteração;
• α ⇒ parâmetro que regula a influência de τi j (t);
• ηi j =
1
di j
⇒ visibilidade da cidade j com relação à cidade i;
• di j ⇒ distância entre as cidades i e j;
• β ⇒ parâmetro que regula a influência de ηi j ;
• Nik (t) ⇒ conjunto de cidades ainda não visitadas pela formiga k situada na cidade i
na t-ésima iteração;
O processo de seleção da próxima cidade a ser visitada é repetido até que todas as
formigas tenham completado um caminho interligando todas as cidades uma única vez.
O processo de depósito e evaporação do feromônio ocorre do seguinte modo:
τi j (t + 1) = (1 − ρ)τi j (t) + ∆τi j (t)
k
k
sendo ∆τi j (t) = ∑m
i=1 ∆τi j (t), ∆τi j (t) =
(11)
Q
, se a formiga k percorreu o caminho (i, j) ∈
Lk (t)
E; caso contrário, ∆τikj (t) = 0 onde:
• t ⇒ iteração atual do algoritmo;
• ρ ∈ [0, 1] ⇒ parâmetro que regula a redução de τi j (t);
• ∆τi j (t) ⇒ ganho total de feromônio no caminho (i, j) ∈ E;
• m ⇒ número de formigas;
• ∆τikj (t) ⇒ ganho de feromônio no caminho (i, j) ∈ E, causado pela formiga k;
• Q ⇒ quantidade de feromônio excretada por uma formiga a cada iteração;
• Sk (t) ⇒ caminho completo que interliga todas as cidades uma única vez, descoberto
pela formiga k;
• Lk (t) ⇒ distância associada ao caminho completo Sk (t) descoberto pela formiga k;
Todos esses procedimentos são executados a cada iteração do algoritmo baseado
em colônia de formigas até que um número finito de iterações, previamente definido, seja
atingido. Neste caso, a melhor solução encontrada até o momento é retornada.
O Método de Colônia de Formigas
Agora apresentaremos a formulação geral do método baseado em colônia de formigas,
conhecido como Ant Colony Optimization - ACO, que pode ser utilizado na determinação
de caminhos de custo mínimo em um grafo G = (C, L,W ) [DD99a].
O grafo G = (C, L,W ) e as restrições Ω(C, L, θ ), que juntos representam de maneira geral um problema de otimização discreto, são definidos da seguinte forma em
[DD99b]:
• C = {c1 , c2 , · · · , cNc } é o conjunto finito de NC componentes, como, por exemplo,
as cidades do Problema do Caixeiro Viajante (TSP);
• L = {lci c j |ci , c j ∈ C} é o conjunto finito de possíveis conexões entre os elementos de
C. Como, por exemplo, os caminhos (i, j) ∈ E que interligam as cidades em TSP;
• W é o conjunto de pesos associados, ou a C, ou a L, ou a ambos. Por exemplo, a
distância di j dos caminhos (i, j) ∈ E que interligam as cidades em TSP;
• Ω(C, L, θ ) é o conjunto finito de restrições atribuídas aos elementos de C e L, com
o θ indicando que mudanças de restrição poderão ocorrer ao longo do tempo. Por
exemplo, se uma determinada cidade for visitada em TSP, ela não poderá ser visitada novamente;
• Os estados do problema são definidos por seqüências s =< a1 , a2 , · · · , ak , · · · >, com
ai = ck ∈ C, k = 1, · · · , Nc ;
• Caso c1 seja o último componente do estado s1 , então um estado s2 é dito vizinho
a s1 , se somente se, ∃ c2 ∈ C(lc1 c2 ) ∧ (s2 =< s1 , c2 >). Por exemplo, se existe em
TSP um caminho (i, j) ∈ E entre as cidades i, j ∈ E, então o estado s2 =< s1 , j > é
vizinho ao estado s1 =< s0 , i >;
• Caso a seqüência s =< a1 , a2 , · · · , ak >, ai , ai+1 ∈ L seja viável por satisfazer as
restrições Ω(C, L, θ ), então esta seqüência constituirá uma solução viável ψ do
problema abordado;
• S̃ é o conjunto de todas as soluções viáveis do problema;
• A cada solução viável ψ está associado um custo J(ψ) dado em função dos custos
J(lci c j , θ ) das conexões lci c j ∈ E, ou dos custos J(ci , θ ) dos componentes ci ∈ C, ou
de ambos. Por exemplo, dado que em TSP J(lci c j , θ ) = di j , onde di j é a distância
entre a cidade i e j, então J(ψ) = ∑(i, j)∈ψ di j . Vale ressaltar que os custos J(lci c j , θ ),
e por conseguinte J(ψ), podem estar parametrizados por alguma medida de tempo
θ , o que não é o caso de TSP.
Em um algoritmo ACO, as formigas constroem soluções representadas no grafo
de forma incremental. Cada formiga parte de uma solução inicial composta de um único
elemento pertencente a C e segue adicionando novos elementos até alcançar uma solução
viável. Os componentes candidatos a serem adicionados são selecionados aleatoriamente
a partir de uma vizinhança, definida em torno do último elemento. A escolha aleatória
é feita com o uso de informações locais dos vértices e/ou conexões já visitadas. Após
construir a solução viável ψ (ou enquanto a constrói), a formiga deposita feromônio sobre
os componentes e/ou conexões visitadas, segundo a qualidade da solução ψ encontrada
(ou que vem encontrando). Este feromônio depositado pela formiga é o que influenciará
a construção da solução das demais.
Algoritmo 6 Otimização por Colônia de Formigas
1: enquanto Critério de Parada não for satisfeito faça
2:
se Escalonar Atividades então
3:
Geração e Atividades da Fomigas( );
4:
Evaporação de Feromônio( );
5:
Atividades Opcionais( );
6:
fim se
7: fim enquanto
A Otimização por Colônia de Formigas tem sido aplicada com sucesso em vários
problemas, dentre eles: o problema do Caixeiro Viajante [DG97b], o roteamento em redes
de telecomunicações [KESMI+ 01, BHG+ 98], o roteamento de veículos, escalonamento
[CDMT94], balaceamento de cargas [SHBR96], robótica [KZ92], etc.
4.3. Robótica
4.3.1. Introdução
A palavra robô tem origem da palavra tcheca robotnik, que significa servo, o termo robô
foi utilizado inicialmente por Karel Capek em 1923, nesta época a idéia de um “homem
mecânico” parecia vir de alguma obra de ficção. No contexto atual, um robô pode ser
considerado um agente físico que executa tarefas manipulando o mundo físico. Apesar
desta definição, o termo robô pode ser usado para denotar agentes lógicos muito utilizados
em sistemas distribuídos. Um robô não precisa ser necessariamente inteligente, ele pode
ser utilizado para realização de tarefas repetitivas como na indústria automobilística e
têxtil [RN04, Mur00].
Estes robôs sem inteligência são chamados de robôs manipuladores e possuem a
sua origem nas áreas de mecânica e controle. Nesse contexto, os principais problemas dos
projetistas de robôs estão ligados a definição de funções para controle de uma trajetória
repetível, o movimento de uma articulação etc. Geralmente, esses robôs não possuem
sensores do ambiente, pois ele está inserido em um mundo imutável, onde tudo está no
lugar certo e os eventos acontecem em momentos predeterminados, com alta precisão e
rápida repetição. Robôs manipuladores estão ligados à automação de atividades rotineiras. Alguns exemplos de robôs manipuladores são: braços robôs, automação industrial,
piloto automático etc (ver Figura 4.12) [RN04, Mur00].
Figura 4.12. Exemplo de um braço robô manipulador.
Na Figura 4.13, podemos observar a evolução dos robôs desde 1960 até os dias de
hoje, onde houve o surgimento de robôs com inteligência. Essa evolução foi possível por
meio dos avanços alcançados na engenharia mecânica na corrida espacial e os avanços na
área de visão computacional para o reconhecimento de objetos 4.12) [RN04, Mur00].
Um robô inteligente pode ser definido de maneira simples: uma criatura mecânica autônoma. Por criatura, entendemos que um robô é uma entidade com suas próprias
motivações e processos de tomada de decisões. Além disso, um robô é uma criatura
mecânica, pois ele é construído ou projetado pelo ser humano. Por último, um termo
diretamente ligado a inteligência é a autonomia, que permite ao robô sentir, pensar e atuar
com o ambiente externo de forma autônoma.
Figura 4.13. Evolução histôrica dos robôs
Os robôs precisam de inteligência pela necessidade de: interpretação de sensações, entendimento de situações, interação com seres humanos, recuperação de falhas,
localização e aprendizado [RN04, Mur00]. Atualmente, a área de inteligência artificial
possui as ferramentas necessárias para estudar esses problemas, dentre elas, destacamos:
representação de conhecimento (ex: lógica de predicados), entendimento de linguagens
(ex: linguagens como o Prolog), planejamento e solução de problemas (ex: Algoritmos
Genéticos), busca (ex: algoritmo A? ), inferência (ex: sistemas especialistas), aprendizado
(ex: redes neurais artificiais) e visão (ex: classificadores de padrões).
Figura 4.14. Aplicações de robôs: entretenimento e tarefas cotidianas.
Com o estudo e desenvolvimento destas áreas da inteligência artificial nos últimos
anos, os robôs inteligentes já são utilizados em diversas aplicações de áreas diferentes,
tais como (ver Figura 4.14):
• Substituição de humanos em tarefas cotidianas (cortar grana etc.);
• Ambientes arriscados: poder de fazer coisas que os humanos não conseguem (ex:
vasculhar os destroços do WTC, desarmar bombas, exploração espacial);
• Linha de montagem: substituição de peças, manipulação de materiais, soldagem e
pintura;
• Transporte: cadeira de rodas automáticas, helicópteros autônomos, navegação em
auto-estradas;
• Medicina: realização de cirurgias precisas no cérebro.
• Entretenimento: cães robôs, futebol de robôs etc.
4.3.2. Arquitetura de Robôs
Robôs inteligentes são compostos por: efetuadores, sensores, energia, controle e inteligência. Na Figura 4.15, podemos observar a arquitetura de um robô com controle remoto,
ou seja, a inteligência é centralizada e não está localizada no agente. Neste caso, o operador do robô precisa de um display local e um mecanismo de controle para guiar o robô.
Para a inteligência artificial, um robô que é totalmente controlado por um humano não é
um objeto de estudo interessante. Portanto, para o estudo de robôs inteligentes consideramos apenas os robôs tele-operados e totalmente autônomos. Os robôs tele-operados são
auxiliados por humanos em atividades mais complexas como reconhecimento de objetos
[RN04, Mur00].
Figura 4.15. Arquitetura de robôs.
Os efetuadores são os meios pelos quais os robôs se movem e alteram a forma de
seus corpos, ou seja, cuidam da mobilidade e comunicação de um robô. A mobilidade
está relacionada com o movimento das pernas, braços, pescoço e demais partes do robô
que atuam com o meio externo. Um conceito importante relacionado com a mobilidade é
o grau de liberdade, que indica o número de direções independentes em que um efetuador
pode mover-se. Já a comunicação está relacionada com a emissão de sons, gestos e qualquer outro tipo de dispositivo que permita a iteração do robô com outros agentes e com o
ambiente [RN04, Mur00].
Os sensores são a interface perceptiva entre robôs e seus ambientes, ou seja, a
entrada de dados e informações do robô. Eles podem estar presentes em diferentes partes
de um robô como olhos, nariz, tato e audição, além de outros sensores como radares e
sensores de umidade [RN04, Mur00].
Um grande desafio na construção de robôs hoje em dia é a questão da economia
de energia. Quanto mais complexos, em termos de motores e componentes eletrônicos,
mais energia é consumida por um robô. Como alternativa as baterias, que são pesadas e
armazenam pouca energia, robôs de exploração espacial como o Opportunity utilizam a
energia solar para seu funcionamento [RN04, Mur00].
Mas a parte fundamental de um robô inteligente é parte de controle e inteligência.
Este componente do robô é o principal foco da inteligência artificial, que provê a autonomia necessária para os robôs. Para atingir uma autonomia completa, a parte de controle e
inteligência deve cuidar da geração e execução de ações para atingir um objetivo ou completar uma missão. Além disso, a execução é caracterizada pela ocorrência de eventos e
ambientes não previstos, exigindo uma adaptação dinâmica do sistema. Neste trabalho,
abordaremos com mais detalhes no capítulo seguinte, o uso de computação bioinspirada
para o alcance desta autonomia [RN04, Mur00].
4.3.2.1. Robôs Móveis
Quanto á mobilidade, os robôs inteligentes podem ser divididos em três classes [Mur00]:
Veículos Terrestres Não-Tripulados (VTNT), Veículos Aéreos Não-Tripulados (VANT) e
Veículos Subaquáticos Não-Tripulados (VSNT).
Os VTNTs são caracterizados pela presença de rodas, esteira, patas ou pernas.
Os principais exemplos deste tipo de robô móvel são: o cão AIBO da Sony, os jipes de
exploração espacial Sojourner e Opportunity da NASA, além dos humanóides P3 e Asimo
da Honda (ver Figura 4.16(a)).
Figura 4.16. Classes de robôs: (a) VTNT; (b) VANT; (c) VSNT.
Os VANTs são caracterizados pela presença de asa fixa ou veículos do tipo VTOL
(tipo helicóptero, que levantam vôo e aterrisam na vertical). Os principais exemplos deste
tipo de robô móvel são os projetos: Global Hawk, Predator e UCAV (ver Figura 4.16(b)).
Os VSNTs são divididos em duas classes: operados remotamente e totalmente
autônomos.Os principais exemplos deste tipo de robô móvel são os projetos: Persephone,
Jason e Hugin (ver Figura 4.16(c)).
4.3.3. Tipos de Robôs Inteligentes Autônomos
Idealmente, robôs inteligentes devem ser totalmente autônomos. A autonomia de um
robô é baseada em três primitivas: sensação, planejamento e ação [Mur00]. Uma quarta
primitiva opcional seria o aprendizado. Um robô deve coletar dados de entrada sobre o
ambiente ao seu redor (sensação), processar estes dados em busca de informações significativas (planejar) e então atuar no ambiente da melhor forma possível (ação). Baseado
no fato que os únicos seres autônomos inteligentes conhecidos são da própria espécie humana, o aprendizado se torna uma ferramenta que auxilia na compreensão e adaptação do
robô as mudanças no ambiente, tal como nos humanos.
A autonomia de um robô inteligente pode ser dividida em três classes: reativa,
deliberativa e híbrida. A autonomia deliberativa foi a primeira proposta baseada ainda em
Figura 4.17. Primitivas para um robô autônomo.
robôs manipuladores. Nesse tipo de autonomia, um robô coleta informações do ambiente,
planeja e age de maneira seqüencial. As sensações são realimentadas com as ações tomadas. Esta estrutura monolítica e seqüencial torna esse tipo de autonomia muito restrita e
com baixo desempenho.
Com todas as limitações desta abordagem, a autonomia reativa foi proposta como
uma forma mais interessante de autonomia. Neste tipo, um robô não possui mais a primitiva de planejamento, ele simplesmente reage de acordo com as sensações. Com isso,
ganhou-se em paralelismo, pois as decisões se tornaram independentes. Apesar disso,
os engenheiros de controle não conseguiam provar formalmente o funcionamento destes
robôs. Além disso, os estudiosos de inteligência artificial desejavam colocar o planejamento de volta aos robôs, pois ele era essencial para a tomada de decisões inteligentes.
Com isso, em 1990, foi proposta uma abordagem híbrida (deliberativa/reativa),
onde primeiramente o robô planeja, depois ele se torna reativo até que a tarefa esteja
completa ou precisa de alguma adaptação. Desta forma o robô passou a tomar decisões inteligentes, mas reagindo com o ambiente de forma paralela. A primitiva de planejamento
pode ser implementada com diversas técnicas de inteligência artificial. Dentre estas técnicas, destacamos a computação bioinspirada. Além disso, estas técnicas podem trabalhar
em conjunto com técnicas de aprendizado, tornando o robô altamente adaptativo.
4.4. Aplicações
A autonomia de um robô depende de suas partes sensoriais, de planejamento e atuação ou
ação [Mur00]. O módulo de planejamento pode ser definido como a inteligência do robô,
pois é o responsável pela geração e conseqüente execução das ações do robô que fazem
parte do objetivo que este deve atingir.
Apesar dos diversos avanços nas pesquisas nas áreas de inteligência artificial, projetar o módulo de planejamento de um robô é uma tarefa árdua. A dificuldade do desenvolvimento da inteligência do robô é, em grande parte, justificada pelo seu ambiente.
Diferentemente de muitas das diversas aplicações nas quais técnicas de inteligência artificial são aplicadas, o ambiente dos robôs é o mundo real que possui diversas características
que dificultam as ações de um robô.
Podemos dizer que o mundo real é não determinístico, isto é, muitas vezes, o robô
atinge estados não previstos, por falhas ou condições geradas pelo ambiente. Portanto, os
robôs precisam trabalhar com incertezas. Como o mundo real é dinâmico, uma mesma
ação tomada em momentos diferentes pode gerar resultados diferentes, forçando os robôs
a trabalhar na resolução de problemas de decisão e até mesmo aprendizado, determinando
quando e como atuar. Geralmente, o robô precisa agir rapidamente e, portanto, não pode
gastar muito tempo para tomar uma decisão e atuar [RN04].
Além das limitações ambientais, e da dificuldade de se trabalhar com sistemas
complexos, ainda existem situações em que um robô deve interagir com outros. Nesta
situação, consideramos sistemas multi-robôs. Um sistema como este é composto por
robôs mais simples, podendo ser divididos em grupos especializados para que cada grupo
realize as tarefas de todo o sistema.
Figura 4.18. Exemplo de sistema muti-robôs heterogêneo com robôs diferentes
que realizam parte da tarefa global do sistema.
Sistema muti-robôs são mais robustos que sistemas com um único robô porque,
caso um robô falhe, outros do grupo podem assumir o trabalho no lugar do que falhou.
Além da robustez, por um sistema multi-robôs ter as tarefas distribuídas, os equipamentos
também podem ser distribuídos, reduzindo a complexidade de cada robô e conseqüentemente o custo e o consumo de energia de cada robô [JAI].
Por outro lado, sistemas muti-robôs necessitam de sistemas de controle robustos
[FM98], para que, a partir da comunicação entre os robôs, o gerenciamento das tarefas e a
cooperação entre os robôs do grupo realmente possam trabalhar para a execução da tarefa
do sistema.
Podemos concluir então que o comportamento de um robô é determinado pela
interação entre o robô e o meio ambiente (que pode conter outros robôs). Por se tratar de
um meio ambiente normalmente desconhecido para o robô e dinâmico a dificuldade de se
implementar o módulo de planejamento é grande.
Baseados no comportamento de seres vivos, seus sistemas, processos e relacionamento com o meio ambiente, muitas técnicas bioinspiradas são aplicadas ao projeto do
módulo de planejamento do robô. Uma das grandes dificuldades na execução das tarefas
de um robô está na navegação e reconhecimento do ambiente e conseqüente execução
da tarefa. Separando as diversas tarefas que um robô executa até concluir uma tarefa,
podemos citar: navegação, detecção e identificação de objetos, otimização etc.
As principais características das técnicas bioinspiradas que as levaram a ter uma
posição de destaque no cenário da robótica são:
• Capacidade de adquirir conhecimento a partir da iteração com o meio ambiente
possibilitando o aprendizado;
• Capacidade de adaptação ao meio ambiente através de aprendizado e/ou generalização;
• Capacidade de encontrar soluções reais para problemas que muitas vezes envolvem
múltiplos objetivos;
• Capacidade de operação em ambientes desconhecidos (sem informações prévias) e
dinâmicos (mesmo com informações prévias, o ambiente se altera);
• Capacidade de operar em situações em que haja falha no sensoriamento ou que este
não consegue reunir todas as informações necessárias através da generalização ou
aprendizado.
A seguir, apresentaremos como as técnicas bioinspiradas são aplicadas na robótica.
4.4.0.1. Aplicações com RNAs
As Redes Neurais Artificiais são muito aplicadas à robótica por apresentarem um grande
poder de representação de conhecimento necessário para o planejamento das operações.
Por conseguirem representar funções onde se conhece somente as entradas e saídas, as
Redes Neurais Artificiais são muito usadas no aprendizado dos robôs. O aprendizado,
utilizando-se um conhecimento prévio, pode ser realizado antes que o robô comece sua
execução. No entanto, talvez seja necessário reunir informações do próprio ambiente e o
robô já esteja em execução. Ou ainda, uma mudança no ambiente aconteça e o robô tenha
que aprender novos conceitos. Portanto, o aprendizado do robô, durante sua execução,
muitas vezes é necessário.
Outra característica que determina a aplicação das redes neurais à robótica é a
capacidade de generalização. Um robô com capacidade de generalização pode associar
um ambiente, objeto ou ação parecida com o que foi aprendido e atuar de maneira semelhante, sem a necessidade de a Rede Neural aprender todas as situações possíveis para ser
capaz de atuar.
O tamanho da Rede Neural usada para controlar robôs varia de acordo com a
quantidade de informações e a dificuldade em se aprender. Portanto, podemos afirmar
que seu tamanho determina a qualidade das ações do robô.
Outra aplicação das Redes Neurais à robótica está na parte de visão computacional. Algumas das etapas que fazem parte da “visão do robô” são a segmentação e
a identificação [AMG99]. Nesta etapa, podem ser usadas redes neurais para distinguir
diversos objetos em um ambiente e identificá-los.
Pesquisas realizadas na Universidade Federal de Santa Catarina [DdI] com um
robô construído com o Kit Lego MindStorm mostram a utilização das Redes Neurais
em robôs. No experimento, o robô fica sobre uma mesa branca delimitada por uma faixa
preta, contendo latinhas verdes e amarelas. Baseado no “conhecimento” que foi aprendido
pela RNA, o robô deve tirar da mesa as latas verdes e deixar as amarelas, sem sair da área
marcada. As redes usadas nessa operação foram desenvolvidas no Projeto PiramidNet.
Quatro Redes Neurais hierárquicas foram criadas, cada uma delas responsável por um
tipo ação do robô necessária para que a tarefa do mesmo fosse cumprida. Os sensores
do robô detectam as latas e as bordas da mesa e essas informações são passadas para a
primeira rede neural que é responsável por detectar eventos. A segunda é responsável
pelas decisões que o robô toma de acordo com os eventos detectados na primeira rede.
Com base nessa decisão, o robô pode realizar uma ação, como empurrar uma lata, andar
pela mesa etc. A terceira rede é responsável por manter o robô sobre a mesa e uma
quarta é responsável pela ativação dos equipamentos necessários para que o robô realize
as ações determinadas pela segunda rede. Neste caso, foram usados dois tipos de Redes
Neurais Artificiais: diretas e recorrentes [BCL00]. Para as atividades mais simples, foram
utilizadas as redes diretas. No entanto, a Rede Neural Artificial responsável pela decisão
das ações do robô é mais complexa, portanto, foram usadas as redes neurais recorrentes.
Caso - Fusão de Sensores
Os Robôs móveis precisam interagir com o ambiente, e por isso dependem de dados
provenientes de sensores para ter uma representação do ambiente. Cada tipo de sensor apresenta suas características particulares e tem um custo associado. Além disso,
geralmente fornecem informações incompletas, inconsistentes ou imprecisas sobre o ambiente. Assim a fusão das informações de diversos sensores pode fornecer informações
mais completas e precisas [Kle99].
A área de fusão de sensores é muito vasta e tem sido empregada na solução de
diversos tipos de problemas em diferentes áreas de aplicação. Para melhorar a precisão e
estabilidade das medidas de distância entre um robô e um objeto, foram utilizadas técnicas
de Redes Neurais Artificiais. Para isto as RNAs serão capazes de corrigir as imprecisões
de cada sensor e melhorar a repetibilidade e capacidade das medições.
Para esta aplicação foram utilizadas as Redes Neurais Artificiais do tipo MultiLayer Perceptron (MLP), além de outras técnicas de Aprendizado de Máquina (AM) para
regressão. Estas redes foram utilizadas individualmente ou combinadas com outras redes
(Comitê de RNAs).
Nos experimentos realizados por [FCR01] foram obtidas reduções de erro das
medidas de até 89,35%. Resultados mais detalhados podem ser obtidos em [Fac01].
4.4.0.2. Aplicações com SIAs
Os Sistemas Imunológicos Artificiais possuem a capacidade de encontrar soluções não
previstas, isto é, fazer com que um robô possa se adaptar às mudanças não previstas
no ambiente. Através da reação da rede de anticorpos à presença de antígenos, o robô
pode reagir às mudanças do ambiente. O robô funciona como o anticorpo que reage aos
estímulos captados pelos sensores. A estrutura da rede dos sistemas imunológicos possue
a capacidade de auto-organização e podem ser implementados de maneira distribuída e
cooperativa.
Utilizando o mini robô Khepera [Cor, MFI93], pesquisadores da Unicamp [DdEEedC]
utilizaram um algoritmo baseado em Sistemas Imunológicos Artificiais. Os sensores de
luminosidade e de distância foram modelados como antígenos. Os módulos responsáveis
pela locomoção foram modelados como a rede anticorpos. Dessa maneira, cada vez que
os sensores detectavam um obstáculo, isto é, um antígeno, a rede inicia uma resposta
imunológica e o robô se movimenta, reagindo ao estímulo captado pelos sensores.
Apesar desta ser uma aplicação simples, ela demonstra a capacidade de reação dos
sistemas imunológicos. Este mecanismo pode ser aplicado às diversas ações do módulo
de planejamento de um robô.
Pesquisadores que participaram do projeto desta aplicação simples publicaram
artigos com aplicações de Sistemas Imunológicos Artificiais mais complexos. Um destes artigos [MZ02] apresenta um sistema imunológico para um robô com tarefas multiobjetivo. Neste modelo, os anticorpos representam uma ação que o robô deve executar e
os antígenos representam o estado atual do robô. Estímulos e a supressão das iterações
entre os anticorpos também foram modelados. A morte celular acontece através da seleção dos anticorpos com aptidão baixa e são substituídos por novos anticorpos gerados
[GVSG05].
4.4.0.3. Aplicações com Computação Evolucionária
A computação evolutiva é muito utilizada para sintetizar automaticamente controladores
embarcados para robôs e equipes de robôs, com o propósito de treiná-los para desenvolver
tarefas específicas [CDR+ 04]. Com as técnicas de computação evolutiva, especifica-se o
que é desejado do robô, sem definir como ele deve fazer para obter o comportamento desejado. Dessa maneira, o robô pode permanecer em constante evolução, sempre na busca
de soluções melhores. Com a utilização da computação evolutiva, é possível que seja encontrada uma solução para um objetivo específico, de maneira robusta e com diversidade
de soluções. Ela permite a auto-programação de sistemas complexos com um robô ou
com diversos.
A computação evolutiva está associada a otimizações realizadas na operação de
um robô, por exemplo, encontrar a melhor trajetória, ou a melhor maneira de se executar
uma ação. No entanto, a aplicação da computação evolutiva não se limita a otimizações.
Robôs que aplicam técnicas evolutivas normalmente têm uma grande autonomia, pois
através da evolução, tornam-se mais independentes das opções de seus projetistas.
Além da aplicação da computação evolutiva em partes dos processos do modo de
planejamento do robô, muitos pesquisadores investem na aplicação das técnicas evolutivas
em todo o processo de desenvolvimento do robô. Dessa maneira, os algoritmos evolutivos
não seriam somente responsáveis por mudanças de parâmetros em módulos específicos do
robô, mas também pelo projeto de todo o robô.
A etapa de evolução de um robô ou de um grupo de robôs pode ser simulada em
um computador e depois os parâmetros da solução encontrada são colocadas nos robôs.
No entanto, para aumentar a autonomia dos robôs, a evolução pode ocorrer nos robôs
durante a execução dos mesmos.
Um exemplo de aplicação de sistemas evolutivos é o robô PINO [Pro]. A idéia
de seu projeto surgiu em 1999, quando o único robô humanóide disponível era o Honda
Asimo. O Asimo é um robô caro, com sistemas complexos e de alta precisão. Isso serviu como motivação para que o projetista do PINO desenvolvesse um robô que utilizasse
motores baratos. No entanto, estes motores não têm força suficiente para executar os movimentos de um robô de maneira tradicional, cópia do movimento do ser humano quando
anda. Neste ponto do projeto, decidiu-se usar um algoritmo genético para viabilizar a locomoção do robô. Ajustando os parâmetros necessários para que o PINO andasse, como
o tamanho dos passos, a altura que a perna deve ser erguida etc, foi possível atingir os
objetivos do projeto. Inicialmente, nas primeiras gerações do algoritmo genético, o PINO
somente balançava, no entanto, depois de algumas horas de “evolução”, o robô começou
a andar. Outro fato bastante interessante é a distribuição gratuita sob a licença GNU GPL
de todo o código fonte do software usado no aprendizado do robô. Além do código, a
página do projeto ainda possui a descrição dos circuitos, componentes e demais recursos
necessários para a construção do robô.
Figura 4.19. Robôs Honda Asimo e PINO.
Caso - Nariz Artificial
Esta aplicação mostra um sistema de reconhecimento de padrões de um nariz artificial
utilizando técnicas de AGs e RNAs [TLS01].
Neste caso, foram utilizadas técnicas híbridas com Redes Neurais Artificiais e Algoritmos Genéticos. Foram desenvolvidos três protótipos diferentes do nariz artificial.
Dois dos protótipos foram utilizados no reconhecimento de diferentes substâncias químicas e de diferentes vinhos. O terceiro protótipo, com processamento temporal, foi
desenvolvido para reconhecimento de gases derivados do petróleo. Os Algoritmos Genéticos têm sido implementados para otimizar as arquiteturas das Redes Neurais Artificiais,
definindo o número ideal de nodos e conexões.
A implementação deste tipo de sistema é muito importante como, por exemplo, na
indústria de alimentos. Neste caso, o reconhecimento de odores na inspeção da qualidade
e no monitoramento de processos ainda são analisados com o nariz humano. Entretanto,
nosso nariz é cheio de contrastes. Enquanto existe alta sensibilidade para certos compostos químicos, o nariz é bem menos sensível a outras classes de substâncias. Além disso,
o olfato natural é capaz de distinguir certos odores com facilidade, porém é muito difícil explicar a diferença na percepção, pois não há uma escala para medir intensidade de
estímulos odorantes, como existe para o som (decibéis).
Por isso existe a necessidade de desenvolver um nariz artificial. Neste sistema,
dois componentes são fundamentais: o sistema de sensor [sNS+ 99] e o reconhecimento
de padrões.
4.4.0.4. Aplicações com Algoritmo de Colônia de Formigas
Na otimização por Colônia de Formigas, o comportamento inteligente surge da interação
de um conjunto (colônia) de indivíduos simples. Esta técnica é geralmente aplicada em
um conjunto de robôs simples que não possuem o conhecimento da global da tarefa que
deve ser realizada. As ações de cada robô são baseadas em decisões locais, isto é, do
próprio robô e, normalmente, é difícil de prever qual será a ação de cada robô. No entanto, com a comunicação entre os robôs, a inteligência do conjunto de robôs, surge como
conseqüência da auto-organização dos mesmos.
Caso - Determinação de rotas em um Robô
Neste estudo de caso, um robô inteligente é projetado para se deslocar até a sua base de
apoio (local de destino) desviando de obstáculos e seguindo o menor caminho. O robô
obtém parâmetros de entrada para se localizar em relação a sua base de apoio. Ele deve
encontrar e chegar até sua base de apoio utilizando o menor caminho, de acordo com as
possíveis rotas, desviando-se dos obstáculos que possa encontrar pelo caminho. Para que
sejam estabelecidas as possíveis rotas que o robô poderá seguir, o terreno foi mapeado
numa matriz 10 x 5 conforme mostrado na Figura 4.20.
O círculo indica a base de apoio. Supondo que o robô tenha iniciado no local descrito na figura, é possível estabelecer algumas rotas importantes para que o robô chegue
até a base de apoio sem passar pelos obstáculos.
Na Figura 4.21, diante das rotas R1 e R2 estabelecidas para a posição do robô, na
contagem de posições até a base de apoio, evidencia-se a rota R2 como menor caminho.
Serão utilizados dois algoritmos, um deles bioinspirado (colônia de formigas) e outro com
uma técnica tradicional (Dijkstra) para estabelecimento das rotas a serem seguidas pelo
Figura 4.20. Mapa do terreno percorrido pelo robô.
Figura 4.21. Alternativas possíveis de deslocamento até a base.
robô.
Para a implementação dos algoritmos estudados são utilizados os Kits LEGO
[Knu]. O Lego Mindstorm (ver Figura 4.22) oferece diversas vantagens para a aprendizagem e desenvolvimento de projetos educacionais devido à praticidade na montagem
e desmontagem. Para sua programação utiliza-se um computador e depois descarrega-se
o programa utilizando uma torre de transmissão por infravermelho. Após carregado, o
módulo de controle (RCX) se torna independente.
Figura 4.22. Equipamento para programação do RCX.
O RCX é um microcontrolador que funciona como o “cérebro do robô”, que está
encapsulado num tijolo LEGO. A Figura 4.23 mostra a fotografia do RCX.
Figura 4.23. O micro-controlador RCX.
O RCX possui três portas de saída (A, B e C) que são superfícies de quatro pinos
LEGO com pequenos contatos laterais e podem ser operadas em três modos: ligado,
desligado e flutuante. Se um motor for conectado a uma porta ligada do RCX, este entra
em rotação. No modo desligado, o motor para, e flutuante o motor nem rotaciona, mas
também fica livre para rotacionar.
As saídas ainda possuem configuração para direção do motor (frente e trás) e
potência. O firmware tradicional possui 8 potências diferentes para os motores, e o LegOS
255 potências distintas.
O RCX possui três portas de entrada, semelhantes fisicamente às portas de saída,
onde podem ser conectados os sensores oficiais da LEGO (luminosidade, toque, rotação
e temperatura). Existem dois tipos de sensores: passivos e ativos. Sensores passivos
operam somente com resistências; é o caso dos sensores de toque e temperatura. Sensores
ativos possuem construção eletrônica sofisticada e realizam tarefas mais complexas do
que simplesmente ser uma resistência. Exemplos de sensores ativos são os sensores de
luz e rotação.
Para a programação, utilizamos o programa RCX Command Center que usa a
linguagem NQC baseada na linguagem C, dessa forma a implementação torna-se ainda
mais didática (Figura 4.24).
O problema consiste em especificar um modelo de otimização que encontre o menor caminho sem passar pelos obstáculos. Nesse caso basta que o robô chegue de acordo
com a rota R2. Dessa forma, serão utilizados dois métodos para resolução do problema.
O primeiro é um método clássico na teoria dos grafos de busca pelo menor caminho, o
algoritmo de Dijkstra. Este algoritmo, basicamente, parte de uma estimativa no ponto inicial de custo mínimo até o próximo ponto ou até o fim do caminho e vai sucessivamente
ajustando esta estimativa de acordo com os pontos escolhidos. O segundo é o algoritmo
do Sistema de Colônia de Formigas. Ele é baseado na imitação do comportamento coletivo de uma colônia de formigas escolhendo um caminho entre o ninho e uma fonte de
Figura 4.24. Interface do RCX Command Center.
alimento [DMC96]. Cada formiga marca o seu caminho com uma substância denominada
feromônio, e o caminho assim marcado é usado como referência por outras formigas. A
intensidade (concentração) do feromônio decai com o tempo.
Veja a seqüência representada na Figura 4.25 onde um grupo de formigas está
se deslocando entre o ninho A e a fonte de alimento E (Figura 4.25 (a)). Quando um
obstáculo é posicionado de forma a interromper o deslocamento das formigas (Figura 4.25
(b)), estas começam a busca de caminhos alternativos (Figura 4.25 (c)). Dois caminhos
são então possíveis ABHDE (mais longo) e ABCDE (mais curto). Como a concentração
de feromônio é mais alta no caminho mais curto, mais formigas escolherão este caminho.
Figura 4.25. Comportamento do algoritmo de colônia de formigas.
Este é um problema simples, porém, mostra facilmente a escalabilidade desta so-
lução à medida que o cenário se torna mais complexo e a medida que mais robôs forem
utilizados paa exploração de um terrenos desconhecido.
Referências
[AMG99]
A. Arleo, J.R. Millan, and W. Gerstner. Hippocampal spatial model for
state space representation in reinforcement learning. Technical report,
Swiss Federal Inst. of Technology Lausanne, Switzerland, 1999.
[Bac96]
T. Back. Evolutionary Algorithms in Theory and Practice. Oxford University Press, 1996.
[BCL00]
A.P Braga, A.C.P.L.F. Carvalho, and T.B. Ludermir. Redes Neurais Artificiais: Teoria e Aplicações. Editora LTC, 2000.
[BDT99]
E. Bonabeau, M. Dorigo, and G. Theraulaz. Swarm Intelligence: From
Natural to Artificial Systems. Oxford Univ. Press, 1999.
[BHG+ 98]
E. Bonabeau, F. Henaux, S. Guérin, D. Snyers, P. Kuntz, and G. Theraulaz. Routing in telecommunications networks with “smart” ant-like agents.
In Intelligent Agents for Telecommunications Applications ’98 (IATA’98),
1998.
[CDMT94]
A. Colorni, M. Dorigo, V. Maniezzo, and M. Trubian. Ant system for
job-shop scheduling. JORBEL - Belgian Journal of Operations Research,
Statistics and Computer Science, 1(34):39–53, 1994.
[CDR+ 04]
A.C.P.L.F. Carvalho, A.C.B. Delbem, R.A.F Romero, E.V. Simões, and
G.P. Telles. Computação Bioinspirada, chapter 4. Congresso Nacional da
SBC - Jornada de Atualização em Informática, 2004.
[CH83]
V. Chankong and Y.Y. Haimes. Multiobjective Decision Making: Theory
and Methodoly, volume 8. Horth-Holland(Elsevier), 1983.
[Cor]
K-Team Corporation.
[Cor05]
L. Correa. Vida Artificial, pages 257–305. Encontro Nacional de Inteligência Artificial - SBC 2005, 2005.
[CVZ00]
L.N. Castro and F. Von Zuben. Artificial immune systems: Part ii - a
survey of applications. Technical Report DCA-RT 02/00, Department of
Computer Engineering and Industrial Automation, School of Electrical and
Computer Engineering, State University of Campinas, SP, Brazil, feb 2000.
[Cyb89]
G. Cybenko. Approximations by superpositions of sigmoidal functions.
Mathematics of Control, Signals, and Systems, 2(4):303–314, 1989.
[Das98]
D. Dasgupta. Artificial Immune Systems and their Applications. SpringerVerlag, 1998.
[dC01]
L.N. de Castro. Engenharia Imunológica: Desenvolvimento e Aplicação
de Ferramentas Computacionais Inspiradas em Sistema Imunológicos Artificiais. PhD thesis, Faculdade de Engenharia Elétrica e de Computação,
UNICAMP, Campinas-SP, Brasil, 2001.
[dCT02]
L.N. de Castro and J. Timmis. Artificial Immune Systems: A New Computational Approach. SpringerVerlag, 2002.
[dCT03]
L.N de Castro and J. Timmis. Artificial Immune Systems as a Novel Soft
Computing Paradigm. Soft Computing, 7(8):526–544, 2003.
[DD99a]
M. Dorigo and G. Di Caro. Ant colony optimization: A new metaheuristic. In Peter J. Angeline, Zbyszek Michalewicz, Marc Schoenauer,
Xin Yao, and Ali Zalzala, editors, Proceedings of the Congress on Evolutionary Computation, volume 2, pages 1470–1477, Mayflower Hotel,
Washington D.C., USA, 6-9 1999. IEEE Press.
[DD99b]
M. Dorigo and G. Di Caro. The ant colony optimization meta-heuristic.
In David Corne, Marco Dorigo, and Fred Glover, editors, New Ideas in
Optimization, pages 11–32. McGraw-Hill, London, 1999.
[DdEEedC]
Universidade Estadual de Campinas UNICAMP Depto de Engenharia Elétrica e de Computação.
[DdI]
Universidade Federal de Santa Catarina UFSC Depto de Informática.
[DG97a]
M. Dorigo and L.M. Gambardella. Ant colony system: A cooperative
learning approach to the traveling salesman problem. IEEE Transactions
on Evolutionary Computation, 1(1):53–66, April 1997.
[DG97b]
M. Dorigo and L.M. Gambardella. Ant colony system: A cooperative
learning approach to the traveling salesman problem. IEEE Transactions
on Evolutionary Computation, 1(1):53–66, April 1997.
[DKWB04]
D. Dasgupta, K. KrishnaKumar, D. Wong, and M. Berry. Immunity-based
aircraft fault detection system. In American Institute of Aeronautics and
Astronautics Chicago, pages 20–24, september 2004.
[DMC91]
M. Dorigo, V. Maniezzo, and A. Colorni. Positive feedback as a search
strategy, 1991.
[DMC96]
M. Dorigo, V. Maniezzo, and A. Colorni. The Ant System: Optimization
by a colony of cooperating agents. IEEE Transactions on Systems, Man,
and Cybernetics Part B: Cybernetics, 26(1):29–41, 1996.
[DN00]
D. Dasgupta and F. Nino. A comparison of negative and positive selection
algorithms in novel pattern detection. In IEEE International Conference on
Systems, Man and Cybernetics (SMC), volume 1, pages 125–130, october
2000.
[ESK01]
R. Eberhart, Y. Shi, and J. Kennedy. Swarm Intelligence. Morgan Kaufmann, 2001.
[Fac01]
K. Faceli. Combinação de métodos de inteligência artificial para a fusão
de sensores. Master’s thesis, Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo, 2001.
[FCR01]
K. Faceli, A.C.P.L.F Carvalho, and S.O. Rezende. Experiments on machine
learning techniques for sensor fusion. In IV International Conference on
Computational Intelligence and Multimedia Applications (ICCIMA-01),
pages 395–399, 2001.
[FM98]
D. Floreano and F. Mondada. Evolutionary neurocontrollers for autonomous mobile robots. Neuural Networks, 11(7-8):1461–1478, 1998.
[FPP86]
J.D. Farmer, N.H. Packard, and A.S. Perelson. The immune system, adaptation and machine learning. Physica, 22:187–204, 1986.
[GADP89]
S. Goss, S. Aron, J.L. Deneubourg, and J.M. Pasteels. Self-organized
shortcuts in the argentine ant. Naturwissenschaften, 1989.
[GBD92]
S. Geman, E. Bienenstock, and R. Doursat. Neural networks and
bias/variance dilemma. Neural Computing, 4(1):1–58, 1992.
[GH88]
D.E. Goldberg and J. Holland. Genetic algorithms and machine learning.
Machine Learning, 3:95–99, 1988.
[Gol89]
D.E. Goldberg. Genetic Algorithms in Search, Optimization, and Machine Learning. Addison-Wesley Publishing Company, Inc., Reading, MA,
1989.
[GVSG05]
J.C. Galeano, A. Veloza-Suan, and F.A. González. A comparative analysis
of artificial immune network models. In GECCO, pages 361–368, 2005.
[Hay94]
S. Haykin. Neural Networks: A Comprehensive Foudation. Macmillan,
1994.
[Hol92]
J. Holland. Adapataion in Natural and Artificial Systems. The University
of Michigan Press, 1992.
[KB99]
J. Kim and P. Bentley. The human immune system and network intrusion
detection. In 7th European Congress on Intelligent Techniques and Soft
Computing (EUFIT ’99), Aachen, Germany, September 13-19, 1999.
[KESMI+ 01] I. Kassabalidis, M.A. El-Sharkawi, R.J. Marks II, P. Arabshahi, and A.A.
Gray. Swarm intelligence for routing in communication networks, November 2001.
[Kle99]
L.A. Klein. Sensor and Data Fusion Concepts and Applications. SPIE
Press, 1999.
[Knu]
J. Knudsen. The unofficial guide to Lego Mindstorms robots.
[KZ92]
R.C. Kube and H. Zhang. Collective robotics: from social insects to robots.
Adaptive Behaviour, 1994, 2(2):189–218, 1992.
[Med04]
T.H. Medeiros. Novo método de seleção de modelos neurais por meio da
auto-correlação do resíduo. Technical report, Depto. Engenharia Eletrônica, Universidade Federal de MInas Gerais, 2004.
[MFI93]
F. Mondada, E. Franzi, and P. Ienne. Mobile robot miniaturisation: a tool
for investigation in control algorithms. In Third International Symposium
on Experimental Robotics, 1993.
[MP43]
W.S. McCulloch and W. Pitts. A logical calculus of the ideas immanent in
nervous activity. Bulletin OF Mathematical Biophysics, 5:115–133, 1943.
[MP69]
M.L. Minsky and S.A. Papert. Perceptrons: An Introduction to Computational Geometry. Cambridge, MA:MIT Press, 1969.
[Mur00]
R. Murphy. Introduction to AI Robotics. MIT Press, 2000.
[MZ02]
R. Michelan and F.J.V Zuben. Decentralized control system for autonomous navigation based on an evolved artificial immune network. In IEEE,
editor, IEEE Congress on Evolutionary Computation, volume 2, pages
1021–1026, 2002.
[Pro]
Kitano Symbiotic Systems Project.
[Rez03]
S. Rezende, editor. Sistemas Inteligentes: Fundamentos e Aplicações. Editora Manole, 2003.
[RHW86]
D.E. Rumelhart, G.E. Hinton, and R.J. Williams. Learning internal
representation by error propagation. In Parallel Distributed Processing:Explorations in the Microstructure of Cognition, volume 1, pages
318–362. Cambridge, MA:MIT Press, 1986.
[RN04]
S. Russel and P. Norvig. Inteligência Artificial. Editora Campus, 2004.
[Ros58]
F. Rosenblatt. The perceptron: A probabilistic model for information storage in the brain. Psychological review, 65:386–408, 1958.
[RT00]
et al. R. Teixeira. Improving generalization of mlps with multi-objective
optimization. Neurocomputing, 35(1-4):189–194, November 2000.
[SHBR96]
R. Schoonderwoerd, O.E. Holland, J.L. Bruten, and L.J.M Rothkrantz.
Ant-based load balancing in telecommunications networks. Adaptive
Behavior, 5(2):169–207, 1996.
[SHF97]
A. Somayaji, S. Hofmeyr, and S. Forrest. Principles of a computer immune
system. In Meeting on New Security Paradigms, Langdale, UK, pages 75–
82. New York, NY, USA : ACM, 1997.
[sNS+ 99]
J.E.G. souza, FL. Neto, F.L. Santos, C. Pinto de Melo, and T.B. Ludermir.
Polypyrrole based aroma sensor. Synthetic Metals, 102:1296–1299, 1999.
[Tak03]
R.H.C Takahashi. Notas de aula: Otimização escalar e vetorial. Technical
report, Depto. Matemática - Universidade Federal de MInas Gerais, 2003.
[TLS01]
A. Tamazaki, T.B. Ludermir, and M.C.P. Souto. Classification of vintages
of wine by an artificial nose using time delay neural networks. Eletronics
Letters, 37(24):1466–1467, 2001.
[WH60]
B. Widrow and M.E. Hoff. Adaptive switching circuits. In IRE WESCON
Convention Record, volume 4, pages 96–104. New York: IRE, 1960.
[Zub00]
F.J.V. Zuben. Computação evolutiva: Uma abordagem pragmática. In
Anais da 1 Jornada de Estudos em Computação de Piracicaba e Região
(JECOMP), volume 1, 2000.

Documentos relacionados