Você está na página 1de 169

ROGRIO PERINO DE OLIVEIRA NEVES

A.L.I.V.E. VIDA ARTIFICIAL EM AMBIENTES VIRTUAIS: UMA PLATAFORMA EXPERIMENTAL EM REALIDADE VIRTUAL PARA ESTUDOS DOS SERES VIVOS E DA DINMICA DA VIDA

Dissertao apresentada Escola Politcnica da Universidade de So Paulo para obteno do Ttulo de Mestre em Engenharia.

So Paulo 2003

ROGRIO PERINO DE OLIVEIRA NEVES

A.L.I.V.E. VIDA ARTIFICIAL EM AMBIENTES VIRTUAIS: UMA PLATAFORMA EXPERIMENTAL EM REALIDADE VIRTUAL PARA ESTUDOS DOS SERES VIVOS E DA DINMICA DA VIDA

Dissertao apresentada Escola Politcnica da Universidade de So Paulo para obteno do Ttulo de Mestre em Engenharia. rea de Concentrao: Engenharia de Sistemas Eletrnicos Orientador: Prof. Dr. Marcio Lobo Netto

So Paulo 2003

FICHA CATALOGRFICA
Neves, Rogrio Perino de Oliveira Vida Artificial em Ambientes Virtuais: Implementando uma plataforma computacional para estudos dos seres vivos e da dinmica da vida, 2003. 166p. Dissertao (Mestrado) Escola Politcnica da Universidade de So Paulo. Departamento de Engenharia de Sistemas Eletrnicos. 1.Vida Artificial 2.Realidade Virtual 3.Cincia da Computao I.Universidade de So Paulo. Escola Politcnica. Departamento de Engenharia de Sistemas Eletrnicos II.t

Aos cientistas e filsofos que trabalham incessantemente na busca pela resposta inquietante pergunta o que vida.

RESUMO
Este trabalho descreve os estudos realizados sobre o tema Vida Artificial, que levaram criao do projeto A.L.I.V.E. (Artificial Life in Virtual Environments) desenvolvido no Laboratrio de Sistemas Integrveis da Escola Politcnica da USP. O projeto tem como objetivo a aplicao de tecnologias de realidade virtual na visualizao de experimentos em Vida Artificial. A plataforma implementada utilizase do paradigma de orientao a objetos, fazendo uso dos recursos disponveis atravs da linguagem Java e do API Java3D, o que garante portabilidade e compatibilidade com diversos dispositivos, tambm possibilitando a execuo baseada em browser, permitindo a visualizao de experimentos em pginas interativas na Internet. O programa foi desenvolvido num contexto multi-agentes e prev sua utilizao em arquiteturas distribudas e multi-processadas, fazendo uso da capacidade de multi-threading da linguagem Java.

ABSTRACT
This work describes the studies conducted under the theme Artificial Life, which leaded to the creation of the A.L.I.V.E. (Artificial Life in Virtual Environments) project, developed on the Laboratory of Integrated Systems of the Polytechnic School at USP. The project aims to apply virtual reality technologies to the visualization of Artificial Life experiments. The developed platform employs an object oriented paradigm, making use of resources available trough Java language and the Java3D API, what grants portability and device compatibility, also making possible browser-based execution of experiments in interactive web pages through Internet. The program was developed in a multi-agent context, allowing the execution in distributed and multi-processed architectures, making use of the multithreading capability of the Java language.

SUMRIO
1. INTRODUO 2. O QUE VIDA ARTIFICIAL? 2.1. O que Vida? 2.2. Predecessores Ilustres 2.3. Vida Artificial e sua Abrangncia 2.4. Problemas Abertos em Vida Artificial 2.5. Linhas de Pesquisa em Vida Artificial 2.6. Trabalhos Notrios em Vida Artificial 3. SIMULAES EM VIDA ARTIFICIAL 3.1. Simulando Vida 3.2. Representao da Dinmica dos Seres Artificiais 3.2.1. Dinmica de Tempo Discreto 3.2.2. Mquinas de Estado 3.2.3. Sistemas No-Lineares com Dinmica Catica 3.2.4. Lgica Nebulosa 3.2.5. Redes Neurais Artificiais 3.2.6. Algoritmos Genticos e Sistemas Adaptativos 3.3. Codificao dos Organismos e do Ambiente Virtual 3.3.1. Paradigma de Programao Orientada a Objetos 3.3.2. Sistemas Multi-Agentes 3.3.3. A Viso do Agente do Universo Virtual 3.3.4. Detectando Colises 3.4. Visualizao do Ambiente Virtual 3.4.1. Representao em Duas Dimenses 3.4.2. Visualizao em Trs Dimenses 3.4.3. Visualizao do Ambiente em Realidade Virtual 4. IMPLEMENTAO DA PLATAFORMA 4.1. Proposta do Projeto da Plataforma 4.2. Sobre a Linguagem Sun JavaTM e o API Java3DTM 1 4 5 8 18 20 21 23 27 30 33 33 34 38 41 43 45 47 47 53 57 59 61 62 63 63 67 68 70

4.3. Arquitetura do Simulador 4.3.1. Componentes do Aplicativo Principal 4.3.2. Subconjunto do Cliente de Sntese 4.4. Utilizao das Classes do Pacote 4.3.1. Superclasse Ambiente 4.3.2. Superclasse Agente 4.3.3. Atores 4.3.4. Configurao do Ambiente 4.3.5. Lanando o Experimento 4.3.6. A Interface de Usurio 4.3.7. Janelas de Visualizao 4.3.8. Operao do Cliente de Sntese 4.5. Criando Experimentos no Contexto da Plataforma 4.5.1. Classes Modelo 4.5.2. Conectando e Sincronizando Instncias em Processos Paralelos 5. EXPERIMENTOS REALIZADOS 5.1. Algas 5.2. Equilbrio em um Sistema do Tipo Presa-predador 5.3. Clulas Humanas 5.4. Aglomerao em Bandos (Flocking) 5.5. Cardume de Peixes 6. CONCLUSES FINAIS 6.1. Contribuies 6.2. Aplicaes 6.3. Propostas para trabalhos futuros BIBLIOGRAFIA Referncias Bibliograficas Referncias On-Line Bibliografia recomendada APNDICE A. TABELAS E GRFICOS ADICIONAIS A.1. Sistema Presa-predador

73 74 76 77 78 81 83 84 86 86 89 89 90 90 91 94 94 97 107 108 110 113 113 114 116 117 117 122 124 127 127

APNDICE B. ESPECIFICAO DAS SUPERCLASSES B.1. Superclasse Ambiente B.1.1. Diagrama de Classe B.1.2. Descrio das Variveis: B.1.3. Mtodos a Serem Substitudos por Cdigo do Usurio* B.1.4. Mtodos que Podem ser Substitudos por Cdigo do Usurio** B.1.5. Mtodos Finais de Acesso e Controle*** B.1.6. Mtodos de Auxlio B.2. Superclasse Agente B.2.1. Diagrama de Classe B.2.2. Descrio das Variveis B.2.3. Mtodos a Serem Substitudos por Cdigo do Usurio* B.2.4. Mtodos que Podem ser Substitudos por Cdigo do Usurio** B.2.5. Mtodos de Acesso e Controle*** B.2.6. Mtodos de Auxlio B.3. Superclasse Ator B.3.1. Diagrama de Classe B.3.2. Descrio das Variveis B.3.3. Mtodos a Serem Substitudos por Cdigo do Usurio* B.3.4. Mtodos que Podem ser Substitudos por Cdigo do Usurio** B.3.5. Mtodos de Acesso e Controle*** APNDICE C. CONCEITOS DE PROGRAMAO C.1. Conceitos Fundamentais da Linguagem Java C.2. Utilizao do API Java3D

133 133 133 135 136 136 137 139 139 140 141 142 142 143 144 145 145 146 147 147 147 149 149 152

LISTA DE FIGURAS
Figura 1. Programa manuscrito por Turing, parte de seu estudo sobre o desenvolvimento do cone de abeto, que j tentava estruturar fenmenos observados na natureza. .............................................................................. 11 Figura 2. Hall de predecessores ilustres..................................................................... 18 Figura 3. Thomas Ray e a tela do programa Tierra.................................................... 23 Figura 4. Dawkins e seu programa The Blind Watchmaker................................... 24 Figura 5. Os robs-inseto de Rodney Brooks. ........................................................... 25 Figura 6. Tela do programa Avida de Adami. ........................................................... 25 Figura 7. Experimento de Karl Sims com morfologia evolutiva. .............................. 26 Figura 8. Mecanismo de processamento e resposta aos estmulos ambientais. ......... 28 Figura 9. Exemplo de um grafo descrevendo uma mquina de estados. ................... 34 Figura 10. Possvel mquina de estados para controle de um agente. ....................... 35 Figura 11. Grade de autmatos celulares de uma dimenso para as regras 45, 90 e 170 respectivamente................................................................................. 36 Figura 12. O Jogo da Vida de John Conway. ......................................................... 38 Figura 13. Diagrama de bifurcao para o mapa logstico, mostrando ampliada a regio onde o sistema apresenta comportamento catico. ....................... 40 Figura 14. No exemplo, a Varivel Nebulosa D (Distncia) formada por quatro Conjuntos Nebulosos, cujos rtulos definem a distncia. Os pontos b1, b2 e b3 so conhecidos como Pontos de Interseco (Crossover points) que ocorrem onde o grau de pertinncia entre dois conjuntos consecutivos igual (0,5/n, 0,5/n+1)................................................................................ 42 Figura 15. Razes do crebro digital. ......................................................................... 44 Figura 16. Modelo de blocos do neurnio artificial com funo sigmide. .............. 44 Figura 17. Exemplos de herana em classes diferentes. ............................................ 49 Figura 18. rvore de ramificaes dos tipos de agentes............................................ 56 Figura 19. Exemplos de reas de interseo em duas dimenses. ............................. 58 Figura 20. Exemplo de teste de interceptao e coliso de fronteiras de um objeto complexo por um conjunto de testes utilizando volumes esfricos. ........ 60

Figura 21. Grfico do tempo gasto em cada ciclo versus o nmero de testes efetuados. ................................................................................................. 61 Figura 22. Exemplo de grafo de cena no API Java3D. .............................................. 72 Figura 23. Diagrama de classes do projeto ALIVE e suas dependncias. ................. 73 Figura 24. Diagrama de classes de um experimento desenvolvido no contexto da plataforma. ............................................................................................... 76 Figura 25. Esquema de comunicao do subconjunto do cliente de sntese.............. 77 Figura 26. Tela de configurao do lanador de experimentos. ................................ 86 Figura 27. Interface do usurio para controle do experimento. ................................. 87 Figura 28. Interface de operao do cliente de sntese............................................... 89 Figura 29. Classes modelo para utilizao da plataforma.......................................... 90 Figura 30. Tela do experimento. No detalhe a interface de controle. ........................ 97 Figura 31. Esquema do funcionamento dos filtros de radiao. .............................. 100 Figura 32. Tela do experimento e sua interface de controle. ................................... 102 Figura 33. Grfico da variao populacional no tempo, para um experimento realizado, no caso de extino por acmulo de resduos txicos no ambiente. ................................................................................................ 104 Figura 34. Grficos de populao no tempo para o caso em que ocorre extino em massa. ..................................................................................................... 105 Figura 35. Variao populacional no tempo para o caso onde o sistema abastecido com novas presas com energia positiva (alimento)................................ 106 Figura 36. Tela do experimento de demonstrao da ao do linfcito................... 107 Figura 37. Tela do experimento e sua interface de controle. ................................... 109 Figura 38. Tela do experimento cardume de peixes, no detalhe a interface para controle da alimentao.......................................................................... 112 Figura 39. Extino devido ao consumo total dos recursos. .................................... 129 Figura 40. Extino devido ao acumulo de toxinas no ambiente............................. 129 Figura 41. Extino devido ao acumulo de toxinas no ambiente............................. 130 Figura 42. Exploso populacional devido a abundncia de alimentos..................... 130 Figura 43. Figura mostra um salto evolutivo (~24000) para um sistema sem abastecimento......................................................................................... 131

Figura 44. Para um sistema abastecido de presas, Grfico da variao populacional com o tempo no caso de equilbrio entre presa e predador. A regio em torno de 17500 mostra o crescimento populacional devido a um salto evolutivo................................................................................................. 131 Figura 45. Variao das trs populaes em um experimento tpico, com abastecimento automtico no descriminado entre presas do tipo +/(alimentos e toxinas). ............................................................................. 132 Figura 46. Exemplo de diagrama de classe na notao UML.................................. 133 Figura 47. Diagrama de classe da superclasse ambiente.......................................... 134 Figura 48. Diagrama de classe da superclasse Agente............................................. 140 Figura 49. Diagrama de classe da superclasse Ator................................................. 145

LISTA DE TABELAS
Tabela 1. Principais pesquisadores do tema Origens da Vida................................ 17 Tabela 2. Mquina de estados do Autmato Celular 1D, regra 90. ........................... 36 Tabela 3. Propriedades desejveis de um agente. ...................................................... 55 Tabela 4. Parmetros de configurao do ambiente................................................... 85 Tabela 5. Exemplo da sada gerada pelo experimento............................................. 128 Tabela 6. Tipos de variveis na linguagem Java...................................................... 151 Tabela 7. Operaes com vetores em Java3D com o pacote vecmath..................... 153

LISTA DE ABREVIATURAS
ALIVE ATP DNA EPUSP ID IP LSI POO RN RNA RV SMA UML USP VA Artificial Life in Virtual Environments Adenosina tri-fosfato Dioxirribonucleic Acid ou cido Dioxirribonuclico Escola Politcnica da Universidade de So Paulo Identificao de agente Internet Protocol Laboratrio de Sistema Integrveis Programao Orientada a Objetos Redes Neurais Artificiais Ribonucleic Acid ou cido ribonuclico Realidade Virtual Sistemas Multi-Agentes Unified Modeling Language Universidade de So Paulo Vida Artificial

PREFCIO
Durante o programa de mestrado no Laboratrio de Sistemas Integrveis da Escola Politcnica da Universidade de So Paulo (EPUSP), foi proposta a explorao do tema Vida Artificial, a princpio, visando considerar sua abrangncia, seus envolvimentos e suas possibilidades.

Vida Artificial refere-se a um tema interdisciplinar, com muitas ramificaes em reas no s das cincias fsicas ou biolgicas, como, tambm, das humanidades, entendendo conhecimentos e aplicaes que abrangem desde os estudos clssicos, entre os quais Fsica, Qumica e Biologia, at reas como Sociologia, Antropologia, Gentica, Inteligncia Artificial e Sistemas de Informao, passando por uma larga gama de engenharias e reas de tecnologia que podem se beneficiar com seu estudo.

Prontamente, comecei a estudar tudo que pudesse ter uma tnue ligao com o assunto, cursando matrias com temas como Inteligncia Artificial, Teoria do Caos, Computao Grfica, Visualizao Cientfica, Sistemas Nebulosos, Robtica e Sistemas Multi-Agentes. A tarefa se complicava, gradualmente, com o aumento do conhecimento a respeito do tema, e, conforme o domnio se elevava, o foco se perdia, demonstrando ser impossvel para um s indivduo dominar completamente todos os conceitos envolvidos. Com uma viso mais realista, soube que deveria me concentrar em estudos voltados para aplicao em uma rea especfica e bem definida, desenvolvendo um projeto direcionado ao estudo da rea escolhida.

Portanto, possuindo uma formao em Fsica, com um bom domnio de matemtica e um histrico em programao, decidi empenhar meus esforos na implementao de simulaes envolvendo organismos virtuais. No processo, foram criados modelos para estudo de sistemas nervosos, propagao de informao, aplicaes em robtica e para busca evolutiva em espaos multi-dimensionais.

Dada a srie de dificuldades tcnicas encontradas na implementao dos experimentos, muitas que consegui superar apenas graas a uma maior intimidade

com linguagens de programao, imaginei quanto tais dificuldades poderiam frustrar pesquisadores com menos intimidade com linguagens de programao. Assim, resolvi tentar facilitar-lhes a tarefa, implementando uma plataforma de estudos em Vida Artificial com cdigo aberto, visando, tambm, facilitar a implementao de meus prprios experimentos. Pouco a pouco o projeto tomava forma.

Durante os meses que se seguiram, modelos foram propostos e prottipos implementados, incorporando flexibilidade e facilidades de uso. No se espera que o prottipo apresentado seja perfeito, nem que seja de fato final. Uma vez que segue a doutrina do cdigo aberto, permite que usurios e pesquisadores que venham a utiliz-lo dem sua contribuio para seu aprimoramento, adicionando recursos e ferramentas, dando continuidade ao desenvolvimento do projeto A.L.I.V.E.

Esta dissertao sintetiza o trabalho desenvolvido, os assuntos estudados e os experimentos implementados durante o perodo de durao do projeto de pesquisa.

Rogrio Neves

Vida Artificial em Ambientes Virtuais

1. INTRODUO
CINCIA: Conjunto de conhecimentos socialmente adquiridos ou produzidos, historicamente acumulados, dotados de universalidade e objetividade que permitem sua transmisso, e estruturados com mtodos, teorias e linguagens possibilitam humanas. ENGENHARIA: Arte de aplicar conhecimentos prprias, orientar que a visam e compreender as e

natureza

atividades

cientficos e empricos e certas habilitaes especficas criao de estruturas, dispositivos e processos que se utilizam para converter recursos naturais em formas adequadas ao atendimento das necessidades humanas. [Dicionrio Aurlio - Sculo XXI]

Este trabalho apresenta os estudos realizados sobre o tema Vida Artificial, compreendendo teoria e aplicao, realizados durante a especificao e desenvolvimento do projeto A.L.I.V.E. (Artificial Life in Virtual Environments). O projeto contemplou uma fase de pesquisa terica, cujo objetivo foi relacionar muito do que j foi feito e est em atual desenvolvimento em pesquisa relacionada ao tema, e uma fase prtica que descreve uma implementao computacional dos conceitos estudados, na forma de uma plataforma experimental de desenvolvimento de simulaes.

Vida Artificial, ou VA, um campo de estudos relativamente recente e ainda pouco explorado. Historicamente o termo data de 1987, quando foi usado para descrever uma conferncia realizada em Los Alamos, Novo Mxico, sobre Sntese e simulao de sistemas vivos [LANGTON, 1989].

Como disciplina, Vida Artificial est vinculada ao uso de modelos computacionais, envolvendo diretamente estudos de Engenharia de Sistemas, Cincia da Computao

Vida Artificial em Ambientes Virtuais

e Ciberntica, sendo conceitualmente similar a um campo mais antigo de estudo chamado Inteligncia Artificial que visa extrair a estrutura lgica elementar da inteligncia, construindo programas de computador que pensam, mesmo que de maneira rudimentar. Vida Artificial por sua vez, espera criar programas de computador no mais espertos que uma abelha, porm to vivos quanto em uma colmia.

Vida Artificial usa o computador como instrumento principal. Como foram os telescpios para a astronomia e os microscpios para a biologia, o computador visa tornar alguns aspectos espao-temporais visveis ao olho humano, possibilitando a observao de eventos que ocorrem em escalas arbitrrias de espao e tempo, tornando tambm visveis aspectos abstratos, ou que excedem a capacidade de visualizao humana. O computador torna possvel a observao de milhes de anos de evoluo em apenas alguns minutos de simulao, ou a conduo da interao entre microorganismos pelo usurio, interativamente, em tempo real.

Como parte do projeto, foi proposto o desenvolvimento de uma plataforma computacional para experimentao, cujo objetivo tornar o processo de implementao de experimentos em Vida Artificial simples e rpido, fazendo uso do estado de arte dos sistemas de visualizao disponveis, como placas aceleradoras grficas 3D e dispositivos de Realidade Virtual, deixando a interface aberta possibilidade de aplicao de tecnologias vindouras, visando tornar a experincia realizada no Ambiente Virtual visualmente rica e interativa.

Tcnicas de visualizao cientfica so empregadas para ilustrar variveis dinmicas ou caractersticas genticas atravs da colorao, transparncia e textura, tornando a exibio da informao mais natural e reduzindo a quantidade de informao numrica, exibida regularmente atravs de tabelas ou grficos.

O captulo 2 tem um carter introdutrio, tendo como objetivo esclarecer as motivaes que levam ao estudo de VA e a implementao da plataforma e apresenta uma definio geral do que VA e o que se espera de experimentos desenvolvidos

Vida Artificial em Ambientes Virtuais

utilizando-se conceitos fundamentais de VA. Apresenta, tambm, em um contexto histrico, os trabalhos que precederam as modernas pesquisas sobre as origens da vida, remetendo a antiga questo fundamental O Que Vida?. O captulo tambm traz alguns problemas fundamentais considerados atualmente na simulao de seres artificiais, e ressalta alguns trabalhos que obtiveram destaque utilizando-se computadores como ferramenta de estudo na rea.

O captulo 3 apresenta alguns dogmas da simulao de agentes em ambientes virtuais. Traz uma comparao entre o quadro proposto e enfoques tradicionais em VA, como mquinas de estado e autmatos. O captulo apresenta um pouco da teoria de multi-agentes, onde programas independentes interagem entre si produzindo uma complexidade que excede, em muitas vezes, a complexidade individual do programa de cada agente.

O captulo 4 apresenta a parte prtica do projeto, a especificao e implementao da plataforma de simulao proposta. Traz, alm da motivao que levou a especificao da plataforma com as caractersticas descritas, uma descrio funcional de sua utilizao e alguns diagramas representando as classes do programa e sua hierarquia.

O captulo 5 traz alguns estudos de casos sobre o assunto, descrevendo a utilizao da plataforma experimentalmente. Alguns temas chave foram explorados com finalidade demonstrativa, e alguns experimentos mais complexos foram

implementados visando observar algumas caractersticas emergentes em sistemas multi-agentes inteligentes, dos quais j possvel extrair regras fundamentais das formas de vida.

O captulo 6 encerra o trabalho sintetizando algumas concluses gerais a respeito da pesquisa e sobre os trabalhos realizados. So, tambm, exploradas possibilidades de aplicao dos conceitos estudados aqui e extrapoladas futuras linhas de pesquisa que podem ser desenvolvidas, em continuidade ao projeto atual.

Vida Artificial em Ambientes Virtuais

2. O QUE VIDA ARTIFICIAL?


O novo campo de pesquisa cientfica, chamado de Vida Artificial, pode ser definido como uma tentativa de abstrair a forma lgica da vida de sua manifestao material. A idia bsica parece bem simples, porm, o estudo de Vida Artificial estende uma discusso muito mais abrangente que tem ocupado as mentes de cientistas e filsofos desde o incio dos tempos: O que vida?.

Por milnios, Vida tem sido um dos maiores mistrios metafsicos e cientficos da humanidade. Recentemente, o advento de sistemas eletrnicos de monitorao, microscopia, tecnologias em gentica e microbiologia, trouxeram uma nova luz para o tema. Agora, um novo instrumento apresentado para o estudo da complexidade dos sistemas vivos, o computador. Simulaes envolvendo conceitos fundamentais sobre o tema o que vida tm sido desenvolvidas em laboratrios ao redor do mundo, j apresentando resultados muito intrigantes.

Atualmente, os computadores lanam luz no estudo de sistemas complexos e em novos princpios fsicos como Comportamento Emergente, Caos e AutoOrganizao, sendo largamente empregados em simulaes abrangendo

praticamente todas as reas do conhecimento humano. Fazendo uso de sua dinmica discreta, a implementao de regras simples muitas vezes leva a resultados extremamente complexos e at imprevisveis, como no caso de mquinas de estado conhecidas como Autmatos Celulares [WOLFRAM, 2002].

A tese base da Vida Artificial que a Vida mais bem compreendida como um processo sistemtico complexo, constitudo de relaes, regras e interaes. Em suma, Vida uma propriedade, mais que um fenmeno, e que, potencialmente, pode ser decomposta e separada das criaturas vivas atualmente conhecidas. Vida como processo possui propriedades como reproduo, variao gentica, hereditariedade, comportamento, aprendizado, parmetros como em um cdigo gentico e expresses que descrevem o caminho do cdigo at o corpo fsico final. Neste contexto, Vida ento descrita pelo que faz, mais do que pelo que . A

Vida Artificial em Ambientes Virtuais

Vida extrai energia do ambiente, cresce, se regenera, se reproduz, e este conjunto de processos descrito como Vida pode ser considerado separadamente, para que possa ser estudado, modelado matematicamente, simulado com o uso de computadores e experimentado digitalmente sem o envolvimento de criaturas vivas.

Pesquisadores da rea de VA despendem um grande esforo no sentido de convencer as pessoas da importncia do seu trabalho. Alm disso, estudos em VA levantam questes filosficas intrigantes. Tais questes tm sido discutidas por filsofos e cientistas da atualidade, como constatado na matria publicada pelo jornal A Folha de So Paulo, caderno Mais em 27 de outubro de 2002, com o ttulo Vida Digital, onde questes ticas so relevadas quanto ao experimento com organismos digitais. Pode um rob ou um programa realmente estar vivo?, Pode um organismo que exista puramente em um ambiente virtual estar vivo?. Mesmo que este se mova como se estivesse vivo, se reproduza, se comunique, mesmo que tenha a forma de um pixel na tela de um computador? O que exatamente algo deve fazer para que seja caracterizado como vivo?

2.1. O que Vida?


A pergunta ao mesmo tempo uma das mais novas e das mais antigas que toma a mente do homo sapiens. Desde os primrdios da histria registrada, o homem tem se perguntado de onde veio e para onde vai. Mitos, supersties e intrincadas teorias surgiram e se foram, desmentidas, incansavelmente tentando responder a inquietante pergunta. Muitos segredos da natureza foram desvendados na busca pela resposta, porm, muitos mitos perduram. Mas a cada passo da descoberta, a humanidade caminha, em passos lentos, em direo verdade da criao.

Discusses sobre a vida podem tomar rumos sofisticados e filosficos, embora do ponto de vista cientfico, devamos nos concentrar na caracterizao dos aspectos que definem um organismo como vivo. Inicialmente, parece se tratar de uma tarefa simples, algum pode pragmaticamente redigir uma lista definindo o que necessrio para algo ser vivo: crescer, reproduzir-se, reagir ao ambiente, assimilar

Vida Artificial em Ambientes Virtuais

energia, excretar dejetos, morrer, etc. Porm, muitos desses conceitos so subjetivos, paradoxais e muitas vezes contraditrios.

Consideremos, por exemplo, organismos simples como vrus, bactrias, algas e amebas. Vrus no atendem qualquer uma das exigncias da lista, se reproduzem com auxlio do mecanismo de outras clulas, e, portanto, considerado no vivo por muitos pesquisadores. Pode permanecer inanimado por uma eternidade, at ter outra chance de infectar, e assim voltar atividade. Indagando filosoficamente, tratase de uma forma de vida extremamente prtica, ou apenas de uma seqncia de algum programa gentico?

Bactrias so organismos simples, agem de forma semelhante e possuem complexidade equivalente a muitas entidades que no so consideradas vivas. Bactrias podem existir indefinidamente, se no submetidas a condies danosas, assim como embries humanos congelados, que podem permanecer dormentes como os vrus, sem a necessidade de um hospedeiro, podendo, a qualquer momento, se tornar um ser humano vivo e ativo. Um embrio uma vida em potencial, como um programa interrompido no meio da execuo. Podemos considerar bactrias, ou embries congelados, formas de vida?

Algas podem ser facilmente confundidas com partculas em suspenso nos lquidos ou com poeira sobre os slidos. Algas aquticas permanecem imveis, flutuando ao sabor das mars, apenas processando material circulante, com ajuda da luz solar, excretando as substncias resultantes. Em algum momento, como em um estalo, o que era uma torna-se duas, sem que olhos distrados percebam o processo. Tipos de algas conhecidas como Chlamydomonas [MARGULIS, 1998] ou Algas da Neve passaram desapercebidas por sculos, acreditando tratar-se de micro-partculas de ferro e enxofre, dando um tom avermelhado neve, conhecida como neve de melancia.

Amebas so mveis, se reproduzem por meiose, reagem ao ambiente, assimilam energia e liberam dejetos, e, embora sejam imortais ningum duvida que elas estejam

Vida Artificial em Ambientes Virtuais

vivas. Talvez isto signifique que todas as amebas existentes sejam partes mveis de um nico organismo com trs bilhes de anos de idade, uma espcie de SuperAmeba distribuda por todo o globo.

Questionar sobre o que vida de forma simplista como apresentada acima pode ser extremamente arriscado do ponto de vista cientfico, e, embora qualquer pessoa possa dizer facilmente a diferena entre uma coisa viva e uma no viva apenas olhando para ela, nenhuma afirmao deve ser feita sem se basear em resultados experimentais e observaes sistemticas.

Christoph Adami, pesquisador da Caltech e um dos pioneiros no estudo de VA, em seu livro Introduction to Artificial Life [ADAMI, 1998] define vida num contexto termodinmico como sendo:

Vida uma propriedade de uma amostra de unidades que compartilham informao codificada em um substrato fsico e que, na presena de rudo, esfora-se para manter sua entropia significativamente abaixo da entropia mxima da amostra, em escalas de tempo que excedem a escala normal de decaimento do substrato (que contm a informao) por muitas ordens de magnitude.

O substrato em questo refere-se ao ambiente em que a vida se desenvolve e o tipo fsico foi, at muito recentemente, o nico disponvel para observao. Os estudos da origem da vida, at o momento, tm se concentrado no estudo desta manifestao especfica da vida, que se desenvolveu num ambiente fsico rico em carbono, nitrognio e gua, utilizando demais substncias qumicas presentes para se adaptar e reproduzir. No entanto, com o advento de novas tecnologias, sobretudo a de sistemas computacionais, temos a oportunidade de estudar a vida por outro ngulo, extraindo caractersticas gerais da vida como propriedade, tanto na forma em que atualmente conhecida como na forma que poderia tomar, caso se manifestasse em ambientes alternativos.

Vida Artificial em Ambientes Virtuais

A pergunta O que vida tem ocupado a mente de filsofos e estudiosos durante os ltimos sculos, e como resultado, inmeras contribuies discretas e freqentes foram feitas, tanto no sentido de fornecer respostas quanto no de levantar importantes questes (fundamentais para orientar as pesquisas), aumentando, assim, nosso conhecimento sobre o que somos e de onde viemos. Sendo esta uma questo to antiga e duradoura, no h aqui qualquer pretenso de desvendar os segredos da vida, apenas de explorar os mecanismos que a natureza apresenta para solucionar problemas, dados os artifcios disponveis no ambiente. O prximo tpico trata de alguns dos trabalhos desenvolvidos at o momento que contriburam com o esclarecimento da questo. Muitos deles precederam as pesquisas atuais em gentica e VA, sedimentando um terreno slido nos quais novos estudos puderam se basear.

2.2. Predecessores Ilustres


Embora as perguntas sobre as origens da vida sejam milenares, s nos recentes duzentos anos foram feitas as primeiras tentativas de respond-las cientificamente.

Organic life beneath the shoreless waves Was born and nurs'd in ocean's pearly caves; First forms minute, unseen by spheric glass, Move on the mud, or pierce the watery mass; These, as successive generations bloom, New powers acquire and larger limbs assume; Whence countless groups of vegetation spring, And breathing realms of fin and feet and wing.

Erasmus Darwin. The Temple of Nature. 1802.

Correndo o risco de deixar de fora alguns contribuintes de peso na rea, aqui se encontram relacionados alguns dos mais renomados pesquisadores que influenciaram diretamente o desenvolvimento deste projeto, juntamente com suas contribuies para a elucidao da questo O que vida.

Vida Artificial em Ambientes Virtuais

Erasmus Darwin (1731-1802)

Fsico respeitado e bem conhecido em seu tempo, poeta, bilogo, botnico e naturalista, com vrias outras linhas de interesse, Erasmus, av de Charles, nasceu em Nottinghamshire, Inglaterra, e se educou nas universidades de Cambridge e Edimburgo. Sua prtica em medicina exercida em Lichfield ficou to conhecida na poca que chegou a ser convidado pelo rei George III para ser seu mdico particular, posto que recusou com distino, por motivos polticos. Seus interesses se estenderam muito alm da medicina. Sua insatisfao em relao teoria da imutabilidade das espcies de Lineu o levou a publicar suas prprias teorias em Zoonomia, or, The Laws of Organic Life (As leis da vida orgnica), em 1794, onde prope a evoluo gradual dos animais e plantas. Chegou a falar da seleo sexual, onde na competio entre os machos, o animal mais forte e ativo deve propagar a espcie visando seu aprimoramento. Este trabalho foi chamado de a primeira hiptese consistente, universalmente abrangente da evoluo. Erasmus tambm apresentou suas idias evolucionrias em verso, postumamente publicados em The Temple of Nature. As publicaes de seus contemporneos franceses, Cuvier e Lamarck, reforaram sua posio e proveram base para estudos posteriores no campo, mais notavelmente o de seu neto Charles Darwin. Deve-se ressaltar, porm, que Charles rejeitou o mecanismo estrito e semi-experimental de seu av, chegando a clamar que Zoonomia no teve qualquer influncia no seu famoso A Origem das Espcies.

Charles Darwin (1809-1882)

Bilogo evolucionista, Charles Darwin provavelmente um dos homens mais famosos que j viveram. Nasceu em Shrewsbury, Inglaterra, em 12 de fevereiro de 1809. Seguindo os passos do pai, comeou a estudar medicina em Edimburgo, porm detestou o curso, embora este lhe tenha servido para desenvolver um interesse especial por histria natural. Abandonando a medicina, dois anos depois foi estudar teologia em Cambridge. Sua pesquisa iniciou-se ao embarcar no veleiro Beagle em

Vida Artificial em Ambientes Virtuais

10

dezembro de 1831 quando teve a oportunidade de viajar pelo mundo (inclusive pelo Brasil) registrando a diversidade de espcies ao redor do mundo. Embora no tenha se tornado nem mdico, nem padre, sua teoria de seleo natural, publicada em A Origem das Espcies [DARWIN, 1859] mudou gradualmente a maneira como as pessoas pensavam sobre evoluo. Sua teoria causou frisson na sociedade da poca, por se confrontar diretamente com o ponto de vista religioso da criao, onde consta que as espcies criadas por Deus permaneceram imutveis desde sua criao. Charles Darwin baseou-se, tambm, em trabalhos anteriores, como o de seu pai e de seu av, alm de em suas prprias pesquisas e amostras coletadas ao redor do mundo. Ainda hoje, A Origem das Espcies lido por milhares de cientistas e pesquisadores das reas de biologia e gentica ao redor do mundo.

Alan Turing (1912-1954)

Nascido em Warrington Crescent, Inglaterra, Alan Turing foi um matemtico e cientista da computao, antes da existncia desta disciplina ou mesmo dos computadores. considerado um dos pais da computao moderna. J em 1926, Turing afirmava ser booleana a essncia da inteligncia. Inventou as mquinas de estado, a mquina universal de Turing, uma espcie de precursor dos computadores programveis, e contribuiu para muitas reas do conhecimento, como lgica, criptografia, filosofia, biologia, e conceitualmente, para criao de disciplinas como Cincias Cognitivas, Inteligncia Artificial e Vida Artificial. Durante os anos finais de sua vida, Turing utilizava o computador Ferranti Mark I da Universidade de Manchester em experimentos com algoritmos que exploravam as semelhanas entre programas digitais e fenmenos como replicao, adaptao e cognio, tpicos que posteriormente viriam a se chamar Vida Artificial e Inteligncia Artificial. Durante este perodo, ele atingiu a distino de ser o primeiro a se engajar na explorao assistida por computador de sistemas de dinmica no-linear, uma vez que sua teoria usava equaes diferenciais no-lineares para expressar a qumica do crescimento. Ele morreu no meio de seu trabalho indito, deixando alguns programas e uma pilha de notas manuscritas, material que at hoje permanece no completamente compreendido.

Vida Artificial em Ambientes Virtuais

11

Figura 1. Programa manuscrito por Turing, parte de seu estudo sobre o desenvolvimento do cone de abeto, que j tentava estruturar fenmenos observados na natureza.

John Von Newmann (1901-1957)

Nascido na Hungria, John Von Newmann considerado por muitos o pai da Vida Artificial. tambm um dos inventores da Teoria dos Jogos, bem como de muitos conceitos estatsticos envolvidos com importantes aplicaes em reas como economia e engenharia. Newmann foi prodgio em matemtica em Budapeste, obteve seu doutorado aos 22 anos, se convertendo aos 23 no professor mais jovem da Universidade de Berlin. Aos 30, junto com Albert Einstein, foi designado como um dos primeiros professores do Instituto de Estudos Avanados de Princeton, Nova Jersey. Ajudou a resolver problemas em mecnica quntica e aspectos ergdigos em matemtica, contribuiu com a concepo da bomba atmica e participou de testes

Vida Artificial em Ambientes Virtuais

12

nucleares em Los Alamos, mas, talvez, seja bem mais conhecido pela criao da arquitetura dos primeiros computadores, conhecida como arquitetura de Von Newmann. Na dcada de 40, Von Newmann integrou a equipe de trabalho da universidade da Pensilvnia, participando dos projetos EDVAC e ENIAC, os primeiros computadores construdos sob o paradigma arquitetnico que duraria mais de 40 anos. Von Newmann tambm construiu uma estrutura computacional conhecida como Autmato-Celular auto-reprodutivo, conceito que trouxe

caracterstica de seres vivos ao universo computacional, explorando as analogias existentes entre sistemas eletrnicos e sistemas vivos, contribuindo para a formao da futura disciplina Vida Artificial. Duas atividades ocuparam sua mente nos

ltimos anos de sua vida, quando declarou publicamente sofrer de cncer na prstata. A primeira tratava da corrida armamentista e A Tecnologia da Morte. A segunda, mais abstrata, intitulada A Tecnologia da Vida, tinha como meta criar uma teoria que compreendesse tanto a biologia natural quanto a artificial. Afrontado com o conceito de auto-reproduo, se perguntava: Pode uma mquina artificial produzir uma cpia tal de si mesma, que poderia, por sua vez, ser capaz de criar mais cpias?. Em suas palestras na Universidade de Yale sob o tema O computador e a Mente, afirmava serem computadores e os seres humanos diferentes classes de autmatos.

Erwin Schrdinger (1887-1961)

Doutor em fsica pela Universidade de Viena, Erwin Schrdinger bem conhecido nos meios acadmicos como um dos papas no estudo da mecnica quntica, havendo contribudo com equaes e leis, das quais muitas levam seu nome. Porm, seus interesses no se limitavam fsica nuclear. Em seu livro clssico O que vida? [SCHRDINGER, 1943] explora as caractersticas fsicas das clulas vivas, comenta sobre a evoluo e origens da vida, e especula sobre o futuro evolutivo das espcies, incluindo a humana. Nesse texto se encontra a clebre deduo de que as informaes hereditrias se encontram num slido aperidico, uma molcula orgnica dotada de ordem, porm, sem repetio montona identificada nos cromossomos, corpsculos presentes no ncleo celular que podiam ser tingidos e

Vida Artificial em Ambientes Virtuais

13

visualizados durante a diviso celular, frase que tem um carter premonitrio descoberta de Oswald Avery, publicada no ano seguinte, sobre cidos nuclicos. Schrdinger levantou questes e definiu problemas que se tornariam cruciais na definio das pesquisas genticas realizadas nas dcadas seguintes. Com sua obra de menos de 100 pginas, Schrdinger influenciou e inspirou uma legio de fsicos, geneticistas, bilogos e filsofos que o sucederam, no por oferecer respostas s perguntas, mas por fazer as perguntas certas.

Oswald Avery (1877-1955)

Nascido em Halifax, Nova Esccia, educado no colgio de mdicos e cirurgies da Universidade de Columbia, o mdico e bacteriologista Oswald Avery melhor conhecido pelas suas descobertas em gentica. Foi o primeiro a mostrar que o agente responsvel pela transmisso da informao gentica no era uma protena, como acreditavam os bioqumicos, mas cidos nuclicos, especificamente o DNA. Avery e seus colaboradores extraram material de uma bactria de superfcie lisa e introduziram em uma bactria de superfcie rugosa. Quando a bactria de superfcie rugosa transformou-se em uma de superfcie lisa, constatou-se que a substncia extrada continha o gene responsvel pela codificao da superfcie lisa. Avery e seu grupo purificaram esta substncia descobrindo que se tratava de um cido desoxirribonuclico. Em 1944 Avery publicou seu trabalho, levando a comunidade cientfica a estudos intensivos sobre o DNA, o que posteriormente o revelou como sendo o agente responsvel pela hereditariedade. Seu trabalho fundamentou a descoberta, na dcada seguinte, da estrutura fundamental da dupla hlice do DNA, e das bases nitrogenadas que o compem.

Francis Crick

Juntamente com Maurice Wilkins (1916-), James Watson (1928-) e Rosalind Franklin (19201958), realizou, na dcada de 50, as pesquisas que levaram a descoberta da estrutura do DNA e das bases nitrogenadas que formam o cdigo gentico (Adenina, Timina, Citosina e Guanina). Crick e Wilkins, ambos fsicos, em

Vida Artificial em Ambientes Virtuais

14

conjunto com o bilogo James Watson e a qumica Rosalind Franklin, publicaram em 1953 o trabalho que lhes valeu o prmio Nobel em 1962. Por ser o premio Nobel atribudo apenas aos vivos, Rosalind Franklin, que padeceu de cncer aos 37 anos no pode ser honrada na premiao. Fancis Crick tambm autor de O Oitavo Dia da Criao, um tratado universal sobre a histria da biologia e talvez o melhor j escrito at hoje.

Manfred Eigen

Fsico, qumico e doutor em cincias naturais pela George-August Universidade de Gttingen, Manfred Eigen trabalhou em experimentos em fsica, em reas desde termodinmica, teoria dos eletrlitos e condutividade trmica, at absoro sonora e reaes inicas rpidas. Por volta de 1960 se interessou por fsico-qumica orgnica, elucidando uma srie de passos individuais dos mecanismos de reao catalticos dos cidos-base em uma teoria geral, que pode ser verificada experimentalmente. Seu interesse envolveu tambm questes bioqumicas, que posteriormente passaram a ser seu maior interesse. Abordou questes como as pontes de hidrognio dos cidos nuclicos e a dinmica da transferncia de cdigo s enzimas e membranas de lipdio, processos de regulao e controle biolgicos e o problema do armazenamento de informao no sistema nervoso central. Na dcada de 80, Eigen trabalhou na demonstrao da transio de substncias qumicas inorgnicas para compostos orgnicos. Seu trabalho de certa maneira complementar ao trabalho de Leslie Orgel, uma vez que para demonstrar o processo, Eigen utilizou uma enzima de polimeraze, uma protena cataltica extrada do organismo bacterifago vivo que orienta estruturalmente a sntese e replicao dos cidos nuclicos, o que descaracteriza o processo como realmente pr-bitico, embora seus experimentos tenham provido ferramentas fundamentais para o ataque da questo das origens.

Leslie Orgel

Nascido em Londres, Inglaterra, professor titular da Universidade de Cambridge, Leslie Orgel diretor do Laboratrio de Qumica da Evoluo no Salk Institute e um

Vida Artificial em Ambientes Virtuais

15

dos pioneiros no estudo das origens da vida na terra. Como Eigen, Orgel um fsicoqumico experimental e trabalhou em experimentos de certa forma complementares aos de Eigen, fazendo com que RNA crescesse de nucleotdeos monmeros, sem qualquer molde de RNA para que os monmeros se copiassem, mas utilizando uma enzima de polimeraze para guiar os monmeros. Eigen descobriu que ons de zinco podem servir como catalisadores na sntese do RNA. A diferena entre os trabalhos de Eigen e Orgel que Eigen construiu molculas de RNA utilizando uma enzima sem um molde, e Orgel fez o contrrio, utilizando um molde sem uma enzima. No RNA das clulas vivas, ambos devem estar presentes. Para comprovar o aparecimento da vida em condies pr-biticas, preciso criar molculas orgnicas sem utilizar-se nem enzimas nem moldes de polimeraze. Nem Eigen nem Orgel chegaram perto de atingir este objetivo.

Lynn Margullis

Uma das mais brilhantes bilogas desta gerao, Lynn Margullis leciona no departamento de biologia da Universidade de Massachusetts e coordena o programa de estgio em Biologia Planetria da NASA. Entre inmeros artigos e mais de dez livros publicados, Margullis estuda a evoluo das mitocndrias, a dinmica celular e os mecanismos adaptativos que levaram espcies originalmente diferentes a se combinarem para formarem os organismos complexos que observamos hoje. Juntamente com James Lowelock, Lynn Margullis introduziu a hiptese Gaia, uma espcie de teoria da relatividade biolgica, que reconhece a terra como um organismo vivo que consiste de milhes de espcies, sutilmente interligadas em um nico sistema simbintico interdependente, que parte da endo-simbiose microscpica at reconhecer a complexidade associativa do planeta como entidade macroscpica. As conexes efetuadas entre as espcies ao longo da evoluo representam uma forma de sinergia, que Margullis descreve como o processo em que um organismo incorpora outro sem destru-lo, permitindo que a criatura internalizada procrie como um autmato, adicionando funcionalidades a clula invadida, de forma que o produto final da fuso seja superior soma das partes individuais. Em seu livro O Que Vida? [MARGULLIS, 1998] Margullis apresenta muitos de seus conceitos e um

Vida Artificial em Ambientes Virtuais

16

pouco de sua pesquisa numa linguagem informal e acessvel. Seu novo livro Five Kingdoms (ainda no publicado no Brasil) explora os mecanismos que levaram a formao dos cinco reinos diferentes a partir de um ancestral comum.

Christopher G. Langton

Graduado com duplo mrito em antropologia e filosofia pela Universidade do Arizona, recebeu seu PhD em Cincia da Computao pela Universidade de Michigan, sobre o tema Computao no limite do Caos. Trabalhou como cientista com o Grupo de Sistemas Complexos da diviso terica no Laboratrio Nacional de Los Alamos, e foi membro da Faculdade Externa do Instituto Santa F. editor responsvel pelo Artificial Life Journal publicado pela MIT Press. Langton organizou o primeiro simpsio de VA em Los Alamos em 1988 e tem sido o principal organizador de muitos dos simpsios posteriores em VA. Sua pesquisa envolve arquiteturas computacionais para estudos em VA, medidas formais de complexidade, sistemas dinmicos distribudos, autmatos celulares, morfologia da evoluo e as origens da vida. Langton autor de vrios livros sobre o tema Vida Artificial, dentre eles Artificial Life: An Overview [LANGTON, 1995] que sintetiza a histria da pesquisa realizada em vida artificial at recentemente.

Cientistas do campo em atuao

A Tabela 1 traz alguns dos principais cientistas (ordenados alfabeticamente por sobrenome) que trabalham atualmente na questo das origens da vida, bem como suas reas especficas de atuao. Asteriscos (*) indicam os autores cuja obra ou atual pesquisa contriburam com este projeto.

Vida Artificial em Ambientes Virtuais

17

Tabela 1. Principais pesquisadores do tema Origens da Vida

Cientista Cristoph Adami * Gustaf Arrhenius

Pesquisa Vida Artificial Absoro mineral por superfcies ativas na formao dos cidos nuclicos. Jeffrey L. Bada Estabilidade, fontes e composio do material orgnico primordial. Andr Brack Qumica pr-bitica, ons metlicos em peptdeos, origem molecular da vida. A. Graham Cairns-Smith Modelo de desdobramento pr-bitico em matrizes de argila. Melvin Calvin Assimilao do dixido de carbono nas plantas. Thomas R. Cech & Ribossomos e a natureza cataltica do RNA. Sidney Altman Francis Crick * DNA e panspermia dirigida. Richard Dawkins * Emergncia de complexidade e cognio Russell Doolittle Evoluo protica. Christian de Duve Organizao estrutural e funcional da clula, muita pesquisa abordando as origens da vida. Freeman Dyson * Primeiro modelo de metabolismo em VA. Manfred Eigen * Polimerizao de nucleotdeos in vitro, mutao e mecanismos de seleo. Albert Eschenmoser * Vrias contribuies no estudo das origens da vida. James P. Ferris Evoluo qumica pr-bitica. Hyman Hartman Evoluo dos caminhos metablicos fotossintticos. Sir Frederick Hoyle Astro-biologia e panspermia. Gerald Joyce Bioqumica das enzimas de RNA. Stuart Kauffman Teoria da complexidade e modelos NK. Bernd-Olaf Kppers Teoria da informao e origem da vida. Christopher Langton * Vida Artificial, complexidade, dinmica discreta. Lynn Margulis * Evoluo mitocondriana, evoluo por simbiose e assimilao. Stanley Miller Auto-construo bio-molecular. Leslie Orgel * Origens da vida, panspermia dirigida. Guy Ourisson Membrana celular e evoluo. Presidente da Academia Francesa de Cincias Juan Or Formao pr-bitica da adenina. Ilya Prigogine Estruturas dissipativas e auto-organizao. P. Schimmel Cdigo Gentico. Robert Shapiro * DNA, anlise objetiva de problemas das origens. Jack Szostak Pesquisa com RNA e oligonucleotdeos. Charles H. Townes Biofsica. Craig Ventor Seqenciamento gentico e sntese da vida. Carl R. Woese Classificao bacteriolgica e evoluo. Hubert P. Yockey Teoria da informao e biologia molecular.

Vida Artificial em Ambientes Virtuais

18

Pode-se notar que no h uma formao preferencial para pesquisadores de VA, entre os nomes citados, encontram-se fsicos, qumicos, bilogos, filsofos e engenheiros, dado que algumas questes abrangem reas de engenharia de sistemas e cincia da computao, enquanto outras se voltam biologia e estudos das origens da vida, muitas ainda tm cunho predominantemente filosfico.

E. Darwin

C. Darwin

A. Turing

J. Newmann

E.Schrdinger

O. Avery

F. Crick

M. Eigen

L. Orgel

C.G. Langton

Figura 2. Hall de predecessores ilustres.

2.3. Vida Artificial e sua Abrangncia


Na seo anterior, foi ressaltado que embora qualquer pessoa possa dizer facilmente a diferena entre uma coisa viva e uma no viva apenas olhando para ela, nenhum passo deve ser dado sem antes pesquisar minuciosamente os processos envolvidos no que caracteriza um comportamento como vida. Esse, talvez, seja o principal e mais forte apelo dos estudos em VA. muito difcil observar um bom programa de VA em ao sem perceber que, de alguma forma, ele vive, ou ao menos apresenta muitas caractersticas de um ser vivo. Simulaes em VA tm mudado a maneira como enxergamos a vida, e, conseqentemente, despertado o interesse em crculos mais especficos de estudos, como a astro-biologia, por ser capaz de extrair propriedades da vida independentes das manifestaes atualmente disponveis para estudos.

Vida Artificial em Ambientes Virtuais

19

Como ressaltou o Fsico Marcelo Gleiser em sua coluna cientfica semanal no jornal Folha de So Paulo com o ttulo Repensando a nossa existncia, A vida um experimento em complexidade: conhecemos os ingredientes, os vrios compostos qumicos que fazem parte dos seres vivos, mas no sabemos como combin-los para formar sequer o mais simples deles. Embora muitas tentativas tenham sido feitas, algumas atingindo um certo grau de proximidade, at o momento, nenhum cientista foi capaz de recriar o processo que deu surgimento s primeiras formas de vida, e, dada a complexidade do processo, variedade e possveis combinaes dos tomos envolvidos, parece incrvel que tal fenmeno tenha surgido espontaneamente, sem qualquer ajuda externa, na natureza, atravs de funes puramente estatsticas. Este enorme salto da qumica para a biologia intriga muitos pesquisadores. Alguns propem uma origem extraterrestre para a vida, como Orgel e Dyson, que especulam que a vida pode ter surgido na terra proveniente de material presente em meteoros, como clama a teoria conhecida como panspermia. Mas caso a vida tenha realmente surgido na terra e se tal improbabilidade estatstica ocorreu aqui e em tantas instncias biologicamente diferentes, natural esperar que tal fenmeno possa ser observado e reproduzido em ambientes alternativos, sejam eles reais, virtuais ou extraterrestres.

O aumento da complexidade, ou auto-organizao, parece ser fenmeno fsico natural. Como observado na evoluo da vida terrestre, to bem quanto em experimentos de VA, existe na natureza uma tendncia inexorvel formao de organismos cada vez mais complexos, culminando talvez em formas de vida inteligentes, como defende Richard Dawkins, em seu livro O Gene Egosta [DAWKINS, 1976], onde afirma ser essa escalada de complexidade a rota usual de toda e qualquer forma de vida, em mbito universal.

Nas palavras do cientista Christopher Langton, A coisa mais importante a se lembrar sobre VA que a parte artificial no a vida, mas os materiais. Coisas reais acontecem. Fenmenos reais so observados. vida real em uma mdia artificial.

Vida Artificial em Ambientes Virtuais

20

2.4. Problemas Abertos em Vida Artificial


Algumas questes so atualmente consideradas questes chave no estudo de VA como disciplina. Visando direcionar os esforos na soluo destas questes, o artigo de Bedau et al. [BEDAU, 2000] relaciona alguns dos problemas abertos em VA, comentando a relevncia do estudo de cada tpico. Os tpicos relacionados so:

Como a vida surge da no-vida?

1. Gerar um proto-organismo molecular in vitro; 2. Atingir a transio para vida de um composto qumico artificial in silico; 3. Determinar fundamentalmente se um organismo fictcio pode existir; 4. Simular um organismo unicelular em todo o seu ciclo de vida; 5. Explicar como regras e smbolos so gerados da dinmica fsica em sistemas vivos;

Quais so os potenciais e limites dos sistemas vivos?

6. Determinar o que inevitvel na evoluo aberta da vida; 7. Determinar as condies mnimas para transies evolucionrias de sistemas de resposta especficos para genricos; 8. Criar um modelo formal para sintetizar hierarquias dinmicas em todas as escalas; 9. Determinar a previsibilidade das conseqncias evolutivas da manipulao de organismos e ecossistemas; 10. Desenvolver uma teoria de processamento, fluxo e gerao de informao para sistemas em desenvolvimento;

Como a vida se relaciona com a mente, as mquinas e a cultura?

11. Demonstrar a emergncia de inteligncia e mente em um sistema de vida artificial;

Vida Artificial em Ambientes Virtuais

21

12. Avaliar a influncia de mquinas na prxima transio evolutiva da vida; 13. Prover um modelo quantitativo da conexo entre evoluo biolgica e cultural; 14. Estabelecer princpios ticos para experimentos em vida artificial.

Pesquisas envolvendo o estado da arte em VA geralmente focam a soluo de um ou mais destes problemas. Porm, os frutos colhidos com a pesquisa em VA muitas vezes envolvem a aplicao dos resultados obtidos para soluo de problemas em outras reas da cincia e engenharia. A exemplo dos mtodos de busca evolutiva com algoritmos genticos, aplicados amplamente na soluo de problemas tecnolgicos, vm ganhando muito com a pesquisa em gentica, utilizando-se de VA para reproduzir seus conceitos. O nmero de artigos encaminhados a congressos e simpsios sobre o tema aumentou muito desde a primeira conferncia realizada em Los Alamos em 1987, demandando uma quantidade cada vez maior de eventos para cobrir o trabalho desenvolvido. Isso demonstra que muito tem sido feito em matria de pesquisa e muitos pesquisadores de diversas reas se fascinaram pelo assunto. Os tpicos cobertos atualmente compreendem uma vasta lista que se estende desde astro-biologia at aplicaes em microeletrnica, robtica e estratgia de jogos.

2.5. Linhas de Pesquisa em Vida Artificial


A tentativa de recriao do fenmeno da vida pelo homem, disciplina que recebeu o nome de VA, pode tomar rumos radicalmente diferentes em sua pesquisa, que entendem desde a emulao e simulao de caractersticas de seres vivos em sistemas computacionais at a sua forma mais pretensiosa, recriao de formas de vida em silcio ou carbono. Tendo em vista que a cincia falhou em recriar a vida de condies qumicas e fsicas consideradas como pr-biticas, a alternativa foi conceber formas elementares de mecanismos e processos que podem ser classificados como potencialmente vivos, apresentando muitas das caractersticas e fenmenos presentes nos organismos vivos. Para tanto, os cientistas e pesquisadores de VA utilizaram os aparatos tecnolgicos que tinham em mo, ou os que dominavam melhor. O resultado foi uma ampla diversidade de aproximaes ao

Vida Artificial em Ambientes Virtuais

22

tema, que utilizam os mais variados ramos da cincia para tal propsito. Algumas das linhas de pesquisa so:

Origem da vida, auto-organizao e auto-replicao; Desenvolvimento e replicao; Dinmica evolucionria e adaptativa; Robs e agentes autnomos; Comunicao, cooperao e comportamento coletivo; Simulao em VA, ferramentas de sntese e metodologias.

Entre as linhas supracitadas, conhecimentos em matemtica, cincia da computao, engenharia, fsica, qumica e biologia so aplicados, enfocando abordagens cientficas diferentes em cada caso. Porm, todas as pesquisas tm em comum o uso de simulaes em computadores para obter seus resultados.

Das primeiras e mais comuns entre as linhas de pesquisas em VA, os experimentos com mquinas de estado conhecidas como autmatos celulares foram dos mais explorados. Ainda hoje, muitas das pesquisas em desenvolvimento empregam variaes dos conceitos fundamentais da teoria de autmatos. O captulo 3 traz uma introduo aos conceitos de mquinas de estado e autmatos celulares.

O uso de redes de mapas acoplados ou CML (Coupled Map Lattices) foi proposto como alternativa aplicao da teoria de autmatos em muitas reas. Redes de mapas acoplados utilizam em cada clula, um gerador catico, e, atravs de um acoplamento com sua vizinhana prxima, produz complexidade alm da observada em autmatos celulares, com a vantagem de poder ter sua agitao ou temperatura ajustada atravs dos parmetros das equaes dos geradores caticos. Para exemplos de implementao de CML e geradores caticos, o stio do projeto apresenta exemplos e Applets para experimentao [ALIVE SITE].

Programas de VA que abordam a adaptao e a evoluo, explorando a dinmica evolucionria e adaptativa tornaram-se muito comuns e populares. Hoje, existem

Vida Artificial em Ambientes Virtuais

23

centenas de programas deste tipo, que podem ser encontrados atravs de uma simples busca pela Internet.

A prxima seo traz alguns dos trabalhos pioneiros e mais conhecidos em algumas das reas de pesquisa em VA.

2.6. Trabalhos Notrios em Vida Artificial


Aqui so relacionados alguns trabalhos notrios no estudo de VA, e possuem um grande nmero de citaes em publicaes da rea. Seguem algumas pesquisas conhecidas na rea de vida artificial:

Tierra

Thomas Ray, eclogo norte-americano, em 1990 criou o primeiro software capaz de simular os mecanismos evolutivos seguindo os princpios darwinianos. O programa Tierra, disponvel em seu stio na Internet [RAY SITE], simula diversos tipos de programas simples disputando espao na memria do computador, replicando-se e sofrendo mutaes aleatrias que podem ou no favorec-los na disputa pela propagao de seu genoma.

Figura 3. Thomas Ray e a tela do programa Tierra.

Vida Artificial em Ambientes Virtuais

24

The Blind Watchmaker

Richard Dawkins, zoologista da universidade de Oxford, criou um simples e popular programa de VA para computadores pessoais chamado O Relojoeiro Cego (The Blind Watchmaker), que demonstra o poder inerente da evoluo darwiniana para criar elaborados padres e estruturas. O programa cria padres de traos brancoe-preto que se ramificam de acordo com regras muito simples. O programa acompanha o livro de mesmo nome ou pode ser obtido gratuitamente na Internet.

Figura 4. Dawkins e seu programa The Blind Watchmaker.

Robs-Insetos

Rodney Brooks, diretor do Laboratrio de Inteligncia Artificial do MIT, construiu com sua equipe robs autnomos chamados de robs-insetos utilizando-se dos princpios fundamentais de VA. Seguindo a filosofia: Rpidos, Baratos, e Fora de Controle, ele constri robs que se assemelham a formigas, e desempenham uma srie de funes elementares. Os robs so construdos com uma rede neural iniciada aleatoriamente, que se adapta posteriormente com o aprendizado. O objetivo de Rodney futuramente construir robs extremamente simples e baratos que desempenhem funes teis coletivamente, se espalhando por todos os cantos, como em uma cena de filme de fico cientfica, geis e pragmticos, tornando-se aliados indispensveis nas tarefas cotidianas. Suas ltimas pesquisas podem ser visitadas no stio do laboratrio na Internet [BROOKS SITE].

Vida Artificial em Ambientes Virtuais

25

Figura 5. Os robs-inseto de Rodney Brooks.

Avida

Cristoph Adami, do Laboratrio de Vida Artificial do MIT, criou este popular programa de vida artificial, que explora as capacidades evolutivas de uma populao de gentipos diferentes em uma grade bi-dimensional. O programa de Adami lembra muito o pioneiro Tierra, do eclogo Tomas Ray, embora apresente algumas diferenas fundamentais. Avida aplica muito da teoria de autmatos celulares, onde as regras de reproduo e os programas que controlam os autmatos evoluem medida que o experimento se desenvolve. O stio do projeto na Internet apresenta as ltimas verses do programa e alguns experimentos desenvolvidos por Adami [ADAMI SITE].

Figura 6. Tela do programa Avida de Adami.

Vida Artificial em Ambientes Virtuais

26

Evoluo Morfolgica

Karl Sims, especialista em computao grfica, criou uma srie de experimentos em que visa explorar no somente o fenmeno emergente, mas as conseqncias de tais fenmenos dadas s ferramentas evolutivas disponveis e as limitaes impostas pelo ambiente. Para tanto, Sims reuniu um conjunto de conceitos simples e fundamentalmente importantes: algoritmos simples, redes neurais evolutivas, e seleo do melhor adaptado. Os experimentos de Sims so por muitas razes impressionantes, dada a riqueza visual e a variedade de comportamentos e morfologias observadas em suas criaturas construdas com blocos mveis, que muitas vezes lembram espcies existentes na natureza. Sims direciona seu trabalho computao grfica, obtendo incrveis imagens genticas utilizando tcnicas de VA. Seus experimentos podem ser acessados no seu stio pela Internet [SIMS SITE].

Figura 7. Experimento de Karl Sims com morfologia evolutiva.

Vida Artificial em Ambientes Virtuais

27

3. SIMULAES EM VIDA ARTIFICIAL


Simular computacionalmente um ser vivo trata de expressar os comportamentos deste ser atravs de regras procedimentais. Em suma, escrever um programa que de respostas semelhantes aos estmulos, ou permita que estas sejam atingidas espontaneamente aps um tempo de simulao. Duas abordagens podem ser dadas a esse aspecto: Bottom-up e Top-down.

Bottom-up, ou de baixo para cima, o mtodo observado na natureza, onde mecanismos so fornecidos para que os seres se adaptem s regras impostas pelo ambiente, deixando que a adaptao cuide de desenvolver a complexidade necessria a sua sobrevivncia. A maioria da pesquisa cientfica realizada em VA sobre emergncia de complexidade e origens da vida se enquadra nesta classe.

Top-down, ou de cima pra baixo, a forma adotada na engenharia, onde o problema estudado sistematicamente e as solues apresentadas de maneira direta. A soluo visa, unicamente, resolver o problema proposto e nada garante que esta soluo seja a melhor para o dado problema. Abordagens como essa no levam em conta fatores como mudana repentina das regras, o que levaria a necessidade de uma nova especificao.

Ainda assim, para muitos casos, a abordagem Top-down pode ser aplicada na simulao de seres vivos sem grande comprometimento do realismo da simulao. Um caso especfico o de criao de personagens cinematogrficos em computao grfica, como apresentado no filme O Rei Leo dos estdios Disney, onde um estouro de uma manada e representada com extremo realismo. Para implementar tal cena, esperar que os bfalos artificiais atinjam naturalmente o padro de movimentao de bfalos verdadeiros pode ser demais arrojado para o projeto. Uma implementao comportamental mais indicada.

Exemplificando o caso acima, em uma arquitetura Top-down, desejamos simular em computao grfica o comportamento de uma vaca. Relacionamos ento as aes

Vida Artificial em Ambientes Virtuais

28

possveis de uma vaca, como mugir, pastar, andar, virar, beber gua, etc. seguidas das probabilidades de cada ao em um contexto cronolgico, excluindo seqncias de aes inconsistentes. Programando tais movimentos em um personagem de computao grfica, obtm-se o comportamento visual necessrio para se simular uma vaca, ao menos pelo surgimento de possveis inconsistncias, como um movimento errtico, ou aes repetidas constantemente. Em um contexto populacional, onde cada vaca segue tal comportamento de maneira probabilstica, dificilmente seria notado o surgimento de padres anormais de comportamento.

Como exemplo de uma implementao Bottom-up, o mesmo personagem, a vaca, receberia uma gama de comportamentos e probabilidades aleatoriamente associadas, aos quais seriam atribudos pontos para manifestaes coerentes com o comportamento real observado. De tempos em tempos, a populao seria avaliada, mantendo-se os caracteres com maior pontuao, recombinando e adaptando constantemente a populao at se atingir os resultados esperados.

Em ambos os casos, a arquitetura de estmulo e resposta dos personagens semelhante, podendo ser representado atravs de um diagrama de blocos. As diferenas se encontram na implementao dos blocos de estmulo, processamento e resposta. A Figura 8 mostra um possvel diagrama de entrada e sada para um ser virtual.

Tcnicas de filtragem e processamento de sinais

Associao cruzada, Redes neurais, Computao fuzzy, etc.

Acionadores mecnicos, Funes de Reproduo, Algortmos genticos

Ambiente Cena

Sensores

Prprocessamento das variveis de entrada

Processo de deciso

Variveis de sada

Ativadores Controle Ao

Movimentao

Variveis locais

Interao

Figura 8. Mecanismo de processamento e resposta aos estmulos ambientais.

Vida Artificial em Ambientes Virtuais

29

A associao estmulo-resposta implementada atravs de associaes presentes nos cromossomos. Por exemplo, uma rede neural tambm pode ser iniciada aleatoriamente, passando por processos genticos, que oferecem a possibilidade de posterior adaptao e aprendizado. Lgica Nebulosa (fuzzy) comumente empregada na tomada de deciso em sistemas com linguagem natural (humanstica).

As etapas consideradas na criao de um experimento em vida artificial so:

Criao do universo fsico; Criao de mecanismos de sensoriamento; Criao de mecanismos de processamento de estmulos; Criao de mecanismos de resposta mecnica e ao; Criao de mecanismos genticos e de reproduo.

O universo fsico trata da interao entre os objetos e agentes presentes no ambiente simulado. Clculo vetorial e conceitos de mecnica clssica so aplicados para determinar o movimento dos corpos fsicos em um espao, que a princpio pode ter qualquer dimenso.

Os mecanismos de sensoriamento determinam como os organismos sentem o ambiente que habitam. Em termos tcnicos, tratam das variveis de entrada, que contm a informao que recebem do ambiente. O sensoriamento determina como um organismo se relaciona com os outros organismos, objetos e substncias presentes, permitindo a noo de presena, percepo de temperatura ou de concentraes de substncias existentes em sua volta.

Os mecanismos de processamento de estmulos podem empregar uma srie de tcnicas para obter associaes que levem das variveis de entrada s aes produzidas em resposta. Alguns exemplos so: processamento de sinais por redes neurais, lgica nebulosa, autmatos e mquinas de estado.

Vida Artificial em Ambientes Virtuais

30

Uma vez obtidas, as variveis de sada correspondem a aes no universo fsico. Os dispositivos de resposta mecnica controlam as aes desempenhadas no ambiente virtual pelo organismo, em resposta a comandos de controle fornecidos pelos estgios anteriores. Por exemplo, acionadores ou propulsores desempenham a funo de movimentar os agentes presentes no experimento, porm, restringindo sua liberdade de movimentao s regras fsicas estipuladas.

Operadores genticos devem estar associados aos agentes na reproduo, visando tirar proveito dos mecanismos adaptativos e evolutivos inerentes a este conceito. Vrias tcnicas podem ser aplicadas aqui, sendo as mais utilizadas a mutao, muito parecida com o mecanismo de reproduo assexuada e o cruzamento (cross-over), associado reproduo sexuada. Ambos sero explicados em mais detalhes na seo sobre algoritmos genticos.

Um fator importante a ser considerado nas simulaes a introduo de quantidades especficas de rudo. Em casos como reproduo, o rudo introduz uma desordem estatstica no sistema, permitindo que este se re-organize de forma mais eficiente. Valores baixos de rudo so recomendados (da ordem de 1% no caso do operador de mutao), valores extremos de rudo podem desordenar completamente o sistema, levando-o a um estado aleatrio.

3.1. Simulando Vida


Quando desejamos sintetizar um conjunto de normas ou reaes que caracterizam um organismo como vivo, devemos considerar tanto fatores que dependem da natureza do organismo simulado, quanto fatores universais. Para se obter resultados vlidos, as simulaes em VA devem seguir alguns princpios fundamentais em seus experimentos, visando evitar uma conduo intencional que leve ao resultado desejado. Entre tais princpios, podemos citar:

Considerar regras locais em vez de regras globais: Salvo os princpios fsicos que regem o sistema, cada instncia deve considerar apenas estmulos prximos,

Vida Artificial em Ambientes Virtuais

31

ou seja, ocorrncias observadas prximas da instncia do organismo em questo influenciam mais que eventos distantes. Parte do princpio que dificilmente algo que acontea a grande distncia venha a afetar o organismo avaliado. Uma anlise global sobre o ambiente para cada instncia de organismo virtual presente na simulao tambm encarece computacionalmente o experimento, exigindo processamento alm do necessrio. Considerar regras simples em vez de complexas: pode levar a resultados mais satisfatrios. A complexidade surge da reproduo e combinao de uma grande quantidade de regras simples, conforme observado na natureza. Empregar regras complexas pr-definidas como forma de obter a complexidade comportamental esperada acaba por definir um comportamento viciado, com pouca chance de adaptao ou mudana ao longo das geraes. Considerar comportamentos emergentes em vez de comportamentos prespecificados: certamente o mais importante princpio, e provavelmente, o mais cientificamente controverso. Regras pr-especificadas causam

sistematizao. Formas de vida dificilmente agem de maneira pr-estipulada aos estmulos que recebem, reagindo de maneira idntica a uma srie desses estmulos. Especificar um caractere programaticamente pode torn-lo

aparentemente animado, porm to vivo quanto um personagem de computao grfica dos desenhos de Disney.

Como exemplo, podemos recorrer a uma simulao comum em Cincias da Computao: Algoritmo de Formigas. Formigas formam sociedades extremamente desenvolvidas, com funes bem definidas e distribudas. Porm, uma formiga individualmente uma criatura extremamente estpida. Entomologistas afirmam que cada formiga possui entre 50 e 500 neurnios (dependendo da espcie considerada e funo no formigueiro), e podem desempenhar na mdia 40 funes especficas. Mas essas funes, quando desempenhadas no tempo correto e disparadas em resposta ao estmulo certo, em grupo, operam maravilhas, demonstrando como um conjunto de regras simples, podem resolver problemas complexos, como, por exemplo, encontrar o menor caminho entre um conjunto de pontos, propsito para o qual tal algoritmo comumente empregado.

Vida Artificial em Ambientes Virtuais

32

A maneira como a complexidade do formigueiro aumenta com o passar do tempo, baseado unicamente em regras simples, pode surpreender qualquer arquiteto. A estrutura que atinge uma incrvel ordem a partir do caos gerando algo do nada parece ser um dos segredos fsicos da vida, onde estudo de VA pretende lanar luz.

Existem formigueiros por todo o mundo, embora nenhum seja exatamente igual ao outro. Isso porque formigueiros no so construdos por programas, sem nenhum planejamento ou inteligncia. Uma formiga sente instintivamente a necessidade de cavar, bloquear o sol, criar caminhos; outras formigas a vem trabalhar e se juntam a ela, imitando-a. Tal processo conhecido como Alelomimese, quando instintivamente o mesmo padro de comportamento transmitido atravs do grupo.

Princpios como o citado, onde padres surgem espontaneamente, so largamente observados em simulaes de VA. Processos como interaes entre presa e predador, efeitos parasitrios e interdependncia na dinmica populacional, aparentemente se manifestam em vrias instncias e suas regras se aplicam a vrios fenmenos internos e externos dos seres vivos, como crescimento de plantas, formao de corais e regenerao de tecidos. A lista infindvel. As pesquisas sobre a dinmica envolvidas nos processos podem levar futuramente a obteno de regras genricas que regem esses sistemas de modo geral.

Dos experimentos mais intrigantes em complexidade, os com Autmatos Celulares talvez sejam os mais implementados por sua simplicidade matemtica e funcional. Autmatos so comumente aplicados nos geradores randmicos dos computadores e equipamentos eletrnicos. Stephen Wolfram, fsico e criador do Software bestseller Mathematica um dos mais fascinados pela idia de que algumas regras simples podem gerar padres de complexidade inacreditvel. Em seu livro A New kind of Science [WOLFRAM, 2002] de mais de mil pginas e pesadamente ilustrado, ele afirma ser possvel reproduzir uma enorme quantidade de processos fsicos e biolgicos utilizando-se apenas variaes das regras, estruturas e condies iniciais em experimentos empregando somente autmatos celulares de dinmica

Vida Artificial em Ambientes Virtuais

33

discreta. Wolfram tem sofrido pesadas crticas da comunidade cientfica, principalmente por no haver mostrado experimentos que sustentassem suas afirmaes.

3.2. Representao da Dinmica dos Seres Artificiais


Aqui so descritos, sucintamente, algumas tcnicas ferramentais e modelos matemticos geralmente empregados na simulao de agentes em VA, bem como fatores que devem ser considerados em relao dinmica dos seres vivos em simulaes de tempo discreto. As ferramentas, empregadas nas simulaes no devem se limitar s apresentadas aqui, e podem, de maneira geral, utilizar quaisquer tcnicas, metodologias e operadores numricos disponveis, dependendo apenas da criatividade do programador em aplic-las nos modelos simulados. Aqui se encontram apenas algumas referncias introdutrias s mesmas. 3.2.1. Dinmica de Tempo Discreto Para se efetuar as operaes funcionais de forma computacionalmente barata, devese aplicar uma dinmica de tempo discreto s operaes realizadas no ambiente virtual. Uma dinmica de tempo discreto sugere que o instante atual calculado a partir do estado de uma ou mais variveis no instante imediatamente anterior. De forma que, para uma varivel X em tempo discreto, temos:
X T +1 = F ( X T )

A definio envolve a noo de recurso. Na funo, o tempo deixa de ser uma varivel do sistema, passando a ser meramente um rtulo simblico, contado o nmero (inteiro) de interaes realizadas desde a condio inicial (X0). No contexto apresentado, a funo dita recursiva, i.e., re-aplicada sucessivamente sobre os valores obtidos pela prpria operao.

As vantagens de utilizar-se dinmica discreta em relao a equaes diferenciais ordinrias ou funes em tempo contnuo so facilmente percebidas, tanto do ponto

Vida Artificial em Ambientes Virtuais

34

de vista computacional, onde operaes recursivas elementares com variveis numricas substituem o uso de literais e regras matemticas intrincadas, quanto do ponto de vista arquitetural, onde normalmente basta considerar o estado imediatamente anterior para se estabelecer uma regra.

Tcnicas para transformar funes e equaes diferenciais para sistemas dinmicos de tempo discreto podem ser encontradas em livros de clculo numrico, matemtica aplicada engenharia [KREYSZIG, 1998] ou de algoritmos para computao. Alguns dos mtodos mais usados so: Runge-Kunta, mtodo de Euler e esquema do trapzio, entre outros. 3.2.2. Mquinas de Estado As mquinas de estado, como o nome sugere, tm seu estado atual determinado a partir de um ou mais dos estados anteriores e condies de transio entre estados. Uma mquina de estado pode ser representada por um grafo de estados, onde cada n indica o estado em que se encontram variveis discretas representativas de caractersticas funcionais, testes ou decises, levando a um novo estado no instante seguinte.
0 B 0/1

Inicial

Final

Figura 9. Exemplo de um grafo descrevendo uma mquina de estados.

As variveis discretas ou resultados de testes efetuados determinam o nmero de estados possveis do sistema, portanto, para 3 bits, teremos 8 estados possveis. Os ns efetuam operaes e modificam os estados das variveis, determinando o estado seguinte que o sistema vai tomar. Uma mquina como a apresentada no grafo da

Vida Artificial em Ambientes Virtuais

35

Figura 9 pode ser expressa em uma tabela e implementada em um programa atravs de relaes do tipo IF-THEN-ELSE. A Figura 10 mostra como o comportamento de um agente pode ser definido por uma mquina de estados.

Figura 10. Possvel mquina de estados para controle de um agente.

Entre os sistemas de dinmica discreta, os Autmatos Celulares esto entre os mais implementados. Numa grade de dimenses arbitrrias de nmeros binrios, o estado seguinte de cada bit determinado pelo seu estado atual e pelo estado da vizinhana prxima. O autmato celular uma mquina de estados onde o nmero de estados definido pelo nmero de bits avaliados no processo de deciso de cada clula. Apesar de sua simplicidade, as regras apresentam uma enorme variedade de comportamentos distintos. No seu exemplo mais simples, com uma dimenso, o autmato celular pode assumir 256 variaes, para um conjunto de trs bits de entrada e um de sada. A Tabela 2 descreve uma regra possvel para o autmato celular de uma dimenso (regra 90).

Vida Artificial em Ambientes Virtuais

36

Tabela 2. Mquina de estados do Autmato Celular 1D, regra 90.

Vizinho esquerda 1 1 1 1 0 0 0 0

Estado atual 1 1 0 0 1 1 0 0

Vizinho direita 1 0 1 0 1 0 1 0

Novo estado 0 1 0 1 1 0 1 0

A tabela traz os estados possveis (8 estados) para o autmato e seus dois vizinhos. Os novos estados, de cima para baixo, definem o nmero da regra, no caso 01011010 = 90 em decimal. A Figura 11 traz algumas representaes visuais para trs regras aplicadas. Na representao grfica branco representa 0 e preto 1, uma linha horizontal indica o estado da seqncia de bits a cada instante. Novos instantes calculados adicionam linhas abaixo na figura.

Figura 11. Grade de autmatos celulares de uma dimenso para as regras 45, 90 e 170 respectivamente.

Os dois primeiros exemplos utilizaram como estado inicial uma seqncia de zeros, com um nico bit = 1 no meio da seqncia; o ltimo exemplo foi iniciado aleatoriamente. A primeira regra apresenta uma repetio montona, a menos que um dos bits seja diferente dos demais, o que leva o sistema a uma total desestabilidade. A segunda regra, batizada de Sierpinsky apresenta uma geometria fractal, onde tringulos se completam at a unidade mais elementar, no caso, o pixel. A regra 170

Vida Artificial em Ambientes Virtuais

37

conhecida em eletrnica como operador deslocamento esquerda (left-shift); o deslocamento direita (right-shift) obtido com o uso da regra 240.

Os autmatos celulares podem ter uma ou mais dimenses. Para o caso do autmato de 2 dimenses com vizinhana de 4, teremos 24 = 16 estados possveis, totalizando 216 = 65536 regras possveis. Para uma vizinhana de oito casas, as regras possveis so da ordem de 134 x 10152. Um caso interessante de autmato celular de duas dimenses o popular Jogo da Vida criado pelo matemtico John Holton Conway, onde para cada clula, com vizinhana de oito casas, considera-se apenas o nmero de vizinhos vivos, ou com valor binrio 1. As regras do Jogo da Vida so:

Uma clula viva com 2 ou 3 vizinhos vivos permanece viva; Uma clula viva com menos de 2 vizinhos morre de solido; Uma clula viva com mais de 3 vizinhos morre sufocada; Uma clula morta com 3 vizinhos vivos passa a viver.

Apesar das regras elementares, o resultado visual do sistema extremamente complexo, e os fenmenos observados imprevisveis, mesmo para uma grade de pequenas dimenses, dada a complexidade das interaes. Dependendo do tamanho da grade e das condies iniciais, o sistema pode demorar um grande nmero de ciclos para se estabilizar. Um nico bit mudado nas condies iniciais e o estado final pode ser completamente diferente, o que caracteriza alta sensibilidade s condies iniciais, requisito para classificar o sistema como catico.

Vida Artificial em Ambientes Virtuais

38

Figura 12. O Jogo da Vida de John Conway.

Outro exemplo de mquina de estado a mquina universal de Turing, considerada uma das primeiras abstraes matemticas que levaram construo da moderna arquitetura dos computadores. Na mquina de Turing, uma fita contm as informaes em uma seqncia binria, e as regras descrevem quais operaes devem ser realizadas considerando o estado atual. Os estados possveis so lendo (0 ou 1), gravando (0 ou 1), movendo para a direita, movendo para a esquerda, parado, e estado final. 3.2.3. Sistemas No-Lineares com Dinmica Catica Alguns sistemas dinmicos de tempo discreto apresentam um comportamento peculiar para alguns valores de parmetros, definido como comportamento catico ou simplesmente caos. Comportamentos caticos podem ser observados tambm na natureza ou em alguns sistemas mecnicos. Para que um sistema seja descrito como catico deve apresentar as seguintes caractersticas:

Aperidico. O sistema no apresenta qualquer tipo de repetio, no revisitando seqncias de valores j assumidos, o que levaria a uma periodicidade.

Vida Artificial em Ambientes Virtuais

39

Limitado. Os valores assumidos sempre se encontram em um determinado limite mximo e mnimo, no explodindo para o infinito ou menos infinito em nenhum momento.

Determinstico. H uma regra definida governando o sistema, sem aleatoriedade, logo, para uma dada condio inicial dos parmetros, os valores visitados so sempre os mesmos, bem como sua seqncia.

Alta sensibilidade s condies iniciais. Uma pequena variao em algum parmetro gera uma seqncia nova que, em longo prazo, apresenta valores que diferem em muito da seqncia inicialmente considerada.

Algumas das equaes dinmicas mais conhecidas e simples que apresentam comportamento catico so o mapa logstico, o mapa de tenda (Tent Map) e o mapa seno-circular (Sine-Circle Map). A equao do mapa logstico dada por:
X T +1 = . X T (1 X T )

O representa o parmetro e o X 0 a condio inicial (X em T=0) que determina a seqncia definida pela funo recursiva. A figura abaixo apresenta os valores visitados pela srie temporal para valores de entre 0 e 4, intervalo onde a equao estvel, apresentando as caractersticas necessrias para defini-la como catica. Esta figura conhecida como diagrama de bifurcao, e determina, estatisticamente, os valores visitados pela srie temporal conforme a variao dos parmetros. No caso do mapa logstico, com apenas um parmetro, o diagrama de bifurcao tem apenas duas dimenses. Mapas com mais de um parmetro apresentam graus de caos em duas ou mais dimenses, tornando difcil sua representao.

Vida Artificial em Ambientes Virtuais

40

Figura 13. Diagrama de bifurcao para o mapa logstico, mostrando ampliada a regio onde o sistema apresenta comportamento catico.

Outro caso interessante de sistema com dinmica catica o mapa de tenda. Ao contrario do mapa logstico, que descreve uma parbola, o mapa de tenda apresenta uma combinao de duas funes lineares. Seguem as equaes do mapa de tenda, seu grau mximo de caos atingido em = 2.
. X T , se (0 < X < 1 2 ) X T +1 = .(1 X T ), se ( 1 2 < X < 1)

Qualquer equao pode, a princpio, apresentar comportamento complexo para algum intervalo de parmetro e estado inicial pr-estabelecido. Porm, um estudo minucioso necessrio para comprovar que o sistema apresenta as caractersticas necessrias para defini-lo como catico. A seguir, a equao do mapa senocircular.

Vida Artificial em Ambientes Virtuais

41

X T +1 = X T + a + b. sin (2. . X T )

A equao descreve um comportamento catico dependente de dois parmetros a e b, e uma condio inicial X 0 ; O parmetro a pode assumir valores no intervalo {0, 1} e b valores maiores que zero, X 0 oscila entre os limites 0 e 1.

Tal comportamento pode ser aplicado para descrever comportamentos complexos, ou em casos onde se deseje introduzir um controle de temperatura, ou seja, deseja-se que o sistema apresente um certo grau de aleatoriedade, porm com alguma previsibilidade. Equaes no-lineares permitem ajustar o grau de agitao do sistema atravs de parmetros, como no caso da equao do mapa logstico.

Uma boa introduo aos princpios da dinmica no linear Understanding Nonlinear Dynamics [KAPLAN, 1995], que trs uma apresentao clara e concisa sobre os conceitos matemticos envolvidos e suas aplicaes em reas como simulao de fenmenos biolgicos e VA. Para uma introduo matematicamente mais detalhada dinmica catica, pode-se recorrer Chaotic Dynamics of Nonlinear Systems [RASBAND, 1990]. 3.2.4. Lgica Nebulosa A lgica nebulosa foi introduzida por Lotfi Zadeh em 1973, como alternativa para expressar matematicamente a incerteza associada ao pensamento humano atravs do emprego de variveis lingsticas e funes de pertinncia em lugar de ou em conjunto com variveis numricas. Em sua publicao [ZADEH, 1973] so apresentados mtodos para descrever o comportamento de sistemas que so muito complexos ou mal definidos para permitir uma anlise matemtica comum.

As relaes entre variveis deste tipo se do atravs de expresses condicionais nebulosas e algoritmos nebulosos. No uso de computadores, o processo de deciso visa dar um enfoque similar ao de sistemas humansticos, atingindo, assim, um

Vida Artificial em Ambientes Virtuais

42

desempenho comparado ao de um operador humano no processo. O autor defende que o enfoque convencional aplicando tcnicas quantitativas de anlise inadequado para lidar com sistemas humansticos. O princpio da incompatibilidade tem como essncia a afirmao de que, conforme a complexidade do sistema aumenta, nossa habilidade para fazer alegaes precisas e ainda significantes sobre o seu comportamento diminui, at que um limite seja atingido, a partir do qual preciso e significncia (ou relevncia) se tornam caractersticas quase mutuamente exclusivas. O enfoque descrito baseia-se na premissa de que o pensamento humano no se baseia em nmero, porm em rtulos de conjuntos nebulosos, onde a transio de pertinncia ou no pertinncia mais gradual que abrupta. A Figura 14 apresenta um exemplo da aplicao de uma varivel nebulosa e conjuntos nebulosos para determinao da distncia.

Dentre as habilidades mais notveis do pensamento humano, destaca-se a habilidade de sumarizar informao, mencionando que grande parte dos trabalhos realizada por humanos no requer um grande grau de preciso em sua execuo. Essa capacidade de sumarizao distingue a inteligncia humana da inteligncia computacional. Mtodos tradicionais de anlise so inadequados para lidar com sistemas humansticos, pois falham em lidar com a impreciso, ou nebulosidade do pensamento e comportamento humano.

muito perto 1 1 0 b1

perto

longe

muito longe

b2

b3

Figura 14. No exemplo, a Varivel Nebulosa D (Distncia) formada por quatro Conjuntos Nebulosos, cujos rtulos definem a distncia. Os pontos b1, b2 e b3 so conhecidos como Pontos de Interseco (Crossover points) que ocorrem onde o grau de pertinncia entre dois conjuntos consecutivos igual (0,5/n, 0,5/n+1).

O conceito de controladores de lgica nebulosa foi posteriormente introduzido, motivado por trabalhos preliminares, como o de Zadeh. Controladores com Lgica

Vida Artificial em Ambientes Virtuais

43

Nebulosa (Fuzzy Logic Controllers ou FLC) so conjuntos de regras de controle lingstico, relacionadas pelos conceitos de implicao nebulosa e regras de inferncia, provendo um algoritmo capaz de descrever uma estratgia de controle lingstico baseado em conhecimento especializado, de forma similar ao processo de deciso humano. Mtodos de aquisio de conhecimento baseado em processos descritos por um operador experiente, em estratgias de controle lingstico, sem que seja necessrio ter conhecimento sobre a dinmica envolvida no processo, so apresentados em [LEE, 1990a], [LEE, 1990b], onde o autor descreve o uso de controladores baseados em lgica nebulosa para ajudar a resolver problemas comuns relacionados a processos mal definidos, ou demasiadamente complexos, que envolvem falta de dados quantitativos em relaes de entrada e sada. O enfoque dado segue o esprito do texto fundamental de Zadeh, dando nfase ao uso da linguagem natural do pensamento humano, que leva em considerao a natureza inexata do mundo real.

Um exemplo da aplicao de lgica nebulosa para simulao de agentes em experimentos de VA apresentado no artigo Evolutionary Search for Optimization of Fuzzy Logic Controllers [NEVES, 2002] disponvel on-line [ALIVE SITE]. 3.2.5. Redes Neurais Artificiais Com os avanos obtidos no estudo do crebro durante o sculo passado, pde-se compreender melhor como a informao armazenada e utilizada nos sistemas nervosos biolgicos, como o humano. A tecnologia de Redes Neurais artificiais aplica aproximaes do modelo biolgico a conjuntos de neurnios artificiais,

simulados em computador, garantindo a sistemas computacionais algumas das caractersticas cognitivas observadas em organismos vivos dotados de sistema nervoso. Talvez o avano mais significativo em eletro-neurofisiologia se deu graas a Hudgkin e Huxley, que modelaram em 1960 os processos biofsicos envolvidos na gerao do potencial de ao do neurnio, trabalho que lhes valeu o prmio Nobel de Fisiologia em 1963. A histria do estudo do crebro, que deu origem disciplina conhecida como conexionismo, apresentada em [KOVACS, 1997b]. Um grfico

Vida Artificial em Ambientes Virtuais

44

cronolgico das pesquisas que levaram a criao da teoria do crebro digital representada na Figura 15.

Doutrina do Neurnio, 1900 Lei do Tudo ou Nada

Mquina de Turing (1936)

Lorente de No, 1938 Carnap, Russel Whitehead

Cannon: Homeostase Sherrington: Reflexos espinhais Josiah Macy, 1943-1952

McCulloch-Pitts: Redes Lgicas, 1943

N. Wiener: Ciberntica, 1948

Shannon: Teoria da Informao, 1948

Metodologia Quantitativa do Neurnio isolado, Neuro-dinmica, Redes Neurais, Inteligncia Artificial, Psicologia Cognitiva, Arquitetura de Von Neumann

Figura 15. Razes do crebro digital.

Um neurnio artificial pode ser descrito como um circuito integrador com vrias entradas, ponderadas por pesos individuais (Wn) e uma nica sada, que acionada mediante uma funo de ativao pr-estabelecida. A funo mais comumente empregada para tal fim a sigmide, que tem grande similaridade com o modelo biolgico.

X1 X2 X3

w1 w2 w3 . . . wn s + g y

Xn

Figura 16. Modelo de blocos do neurnio artificial com funo sigmide.

Vida Artificial em Ambientes Virtuais

45

De acordo com o esquema apresentado na Figura 16, um neurnio artificial tem uma frmula matemtica do tipo:

f (t ) = g wi (t )X i (t ) i

A sada resultado da funo de ativao g(s) aplicada sobre a somatria das entradas individuais multiplicadas pelo peso de cada conexo associado a ela. Toda a informao contida nos neurnios artificiais da rede armazenada pelos valores das conexes Wn.

Para que a Rede Neural Artificial implementada desempenhe uma funo especfica, algoritmos de treinamento devem ser empregados para ajustar os valores de Wn. Existem modelos de algoritmo de treinamento dos mais variados que podem ser empregados para tal fim, entre eles modelos matemticos tericos, que podem ser supervisionados ou no supervisionados, modelos com ajuste por diferenas discretas utilizando clculo numrico e um novo algoritmo baseado no modelo biolgico, que se encontra em atual pesquisa.

A teoria de redes neurais, origens, tipos, aplicaes e algoritmos de treinamento so apresentados de forma compreensiva em [HAYKIN, 1998]. Uma breve introduo histria e conceitos fundamentais da disciplina de Redes Neurais apresentada de maneira sinttica e didtica em [KOVACS, 1997a], livro em portugus. 3.2.6. Algoritmos Genticos e Sistemas Adaptativos A versatilidade observada na adaptao de formas de vida ao seu ambiente, que na maioria das vezes leva estas formas de vida a atingir um resultado timo na adaptao ao meio, inspirou o uso dos mtodos naturais para soluo de problemas. Algoritmos genticos aplicam conceitos de biologia e evoluo na soluo de problemas nas cincias e engenharia, aplicando conceitos de hereditariedade e tcnicas como cruzamento e mutao.

Vida Artificial em Ambientes Virtuais

46

Combinando critrios adaptativos, conceitos de inteligncia computacional, multiestratgias, entre outras tcnicas, o potencial da busca evolucionria pode ser expandido, levando a algoritmos mais eficientes, que consomem menos recursos e levam a melhores solues. Algoritmos de busca evolutiva estocstica visando capacidades de otimizao requerem busca extensiva. Tais algoritmos apresentam alguns atributos desejveis:

Pouca, ou nenhuma informao adicional sobre o ambiente procurado, deve ser necessria a priori (ex. informao de gradiente). A eficincia da busca melhora de acordo com a populao que amostra o espao de solues possveis. Habilidade de evitar mnimos locais, re-amostrando o espao aleatoriamente, evitando a convergncia para um mnimo sub-timo. Habilidade de lidar com mltiplas dimenses, em problemas que envolvam grande nmero de variveis. Generalidade sobre vrias classes de problemas, onde a tcnica apresente vantagens sobre outros algoritmos de otimizao mais determinsticos. Proviso de mltiplas boas-solues, visando identificar no espao de solues possveis, as solues de alta-performance para o dado problema. Habilidade de localizar a regio de soluo tima.

Tecnologias nebulosas (Fuzzy Logic, Fuzzy Controllers), quando integradas busca evolucionria, podem lidar melhor com as incertezas inerentes a projetos de altonvel. O uso de agentes inteligentes como base populacional pode aumentar consideravelmente a inteligncia computacional, a um custo computacional razovel, como ser discutido posteriormente. Evolutionary Search for Optimization of Fuzzy Logic Controllers [NEVES, 2002] traz um exemplo de aplicao de Controladores com Lgica Nebulosa em um contexto multi-agentes, disponvel on-line no stio do projeto [ALIVE SITE].

Para uma introduo ao uso de algoritmos genticos An Introduction to Genetic Algorithms [MITCHELL, 1997] traz os fundamentos e algumas aplicaes bsicas.

Vida Artificial em Ambientes Virtuais

47

Tcnicas avanadas e algoritmos para busca evolutiva so apresentados em Evolutionary Design by Computers [BENTLEY, 1999]. Para estudos mais aprofundados sobre algoritmos genticos, Genetic Algorithms + Data Structures = Evolution Programs [MICHALEWIC, 1996] traz uma abordagem detalhada sobre estruturao das entradas e sadas e alguns algoritmos funcionais.

3.3. Codificao dos Organismos e do Ambiente Virtual


Aqui so apresentados alguns conceitos sobre engenharia de software, entre eles tpicos sobre como estruturar um programa em uma linguagem orientada a objetos, criando uma analogia natural com o problema abordado, como organizar e sincronizar processos que sero executados paralelamente utilizando-se da teoria de Sistemas Multi-Agentes e como efetuar clculos vetoriais que envolvem interseco e colises de formas geomtricas em espaos virtuais. 3.3.1. Paradigma de Programao Orientada a Objetos Programao orientada a objetos (POO) uma maneira de abordar a decomposio de um problema para desenvolver uma soluo algortmica. Os cinco conceitos principais que definem uma linguagem orientada a objetos so: Objetos, Classes, Encapsulamento, Herana e Polimorfismo.

Objetos so pacotes de programas que podem conter tanto atributos (dados e variveis), quanto comportamento (mtodos). So utilizados, geralmente, para representar objetos do mundo real, mas podem representar, a principio, qualquer estrutura de dados ou comportamento funcional relacionado a estas estruturas, como, por exemplo, matrizes ou pacotes IP.

Classes so prottipos que definem variveis e mtodos comuns a um conjunto de objetos. Objetos no existem sozinhos, mas so instncias de uma particular classe. Objetos com uma mesma estrutura de dados (atributos) e mesmos comportamentos (mtodos ou operaes) so agrupados em uma determinada classe. Quando

Vida Artificial em Ambientes Virtuais

48

definimos uma classe, definimos as propriedades de um conjunto de objetos que compartilham os mesmos atributos e mtodos.

Encapsulamento o princpio da caixa-preta, e diz respeito a esconder do usurio, ou cliente, os detalhes da implementao, o acesso aos dados e comportamentos feito sem que seja necessrio qualquer conhecimento do funcionamento interno da interface. Utilizando o exemplo do gravador, um programa cliente que utilize a classe conhece seus atributos ou dados (gravao) e seus comportamentos (play, rec, rewind), mas sem o conhecimento do mecanismo por trs de seu funcionamento. Toda classe tem duas partes: Interface e Implementao. A interface a parte que fica visvel para acesso e utilizao; a implementao o resto do cdigo, que realiza as operaes necessrias para prover o retorno baseado nos parmetros passados pelo cliente. Desta maneira, criam-se nveis de complexidade, onde nenhuma tarefa de um sistema complexo depende de detalhes internos de outra parte.

Encapsulamento tambm uma tcnica para minimizar a interdependncia entre mdulos, definindo uma simples interface externa e permitindo que o cdigo interno seja modificado sem afet-la. Desde que novas implementaes mantenham a interface externa compatvel, o cdigo de um objeto pode ser modificado sem afetar a aplicao que o utiliza, melhorando a performance, corrigindo falhas, consolidando o cdigo ou aumentando sua portabilidade.

Herana determina que objetos pertencentes a um determinado grupo compartilhem as propriedades deste grupo. Uma classe pode estender (ou especializar) uma classe superior, herdando os atributos e comportamentos da superclasse, implementando adies ou restries ao seu funcionamento. Herana um mtodo eficiente e robusto de reutilizao de cdigo, alm de prover um mecanismo natural e poderoso de estruturar e organizar programas em um aplicativo.

Vida Artificial em Ambientes Virtuais

49

Figura 17. Exemplos de herana em classes diferentes.

O ltimo dos conceitos de POO, denominado polimorfismo, um pouco ambguo e tambm diz respeito ambigidade. Existem definies diferentes em diferentes literaturas, porm, o que parece ser um consenso que o polimorfismo garante a um usurio efetuar uma mesma chamada em diferentes objetos de diversas classes e ainda assim ter seu desejo realizado. Polimorfismo prev a habilidade de enviar uma mesma mensagem para uma larga gama de tipos de objetos, ou seja, requisitar uma mesma operao a objetos ou classes diferentes. Polimorfismo tambm diz respeito ao tipo de parmetro passado nas mensagens, associando, a um mesmo mtodo, vrias combinaes possveis de parmetros.

POO v um programa como uma coleo de objetos (ou agentes) conectados, em que cada objeto responsvel por uma tarefa especfica. Um objeto um encapsulamento de estados, dados e comportamentos ou operaes. O comportamento de um objeto ditado pela classe a que pertence. Todo objeto uma instncia de alguma classe. Todas as instncias de uma mesma classe vo se comportar de uma maneira similar, em resposta a um estmulo (ou chamada) similar.

Um objeto exibir seu comportamento evocando um mtodo em resposta a uma mensagem recebida. A interpretao da mensagem decidida pelo objeto e pode ser diferente entre classes distintas.

Vida Artificial em Ambientes Virtuais

50

Classes podem ser organizadas em rvores de hierarquias hereditrias. Os dados e comportamentos associados com classes de maior hierarquia na rvore podem ser acessados por classes hierarquicamente inferiores.

Exemplificando com um experimento de VA, determinamos uma superclasse ambiente como sendo responsvel pelas operaes e atributos comuns a qualquer tipo de ambiente construdo. A superclasse agente, similarmente, contm atributos e operaes comuns manipulao de agentes no domnio do ambiente virtual. Para realizar um experimento em um meio aquoso, criamos uma classe filha que estende a superclasse ambiente, e adiciona o comportamento especfico dos objetos em meio dinmica ambiental representada. Da mesma forma, os agentes que habitam o ambiente especfico so objetos de classes filhas da superclasse agente, que representam as peculiaridades dos agentes, definidas por seus cdigos.

Num contexto de POO, definimos os seguintes conceitos:

Agentes: Um objeto que prov meios para completar uma tarefa visto como um agente apropriado para esta tarefa. Se algum deseja viajar, procura um agente de viagens. O agente de viagens um agente apropriado para a tarefa de agendar e organizar viagens. Se o desejo comprar um carro, provavelmente o agente de viagens ser pouco apropriado. O agente apropriado para se comprar um carro ser um vendedor de automveis.

Mensagens: Uma ao iniciada em POO pela transmisso de uma mensagem para um agente ou objeto responsvel pela ao. A mensagem codifica a requisio para dada ao e acompanhada por toda informao (argumentos) necessria para realizar a requisio.

Mtodos: Mtodos so os meios pelos quais os agentes executam as requisies contidas na mensagem, e envolvem a responsabilidade implicada na aceitao de tal mensagem. Mtodos so evocados pelo agente, em resposta s mensagens recebidas.

Vida Artificial em Ambientes Virtuais

51

O funcionamento particular de cada mtodo no est disponvel a nenhum outro objeto, seno quele que contm o mtodo evocado.

Responsabilidades:

Um

conceito

fundamental

em

POO

descrever

comportamento em termos de responsabilidades. Um requisito por uma ao indica apenas o resultado esperado. O agente livre para empregar qualquer tcnica (ou mtodo) que o leve a obter o objetivo designado e no interfira com outros processos.

Se desejarmos escrever uma classe em POO para cadastrar pessoas em uma academia, por exemplo, podemos ter uma classe como segue:

class pessoa { String Nome; String RG; double altura; double peso; }

// // // //

e.g. "Rogrio Neves" e.g. "12.234.432-8" em metros em Kg

As variveis (nome, RG, altura e peso) so chamadas variveis membro, de instncia ou de campo (field variables), e podem ser diferentes em cada instncia ou objeto pertencente a esta classe. Os campos dizem o que uma classe, e descrevem suas propriedades. Se uma varivel declarada como esttica, seu valor o mesmo para todas as instncias da classe, o que geralmente associado a uma memria compartilhada por todos os objetos deste tipo.

Os comportamentos ou mtodos para a classe especificada poderiam ser:

class pessoa { public void setNome(String nome) { ... } public void setRG(String RG){ ... } public void setAltura(double altura){ ... } public void setPeso(double peso){ ... }}

Vida Artificial em Ambientes Virtuais

52

As declaraes dos mtodos so precedidas pelo tipo de acesso e tipo de retorno devolvido. Os tipos de acesso possveis so:

Pblico (public): O mtodo pode ser evocado por cdigo em qualquer instncia, pertencente a qualquer classe, em qualquer pacote.

Privado (private): O mtodo pode ser evocado apenas pelo prprio objeto da classe que contm o mtodo.

Protegido (protected): O mtodo pode ser apenas evocado por instncias da mesma classe, ou que a estendam, por herana, desde que pertenam ao mesmo pacote.

Um mtodo pode ser modificado em uma classe que o herda, tcnica conhecida como substituio (overriding). A seqncia natural de execuo de uma mensagem recebida : procurar um mtodo local; caso no o encontre, enviar a mensagem para a superclasse hierarquicamente superior, sucessivamente, at que seja executada ou falhe em todas as instncias, retornando uma exceo.

Mtodos definidos como abstratos (abstract) dentro de uma classe, determinam que tal classe abstrata, significando que no existe cdigo para o mtodo na implementao, mas as classes que a estendem devero prover o cdigo para o mtodo abstrato. Uma classe abstrata no pode ser diretamente instanciada; apenas as classes filhas que implementarem os mtodos definidos como abstratos podero ser instanciadas.

Mtodos definidos como finais (final) no podem ser substitudos em classes hierarquicamente inferiores.

Os mtodos definidos como estticos (static) no sero instanciados, sendo compartilhados (escopo global) por todos os objetos da classe. Apenas variveis estticas, ou parmetros, podero ser operados dentro do escopo destes mtodos.

Vida Artificial em Ambientes Virtuais

53

3.3.2. Sistemas Multi-Agentes Numa definio geral, um agente seria qualquer entidade existente que, em um ambiente propcio, age sobre ele de alguma maneira determinada. Quando falamos de agentes infecciosos, nos referimos a entidades biolgicas que quando presentes no corpo (ambiente propcio) se proliferam causando danos sade. Quando falamos de agentes poluentes, nos referimos a substncias txicas que causam danos ao meio ambiente, na atmosfera, nos rios ou nos oceanos.

Do ponto de vista profissional, o agente aquele que representa os desejos e vontades do cliente, e, com base nos objetivos estipulados, tenta realizar a tarefa que lhe foi atribuda da melhor maneira possvel, com base no seu conhecimento. Um agente de viagens tenta realizar o desejo do cliente no planejamento de viagens, determinando melhores rotas, preos e horrios, visando a satisfao dos objetivos impostos com base no seu conhecimento sobre empresas, servios e tarifas relacionados sua especialidade. Se o objetivo arrumar um emprego, no entanto, o agente de viagens pouco indicado para o trabalho. Portanto, um agente possui um ambiente ou nicho de atuao, fora do qual no til ou funcional.

Da mesma maneira, um agente eletrnico uma entidade computacional (de software), que tem por objetivo desempenhar alguma tarefa para a qual foi designado. Para tanto, pode lanar mo de uma sorte de tcnicas e mtodos de forma flexvel e autnoma, visando unicamente a satisfao dos objetivos impostos, da melhor maneira possvel, segundo os critrios estabelecidos e sua habilidade prpria.

Definir o agente no to trivial quanto possa parecer, porque a palavra pode ter alguns significados diferentes: em Inteligncia Artificial, pode ser usado para referir um processo ou tarefa computacional. Agente uma entidade computacional ativa a quem um humano delega uma ou vrias funes. O agente tem a percepo do ambiente em que est imerso e tambm a capacidade de fazer parte de uma comunidade de agentes com diferentes capacidades e objetivos. Seguem algumas definies formais do termo agente, apresentadas em literaturas envolvendo o estudo de SMA [FRANKLIN, 1996].

Vida Artificial em Ambientes Virtuais

54

O agente AIMA [RUSSEL, 1995]: Um agente qualquer coisa que pode ser visto como percebendo seu ambiente atravs de sensores e agindo sobre este ambiente atravs de atuadores. Definindo o ambiente como algo que prov uma entrada e recebe uma sada, considerando receber como sentir e produzir sada como agir, todo programa pode ser considerado um agente.

O agente MAES [MAES, 1995]: Agentes autnomos so sistemas computacionais que habitam algum ambiente de dinmica complexa, sentem e agem autonomamente neste ambiente e, fazendo isso, realizam uma srie de objetivos ou tarefas para os quais foram designados. Nesta definio, alm das noes agir e sentir, o autor vincula a noo de autonomia s propriedades de um agente.

O agente de Hayes-Roth [HAYES, 1995]: Agentes inteligentes continuamente realizam as funes: percepo das condies dinmicas do ambiente; ao que afeta tais condies no ambiente; e raciocnio para interpretar percepes, resolver problemas, lanar inferncias, e determinar as aes. A definio inclui, alm das noes de agir e sentir, a noo de raciocnio.

O agente Wooldridge-Jennings [WOOLDRIDGE, 1995]: um sistema baseado em hardware ou (mais comumente) software que apresenta as seguintes propriedades:

Autonomia: agentes operam sem interveno direta de humanos ou outros, e tem algum controle sobre suas aes e estados internos; Habilidade social: agentes interagem com outros agentes (e possivelmente humanos) atravs de algum tipo de linguagem de comunicao de agentes; Reatividade: agentes percebem seu ambiente, (que pode ser um mundo fsico, um usurio atravs de uma interface grfica, uma coleo de outros agentes, Internet, ou uma combinao destes) e respondem de modo temporal a mudanas que ocorram nele;

Vida Artificial em Ambientes Virtuais

55

Pro-atividade: agentes no simplesmente agem em resposta ao seu ambiente, so capazes de exibir comportamento dirigido ao objetivo, tomando iniciativa.

As definies levam a dois usos distintos da palavra agente:

1. Aquele que age ou pode agir; 2. Aquele que age em lugar de outro com permisso.

Finalmente, a definio de agentes de VA [FRANKLIN, 1997] que habitam ambientes virtuais como a memria ou tela do computador: Um agente autnomo um sistema situado e parte de um ambiente que sente este ambiente e age nele, no tempo, em busca de sua prpria agenda (ou objetivos), o que afeta, no futuro, o que ele sente.

As vrias definies apresentadas acima do que ser um agente ressaltam de forma menos restritiva algumas das propriedades de um agente eletrnico. A Tabela 3 apresenta algumas propriedades, no mutuamente necessrias, porm suficientes, que podem ser teis na classificao de agentes por tipo.

Tabela 3. Propriedades desejveis de um agente.

Propriedade Reatividade Pr-atividade

Nome alternativo Sentimento e ao

Propsito, objetividade Sociabilidade Comunicabilidade Mobilidade Continuidade Autonomia Cognio Flexibilidade Crena

Aprendizado, adaptao

Significado Responde temporalmente a mudanas no ambiente No responde simplesmente aos estmulos ambientais, mas persegue um propsito Cooperao com outros agentes, incluindo o usurio Habilidade de mover-se no ambiente ou entre ambientes (ou mquinas) distintos Executa ininterruptamente Exerce controle sobre suas prprias aes Muda sua atitude, baseado na experincia anterior Aes no prescritas Personalidade, estado emocional

Vida Artificial em Ambientes Virtuais

56

Sistemas Multi-Agentes, ou simplesmente SMA, so sistemas que implementam um conjunto de agentes eletrnicos para desempenhar as tarefas estabelecidas pelo usurio. Em um Sistema Multi-Agente, todos os agentes esto interessados em solucionar o problema em considerao, podendo cooperar na tentativa de obter a melhor soluo para o determinado problema.

Os Sistemas Multi-Agentes permitem, tambm, modelar o comportamento de um conjunto de entidades (inteligentes ou programticas) organizadas de acordo com leis sociais. Estas entidades dispem de uma certa autonomia e esto imersas em um ambiente com o qual necessitam interagir e do qual devem possuir uma representao parcial, assim como meios de percepo e comunicao.

Agentes Autnomos

Agentes Biolgicos

Agentes Robticos

Agentes Computacionais

Agentes Eletrnicos

Agentes de Vida Artificial

Agentes de Entretenimento

Agentes de Busca

Vrus

...

Agentes Inteligentes

Agentes Biolgicos Artificiais

...

Figura 18. rvore de ramificaes dos tipos de agentes.

Os vrios tipos de agentes eletrnicos so geralmente implementados em classes, embora no seja obrigatrio o uso de linguagens orientadas a objetos para implementar SMA [SMITH, 1994]. O paradigma de orientao a objetos, no entanto, torna mais simples e natural a implementao de SMA. A Figura 18 mostra uma possvel hierarquia na classificao de agentes. Agentes so construdos e operam em ambientes. Esses ambientes impem restries sobre o comportamento dos agentes e providenciam servios e facilidades que podem ser usados pelos agentes. Um nmero significativo de arquiteturas de agentes tem sido proposto. Estas so tipicamente estruturadas em camadas, tendo no topo a camada de raciocnio. Um programa orientado a objetos, que utiliza objetos do tipo agente para desempenhar

Vida Artificial em Ambientes Virtuais

57

funes em um ambiente comum, denominado Programa Orientado a Agentes [SHLOAM, 1998].

Um experimento de VA Orientado a Agentes, por exemplo, utiliza agentes para simular os organismos existentes no ambiente virtual que interagem entre si e com o ambiente, assim como para representar caractersticas de entidades, outros agentes ou objetos, atravs de atributos observveis (atores), como ser apresentado no prximo captulo.

Para detalhes sobre os paradigmas da implementao de experimentos orientados a agentes e a teoria envolvida no estudo de agentes eletrnicos e SMA, o leitor pode recorrer aos tutoriais [FONER SITE] disponveis gratuitamente na Internet. 3.3.3. A Viso do Agente do Universo Virtual Em um ambiente virtual, geralmente preciso fazer testes para determinar se um objeto, ou agente, est no campo de viso de um determinado agente. Para tanto, algoritmos de clculo vetorial so empregados para avaliar se os objetos so interceptados pela rea ou volume representados pela forma geomtrica, que representa o campo de viso do agente avaliado. Em um espao em trs dimenses, a forma geomtrica em questo pode ser uma esfera, no caso de uma viso radial ou um cone, no caso de uma viso direcional, ou ainda qualquer forma geomtrica simples ou composta.

Para exemplificar o conceito, a interceptao de um objeto pela rea de viso de um agente em duas dimenses apresentado na Figura 19, onde a viso radial representada pelo crculo e a viso direcional representada pelo setor angular.

Vida Artificial em Ambientes Virtuais

58

Figura 19. Exemplos de reas de interseo em duas dimenses.

No caso esfrico, para determinar se o objeto esta dentro do campo de viso do agente, basta avaliar se o comprimento do vetor calculado pela diferena entre os r r vetores representando a posio do agente a = ( x1 , y1 , z1 ) , e do objeto o = ( x2 , y2 , z2 ) igual ou inferior ao raio mximo do circulo ou esfera.
r r ao R

Se o ngulo de sensibilidade limitado por um cone, alm da distncia mxima, deve ser avaliado, tambm, se o ngulo entre o vetor que representa a orientao da viso do agente e o ngulo do vetor da diferena entre o agente e o objeto no excede o ngulo que define o cone.

r r r angulo d , a o

O calculo do ngulo acima pode ser feito utilizando-se propriedades do produto escalar e vetorial, embora a maioria dos pacotes de programao para clculo vetorial j apresente funes ou mtodos para se obter o ngulo entre dois vetores. r r r r u v u v sen( ) = r r = r r u .v u v

Vida Artificial em Ambientes Virtuais

59

= sen 1 ( u v )

r r Onde os vetores unitrios u e v so os vetores normalizados de u e v .

Os testes interseo entre objetos com formatos mais complexos podem ser decompostos em testes envolvendo formas geomtricas mais simples, ou utilizar algoritmos de interceptao utilizados em reas de computao grfica, que consistem de algoritmos que deslocam objetos de teste pela cena varrendo a rea de teste. 3.3.4. Detectando Colises Os clculos dinmicos e testes responsveis pela deteco de colises podem ser implementados no cdigo do ambiente, ou no cdigo de cada agente. Este cdigo deve verificar se as fronteiras definidas para os objetos presentes na cena foram violadas, aplicando as regras dinmicas vigentes no caso de ter havido colises.

No caso de tal algoritmo ser implementado junto ao cdigo do agente, este deve varrer a lista de objetos contidos na cena, verificando se suas posies e formas interceptam sua prpria forma. Para tanto, se estabelecem fronteiras (boundings) de contato, que dispara o alerta de contato quando outros objetos penetram seu permetro.

Para um algoritmo executando no ambiente, uma tabela pode ser mantida contendo as posies e fronteiras de cada agente, informando as instncias quando uma coliso ocorrer.

O prprio Java3D implementa algoritmos para deteco de contatos por fronteiras, porm o uso do cdigo nativo impe algumas limitaes, como a de detectar apenas uma coliso, com um nico objeto por vez. No caso de vrios objetos penetrando as fronteiras de um agente, apenas a primeira coliso seria detectada, e at que esta terminasse, nenhuma outra seria reportada.

Vida Artificial em Ambientes Virtuais

60

Alternativamente, o algoritmo para detectar colises pode ser implementado de forma semelhante ao descrito no tpico anterior, determinando objetos geomtricos correspondentes aos formatos dos agentes presentes na cena e avaliando se suas fronteiras se interceptam. No caso de objetos esfricos, ou que podem ter suas fronteiras representadas por objetos esfricos, a coliso ocorre quando:
r r p2 p1 R2 + R1

r r onde R1 e p1 so o raio e a posio do objeto 1 e R2 e p2 so o raio e posio do

objeto 2.

O teste acima de simples implementao e computacionalmente barato. Tambm possvel se representar uma fronteira de um objeto mais complexo por um conjunto de testes simples, como o apresentado. Para tanto, define-se um conjunto de pontos e raios que produzam esferas que cubram todo (ou quase) o volume de deteco. A Figura 20 mostra um exemplo de deteco de coliso, representando a fronteira de uma forma complexa por simples volumes esfricos.

Figura 20. Exemplo de teste de interceptao e coliso de fronteiras de um objeto complexo por um conjunto de testes utilizando volumes esfricos.

A performance um ponto crucial, considerando que cada agente na simulao dever realizar todos os testes de interceptao em cada ciclo de execuo; a eficincia do algoritmo de teste determina de forma crtica o tempo gasto na execuo de cada ciclo.

Vida Artificial em Ambientes Virtuais

61

Figura 21. Grfico do tempo gasto em cada ciclo versus o nmero de testes efetuados.

A ordem de grandeza do tempo gasto em cada ciclo pode ser extrapolada pela formula:

Ttotal = N agentes (Ttestes + Tcalculos ) + Tambiente

O tempo em que cada ciclo executa, ento, depender do nmero de agentes em execuo, da quantidade de operaes, clculos e testes realizados por cada agente e da quantidade de operaes, clculos e testes desempenhadas pelo cdigo do ambiente. A performance resultante pode variar significativamente, dependendo de onde o algoritmo de interseco codificado, no ambiente ou em cada agente.

3.4. Visualizao do Ambiente Virtual


Definidos os parmetros da simulao, resta determinar a tcnica ou tecnologia que ser empregada na visualizao dos dados do experimento. Experimentos em vida artificial, geralmente empregam visualizaes rudimentares, ou sadas em texto para representar o ambiente virtual. Alguns experimentos, porm, visam ressaltar a

Vida Artificial em Ambientes Virtuais

62

semelhana entre os eventos ocorridos na simulao e os observados no mundo real. Para tanto, o uso de tecnologias de ponta necessrio para se obter o resultado visual desejado. Algumas caractersticas de cada tipo de representao so apresentadas abaixo. 3.4.1. Representao em Duas Dimenses A exibio bi-dimensional computacionalmente barata, se mostrando altamente eficiente para representao de fenmenos dinmicos que acontecem sobre um plano, ou com dinmica que envolve apenas dois graus de liberdade, ou menos.

Um caso especfico que ilustra a aplicao de uma visualizao grfica 2D, esta na visualizao do programa do projeto FUZZY-BOT [NEVES, 2002], cujo objetivo treinar evolutivamente robs virtuais controlados por lgica nebulosa para uma tarefa especfica: coletar recursos. O ambiente virtual se resume a uma arena de dimenses limitadas onde os robs se locomovem em uma superfcie plana, na qual os robs e recursos so representados por crculos cheios que representam suas fronteiras. No contexto da simulao, a visualizao consome muito pouco dos recursos computacionais exigidos.

O mapeamento dos atributos de agentes e do ambiente podem ser feitos visualmente atravs da colorao dos objetos, etiquetas que flutuam sobre eles, ou atravs da interao, utilizando-se dispositivos como o Mouse para obter informaes sobre os agentes em execuo (clicando sobre os atores). O uso de tabelas auxiliares largamente empregado, embora seja pouco prtico para sistemas com dinmica rpida ou grande nmero de agentes.

Embora seja barata e de fcil implementao, a representao em 2D visualmente pobre e pode tornar-se desinteressante em experimentos onde se deseja ressaltar a analogia entre o ambiente virtual e o mundo real.

Vida Artificial em Ambientes Virtuais

63

3.4.2. Visualizao em Trs Dimenses A visualizao em trs dimenses apresenta um custo computacional mais elevado, podendo exigir, dependendo da complexidade do universo virtual, a aplicao em computadores modernos e o uso de caros dispositivos aceleradores grficos para atingir os resultados desejados. Porm, apesar do custo elevado, a visualizao em 3D apresenta uma qualidade visual superior e representa uma maior riqueza de informao, permitindo mapear atributos no s atravs da colorao, mas, tambm de formas, de texturas, ou smbolos dispostos sobre estas texturas. A transparncia, tambm, pode representar informao, ou permitir que sejam observados eventos que ocorrem no interior das clulas ou agentes.

A visualizao 3D cria ainda uma analogia direta entre eventos ocorridos em um ambiente virtual e fenmenos observados no mundo real. 3.4.3. Visualizao do Ambiente em Realidade Virtual Os Sistemas de Realidade Virtual so hoje a forma mais avanada de interface entre usurio e computador existente. A realidade virtual (ou simplesmente RV) uma forma das pessoas visualizarem, manipularem e interagirem com computadores e dados extremamente complexos utilizando, para tanto, seus canais multi-sensoriais, i.e., seus sentidos, particularmente viso, audio e os movimentos naturais tridimensionais do corpo. A realidade virtual tambm pode ser considerada como a juno de trs idias bsicas: imerso, interao e envolvimento [MORIE, 1994]. Isoladamente, essas idias no so exclusivas de realidade virtual, mas, aqui, elas coexistem.

A visualizao em RV, no entanto, requer computadores de alto desempenho e excelente capacidade grfica, alm de dispositivos no convencionais para exibio e interatividade, como capacete de visualizao e controle, luva, entre outros que permitem a explorao do ambiente e a manipulao natural dos objetos com o uso das mos, por exemplo, para apontar e pegar, entre outras aes.

Vida Artificial em Ambientes Virtuais

64

Para a elaborao de sistemas de visualizao em realidade virtual, tambm necessrio ter algum domnio sobre tpicos como: dispositivos no convencionais de entrada e sada, sistemas paralelos e distribudos, modelagem geomtrica tridimensional, simulao e sistemas em tempo real, navegao, deteco de coliso, avaliao, impacto social, projeto de interfaces, orientao a objetos, aplicaes simples, distribudas e multi-tarefas em diversas reas alm de tpicos de redes, modelagem geomtrica, modelagem fsica, etc.

Um sistema considerado imersivo se projeta o usurio dentro da cena virtual. O efeito imersivo pode ser obtido com o uso de capacete de visualizao (HMD), ou uma CAVERNA (CAVE), sistema baseado em uma sala com projees nas paredes e no piso [CAVERNA SITE]. Alm do fator visual, os dispositivos relacionados a outros sentidos tambm so importantes para a sensao de imerso, como o som posicional estreo. A realidade virtual no imersiva baseia-se no uso de monitores com culos 3D (Shutter Glasses).

De acordo com Cris Shaw [SHAW, 1993], existem cinco requisitos e propriedades que um sistema de realidade virtual deve satisfazer para ser utilizvel e satisfatrio:

1. Um sistema de RV deve gerar imagens estereoscpicas, animadas e suaves, visando manter a caracterstica de imerso. Isto significa que a taxa de quadros por segundo no deve ser menor que 10; 2. Um sistema de RV deve reagir rapidamente s aes do usurio. A resposta da imagem no deve exceder 100ms; 3. Um sistema de RV deve fornecer suporte para distribuir uma aplicao em diversos processadores. Para aplicaes distribudas e complexas, a distribuio permite mltiplos usurios e a computao cooperativa; 4. Num sistema distribudo de RV, necessrio um mecanismo eficiente de sincronizao e comunicao de dados. Dados compartilhados ou remotos s so viabilizados com uma comunicao eficiente, que assegure o tempo real do sistema;

Vida Artificial em Ambientes Virtuais

65

5. necessrio algum mecanismo de avaliao de desempenho. Um sistema de desenvolvimento de RV deve ter mtodos de monitorao do desempenho geral da aplicao para garantir o sucesso do conjunto e a execuo em tempo real.

Do ponto de vista da engenharia de software, deve-se observar os quatro requisitos que seguem [SHAW, 1993]:

1. Garantir a portabilidade das aplicaes. Normalmente, as aplicaes de realidade virtual so fortemente ligadas com o ambiente de desenvolvimento. As aplicaes devero possibilitar a execuo em diversas plataformas, exigindo no mximo uma re-compilao do cdigo; 2. Suporte para uma larga gama de dispositivos de entrada e sada. Como a tecnologia de realidade virtual ainda est em evoluo, o sistema dever ter capacidade de empregar novos dispositivos vindouros; 3. Independncia das aplicaes com relao localizao fsica do usurio, bem como de seus dispositivos de entrada e sada. O sistema dever ajustar-se a diferentes configuraes de localizao fsica do usurio (geometria da sala e situao dos rastreadores); 4. Flexibilidade do ambiente de desenvolvimento de aplicaes. Muitas vezes a aplicao em RV desenvolvida num ambiente e executada em outro. O sistema deve ter flexibilidade para permitir a utilizao de ambientes de desenvolvimento diferentes, bem como a execuo de testes com outros dispositivos, com o mnimo de alterao do cdigo.

Alguns passos no desenvolvimento de aplicaes em RV podem ser relacionados sucintamente:

Definio da aplicao; Caracterizao do sistema de imerso; Avaliao dos dispositivos de visualizao; Estabelecimento das capacidades de rastreamento; Avaliao de outros dispositivos de entrada e sada;

Vida Artificial em Ambientes Virtuais

66

Avaliao do conjunto de recursos e suas capacidades; Seleo do sistema de desenvolvimento: o Criao e edio da geometria; o Criao e edio de texturas; o Requisitos de programao; o Caracterizao da estereoscpia; o Modelagem do comportamento fsico; o Suporte aos perifricos; o Requisitos do sistema; o Portabilidade; o Suporte de rede; o Suporte a distribuio.

Seleo do hardware: o Quantidade e caractersticas de comunicao; o Caractersticas do acelerador grfico; o Capacete de visualizao (HMD); o CAVERNA (CAVE); o Monitor externo; o culos 3D (Shutter Glasses); o Navegadores 3D, rastreadores e apontadores; o Luvas e dispositivos de fora; o Outros dispositivos especiais.

A realidade virtual vem revolucionando a forma de interao das pessoas com sistemas complexos tratados por computadores, propiciando maior desempenho e economizando custos [RV SITE]. Novas aplicaes surgem a cada dia, como sistemas de modelagem e visualizao de dados cientficos, ou o laboratrio virtual de Vida Artificial descrito no prximo captulo. A implementao da plataforma descrita no prximo captulo visa, entre outros objetivos, diminuir o nmero de requisitos necessrios e conhecimentos envolvidos na implementao de um experimento que utiliza RV. Um tutorial que descreve os principais conceitos e um pouco da histria da RV pode ser obtido on-line em [RV SITE].

Vida Artificial em Ambientes Virtuais

67

4. IMPLEMENTAO DA PLATAFORMA
A especificao inicial do projeto visava empregar tcnicas de visualizao cientfica a experimentos de VA, fazendo uso das tecnologias de computao grfica e realidade virtual disponveis. A princpio, o projeto visava utilizar os recursos do Ncleo Realidade Virtual do Laboratrio de Sistemas Integrveis da Escola Politcnica da USP, especificamente os equipamentos que compem a CAVERNA digital, uma sala cbica com cinco telas retro-projetadas cuja funo dar uma sensao de imerso total no ambiente virtual exibido. Sua operao feita por seis computadores IBM-PC interconectados em um aglomerado (cluster), ou por uma estao Silicon Graphics.

A plataforma experimental proposta tinha ento como objetivo disponibilizar uma interface de aplicao que simplificasse o processo de implementao de experimentos em um ambiente de desenvolvimento de fcil utilizao, portvel, com suporte a dispositivos grficos variados em um contexto multi-agentes. Tambm se previa a utilizao de sistemas multi-processados, como o do projeto SPADE, ou de arquiteturas distribudas, como o cluster integrado CAVERNA digital, para se obter ganhos de desempenho. medida que era desenvolvida, funcionalidades foram adicionadas plataforma.

Desde a primeira verso funcional do programa, foram adicionadas funcionalidades como uma interface de usurio, aprimoramento grfico da visualizao e a possibilidade de executar os experimentos em modo Applet, permitindo a visualizao de experimentos pela Internet, em qualquer browser com suporte a Java e Java3D. A filosofia de cdigo aberto permite que usurios ao redor do mundo contribuam para o aprimoramento da plataforma, continuando seu desenvolvimento de forma colaborativa. A seo 4.1 trata da especificao da plataforma implementada e das caractersticas propostas para tal ambiente de desenvolvimento.

Tratando-se de uma simulao de agentes em um ambiente fsico, que envolve comunicao entre entidades e alguma independncia entre as diversas instncias, a

Vida Artificial em Ambientes Virtuais

68

adoo do paradigma de POO permitiu a definio de uma arquitetura de software em uma linguagem natural, com direta analogia estrutura observada no mundo real. Pelos motivos apresentados at agora, a escolha da linguagem JavaTM da Sun Microsystems, disponibiliza a versatilidade e robustez necessrias ao projeto, alm de apresentar vantagens adicionais, como disponibilidade de material e suporte de grupos de utilizadores atravs da Internet. Os motivos que levaram a escolha da linguagem Java, e do API Java3D para desenvolver o projeto so apresentados na seo 4.2, bem como uma breve introduo a sua utilizao. Tambm so apresentados alguns conceitos fundamentais para utilizao do API Java3D, como operaes com vetores para manipulao de objetos.

A seo 4.3 descreve a arquitetura da plataforma, apresentando os diagramas de classe definidos para a especificao e explicando a utilizao dos mtodos e variveis das classes base.

A seo 4.4 traz algumas consideraes importantes sobre a implementao de experimentos com objetos que executam concorrentemente, como sincronizao, criao, destruio e uso de semforos.

A seo 4.5 explica como foi testada a plataforma, apresentando alguns experimentos simples que foram implementados com este fim.

4.1. Proposta do Projeto da Plataforma


Muitas vezes, a maior dificuldade encontrada na realizao de experimentos em VA no est na definio terica do problema, na especificao do experimento ou na modelagem comportamental dos seres virtuais, mas, sim, na implementao da simulao. Na fase de programao, preciso lidar com uma srie de peculiaridades da linguagem de programao escolhida e contornar uma srie de limitaes nela existentes.

Vida Artificial em Ambientes Virtuais

69

Mesmo aps a fase inicial de implementao, sequer os programadores mais experientes escapam da tarefa de busca e correo de erros de programao, que podem envolver desde simples erros de sintaxe at complexos erros de consistncia, acesso ilegal e de violao de memria entre uma infinidade de modalidades. Alguns erros s se revelam muito tempo aps o programa estar pronto e distribudo.

Neste sentido, esperado que o pesquisador, disposto a desempenhar tal tarefa, possua um domnio razovel da linguagem de programao, pois caso contrrio, a tarefa pode se tornar extremamente complexa e desgastante. A complexidade aumenta indefinidamente quando se deseja utilizar objetos distribudos, ou que executam concorrentemente. Falhas na comunicao e sincronizao de instncias concorrentes, bem como violaes de acesso a variveis, dados e arquivos, so causa comum de problemas envolvendo programao concorrente.

O projeto prope a criao de uma plataforma de experimentao em VA que facilite ao mximo a implementao de experimentos, fornecendo um mecanismo eficiente de visualizao e ferramentas de comunicao e sincronizao de instncias de agentes, aplicando clculo vetorial para a movimentao e orientao dos agentes.

Utilizando as superclasses, o usurio, interessado em implementar um experimento utilizando a plataforma, deve: escrever o cdigo referente s regras especficas presentes no ambiente simulado; e o cdigo referente aos agentes nele presentes e seus particulares comportamentos. Mtodos de comunicao e sincronizao de agentes so fornecidos, bem como ferramentas utilitrias com o propsito de tornar o processo de implementao o mais simples e rpido possvel, exigindo assim o mnimo de conhecimento do usurio para o processo de implementao de experimentos.

O projeto visa aplicao em sistemas de visualizao de realidade virtual e computao grfica, podendo utilizar para exibio dos experimentos desde placas aceleradoras grficas e monitores convencionais, at sistemas de realidade virtual, como Shutter Glasses, HMD (Head Mounted Displays) e de imerso total, como a

Vida Artificial em Ambientes Virtuais

70

CAVERNA digital. Placas aceleradoras grficas so recomendadas para diminuir a carga computacional sobre o processador referente ao processo de sntese das imagens (rendering).

Algumas das caractersticas propostas para o projeto so:

Paradigma de programao orientada a objetos; Compatibilidade com diversas plataformas computacionais; Ambiente simulado tri-dimensional com dinmica vetorial; Visualizao em 3D (estreo) com suporte a diversos dispositivos grficos; Possibilidade de visualizao em dispositivos de realidade virtual e em ambientes imersivos (CAVERNA); Possibilidade de execuo concorrente em sistemas multi-proccessados, num contexto multi-agentes; Possibilidade de utilizao de sistemas distribudos em cluster, para otimizao da performance na computao e apresentao grfica; Possibilidade de execuo em modo Applet, para visualizao na Internet.

Para implementar muitas das caractersticas citadas, o projeto conta com o poder da linguagem JavaTM e do API Java3DTM, desenvolvidos pela Sun Microsystems. Os motivos que levaram escolha da linguagem e do acessrio de visualizao so descritos na prxima seo.

4.2. Sobre a Linguagem Sun JavaTM e o API Java3DTM


Programao envolve lidar com complexidade, e problemas complexos exigem uma linguagem de programao verstil e robusta. A linguagem Java comeou como um esforo da Sun Microsystems para criar uma linguagem de programao extensvel, que criasse programas capazes de executar em vrios tipos diferentes de dispositivos e arquiteturas. Graas a sua versatilidade, Java se tornou a linguagem principal para distribuio de material executvel pela Internet, dando aos usurios retorno

Vida Artificial em Ambientes Virtuais

71

automtico em pginas inteligentes, que executam no lado de cliente (client-based application) ou do servidor (servlets).

A linguagem Java estendeu e facilitou a maioria das tarefas complexas compreendidas no universo da computao, entre as quais: programao em rede; programao distribuda e multitarefa; programao multi-plataforma; mudanas dinmicas de cdigo; gerenciamento de segurana [ECKEL, 2002]. Tambm obteve grande repercusso por se tratar de uma ferramenta livre, seguindo a filosofia do cdigo aberto, deixando pouco mistrio a respeito de seu funcionamento interno e de suas capacidades.

Algumas das caractersticas que levaram a escolha da linguagem Java so:

Linguagem orientada a objetos; Suporte interao por console ou interface visual; Arquitetura concorrente com o uso de threads; Compatibilidade com diversas plataformas sem re-compilao de cdigo; Execuo em modo aplicativo ou Applet para execuo na Internet; Distribuio gratuita; Material de suporte disponvel on-line.

A disponibilidade de material de qualidade e suporte on-line em um frum de usurios esto entre as principais caractersticas da linguagem. Para uma introduo detalhada linguagem e seus paradigmas, o livro Thinking in Java pode ser obtido on-line ou nas livrarias [ECKEL, 2002]. O livro Java, como programar [DEITEL, 2002] utilizado na maioria dos cursos de graduao de introduo linguagem Java. Como referncia para usurios iniciados, a documentao da linguagem Java disponvel no stio da Sun na Internet a mais completa existente [SUN SITE].

O API Java3D uma extenso da linguagem Java cuja finalidade prover acesso a dispositivos grficos dependentes de plataforma, sem que a execuo dos programas comprometa sua portabilidade. O API (Application Programming Interface)

Vida Artificial em Ambientes Virtuais

72

incorpora mtodos de acesso de alto-nvel para a modelagem da cena e lida com os acessos s arquiteturas de baixo nvel como OpenGL e DirectX.

O API Java3D utiliza um modelo de visualizao flexvel e orientado a objetos para construo da cena, onde os objetos so conectados hierarquicamente em um grafo descritivo da cena representada, podendo gerar sadas para uma srie de dispositivos, provendo acesso s mais modernas tecnologias de hardware e capacidades grficas disponveis, tirando proveito de aceleradores grficos para melhorar a performance. Para uma experincia imersiva, o mecanismo de entrada aceita uma srie de dispositivos, desde simples mouses at apontadores (wands) e luvas (gloves).

Figura 22. Exemplo de grafo de cena no API Java3D.

No requerido ao usurio da plataforma possuir conhecimento detalhado sobre a operao do API Java3D a no ser que deseje construir personagens com morfologia dinmica ou que utilizem algoritmos para modificar a forma do ator representado em tempo de execuo. Uma boa referncia para o uso de Java3D Getting Started with the Java3DTM API, disponvel gratuitamente no stio da Sun [SUN SITE], onde tambm esto disponveis a especificao do API e os manuais oficiais.

Vida Artificial em Ambientes Virtuais

73

Para utilizar a plataforma, o usurio dever escrever algum cdigo, e, portanto, dever possuir algum conhecimento da linguagem Java. No Apndice C so apresentadas caractersticas essenciais da linguagem Java, necessrias e suficientes para o entendimento dos segmentos de cdigo que so apresentados nas prximas sees. Apresenta, tambm, uma breve explicao sobre a utilizao do API Java3D para manipulao dos objetos no universo virtual.

4.3. Arquitetura do Simulador


A plataforma disponibilizada apresenta sete classes principais e uma classe auxiliar, sendo trs delas chamadas de Superclasses ou classes base para o desenvolvimento de experimentos. Os experimentos desenvolvidos devero estender as classes base e utilizar as variveis e mtodos pblicos disponibilizados para construir o comportamento dos agentes e a fsica ambiental do experimento implementado. A Figura 23 apresenta as classes fundamentais e suas dependncias.

java.lang java.applet java.lang.Thread javax.vecmath

javax.media.j3d

BranchGroup

ALIVE

ViewWindow

Initializes

Environment Starts

Agent

Actor

Launcher

UserInterface

EnvConfig

RenderClient Subset

Manages

Figura 23. Diagrama de classes do projeto ALIVE e suas dependncias.

Vida Artificial em Ambientes Virtuais

74

A classe auxiliar (RenderClient subset) representa o subconjunto de cliente, que serve ao propsito da sntese de imagens em sistemas distribudos, e ser explicada posteriormente. 4.3.1. Componentes do Aplicativo Principal A classe Launcher um aplicativo de configurao para objetos do tipo EnvConfig, ou configurao de ambiente. Ele fornece uma interface visual que permite ajustar as opes e selecionar o experimento a ser executado, podendo ser executado como Aplicativo ou Applet em uma pgina ativa na Internet.

Com o lanador configurado, o boto Start cria um novo objeto referente ao experimento selecionado, passando como parmetro o objeto de configurao criado.

A superclasse Ambiente (Environment) acondiciona toda a funcionalidade relativa a criao e manipulao do universo virtual, inicia a interface de usurio (UserInterface) e os dispositivos de visualizao selecionados pela classe ViewWindow. A classe Ambiente tambm disponibiliza as variveis de sistema e os mtodos de acesso e controle do ambiente e dos agentes na simulao. Um experimento deve conter uma nica sub-classe descendente da superclasse Ambiente, expressando a dinmica e as regras do ambiente para o experimento implementado.

A superclasse Agente (Agent) uma classe abstrata que contm todos os mtodos de acesso e controle comuns para todos os agentes criados no contexto da plataforma. Um ou mais agentes desenvolvidos estendero a superclasse agente substituindo alguns de seus mtodos padres (overriding methods), para que representem a dinmica e comportamento do agente simulado. Um agente criado no contexto da superclasse deve ter um ou mais mtodos construtores, responsveis pela iniciao da instncia em vrios casos distintos, como quando criado inicialmente pelo sistema, com valores padres ou aleatrios para os cromossomos, ou quando criado por outro agente, herdando alguns de seus parmetros, aplicando mutaes e cruzamentos. No caso, o construtor selecionado pelo tipo de parmetro passado, que pode ser um objeto do tipo ambiente, um, dois ou mais agentes. A subclasse

Vida Artificial em Ambientes Virtuais

75

tambm deve substituir alguns mtodos padro, para que estes expressem qual ator representar o agente e quais parmetros esto envolvidos na sua visualizao e movimentao, alm da dinmica do particular agente representado. Classes auxiliares (helper-classes) ainda podem ser utilizadas para orientar o

comportamento, como, por exemplo, classes para manipulao de redes neurais, conjuntos nebulosos ou processamento de sinais.

A superclasse Ator (Actor) a ltima superclasse da plataforma e diz respeito visualizao em computao grfica do experimento. A superclasse contm os mtodos para manipulao do ator que representa um agente na cena. Em cada ciclo, um agente atualiza a posio, orientao e atributos visuais do ator que o representa. Alguns modelos de atores j acompanham o pacote, mas novos modelos podem ser construdos ou importados se utilizado um dos carregadores (loaders) fornecidos, que interpretam os formatos mais comuns de objetos 3D, como 3DStudio e LightWave, entre outros. Para construir seu prprio ator representativo dentro do contexto da plataforma, o usurio deve ter algum conhecimento de Java3D, de forma a criar uma subclasse (Actor_Shape), estendendo a superclasse ator e substituindo os mtodos responsveis pela construo da forma (shape).

Exemplificando o uso da plataforma para implementao de um experimento:

1. Uma subclasse do Ambiente (Env_name) deve ser criada, estendendo a superclasse Ambiente, para que expresse as leis fsicas e regras que regem este ambiente especfico. 2. Uma ou mais subclasses de agente podem ser criadas estendendo a superclasse Agente, expressando as regras comportamentais e mecanismos reprodutivos e de resposta dos agentes simulados. 3. Atores devem ser selecionados entre os modelos existentes para representar os agentes no universo virtual, ou novos atores podem ser criados estendendo a superclasse ator para represent-los.

O diagrama de classes do experimento exemplificado est representado na Figura 24.

Vida Artificial em Ambientes Virtuais

76

java.lang java.applet javax.vecmath java.lang.Thread

javax.media.j3d

BranchGroup

ALIVE

ViewWindow

Initializes

Environment

Agent

Actor

Launcher

Launches

Starts/Handle Custom_Env Custom_Ag1 Custom_Ag2 Custom_Ag3

EnvConfig Manages UserInterface

Actor_Shape1

Actor_Shape2

Actor_Shape3

RenderClient Subset

Figura 24. Diagrama de classes de um experimento desenvolvido no contexto da plataforma.

Os prximos tpicos trazem uma explicao geral sobre as classes distribudas no pacote do projeto e uma breve descrio sobre sua utilizao. O Apndice B traz detalhes funcionais sobre a arquitetura das classes implementadas, diagramas estruturais e a especificao dos mtodos disponveis, juntamente com uma explicao detalhada de como utiliz-los. 4.3.2. Subconjunto do Cliente de Sntese O subconjunto do cliente de sntese, formado pela classe RenderClient e suas dependncias, um segundo aplicativo contido no pacote que no se conecta diretamente a nenhuma classe do experimento em execuo. Este aplicativo iniciado em uma mquina remota cuja funo servir como estao de visualizao do experimento, sendo executado em um servidor ligado na rede.

Vida Artificial em Ambientes Virtuais

77

javax.media.j3d java.net java.applet BranchGroup ViewWindow java.lang.Thread javax.vecmath

RenderClient Initializes

Actor

Figura 25. Esquema de comunicao do subconjunto do cliente de sntese.

O cliente de sntese de imagens pode servir tanto para reduzir a carga computacional no computador que realiza o experimento (servidor), realizando o processo de sntese em outro computador conectado na mesma rede, quanto para exibio em dispositivos com mltiplas sadas visuais, onde as sadas podem ser controladas por computadores independentes conectados em rede, como no caso da CAVERNA digital, onde um aglomerado (cluster) com cinco computadores interconectados geram as sadas para os cinco projetores, que projetam imagens em cinco paredes dispostas na forma de um cubo (quatro lados e o cho).

A classe executvel RenderClient contm a funcionalidade necessria para iniciar uma cena e sua respectiva janela de visualizao, e adicionar e operar atores nesta cena. O programa executado remotamente e observa a rede no endereo IP e porta de difuso (Multicast) especificada procurando por pacotes contendo comandos do servidor. Uma vez recebidos os pacotes com tais comandos, as operaes especificadas so executadas, atualizando o estado da cena, luzes e atores que representam os agentes em execuo no servidor.

4.4. Utilizao das Classes do Pacote


Aqui apresentada uma breve descrio do funcionamento das classes fornecidas no pacote do projeto. Uma descrio detalhada sobre o funcionamento das superclasses e seus mtodos apresentada de maneira compreensiva no Apndice B.

Vida Artificial em Ambientes Virtuais

78

4.3.1. Superclasse Ambiente A superclasse ambiente (Environment.class) contm os mtodos de visualizao e controle do ambiente. Para utilizar seus mtodos e facilidades, um experimento desenvolvido no contexto da plataforma deve estender esta classe na construo de um ambiente particular.

// Exemplo de cdigo de Ambiente construdo public class XP1_Env extends Environment { // Cdigo do ambiente do Experimento 1 }

Alguns mtodos padres podem ser substitudos para que representem a dinmica e propriedades do particular ambiente simulado. O ambiente tambm pode possuir variveis locais, bem como utilizar as variveis ou mtodos padres da superclasse.

public class XP1_Env extends Environment { // Variveis locais int tempo_de_vida = 10000; double valor = 10; double teste = rnd(-1,1); // gerador aleatrio ...

A classe filha deve possuir um nico mtodo construtor, onde so efetuados os seguintes processos:

1. Configurao do ambiente; 2. Dimensionamento do nmero de parmetros do experimento; 3. Iniciao dos parmetros e variveis do ambiente; 4. Iniciao do experimento.

Dois passos so obrigatrios em qualquer dos construtores: o primeiro a configurao, atravs do mtodo configureEnvironment(config) que passa o objeto de configurao recebido a superclasse para que sejam efetuadas as mudanas necessrias; o segundo o ltimo passo, a chamada ao mtodo start(), que inicia a execuo do lao principal no cdigo da superclasse (thread).

Vida Artificial em Ambientes Virtuais

79

// Construtor public XP1_Env(EnvConfig cfg) { configureEnvironment(cfg); // *Configura ambiente setMaxParameters(3); // maximo de parmetros set(0,"paramNome1",val); // inicia parmetros set(1,"paramNome2",0); set(2,"paramNome3",.3); message("Experiment 1 started..."); super.start(); // *Inicia simulao } // * Obrigatrios

Alm do mtodo construtor, o experimento construdo deve adicionar componentes simulao, como agentes e obstculos. Para tanto, o mtodo createContent() deve ser substitudo realizando a adio de componentes na cena. O mtodo padro
addAgent(agent) adiciona os agentes criados na cena.

// Cria contedo public void createContent() { message("\nAdding agents..."); double agTipo1 = 80, agTipo2 = 20; for (int i = 0; i < agTipo1; i++) addAgent(new xp1_Agent1(this)); for (int i = 0; i < hunters; i++) addAgent(new xp1_Agent2(this)); }

Outros mtodos padro podem ser substitudos no cdigo do usurio, dentre os quais o mais importante o mtodo update(), onde so executadas as operaes em tempo de execuo sobre o ambiente e suas variveis. Na forma seqencial, os mtodos padro que podem ser substitudos ou ocultos pelo cdigo da classe filha, so executados na seguinte seqncia:

1. createLights(): adiciona iluminao cena (no mtodo padro duas luzes direcionais so criadas nas extremidades do retngulo volumtrico); 2. createCustomUI(): adiciona controles a interface de usurio (no mtodo padro, nada criado); 3. createContent(): adiciona agentes ao ambiente (no mtodo padro, nenhum agente criado);

Vida Artificial em Ambientes Virtuais

80

4. startUp(): mtodo executado antes do incio do lao principal; 5. <Incio do lao principal while(alive)> 6. <atraso em milsimos de segundos (delay) rest(config.sleep)>
7. update(): Mtodo deve conter a dinmica do ambiente em execuo;

8. <Executa cdigo dos agentes*> 9. <Difuso da cena (multicast)> 10. <Fim do lao principal> 11. cleanUp(): mtodo executado depois do fim do lao principal; 12. <Fim>

* Apenas em modo seqencial, sem concorrncia (multi-thread)

O lao principal executa enquanto a varivel do ambiente alive for verdadeira. O experimento termina quando um valor falso atribudo varivel. Exemplo: no h mais agentes em execuo.

O acesso aos agentes feito atravs de uma varivel que contm a lista de referncias para todos os agentes em execuo. A lista (ou vetor) agents armazena as referncias para todos os agentes vivos ou em execuo. Para operar os agentes basta percorrer esta lista efetuando os ajustes necessrios com cada referncia.

Os mtodos set(), adjust() e get() so mtodos sincronizados, construdos para a comunicao de parmetros entre agentes e ambiente. Para um agente requisitar um determinado parmetro do ambiente, deve utilizar sua varivel de referncia ao ambientem seguido do mtodo, passando o nome do parmetro requisitado entre parnteses. Exemplo: env.get("nomedoparametro"). O mtodo retorna o valor double correspondente ao parmetro requisitado, ou zero, caso o parmetro especificado no exista. Da mesma maneira, para o ambiente requisitar uma informao sobre determinado agente, a expresso

agent1.get("energy") retorna o valor correspondente energia do agente.

Acessos diretos a variveis internas devem ser evitados por motivos explicados na seo 4.5.2.

Vida Artificial em Ambientes Virtuais

81

4.3.2. Superclasse Agente A superclasse agente uma classe abstrata que contm os mtodos de acesso e controle dos agentes desenvolvidos no contexto da plataforma. Para utiliz-la, a classe filha deve estender a superclasse na construo de um particular agente.

// Exemplo de cdigo de agente construdo public class XP1_Agent1 extends Agent { // Cdigo do agente 1 do Experimento 1 }

A classe filha deve possuir ao menos um construtor, porm, ao contrrio da classe ambiente, ela pode possuir mais de um mtodo construtor, sendo os construtores ativados alternativamente dependendo do tipo de parmetro passado ao construtor (polimorfismo).

// chamada do construtor pelo mtodo do ambiente public XP_Template_Agent(Environment env) { super.configureToEnvironment(env); setMaxParameters(3); // maximo de parmetros set(0,"paramNome1",val); // inicia parmetros set(1,"paramNome2",0); set(2,"paramNome3",.3); // message("T"); // caractere do agente super.makeAlive(); } // Chamada do construtor por outro agente (reproduo) public XP_Template_Agent(XP_Template_Agent parent) { super.configureToEnvironment(parent.env); cloneParameters(parent); // metodo do usurio mutateParameters(1%); // metodo do usurio super.makeAlive(); }

Como no cdigo do ambiente, os mtodos configureToEnvironment(env) e


makeAlive() devem ser evocados para configurar o agente para o ambiente e

iniciar sua execuo consecutivamente.

Por tratar-se de uma classe abstrata, implica que trs mtodos declarados como abstratos devem ser substitudos no cdigo do agente. So eles:

Vida Artificial em Ambientes Virtuais

82

behavior() : Mtodo executa as operaes do agente em tempo de

execuo;
createActor() : Mtodo deve retornar um ator vlido para representar o

agente na cena. No executado se a sntese estiver desabilitada;


updateActor() : Mtodo realiza alteraes visuais no ator em tempo de

execuo, para representar as caractersticas desejadas. No executado se a sntese estiver desabilitada;

De forma similar ao ambiente, o agente tambm pode substituir alguns mtodos padres, que so executados na seguinte ordem:

1. constructor(): executado assim que a classe instanciada; 2. startUp(): executado antes do incio do lao principal; 3. <Incio do lao principal while(agent.alive)> 4. <Atraso rest(env.sleep)> 5. behavior(): Operaes com o agente em tempo de execuo; 6. updateActor(): Operaes sobre o ator em tempo de execuo ; 7. <Fim do lao principal agent.alive==false> 8. CleanUp(): executado aps o trmino do lao principal; 9. die(): Efetua limpeza das variveis criadas pela instncia, remove o ator da cena e o agente do ambiente; 10. <Fim>

O lao principal executa enquanto a varivel do agente alive for verdadeira. O experimento termina quando um valor falso atribudo varivel por mtodo do agente ou do ambiente.

Alm dos mtodos e variveis da superclasse agente, o agente criado tambm pode acessar mtodos e variveis da superclasse ambiente que o iniciou, atravs da varivel de referncia env. Assim o agente tem acesso aos parmetros da simulao

Vida Artificial em Ambientes Virtuais

83

e a lista de agentes para realizar comunicaes e operaes envolvidas na interao entre agentes.

A operao da dinmica do agente realizada atravs de quatro vetores de trs dimenses (variveis do tipo Vector3d). So eles: posio (position), direo (direction), velocidade (speed) e acelerao (acceleration). Para oper-los, deve-se fazer uso dos mtodos de acesso e das operaes vetoriais disponibilizados pela classe Vector3d apresentados anteriormente. 4.3.3. Atores A ltima superclasse do projeto foi escrita para facilitar a implementao de atores, padronizando o acesso e operao dos atores criados no contexto da plataforma, tornado-os compatveis com qualquer agente que deseje utiliz-lo. A classe Actor.class utilizada de forma semelhante a superclasse agente, sendo os mtodos de acesso e operao apresentados em detalhes no Apndice B. Segue um exemplo elementar do uso da superclasse para criar um objeto.

// Exemplo de cdigo de ator import javax.media.j3d.*; public class Actor_Sphere extends Actor { Sphere sph = null; int resolution = 26; // Construtor public Actor_Sphere() { model = "Actor_Sphere"; emissiveColor.set(0.0f, 0.0f, 0.5f); build(); } public void createGeometry() { sph = new Sphere(1f, resolution, ap); tg.addChild(sph); } }

No exemplo, o ator a esfera criada no mtodo createGeometry(), sendo suas caractersticas visuais definidas pela varivel de aparncia ap. Outras variveis

Vida Artificial em Ambientes Virtuais

84

afetam a aparncia do ator criado, uma referncia completa destas variveis apresentada no Apndice B.

Alm de um construtor, que deve chamar o mtodo build assim que as variveis de aparncia tenham sido definidas. O mtodo createGeometry(), deve ser substitudo para criar a geometria desejada, adicionando-a, posteriormente, ao grupo de transformao tg. 4.3.4. Configurao do Ambiente A classe EnvConfig carrega variveis com parmetros para construo, operao e visualizao do ambiente. Quando se inicia um experimento, um objeto dessa classe instanciado e modificado de acordo com as especificaes desejadas para o ambiente construdo.

Vida Artificial em Ambientes Virtuais

85

Tabela 4. Parmetros de configurao do ambiente.

Tipo String boolean boolean boolean boolean double double boolean boolean boolean boolean boolean String boolean int double double boolean

double double boolean boolean String int int

Funo Caminho de acesso aos arquivos do projeto Falso se executado em modo Applet, verdadeiro se em modo Application. RENDER Sntese de imagens habilitada, se falso, no h sada visual STEREO Separao em estreo habilitada FULL_SCREEN Exibio em tela cheia habilitada EYE_SEPARATION Separao entre as imagens em estreo CAM_FIELD ngulo de abertura da cmera KEY_NAVIGATION Navegao por teclado habilitada MOUSE_NAVIGATION Navegao por mouse habilitada PICKING Habilita seleo de objetos com o mouse ou dispositivo apontador conectado view[n] Habilita janela n = de 0 a 5 TEXT_OUTPUT Habilita sada de mensagens para o console logFile Nome do arquivo para log das mensagens AUTOSIZE Dimensiona automaticamente as janelas para melhor encaixe na tela xSize, ySize Para tamanho fixo das janelas xPos, yPos, zPos Posio inicial da cmera no volume xMin, yMin, zMin Dimenses do volume do espao virtual em que se dar o experimento xMax, yMax, zMax wrapx, wrapy, wrapz Habilita referncia circular (wrap around), ao tocar a borda, objeto aparece do outro lado do volume na coordenada especificada k Constante para choque elstico com a borda (wrap around desabilitado) POP_LIMIT Limite populacional de agentes SEQUENTIAL Desabilita concorrncia (multi-threading) NET_CAST Habilita difuso (multicast) pela rede IP Endereo IP:PORTA de difuso sleep Tempo de descanso ou atraso (delay/cycle) frameCount Conta os quadros sem exibio, zero mostra todos os quadros

Nome codeBase STAND_ALONE

A Tabela 4 mostra os parmetros de configurao do ambiente, que podem ser modificados antes da execuo da simulao. As variveis, cujo nome contm todas as letras maisculas, no podem ser modificadas aps o incio do experimento (constantes).

Vida Artificial em Ambientes Virtuais

86

4.3.5. Lanando o Experimento A classe lanadora de experimentos (launcher.class) serve para configurar parmetros comuns do ambiente de execuo antes do incio do experimento. Nesta interface possvel alterar as configuraes do objeto da classe EnvConfig.class que ser passado para o ambiente construdo.

Figura 26. Tela de configurao do lanador de experimentos.

As configuraes so exibidas com os valores padro, permitindo que se altere os valores desejados, gravar ou carregar configuraes do disco. O boto Update atualiza as referncias do objeto de configurao, e o boto Start atualiza e passa o objeto para uma nova instncia do experimento selecionado. O boto Quit nesta interface termina todos os experimentos por ela iniciados. 4.3.6. A Interface de Usurio A interface do usurio dividida em seis partes:

Vida Artificial em Ambientes Virtuais

87

1. Controle de exibio: por onde possvel habilitar e desabilitar a sntese de imagens e a sada para as diversas janelas de visualizao; 2. Interface de controle do experimento: parte reservada para que o cdigo de um particular experimento adicione botes, campos barras de rolagem para controle das variveis prprias da simulao; 3. Campo de texto de informao: este campo serve para exibir ou modificar os parmetros da simulao e de agentes em execuo, interativamente; 4. Seleo de agente: permite selecionar os agentes por nmero de identificao; 5. Controle de tempo: permite ajustar o tempo de exibio e o atraso (tempo de descanso) 6. Botes de controle.

Figura 27. Interface do usurio para controle do experimento.

O controle de exibio permite salvaguardar poder computacional para os clculos voltados ao desenvolvimento do experimento, desabilitando temporariamente a exibio em algumas janelas ou todo o processo de sntese. Este recurso especialmente til quando se deseja observar os resultados em longo prazo, ou no h observadores presentes, adiantando consideravelmente a evoluo do

experimento.

Vida Artificial em Ambientes Virtuais

88

A interface de controle do experimento muda para cada experimento, que deve adicionar os controles especficos para variveis e parmetros, visando uma fcil manipulao dos valores pelo usurio.

O campo de texto tem duas funes: exibir os detalhes sobre o ambiente em simulao; e exibir parmetros dos agentes em execuo. Os campos que contm o smbolo de igual, geralmente, permitem modificaes. Para atualizar os campos modificados, basta utilizar o boto Update.

O seletor de agentes permite circular entre os agentes em execuo ou selecionar diretamente por seu nmero nico de identificao, que lhe atribudo seqencialmente conforme a ordem de criao.

O controle de tempo serve para ajustar o atraso (sleep), caso a simulao execute muito rpido ou lentamente e o nmero de quadros descartados entre cada exibio (zero exibe todos os quadros).

Os botes de controle apresentam as seguintes funes, respectivamente:

Reset: localiza a cmera no local de origem; Update: atualiza os valores entrados no campo de texto de informaes e os valores nos demais campos, como Sleep e Frame Count; Env Info: exibe informaes sobre o ambiente no campo de texto de informaes; Pause: interrompe ou retorna a execuo da simulao; Quit: termina o experimento.

A interface de controle pode, tambm, ter seus componentes padres modificados pelos experimentos, embora possa resultar em um mau funcionamento das funes primrias da interface.

Vida Artificial em Ambientes Virtuais

89

4.3.7. Janelas de Visualizao A classe ViewWindow.class utilizada pela superclasse ambiente e cliente de sntese na criao de janelas e telas de visualizao. No necessrio ao usurio possuir qualquer conhecimento sobre seu funcionamento interno, ao menos que seja necessrio adaptar seu funcionamento a algum dispositivo de visualizao no convencional e no suportado pelo API Java3D com a configurao padro. 4.3.8. Operao do Cliente de Sntese A operao do cliente de sntese se d atravs de uma interface de configurao onde so fornecidos dados de comunicao e composio visual da janela de exibio. Por esta interface, especifica-se o endereo de difuso e porta por onde o servidor distribui os pacotes, bem como os parmetros da janela que exibir os dados.

Figura 28. Interface de operao do cliente de sntese.

A interface permite utilizar pr-configuraes para orientar as cmeras (presets), facilitando sua configurao em aglomerados (clusters) empregados no acionamento de dispositivos imersivos, como a CAVERNA. Para o uso em CAVERNA, os sinalizadores (checkbox) para estreo e Cave devem ser selecionados para, respectivamente, habilitar a separao em estreo e o ajuste ao tamanho fsico da tela. O valor da separao entre os olhos Separation deve ser fornecido para regular o efeito estreo quando a opo Stereo for selecionada. A sada visual pode ser feita em janela ou ocupar toda a tela (fullscreen).

Vida Artificial em Ambientes Virtuais

90

Configurados os valores para exibio, o boto Start inicia a visualizao dos pacotes, que pode ser interrompida em qualquer momento, atravs do boto Pause. O boto Quit termina o programa.

4.5. Criando Experimentos no Contexto da Plataforma


Apresentado o uso elementar das classes contidas no pacote, resta fornecer exemplos da aplicao das classes na construo de experimentos. O pacote distribudo na pgina do projeto [ALIVE SITE] contm alguns experimentos desenvolvidos e uma classe modelo que pode ser utilizada para a implementao de novos experimentos. Algumas consideraes, porm, devem ser feitas, dizendo respeito execuo de tarefas no modo concorrente, onde vrios processos so executados simultaneamente. 4.5.1. Classes Modelo Modelos de classes (Templates) so fornecidos juntamente com o pacote para demonstrar a utilizao dos mtodos padres nas classes base para comunicar, orientar e mover os agentes e atores no ambiente virtual. As classes modelo implementam tipos simples de agentes e de ambiente que desempenham funes elementares.

Environment

Agent

T Environment Template

T Agent Template

Figura 29. Classes modelo para utilizao da plataforma.

As classes modelo podem ser utilizadas para iniciar novos experimentos, uma vez que possuem as referncias necessrias para elaborao do cdigo pelo usurio, como os mtodos abstratos e comentrios sobre seu funcionamento. Para tanto, o usurio deve copiar todo o contedo de texto da classe modelo para classe recm

Vida Artificial em Ambientes Virtuais

91

criada (user_Environment.class, user_Agent.class), modificando no cdigo o nome da classe e do mtodo construtor para coincidir com o nome do arquivo. Posteriormente, deve-se introduzir nos mtodos padro, o comportamento (behavior) desejado para os agentes simulados e a dinmica especfica para o ambiente. 4.5.2. Conectando e Sincronizando Instncias em Processos Paralelos Algumas consideraes devem ser feitas sobre o desenvolvimento em arquiteturas paralelas (multi-threaded), i.e., quando o experimento configurado para executar concorrentemente (varivel SEQUENTIAL desabilitada).

Quando o aplicativo (ou Applet) configurado para rodar de forma concorrente, o ambiente, bem como os agentes, constituem, cada um, uma linha de execuo (thread) paralela, significando que todos sero executados ao mesmo tempo em sistemas multi-processados, ou daro esta impresso em sistemas com um nico processador, onde os processos so chaveados diversas vezes por segundo, no deixando qualquer possibilidade de determinar onde cada programa ser interrompido. O fato que em ambos os casos, os processos executaro de maneira assncrona, sendo impossvel predizer em que linha o programa estar quando receber uma chamada de acesso ou controle a um de seus mtodos.

Isto pode causar diversos tipos de conflito, desde violaes de acesso, quando mais de um processo tenta modificar, ao mesmo tempo, a mesma varivel em uma dada instncia, at laos circulares (deadlocks), onde dois processos travam aguardando um a resposta do outro. Alm disso, valores podem mudar dinamicamente, durante a manipulao, causando erros de preciso quando um valor antigo modificado por outra instncia e colocado de volta sobre um valor que j sofreu modificaes por outras instncias.

Para lidar com tais problemas, no se recomenda o uso de referncias diretas s variveis nas instncias operadas, e sim o emprego de mtodos que operem tais variveis. Os mtodos devem ser precedidos pela palavra reservada Synchronized, que indica que apenas um processo por vez tem acesso a este mtodo.

Vida Artificial em Ambientes Virtuais

92

Para variveis que sofrem alteraes graduais e no abruptas, o acesso pode ser direto, porm, quanto mais rpidas forem realizadas as operaes sobre a varivel remota (menor nmero de operaes), menor a probabilidade de que o valor sofra grandes alteraes durante o manejo.

Para variveis que podem sofrer alteraes abruptas no tempo, o uso de uma expresso nica, que realize todas as operaes de teste e modificao da varivel de vez, pode evitar uma falha de acesso varivel remota (quando dois objetos distintos modificam-na simultaneamente). Por exemplo, a expresso abaixo:

If (instncia.fora>4||instncia.flag) instncia.fora-=1; else instncia.fora+=1 If (instncia.fora==0) instncia.fora=1;

Poderia ser substituda por uma nica expresso:

instncia.fora+=test(instncia.fora>4||instncia.flag)*-1 + test(instncia.fora==0)*1;

Ou ainda pelo uso de um mtodo sincronizado que efetuaria a operao.

Instncia.setValue(test(instncia.fora>4||instncia.flag)*-1 +test(instncia.fora==0)*1;)

Esta ltima pode ter sua chance de falha ainda mais reduzida com o uso do seguinte cdigo na instncia operada:

public synchronized double setValue(double value) { try { fora = value; } catch (Exception e) { } }

No exemplo, o mtodo test foi implementado para retornar 1d (double precision) se verdadeiro e 0d se falso.

Vida Artificial em Ambientes Virtuais

93

Se necessrio, pode-se empregar a utilizao de semforos para indicar que a varivel est em uso. Quando uma instncia assume o controle da varivel, nenhuma outra instncia, incluindo a proprietria da varivel, poder modific-la, at que o controle seja liberado.

if (!instncia.foraHandler) { holdFora(this); instncia.fora+= test(instncia.fora>4||instncia.flag)*-1 + test(instncia.fora==0)*1; releaseFora(this); }

O uso de semforos deve ser empregado em cada instncia com o objetivo de liberar o acesso varivel para a instncia requerente. O uso de mtodos sincronizados para modificao ou captao de parmetros implementado no contexto da plataforma para as variveis param[] e paramName[], arrays do tipo double e String respectivamente.

O usurio que pretende empregar arquiteturas concorrentes na execuo das simulaes e deseja saber mais sobre programao concorrente, pode recorrer a Concurrent Programming in Java: Design Principles and Patterns [LEA, 1999].

Vida Artificial em Ambientes Virtuais

94

5. EXPERIMENTOS REALIZADOS
Aqui so apresentados alguns estudos de caso, que ilustram a aplicao da plataforma para realizao de experimentos em VA, demonstram conceitos e sugerem estudos a serem realizados com o uso da tecnologia desenvolvida. Os experimentos envolvem tanto pesquisas desenvolvidas no mbito do prprio projeto ALIVE, cujos resultados foram submetidos para congressos e simpsios, quanto pesquisas correlatas de membros do grupo de vida artificial para demonstrar o uso da plataforma para implementao da prova de conceito em suas pesquisas.

5.1. Algas
O Experimento foi baseado na evoluo de um conjunto de algas fotossintticas. A idia compreende parte do trabalho desenvolvido no projeto ALGA (Artificial Life with Genetic Algorithms) que visava estudos sobre adaptao e evoluo de organismos utilizando somente mecanismos genticos.

Simulaes envolvendo populaes de algas envolvem geralmente anlises de variveis discretas e de suas flutuaes estatsticas. Isto se baseia no fato de que algas recebem uma quantidade finita de radiao por ciclo metablico; seu tempo de vida bem definido e baseado nesse ciclo; sua forma de reproduo regular e bem definida para muitas espcies; seu movimento involuntrio, sendo causado por foras externas como ventos e correntes, ou aleatrio, no caso de algas que habitam fludos em repouso, devido unicamente agitao trmica (movimento browniano).

Uma demonstrao prtica da dinmica das algas pode ser implementada utilizandose o contexto multi-agentes, onde as flutuaes so ocasionadas por fenmenos fsicos definidos no ambiente, podendo-se, assim, medir o sucesso entre os agentes, individualmente, baseado em suas caractersticas desenvolvidas, avaliando a importncia de cada mutao e demonstrando quais caractersticas simuladas se demonstram mais importantes em meio especiao.

Vida Artificial em Ambientes Virtuais

95

No experimento, algas aquticas fotossintticas que se movem aleatoriamente em um fluido qualquer so simuladas. A produo de toxinas pode ser representada estatisticamente (sendo o resultado metablico o oxignio, eliminado no meio e inerte ao desenvolvimento do sistema, e o ATP, que permanece no citoplasma como reserva de energia). O movimento pode ser considerado aleatrio, uma vez que apenas o movimento mdio no interior da colnia relevante. Caso esta colnia venha sendo arrastada em grupo pelas correntezas e mars, o seu referencial se move com a colnia. O nvel de energia tomado como varivel, podendo assumir ciclos de emisso, simulando o ciclo solar.

O espectro da radiao ambiente pode ser controlado no experimento, permitindo observar a adaptao das algas frente a mudanas nas condies ambientais. Para simplificar o experimento, ao invs de um espectro continuo, a radiao representada por componentes vermelho, verde e azul. A taxa de absoro das trs componentes definida cromossomicamente e sofre mutaes aleatrias entre as geraes, assim como as demais informaes genticas.

Para um primeiro experimento, relaciona-se como caractersticas relevantes:

Taxa metablica: velocidade com a qual a alga pode converter a energia recebida em glicose; Taxa de consumo: velocidade com a qual o acar consumido; Limite metablico: valor mximo de reserva de glicose; Limite reprodutivo: condies nas quais a alga se reproduz; Limite de colapso: condies crticas, que levam morte da alga. Sensibilidade espectral: radiao, com trs bandas principais (RGB).

Eventos sinalizados pelo sistema podem ser enumerados como:

Mutao (pode haver variaes bruscas no genoma); Variao (diferenas sutis, ou pequena variao entre os descendentes); Reproduo (envolve mutao e variao);

Vida Artificial em Ambientes Virtuais

96

Morte (por falta de energia ou velhice).

Cromossomos:

1. Energia 2. Tempo de vida 3. Temperatura especfica 4. Limite de reproduo 5. Taxa de absoro para vermelho 6. Taxa de absoro para verde 7. Taxa de absoro para azul

Em cada ciclo, as seguintes operaes so realizadas:

public Behavior() { Lifetime--; // (-/+)perda ou ganho gain = ( -.001 //- por turno - test(get("lifetime")<0) //- metabolismo * Math.abs(get("lifetime"))/1000 //- idade - Math.abs(get("temperature") //- temperatura - env.get("temperature"))/40 + env.get("r")*get("r") //+ absorbncia R + env.get("g")*get("g") //+ absorbncia G + env.get("b")*get("b") //+ absorbncia B ) /100; energy+=gain; if ((gain<0||energy>reproduction)&&probability(.01)) reproduce(); if (energy<.1) die(); }

Em cada turno, o tempo de vida decrescido; a taxa de consumo representada por esta perda por turno; a taxa metablica determinada pelas absorbncias, que representam a sensibilidade espectral e pela diferena de temperaturas: a temperatura especfica da alga; a temperatura do ambiente. A perda por velhice se d quando o tempo de vida chega a zero, aumentando conforme o valor de lifetime fica mais negativo. O limite metablico determinado pela funo de reproduo, procedimento que consome metade das reservas de energia e o limite de colapso representado pela funo die(), levando a morte.

Vida Artificial em Ambientes Virtuais

97

Figura 30. Tela do experimento. No detalhe a interface de controle.

Observaes:

Atravs do experimento possvel observar a sobrevivncia do mais bem adaptado, especialmente quando se alteram as condies ambientais (atravs do controle do experimento) em tempo de execuo. A adaptao por mecanismos evolutivos (mutao e variao) leva, rapidamente, a uma nova populao perfeitamente adaptada s novas condies.

5.2. Equilbrio em um Sistema do Tipo Presa-predador


O equilbrio em um sistema do tipo presa-predador pode ser modelado matematicamente, aplicando-se as equaes de Lotka-Voltera, propostas por Lotka (1925) e Voltera (1926-1931) [KAPLAN, 1995]. O modelo permite observar as flutuaes, exploses populacionais ou extines, alterando-se parmetros das equaes ou as variveis probabilsticas envolvidas. Aqui, no entanto, apresentada uma alternativa ao modelo matemtico para o estudo de sistemas do tipo presapredador, utilizando-se uma populao de agentes, onde possvel observar, entre outros aspectos, quais caractersticas evolutivas envolvidas nos eventos descritos so

Vida Artificial em Ambientes Virtuais

98

mais relevantes, alm de identificar quais delas so determinantes no processo evolutivo a longo prazo.

No experimento proposto, duas classes de agentes foram implementadas, podendo apresentar diferenas entre os vrios indivduos da mesma classe (especiao) atravs da mudana de parmetros no seu cdigo gentico.

Agentes do tipo presa (Food):

O agente do tipo presa (alimento ou toxina) foi implementado para representar um tipo simples de clula fotossinttica, que utiliza a radiao e componentes qumicos presentes para sintetizar nutrientes e se reproduzir. A presa possui os seguintes parmetros:

1. Energia: quantidade de nutrientes acumulados; 2. Tempo de vida: nmero de ciclos antes do incio da perda metablica gradual; 3. Temperatura especfica: temperatura preferida ou caracterstica; 4. Tolerncia: tolerncia a variaes de temperatura; 5. Taxa metablica: taxa de gerao de nutrientes; 6. Taxa de crescimento: afeta a taxa metablica; 7. Limite de reproduo: quantidade de nutrientes necessrios para se reproduzir; 8. Limite de falncia: quantidade mnima de nutrientes para sustentar a vida.

Os agentes desta classe podem ainda carregar energia com sinal positivo ou negativo, dependendo do tipo de nutriente sintetizado (metabolismo). Presas cuja energia tem sinal negativo representam toxinas presentes no ambiente. A identificao dos tipos de presas no ambiente virtual feita pela cor. Alimentos, com energia positiva, so representados por esferas verdes, e toxinas, com energia negativa, so representados por esferas vermelhas.

Vida Artificial em Ambientes Virtuais

99

Ainda, as seguintes observaes podem ser feitas sobre as presas:

No possuem movimento prprio, exceto durante a reproduo; Reproduzem-se por meiose, gerando dois agentes semelhantes; Na reproduo, alguns parmetros podem sofrer variao; Durante a reproduo, agentes podem ser lanados para novas reas; So responsveis por toda a gerao de nutrientes no ambiente;

Agentes do tipo predador (Hunter):

O agente predador no possui qualquer mecanismo de gerao de energia a partir da radiao ou temperatura, portanto, como a maioria das espcies predadoras, depende de uma fonte externa de energia para desempenhar suas funes. Os agentes do tipo predador possuem os seguintes parmetros:

1. Gerao: grau de parentesco com os agentes criados no incio do experimento; 2. Energia: nutrientes armazenados; 3. Taxa metablica: velocidade com a qual consome os nutrientes; 4. Limite reprodutivo: reserva de nutrientes necessria para reproduo; 5. Limite de falncia: quantidade mnima de nutrientes para sustentar a vida; 6. Sensibilidade: raio de sensibilidade ao ambiente; 7. Fora: medida quantitativa para determinao de troca de nutrientes; 8. Agilidade: quantidade de movimento produzido por turno; 9. Temperatura: temperatura preferida ou caracterstica; 10. Tolerncia: tolerncia a variaes de temperatura; 11. Resistncia: resistncia ao contato com toxinas; 12. W1: Filtro Vermelho (R); 13. W2: Filtro Verde (G); 14. W3: Filtro Azul (B).

Vida Artificial em Ambientes Virtuais

100

O filtro RGB age como um circuito integrador, ou um neurnio simplificado, que avalia atravs dos pesos W1, W2 e W3 qual ao tomar frente a um estmulo luminoso recebido. O filtro tambm define a cor da membrana celular do agente, permitindo diferenciar, dentre as vrias instncias da classe, os indivduos de diferentes castas.

RADIAO

FILTROS R

W1

W2

AO

W3

Figura 31. Esquema do funcionamento dos filtros de radiao.

Baseado na informao luminosa recebida dos agentes dentro do campo radial de sensibilidade, que processada pelo filtro apresentado no esquema da Figura 31, o predador toma uma deciso sobre sua ao para o turno, podendo permanecer parado, preservando assim suas reservas de energia, ou gerar um impulso, gastando, para tanto, uma parcela de sua energia acumulada, proporcional a fora aplicada no processo de acelerao.

Algumas observaes podem ser feitas a respeito de agentes do tipo predador:

Possuem movimento prprio e voluntrio; No possuem tempo de vida definido; Reproduzem-se por meiose; Durante a reproduo, geram um indivduo semelhante; A reproduo envolve mutao no genoma; A reproduo envolve variao (pequenas mudanas); A sensibilidade determina o volume do ambiente que estimula o agente; A temperatura influencia a taxa metablica;

Vida Artificial em Ambientes Virtuais

101

A resistncia, bem como os filtros, podem assumir valores entre {+1, -1}.

A transferncia de nutrientes se d pela comparao da fora: o agente mais fraco perde nutrientes com velocidade proporcional diferena entre a fora dos agentes. Os agentes do tipo presa no possuem o parmetro fora, portanto retornam zero ao chamado do parmetro e, assim, so consumidos rapidamente.

O ambiente

O ambiente desenvolvido para o experimento apresenta trs parmetros, que controlam a temperatura, radiao e o atrito, respectivamente. Os parmetros podem ser ajustados pelas barras de rolagem na interface de controle. A temperatura pode ser ajustada para se avaliar as conseqncias de mudanas ambientais ao longo do tempo. A radiao determina a quantidade de energia que introduzida no ambiente, e pode ser aproveitada pelas presas fotossintticas. O atrito anula o movimento contnuo (inrcia) dos objetos da cena, e pode ser ajustado para simular uma variedade de densidades de lquidos diferentes. O atrito tambm afeta a quantidade de energia que os predadores gastam para se locomover, implicando numa menor quantidade de movimento por impulso.

Ao ser iniciado, o ambiente do experimento contm um nmero de predadores proporcional ao nmero de presas, que proporcional ao volume do ambiente do experimento e limitado pela carga populacional mxima de agentes estipulada no objeto de configurao. A figura mostra um experimento em execuo.

Vida Artificial em Ambientes Virtuais

102

Figura 32. Tela do experimento e sua interface de controle.

Nos primeiros instantes do experimento, a seleo natural cuida de eliminar os indivduos que nascem com gentipos desfavorveis. Indivduos que perseguem as toxinas morrem rapidamente; outros com uma tolerncia maior sobrevivem; porm, os mais bem adaptados acabam levando uma vantagem natural.

Alguns predadores que apresentam afinidade cromtica acabam por se aglomerar em colnias, o que nem sempre representa uma vantagem. Em alguns casos, um predador menos adaptado que se sente atrado por outro mais bem adaptado, pode acabar por atrapalh-lo na busca por alimento. Alguns empurram constantemente a colnia, tornando difcil busca por alimentos. Em alguns casos, porm, a colnia se adapta de tal maneira a trabalhar em equipe, de forma que todos os indivduos agem coordenadamente para buscar os alimentos. Isso representa uma vantagem evolutiva, sendo que a colnia serve como uma reserva de nutrientes para tempos de escassez, em que os indivduos mais fracos da colnia so devorados, lentamente, garantindo a sobrevivncia da casta, especialmente dos indivduos mais fortes.

Como natural se esperar, com a evoluo os indivduos selecionados vo ficando cada vs mais fortes, mas geis, mais especializados e resistentes. Mas,

Vida Artificial em Ambientes Virtuais

103

curiosamente, a adaptao em ambientes fechados leva a uma reduo do raio de sensibilidade ao ambiente, levando os agentes a enxergar cada vez volumes menores, fazendo com que eles busquem apenas concentraes de nutrientes mais prximas.

Por ambiente fechado, entende-se: uma regio ou volume finito, limitado, de onde no h entrada de agentes externos ou fuga de agentes internos. Num ambiente fechado, os agentes presentes em qualquer momento da simulao so os agentes, ou descendentes diretos dos agentes, presentes no ambiente no incio da simulao.

Observaes:

A evoluo desenfreada de espcies predatrias em ambientes fechados geralmente, termina com o consumo de todos os recursos disponveis no ambiente, levando as espcies presentes completa extino, aps extinguir os recursos dos quais dependem. Geralmente, o tamanho do ambiente virtual determina o tempo de durao do experimento. Quanto menor o volume testado, mais rpido os predadores saturam o ambiente esgotando os recursos.

Um dos casos demonstrados nas equaes de Lotka-Voltera, onde as presas e predadores apresentam ciclos alternados e regulares de crescimento populacional, s pde ser observado por curtos perodos de tempo, em ambientes relativamente vastos, onde os predadores se concentram em reas super-habitadas, deixando sementes de presa em outras reas menos habitadas, que reiniciam o ciclo. Porm, em algum momento, uma mutao (egosta e voraz) pode surgir desestabilizando o sistema e levando novamente ao caso anterior.

O acmulo de toxinas torna-se um fator agravante. No havendo espcies capazes de sintetizar o resduo derivado da ao dos predadores, as toxinas acabam por se acumular no ambiente, impossibilitando que os predadores se locomovam livremente sem esbarrar nelas, levando morte dos mesmos e posterior extino dos predadores. A Figura 33 mostra a variao populacional em um experimento que apresentava

Vida Artificial em Ambientes Virtuais

104

ciclos estveis na populao de predadores, at que o acmulo de toxinas no ambiente da simulao levou extino os predadores.

Figura 33. Grfico da variao populacional no tempo, para um experimento realizado, no caso de extino por acmulo de resduos txicos no ambiente.

O experimento demonstra a importncia de um ecossistema completo e de manter seu equilbrio. Pode-se observar, claramente, como a sutil alterao de parmetros envolvidos no equilbrio do ecossistema altera radicalmente a evoluo dos organismos, podendo causar um colapso total ou parcial de vrias espcies que o habitam. Nos experimentos desenvolvidos em ambientes fechados, onde os predadores dependem do sucesso reprodutivo da presa para se desenvolver, foi observado ser questo de tempo at que um salto evolutivo gerasse uma espcie altamente predatria, i.e., eficiente na busca e consumo dos recursos, multiplicandose rapidamente, de forma que sua prole, em pouco tempo, esgota completamente os recursos disponveis no ambiente, causando, posteriormente, sua prpria extino e das demais espcies que habitam o ambiente. A Figura 34 mostra uma extino causada pelo surgimento de uma mutao egosta.

Vida Artificial em Ambientes Virtuais

105

Figura 34. Grficos de populao no tempo para o caso em que ocorre extino em massa.

Uma alternativa ao experimento foi proposta para determinar o que inevitvel na evoluo dos predadores, considerando um sistema no totalmente fechado. Para tanto, um mecanismo de auto-abastecimento de alimento foi implementado, com o qual possvel ajustar a probabilidade com que o alimento introduzido no ambiente.

Quando o tipo de alimento no discriminado, i.e., tanto alimentos com energia positiva como toxinas podem surgir, o acumulo de toxinas no ambiente acaba levando todos os organismos presentes (predadores) ao colapso, como apresentado na Figura 33 .

Para considerar o caso ideal, apenas alimentos com energia positiva so adicionados. Nesta condio, os experimentos podem durar indefinidamente, porm, em todos os testes realizados, pode-se observar que, aps um tempo de simulao, a tendncia que uma nica espcie mais evoluda domine o ambiente e seus recursos, sobrepujando todas as demais espcies, que acabam perecendo (devoradas ou

Vida Artificial em Ambientes Virtuais

106

famintas), at ser esta prpria espcie dominante sobrepujada por uma casta descendente mais adaptada. A Figura 35 mostra a evoluo de um experimento nestas condies.

Figura 35. Variao populacional no tempo para o caso onde o sistema abastecido com novas presas com energia positiva (alimento).

Observando os experimentos, pode-se concluir que, em um ambiente fechado e com recursos limitados, caso a espcie dominante no possua um mecanismo de autoregulao, ou forma de administrar os recursos, ela e as demais espcies dependentes desses recursos esto fadadas a um colapso total em algum momento da sua evoluo. Esta observao leva a crer que a racionalidade um requisito obrigatrio para o sucesso de uma espcie em longo prazo, visto ter sido constatado pelos experimentos que a simples evoluo sem a emergncia do fator cognio, leva ao inevitvel fracasso.

Vida Artificial em Ambientes Virtuais

107

5.3. Clulas Humanas


Algumas demonstraes envolvendo dinmica de clulas humanas em atividade foram implementadas para demonstrar o uso do sistema para fins didticos.

Clulas humanas so, na grande maioria, estticas como as clulas da epiderme, ou flutuam na corrente sangunea, transportando oxignio como os glbulos vermelhos, mas algumas apresentam caractersticas fascinantes. Linfcitos, por exemplo, so caadores de protenas, especializados em caar padres especficos, circulam na corrente sangunea at encontrarem algum intruso que possua a chave correspondente a sua fechadura, i.e., sua infeco especial. Uma simulao da dinmica dos linfcitos foi implementada para exibir a interao entre estas clulas e alguns tipos de invasores, como bactrias e vrus.

Figura 36. Tela do experimento de demonstrao da ao do linfcito.

A Figura 36

mostra a demonstrao executando com dois tipos de agentes

infecciosos: bactrias e vrus. Os linfcitos so especializados em bactrias e os vrus simulam a ao do HIV, contaminando os glbulos brancos e utilizando seu mecanismo interno para se replicar. O experimento apresenta apenas a interface de controle padro.

Observaes:

Vida Artificial em Ambientes Virtuais

108

O experimento foi desenvolvido unicamente para ilustrar a aplicao da plataforma para fins didticos. Para tanto, foi empregada uma filosofia de desenvolvimento topdown, onde os organismos foram pragmaticamente programados para apresentar o comportamento desejado e produzir, assim, os resultados esperados. Como era de se esperar, no experimento, os linfcitos lutam contra a infeco de bactrias continuamente, at que a populao de vrus cresa demasiadamente, exterminando os linfcitos presentes. Bactrias e vrus prevalecem.

5.4. Aglomerao em Bandos (Flocking)


O comportamento conhecido como aglomerao observado na natureza em diversas espcies, como abelhas em um enxame, peixes em um cardume ou um bando de gaivotas que sobrevoam um cardume de peixes no oceano.

O comportamento foi obtido atravs da evoluo das espcies, demonstrando a eficincia da cooperao entre indivduos da espcie para o desenvolvimento das mesmas. Indivduos de espcies mais evoludas, como a humana, aprendem rapidamente que juntos, resolvem melhor seus problemas. Um grupo de gaivotas sobrevoando um ponto especfico do oceano serve como referncia a pescadores para localizar um cardume. Da mesma maneira, outras gaivotas se beneficiam da informao de que um bando sobrevoando um ponto especfico indica a presena de alimentos. Os peixes de diversas espcies se agrupam em cardumes, visando alimentao, reproduo, ou ainda como forma de evitar predadores, talvez dando a impresso de juntos, aparentarem ser um peixe maior. A evoluo levou muitas espcies a desenvolverem um desejo inato de estar prximo de seus semelhantes. Na prpria raa humana se observa o desejo de socializao. A necessidade de se relacionar com outros indivduos, em grupos ou em locais de aglomerao, s no compartilhada por eremitas, indivduos reclusos, ou que apresentam desvios de personalidade, considerando que o compartilhamento de informao um fator essencial no desenvolvimento humano.

Vida Artificial em Ambientes Virtuais

109

O experimento demonstra o comportamento apresentado por um grupo de agentes (representados por gaivotas), guiados apenas pelo desejo de se aproximarem de seus semelhantes. Uma rpida viso do ambiente d ao agente a sensao de quantidade, fazendo com que ele regule suas aes motoras para tentar se aproximar do ponto de maior aglomerao.

Figura 37. Tela do experimento e sua interface de controle.

A Figura 37 mostra o experimento em execuo. possvel se obter diversos padres diferentes de aglomerao variando-se os parmetros na interface de controle, intitulados, respectivamente, desejo de aglomerar, preciso e aleatoriedade, e que representam probabilidades associadas ao comportamento do bando. A analogia entre o experimento e observaes na natureza vai alm das gaivotas representadas, para algumas combinaes de valores de parmetros, os agentes passam a se aglomerar como em um enxame de abelhas ou como um cardume de peixes, demonstrando a similaridade entre os comportamentos.

Simulaes de comportamento coletivo ou flocking, que estudam o comportamento de animais em bandos, so comuns em programas de VA. Entre os mais conhecidos esto: Enxame de Abelhas (bees), Cardume de Peixes, as simulaes conhecidas como Floyds e Boyds, muitos destes, que possuem implementaes rodando em Applets na Internet [DOLAN SITE] [REYNOLDS SITE]. O grupo Swarm [SWARM SITE] tambm desenvolve pesquisas relacionadas ao tema. Os

Vida Artificial em Ambientes Virtuais

110

experimentos demonstram como seres artificiais podem apresentar ou desenvolver comportamentos coletivos a partir de regras muito simples de interao.

5.5. Cardume de Peixes


O experimento cardume de peixes tem embasamento em um projeto realizado pelo grupo de Vida Artificial em conjunto com o grupo de Cincias Cognitivas [ARTLIFE SITE], que visa estudar a relao entre cognio e evoluo nos seres virtuais, permitindo comparar o comportamento in-nato, atingido atravs da evoluo, ao adquirido com o acmulo de conhecimento ao longo da vida, avaliando quais as vantagens e desvantagens relacionadas a cada um dos mtodos de aquisio de conhecimento.

A princpio, qualquer agente poderia ser usado para implementar o experimento, porm, a simplicidade do sistema nervoso individual e o comportamento errtico dos agentes na fase de aprendizado, levam a uma analogia natural com um cardume de peixes, uma vez que peixes j possuem um comportamento instintivo definido atravs da evoluo e seus primitivos sistemas nervosos sofrem muito pouca alterao ao longo de suas vidas.

Para implementar o conceito, os agentes utilizam um mdulo de rede neural multicamada para representar as relaes entre sentido e comportamento, ou formalmente, entrada e sada. Cada indivduo criado com uma rede neural iniciada aleatoriamente, que constitui parte de seu genoma, podendo esta sofrer alteraes ao longo da vida, que so mantidas caso o resultado da alterao seja vantajoso. Quando o agente se reproduz, a rede neural contida no genoma passada, e no a que se encontra atualmente em uso pelo agente.

Isto significa que:

Cada agente possui um conhecimento in nato, representado pela rede neural N, contida em seu genoma;

Vida Artificial em Ambientes Virtuais

111

Quando nasce, sua rede neural M iniciada com os valores Wij contidos na rede neural N; Durante sua vida, a rede neural M sofre mudanas, que so mantidas, caso o resultado das mudanas se demonstre vantajoso; No ato da reproduo, o novo agente recebe dos pais uma combinao de seus genomas, que representam um cruzamento das suas redes neurais N, dado tambm um fator de mutao.

O experimento compreende a propagao de conhecimento na populao de agentes, significando que um agente pode treinar sua rede neural observando o comportamento, ou seja, as relaes entre entrada e sada de outros agentes prximos. Neste caso, a rede M pode sofrer dois tipos de alterao durante sua vida: devido a flutuaes aleatrias e devido a observaes do ambiente. Em ambos os casos, as mudanas s so mantidas caso apresentem algum benefcio.

Uma funo de auto-satisfao permite ao agente avaliar quantitativamente o sucesso obtido com o uso da nova rede neural, em detrimento da antiga. A nova rede neural modificada mantida ento por um determinado nmero de ciclos, sendo mantida aps este perodo caso o valor mdio da funo satisfao seja superior ao obtido com o uso da rede antiga. Em termos, o peixe esquece o conhecimento intil adquirido ou experimentado.

Alm da rede neural inicial, o genoma contm os seguintes campos.

1. Rapidez: velocidade mxima que o peixe desenvolve; 2. Preciso: medida quantitativa do grau de acerto; 3. Taxa de aprendizado: afeta as mudanas na rede neural; 4. Varincia comportamental: determina a quantidade de alteraes que a rede sofre durante a vida; 5. Freqncia de varincia: determina a probabilidade de sofrer uma mudana comportamental; 6. Tempo de avaliao: nmero de ciclos para que a nova rede seja avaliada;

Vida Artificial em Ambientes Virtuais

112

7. Idade de reproduo: numero de ciclos antes que possa se reproduzir; 8. Tempo de vida: nmero de ciclos metablicos;

O experimento atualmente objeto de estudo e j possui resultados parciais. A Figura 38 mostra a tela do experimento em execuo.

Figura 38. Tela do experimento cardume de peixes, no detalhe a interface para controle da alimentao.

Observaes

Observaes em longo prazo so necessrias para comparar aspectos evolutivos e cognitivos, e avaliar as vantagens do aprendizado em relao simples evoluo comportamental ou instinto. Porm, em algumas horas de simulao j possvel notar que os agentes que j nascem com um comportamento instintivamente eficiente, levam vantagem em relao aos que tem que aprender com a experincia, e acabam por desperdiar parte do seu tempo de vida neste processo. Por outro lado, as espcies que nascem com um conhecimento menor e aprendem mais rpido, levam vantagem em experimentos em que ocorrem mudanas drsticas no ambiente ou no padro de abastecimento de alimento, se adaptando s novas condies, enquanto os indivduos mais dependentes do instinto, acabam morrendo por no se adaptarem.

Vida Artificial em Ambientes Virtuais

113

6. CONCLUSES FINAIS
Durante a implementao do projeto, este sofreu diversas modificaes. Porm, as idias iniciais foram basicamente mantidas. As modificaes sofridas visavam tanto melhoras na arquitetura, quanto aumento da flexibilidade do programa. Espera-se que tais mudanas continuem ocorrendo, enquanto a plataforma experimental continuar em desenvolvimento. Tambm, a filosofia de cdigo aberto permite que o projeto receba contribuies externas ao laboratrio onde foi inicialmente criado.

Alm do uso para estudos cientficos, espera-se que o projeto sirva como ferramenta de divulgao para trabalhos em VA, atravs da disponibilidade na Internet de experimentos, juntamente com o cdigo fonte, permitindo transformar qualquer computador pessoal em um laboratrio de estudos em VA.

A seguir so feitas algumas consideraes sobre as contribuies e aplicaes do projeto desenvolvido, bem como algumas sugestes para trabalhos futuros a serem desenvolvidos com base na pesquisa atual.

6.1. Contribuies
Entre as contribuies realizadas pelo projeto (achievements), vale citar o reforo ao vnculo entre Vida Artificial e Realidade Virtual, vnculo, este, ainda pouco explorado por programas de VA e computao grfica. O uso de tecnologias de imerso total em ambientes virtuais ainda refora a aplicao de Realidade Virtual para visualizao de experimentos cientficos e exibio de massa de dados utilizando-se, para tanto, artifcios visuais comuns rea de computao grfica, como texturas, transparncia, colorao e movimento.

O desenvolvimento da plataforma como foi apresentada, ainda fornece uma ferramenta de rpida prototipao, no s para experimentos de VA, mas, tambm, para programas de computao grfica, que venham a utilizar o contexto multiagentes para manipulao de objetos em Realidade Virtual.

Vida Artificial em Ambientes Virtuais

114

6.2. Aplicaes
Aqui so sugeridas aplicaes do tema em vrias frentes, como pesquisa ambiental, educao mdia e superior e descoberta de conhecimento, entre outras.

Experimentos em Vida Artificial, especialmente num contexto multi-agentes, podem ser aplicados a uma larga gama de reas das cincias exatas e biolgicas, entendendo desde simulaes didticas, visando a ilustrao de conceitos bsicos de fenmenos biolgicos at solues de problemas em robtica e engenharia, como demonstrado em [NEVES, 2002].

Os conceitos estudados aqui podero ainda ter relevncia em estudos futuros, envolvendo reas como nanotecnologia, onde se pode desejar que nano-robs, constitudos de poucos tomos e que realizam um conjunto de regras simples, desempenhem em conjunto, tarefas pr-definidas de maior complexidade. Tais robs podem evoluir em um ambiente simulado, at que atinjam uma operabilidade aceitvel, para que sejam, posteriormente, construdos.

Simulaes envolvendo sistemas genticos e busca evolutiva podem ser igualmente beneficiadas, uma vez que computadores de alta-performance podem realizar, em minutos, interaes que levariam milhares de anos. O exemplo de evoluo de algas demonstra bem esta capacidade.

Exemplos didticos foram desenvolvidos demonstrando fenmenos celulares como mitose e fagocitose. Ainda h exemplos interativos, que permitem a um aluno mais interessado modificar parmetros dos experimentos, ou mesmo criar novos experimentos, combinando agentes pr-definidos e observando suas interaes. O exemplo de agentes patognicos ilustra bem essa possibilidade, onde clulas comuns podem ser misturadas a agentes nocivos em um experimento, observando-se a evoluo da infeco de maneira anloga a experimentos in vitro.

Vida Artificial em Ambientes Virtuais

115

O programa disponibilizado na Pgina do Projeto [ALIVE SITE] possibilita o acesso remoto e execuo de Applets atravs de pginas interativas, permitindo que estudantes e entusiastas experimentem em casa simulaes em VA, bastando para isso possuir instalado o suporte linguagem Java e ao API Java3D.

O aplicativo desenvolvido possibilita a visualizao de experimentos em imerso total no ambiente virtual, utilizando desde culos 3D at a CAVERNA [CAVERNA SITE] entre outros, utilizando, tambm, dispositivos de rastreamento (tracking), que permitem ao usurio interagir com o experimento em tempo de execuo, alterando parmetros dos agentes simulados.

Futuramente, agentes complexos podero desempenhar tarefas de alto nvel nos ambientes virtuais, como a construo de cenrios, crescimento de vegetao ou at construo de arquiteturas baseadas em um conjunto de regras pr-estabelecidas (como colmias, formigueiros, casas ou outras obras baseadas em engenharia evolutiva).

Agentes inteligentes podem efetuar buscas no espao virtual, com auxlio do usurio. Para tanto, vetores de um espao de busca podem ser mapeados nas coordenadas x, y, z e em atributos visuais, nos quais os agentes possam basear sua busca, recebendo dicas do usurio, que observa sua evoluo.

Visando explorar a interao com os seres humanos, agentes cognitivos com caractersticas humanas podem ser implementados, aplicando uma srie de tcnicas de VA e IA. Pesquisas envolvendo agentes cognitivos e com caractersticas humanas esto atualmente sendo desenvolvidas utilizando o contexto da plataforma e j apresentam alguns resultados [CAVALHIERI SITE].

Vida Artificial em Ambientes Virtuais

116

6.3. Propostas para trabalhos futuros


Aqui so descritos alguns aprimoramentos e funcionalidades que podem ser implementadas futuramente no projeto, bem como experimentos que podem ser realizados utilizando-se, para sua implementao, o contexto desenvolvido.

Entre os aprimoramentos a serem desenvolvidos no programa, consta um ajuste no sistema de manipulao de agentes no universo virtual, especialmente em sistemas imersivos, como a CAVERNA, permitindo a movimentao de agentes utilizando-se dispositivos apontadores. As funcionalidades de acesso a arquivo, que envolvem leitura e gravao de experimentos, agentes e configuraes, no foram implementadas por implicarem em limitaes no funcionamento do programa em modo Applet. Applets apresentam uma srie de limitaes relativas segurana. Uma, em especial, impede que Applets e scripts executando em navegadores tenham acesso leitura e gravao no disco do usurio. sugerido que, futuramente, o projeto seja dividido em dois mdulos independentes, sendo um voltado exibio e divulgao na Internet, em modo Applet, e um para uso como aplicativo, apresentando uma srie de ferramentas adicionais, entre elas, mtodos para armazenamento e recuperao de informao em disco.

Entre os experimentos a serem desenvolvidos, sugerido o desenvolvimento de uma demonstrao envolvendo sistemas com morfologia varivel, para observar como o aspecto fsico influenciado pela evoluo e regras de encaixe (fitness). O genoma, neste caso, representaria um programa contendo cdigos simples que coordenariam as ramificaes, informando os comprimentos e ngulos, garantindo uma variedade na obteno de formas construdas por suas variaes. Uma funo de satisfao definida permitindo escolher qual critrio ser considerado como vantajoso no processo evolutivo, como: maior volume, maior rea de superfcie, maior comprimento, relao entre altura e largura, ou uma combinao entre estes e outros. O experimento permitiria observar como as formas variam atravs da evoluo, dependendo das regras e critrio definidos (funo de encaixe, satisfao ou fitness).

Vida Artificial em Ambientes Virtuais

117

BIBLIOGRAFIA
Referncias Bibliogrficas
[ADAMI, 1998] ADAMI, CHRISTOPH An Introduction to Artificial Life Springer Verlag / Telos (1998) ISBN: 0-387-94646-2 [BEDAU, 2000] BEDAU, MARK A. ET AL. Open Problems in Artificial Life Artificial Life 6, MA, 363-376 (2000) Tambm disponvel em: <http://mitpress.mit.edu/journals/ARTL/Bedau.pdf >, acesso em 15/8/2003 [BENTLEY, 1999] BENTLEY, PETER J. (EDITOR) Evolutionary Design by Computers Morgan Kauffmann (1999) ISBN: 1-55860-605-X [DARWIN, 1859] DARWIN, CHARLES A Origem das Espcies Editora Hemus; 5 Edio (2000) ISBN: 8-528-90134-3 [DAWKINS, 1976] DAWKINS, RICHARD O Gene Egosta Editora Gradiva (1976) ISBN: 972-662-127-5 [DEITEL, 2002] DEITEL, HARVEY M.; DEITEL, PAUL J. Java, como programar Bookman Companhia Ed., 4 Edio (2002) ISBN: 853-630-123-6

Vida Artificial em Ambientes Virtuais

118

[DYSON, 1999] DYSON, FREEMAN Origins of Life Cambridge University Press (1999) ISBN: 0-521-62668-4 [ECKEL, 2002] ECKEL, BRUCE Thinking in Java Pentice Hall (2002) ISBN: 013-100-287-2 Tambm disponvel em: <http://www.mindview.net/Books/TIJ/>, acesso em 15/8/2003 [FRANKLIN, 1996] FRANKLIN, S.; GRAESSER, A. Is it an Agent or just a Program? A Taxonomy for Autonomous Agents In Proceedings of the Third International Workshop on Agent Theories, Architectures and Languages Springer-Verlag (1996) [FRANKLIN, 1997] FRANKLIN, STAN Artificial Minds MIT Press (1997) ISBN: 0-262-56109-3 [HAYES, 1995] HAYES-ROTH, B. An Architecture for Adaptive Intelligent Systems Artificial Intelligence: Special Issue on Agents and Interactivity, 72, 329-365 (1995) [HAYKIN, 1998] HAYKIN, SIMON S. Neural Networks: A Comprehensive Foundation Prentice Hall; 2nd edition (July 6, 1998) ISBN: 0-132-73350-1 [KAPLAN, 1995] KAPLAN, DANIEL; GLASS, LEON Understanding Nonlinear Dynamics Springer (1995) ISBN: 0-387-94440-0

Vida Artificial em Ambientes Virtuais

119

[KOVACS, 1997a] KOVCS, ZSOLT L. Redes Neurais Artificiais Collegium Cognitio / Edio Acadmica (1997) ISBN: 0-262-13316-4 [KOVACS, 1997b] KOVCS, ZSOLT L. O Crebro e sua Mente Ed. Zsolt Kovcs / Edio Acadmica (1997) [KREYSZIG, 1998] KREYSZIG, ERWIN Advanced Engineering Mathematics John Wiley & Sons; 8th edition (January 1999) ISBN: 0-471-15496-2 [LANGTON, 1989] LANGTON, G. C. (EDITOR) Artificial life: The proceedings of an Interdisciplinary Workshop on the Synthesis and Simulation of Living Systems Held September, 1987, in Los Alamos, New Mexico Addison-Wesley Pub. Co., Advanced Book Program (Redwood City, Calif.) (1989) ASIN: 0201093561 [LANGTON, 1995] LANGTON, G. C. Artificial Life: An Overview (Complex Adaptive Systems) MIT Press; Reprint edition (January, 1997) ISBN: 0-262-62112-6 [LEA, 1999] LEA, DOUG Concurrent Programming in JavaTM: Design Principles and Pattern Addison-Wesley Pub Co; 2nd edition (November 5, 1999) ISBN: 0-201-31009-0 [LEE, 1990a] LEE , CHUEN CHIEN, Fuzzy Logic in Control Systems: Fuzzy Logic Controller - Part I IEEE Transactions on Systems, Man, and Cybernetics, vol 20, n 2, March/April 1990. [LEE, 1990b] LEE, CHUEN CHIEN Fuzzy Logic in Control Systems: Fuzzy Logic Controller - Part II IEEE Transactions on Systems, Man, and Cybernetics, vol 20, n 2, March / April 1990.

Vida Artificial em Ambientes Virtuais

120

[MAES, 1995] MAES, PATTIE Artificial Life Meets Entertainment: Life like Autonomous Agents Communications of the ACM, 38, 11, 108-114 (1995) [MARGULIS, 1998] MARGULIS, LYNN; SAGAN, DORION What is Life? University of Califrnia Press (1998) ISBN: 85-7110-641-X [MICHALEWIC, 1996] MICHALEWIC, ZBIGNIEW Genetic Algorithms + Data Structures = Evolution Programs Springer Verlag (1996) ISBN: 3-540-60676-9 [MITCHELL, 1997] MITCHELL, MELANIE An Introduction to Genetic Algorithms MIT Press (1997) ISBN: 0-262-13316-4 [MORIE, 1994] MORIE, J.F. Inspiring the Future: Merging Mass Communication, Art, Entertainment and Virtual environments Computer Graphics, 28(2):135-138, May 1994. [NEVES, 2002] NEVES, ROGRIO P. O.; NETTO, MARCIO L. Evolutionary Search for Optimization of Fuzzy Logic Controllers 1st International Conference on Fuzzy Systems and Knowledge Discovery Volume I, on Hybrid Systems and Applications I (2002) ISBN: 981-04-7520-9 Tambm disponvel em: <http://www.lsi.usp.br/~rponeves/work/fuzzy/>, acesso em 1/9/2003 [RASBAND, 1990] RASBAND, S. NEIL Chaotic Dynamics of Nonlinear Systems A Wiley-Interscience publication, John Wiley & Sons (1990) ISBN: 0-471-63418-2

Vida Artificial em Ambientes Virtuais

121

[RUSSEL, 1995] RUSSELL, STUART; NORVIG, PETER Artificial Intelligence: A Modern Approach Englewood Cliffs, NJ: Prentice Hall; 2nd edition (December, 2002), page 33 ISBN: 0-137-90395-2 [SCHRDINGER, 1943] SCHRDINGER, ERWIN O que Vida? Editora Unesp (1943) ISBN: 8571391610 [SHLOAM, 1998] SHLOAM, Y. Agent-Oriented Programming Readings in Agents - editado por M.N. Huhns e M.P. Singh pags. 329-349 - Morgan & Kaufmann, S. Francisco (1998) [SMITH, 1994] SMITH,D.C.; CYPHER,A.; SPOHRER,J. KIDSIM: Programming Agents Without a Programming Language Communications of the ACM, v.37, n.7, pags. 55-67 (1994) [WOOLDRIDGE, 1995] WOOLDRIDGE, MICHAEL; NICHOLAS R. JENNINGS, Agent Theories, Architectures, and Languages: a Survey Wooldridge and Jennings Eds., Intelligent Agents Berlin: Springer-Verlag, 1-22 (1995) [WOLFRAM, 2002] WOLFRAM, STEPHEN A New Kind of Science Wolfram Media, Inc.; (May, 2002) ISBN: 1579550088 [ZADEH, 1973] ZADEH, LOTFI ASKER Outline of a New Approach to the Analysis of Complex Systems and Decision Processes IEEE Transactions on Systems, Man, and Cybernetics, vol SMC3, n 1, January 1973.

Vida Artificial em Ambientes Virtuais

122

Referncias On-Line
[ALIVE SITE] NEVES, ROGRIO P. O. Pgina oficial do projeto A.L.I.V.E. Disponvel em: <http://www.lsi.usp.br/~alive/>, acesso em 1/9/2003 Pagina do responsvel pelo projeto Disponvel em: <http://www.lsi.usp.br/~rponeves/research>, acesso em 1/9/2003 [ALIFEVIII SITE] ARTIFICIAL LIFE VIII WEB SITE The 8th International Conference on the Simulation and Synthesis of Living Systems Disponvel em: <http://parallel.hpc.unsw.edu.au/complex/alife8/>, acesso em 15/8/2003 ??? [ARTLIFE SITE] LOBO, MARCIO Pgina do grupo de vida artificial ARTLIFE Disponvel em: <http://www.lsi.usp.br/~artlife>, acesso em 15/8/2003 [ADAMI SITE] ADAMI, CHRISTOPH Cris Adami home page Disponvel em: <http://www.krl.caltech.edu/~adami/>, acesso em 15/8/2003 The Digital Life Laboratory Disponvel em: <http://dllab.caltech.edu/>, acesso em 15/8/2003 Avida Home Page Disponvel em: <http://dllab.caltech.edu/avida/>, acesso em 15/8/2003 [BROOKS SITE] BROOKS, RODNEY Rodney Brooks home at MIT AI Lab Disponvel em: <http://www.ai.mit.edu/people/brooks/>, acesso em 15/8/2003 [CAVALHIERI SITE] CAVALHIERI, MARCOS Projeto com humanos virtuais Disponvel em: <http://www.lsi.usp.br/~mac/>, acesso em 1/9/2003 [CAVERNA SITE] NCLEO DE REALIDADE VIRTUAL DO LSI-USP Pgina da CAVERNA digital Disponvel em: <http://www.lsi.usp.br/~rv/>, acesso em 1/9/2003

Vida Artificial em Ambientes Virtuais

123

[CESTA SITE] CESTA, ANDR AUGUSTO Tutorial: A Linguagem de Programao Java Disponvel em: <http://www.dcc.unicamp.br/~cmrubira/aacesta/>, 24/8/2003 [DOLAN SITE] DOLAN, ARIEL Floyds - social, territorial artificial life creatures Disponvel em: <http://www.aridolan.com/>, acesso em 24/8/2003 [FONER SITE] FONER, LENNY The Foner Agent Disponvel em: <http://foner.www.media.mit.edu/people/foner/>, acesso em 15/8/2003 [LOBONETT SITE] NETTO, MRCIO LOBO Pgina Pessoal Disponvel em: <http://www.lsi.usp.br/~lobonett>, acesso em 15/8/2003

acesso

em

[RAY SITE] RAY, THOMAS Thomas Ray Home Page Disponvel em: <http://www.isd.atr.co.jp/~ray/>, acesso em 15/8/2003 Tierra Web Site Disponvel em: <http://www.isd.atr.co.jp/~ray/tierra/>, acesso em 15/8/2003 [REYNOLDS SITE] REYNOLDS, CRAIG Craig Reynolds Home Page Disponvel em: <http://www.red3d.com/cwr/>, acesso em 15/8/2003

[RV SITE] KIRNER, CLAUDIO Tutorial Sistemas de Realidade Virtual Disponvel em: <http://www.realidadevirtual.com.br/publicacoes/tutorial_rv/tutrv.htm>, acesso em 15/8/2003 [SIMS SITE] SIMS, KARL Karl Sims Work bio on Biota.org Disponvel em: <http://www.biota.org/ksims/>, acesso em 15/8/2003

Vida Artificial em Ambientes Virtuais

124

[SUN SITE] SUN MICROSYSTEMS JAVA GROUP Suns Java Site, Java Online Manual, Java API Specification Disponvel em: <http://java.sun.com/>, acesso em 1/9/2003 The Java3D Introduction, Java3D API Specification, and more on-line material Disponvel em: <http://java.sun.com/products/java-media/3D/collateral/>, acesso em 1/9/2003 [SWARM SITE] SWARM DEVELOPMENT GROUP Swarm.org Disponvel em: <http://www.swarm.org/>, acesso em 1/9/2003

Bibliografia recomendada
[BERG, 1983] BERG, HOWARD C. Random Walks in Biology Princeton University press (1983) ISBN: 0-691-08245-6 [BROOKS, 1991a] BROOKS, RODNEY A. Intelligence without Representation Artificial Intelligence 47, (pags. 139-159) (1991) Tambm disponvel em: <http://www.ai.mit.edu/people/brooks/papers/AIM-1293.pdf >, acesso em 15/8/2003 [BROOKS, 1991b] BROOKS, RODNEY A. Intelligence Without Reason Proceedings of the 12th International Joint Conference on Artificial Intelligence ({IJCAI}-91),(A.I. Memo n. 1293), MIT Artificial Intelligence Laboratory Morgan Kaufmann publishers Inc.: San Mateo, CA, USA (April, 1991) ISBN: 1-55860-160-0 Tambm disponvel em: <http://www.ai.mit.edu/people/brooks/papers/representation.pdf >, acesso em 15/8/2003 [COLOMBETTI, 1994] COLOMBETTI, MARCO; DORIGO, MARCO Training Agents to Perform Sequential Behavior International Computer Science Institute (ICSI), Berkeley, CA Adaptive Behavior v.2, n.3, pags. 247-275 MIT Press (1994)

Vida Artificial em Ambientes Virtuais

125

[CRUZ-NEIRA, 1992] CRUZ-NEIRA, C. ET AL. The CAVE Audio Visual Experience Automatic Virtual Environment Communication of the ACM, 35(6):64-72, June 1992 [LEJTER, 1996] LEJTER, MOISES; DEAN, THOMAS A Framework for the Development of Multiagent Architectures IEEE Expert, pags. 47-61, December (1996) [LEVY, 1992] LEVY, STEVEN Artificial Life: The Quest for a New Creation Panteon Books (1992) (Um dos mais completos sumrios jornalsticos publicados at a data) ASIN: 0-679-40774-X [LEWONTIN, 1998] LEWONTIN, RICHARD A Tripla Hlice: Gene, Organismo e Ambiente Editora Companhia das Letras (1998) ISBN: 85-359-0259-7 [MIRANDA, 2001a] MIRANDA, FABIO R. ET AL An Artificial Life Approach for the Animation of Cognitive Characters Computers&Graphics - an international journal on computer graphics and applications, Special Issue: Virtual Life Towards New Generation of Computer Animation, volume 25, issue 6 (december 2001) Elsevier Science [MIRANDA, 2001b] MIRANDA, FABIO R. ET AL Arena and WoxBOT: First Steps Towards Virtual World Simulations SIBGRAPI 2001 - XIV Brazilian Symposium on Computer Graphics and Image Processing, Florianpolis, Brazil (october 2001) IEEE Computer Society Press [MURPHY, 1995] MURPHY, P, ONEILL, L. O que Vida? 50 anos depois Editora Unesp (1995) ISBN: 85-7139-168-8

Vida Artificial em Ambientes Virtuais

126

[NETTO, 2001] NETTO, MARCIO L.; KOGLER JR., JOO E. (EDITORS) Special Issue: Virtual Life Towards New Generation of Computer Animation Computers & Graphics an international journal on computer graphics and applications, volume 25, issue 6 (december 2001) Elsevier Science [PONNAMPERUMA, 1972] PONNAMPERUMA, CYRIL The Origins of Life Thames and Hudson Ltd; (1972) ASIN: 0500100128 [SCHOEDER, 1997] SCHOEDER, W.; MARTIN, K.; LORENSEN, B. The Visualization Toolkit Prentice Hall Computer Books (1997) ISBN: 0-139-54694-4 [THAGART, 1998] THAGART, PAUL MIND - Introduction to Cognitive Science MIT Press (1998) ISBN: 0-262-20106-2 [WATT, 1997] WATT, A.; POLICARPO, F. The Computer Image Addison Wesley (1997) ISBN: 0-201-42298-0 [ZADEH, 1979] ZADEH , LOTFI ASKER Linear System Theory Krieger Publishing Company; Reprint edition (February 1979) ISBN: 0882758098 [ZADEH, 1999] ZADEH , LOTFI ASKER Computing With Words in Information/Intelligent Systems 2: Applications Studies in Fuzziness and Soft Computing, Vol. 33-34 Springer Verlag; (November 15, 1999) ISBN: 3790812188

Vida Artificial em Ambientes Virtuais

127

APNDICE A. TABELAS E GRFICOS ADICIONAIS


A.1. Sistema Presa-predador
Seguem alguns grficos de variao da populao em funo do tempo de experimento, obtidos nos experimentos realizados. A sada gerada pelo programa tem o formato mostrado na Tabela 5. Os smbolos da ltima coluna do uma idia dos processos ocorridos no ambiente atravs dos caracteres exibidos. Sempre que nasce um predador, o smbolo O impresso, +/- indica o nascimento de uma presa com sinal de energia positivo ou negativo, o smbolo x impresso toda vez que uma presa morre e X (maisculo) sempre que um predador morre.

Vida Artificial em Ambientes Virtuais

128

Tabela 5. Exemplo da sada gerada pelo experimento.

Started: Thu Aug 21 15:25:52 BRT 2003 T Hnters Food Green Red 0 90 900 597 303 xxxxxxxxxxxxxxx... 134 90 676 475 201 xxxxxxxxxxxxxxx... 268 90 605 429 176 xxxxxx+xxxxxx+x+xx+xxxx+xxxxx 2680 96 102 65 37 xxx+x+x+x+x+xx+xxxxx 2814 96 94 60 34 +x+xXo+x+++x+xxxxx+xxox+x 2948 97 90 57 33 xxXxx+xx+ 3082 96 86 54 32 +xxxxXxx+x 3216 95 81 51 30 +xo+xx+xx+x 3350 96 79 50 29 x+++xxxx++x+ 3484 96 79 50 29 xxxx+++-+x+-o 3618 97 81 52 29 xxx++x++x 3752 97 80 51 29 x-x+X+x-+x 3886 96 81 51 30 x-xx+x+xxxxx-Xx 4020 95 75 44 31 xX++-X+xx 4154 93 76 44 32 +xX++xxx+++x++ 4690 91 75 41 34 ox-xxx+x 4824 92 72 38 34 xxxxx 4958 92 67 34 33 x++x--xX+ 5092 91 69 34 35 x-xxxx+ 5226 91 66 32 34 ++xx+X+ 5360 90 68 34 34 ++++xxx--x 5494 90 70 34 36 +x+x+x 5628 90 70 35 35 xoxxXX+xx 5762 89 66 32 34 +++++xXx+xx-x++x 5896 88 69 35 34 xxxx+ox+ 6030 89 66 32 34 Xx+x+X+xxx 6298 87 62 28 34 x+x+Xx 6432 86 61 28 33 x-x-+x+xxxx 6566 86 58 23 35 ++++--x 6700 86 63 26 37 Xx+X+--+x-xxx 6834 84 64 24 40 +++X 7102 83 66 26 40 ++x+ 7236 83 68 28 40 ---+ 7504 83 76 30 46 --+--+ 7638 83 82 32 50 ++++++x++++ 7772 83 91 41 50 x--+X+x--+xx 7906 82 94 40 54 x--+ 8040 82 96 40 56 X++ 8442 81 110 52 58 +++++++ 8576 81 117 59 58 x++++++-+ 8710 81 124 65 59 +XX+++X+ 14472 66 406 230 176 xoxxx+x+ Finished: Thu Aug 21 15:29:01 BRT 2003

Vida Artificial em Ambientes Virtuais

129

Figura 39. Extino devido ao consumo total dos recursos.

Figura 40. Extino devido ao acumulo de toxinas no ambiente.

Vida Artificial em Ambientes Virtuais

130

Figura 41. Extino devido ao acumulo de toxinas no ambiente.

Figura 42. Exploso populacional devido a abundncia de alimentos.

Vida Artificial em Ambientes Virtuais

131

Figura 43. Figura mostra um salto evolutivo (~24000) para um sistema sem abastecimento.

Figura 44. Para um sistema abastecido de presas, Grfico da variao populacional com o tempo no caso de equilbrio entre presa e predador. A regio em torno de 17500 mostra o crescimento populacional devido a um salto evolutivo.

Vida Artificial em Ambientes Virtuais

132

Figura 45. Variao das trs populaes em um experimento tpico, com abastecimento automtico no descriminado entre presas do tipo +/- (alimentos e toxinas).

Vida Artificial em Ambientes Virtuais

133

APNDICE B. ESPECIFICAO DAS SUPERCLASSES


Aqui so apresentados os diagramas estruturais das classes base do projeto. Diagramas estruturais em notao UML consistem de blocos descritivos das classes e objetos que compe o projeto. No caso de um diagrama de classe na notao UML, o formato apresentado como segue:

Nome da Classe

(acesso)Lista_de_variveis: tipo = valor inicial +varivel_pblica: int -varivel_privada: float #varivel_protegida: double +varivel_esttica: boolean (+-#=acesso)Lista_de_mtodos(parmetros): retorno +mtodo_pblico (a: int, b:int): int -mtodo_privado (): float #mtodo_protegido (): double +mtodo_esttico (d: double): boolean Responsabilidades (funes descritas pela classe) --exemplificar um diagrama de classe UML --apresentar tipos de acesso a variveis e mtodos
Figura 46. Exemplo de diagrama de classe na notao UML.

Os diagramas apresentados aqui exibem apenas mtodos e variveis pblicas e protegidas, ocultando os pertencentes aos mecanismos internos de funcionamento da plataforma.

B.1. Superclasse Ambiente


A Superclasse Ambiente (Environment.class) contm os mtodos de visualizao e controle do ambiente. O diagrama de classe apresentado no tpico a seguir. As variveis pblicas disponveis so explicadas posteriormente. Em seguida, as substituies que devem ser efetuadas pelo cdigo implementado pelo usurio so apresentadas juntamente com a utilizao dos demais mtodos. B.1.1. Diagrama de Classe

Vida Artificial em Ambientes Virtuais

134

Environment Super Class

+agents: Vector +alive: Boolean = true +config: EnvConfig +control: UserInterface +startDate: Date {start date} +date: Date {current} +elapsed: double = 0 +light: DirectionalLight +LOOP_COUNT int = 0 +lightGroup: TransformGroup +MAX_SPEED: double = 0.1 +param: double[] +paramName: String[] +PAUSED: Boolean = false +renderEnabled: Boolean = true +viewTransform: TransformGroup +addActor (ac:Actor): void +addAgent (a:Agent): void +adjust (paramName:String, value:double): void +cleanUp (): void +configureEnvironment (cfg:EnvConfig): void +createContent (): void +createCustomUI (): void +createLights (): void +destroy (): void +findAgent (id:int): void +generateRandomVector(): Vector3d +get (param:String): double +getAgent (a:Agent): Agent +getInfo (): String +killAgent (a:Agent): void +log (String): void +message (s:String): void +probability (p:double): Boolean +removeActor (ac:Actor): void +removeAgent (a:Agent): void +rest (time:int): void +rnd (min:double, max:double): double +round (val:double, n:int): String +set (paramName:String, value:double): void +signal (val:double): double +startup (): void +test (b: boolean): double +update (): void Responsabilidades: --iniciar o sistema de visualizao --iniciar a interface de usurio --prover mtodos de acesso de agente a agente --prover mtodos de manipulao de agentes no ambiente
Figura 47. Diagrama de classe da superclasse ambiente.

Vida Artificial em Ambientes Virtuais

135

B.1.2. Descrio das Variveis:


agents: Vector

Lista contendo referncias para todos os agentes em execuo no ambiente, por ordem de criao.

alive: Boolean

Atividade do ambiente. Se Verdadeiro, o ambiente est executando; se falso, a simulao terminou.

config: EnvConfig

Referncia ao objeto de configurao do ambiente que contm a especificao do ambiente simulado.

control: UserInterface

Referncia ao objeto de interface de usurio.

startDate: Date

Data e hora do incio da execuo da simulao.

date: Date

Data e hora atual.

elapsed: double

Nmero de ciclos (loops) executados desde o incio da simulao.

light: DirectionalLight

Referncia a iluminao padro. Permite mudar atributos da iluminao.

MAX_SPEED: double

Velocidade mxima que objetos podem atingir no ambiente virtual. O valor deve ser diminudo para evitar distores e aberraes no clculo das interaes.

Vida Artificial em Ambientes Virtuais

136

paramName: String[]

Vetor contendo a lista com os nomes dos parmetros do ambiente. As variveis podem representar, por exemplo, temperatura, viscosidade ou concentraes qumicas especficas.

param: double[]

Vetor contendo os valores dos parmetros especificados pela lista acima.

PAUSED: Boolean

Estado da simulao. Verdadeiro = simulao parada.

renderEnabled: Boolean

Visualizao habilitada. Falso indica sem sada visual.

viewTransform: TransformGroup

Grupo raiz dos objetos de visualizao contendo posio e orientao das cmeras. Pode ser operado pelo cdigo de usurio para acompanhar um determinado ator. B.1.3. Mtodos a Serem Substitudos por Cdigo do Usurio* (*Override required)

createContent(): void

Mtodo que especifica os objetos e atores, que so adicionados simulao no incio do experimento.

update(): void

O mtodo define as regras de atualizao para o ambiente especificado em tempo de execuo. B.1.4. Mtodos que Podem ser Substitudos por Cdigo do Usurio** (**Override allowed)

Vida Artificial em Ambientes Virtuais

137

cleanUp(): void

O mtodo executado quando a simulao termina.

createCustomUI(): void

Mtodo que adiciona uma interface de controle para parmetros do experimento no espao reservado da interface de controle.

createLights(): void

Mtodo que adiciona iluminao cena virtual. No mtodo padro, apenas uma luz direcional criada.

destroy(): void

Mtodo padro para limpar as variveis de ambiente.

getInfo():String

Retorna informaes sobre os parmetros da simulao.

startUp(): void

O mtodo executado quando a simulao comea. B.1.5. Mtodos Finais de Acesso e Controle*** (***Final methods: Override forbiden)

addActor(Actor): void

Adiciona ator cena virtual.

addAgent(Agent):

Adiciona o agente ao ambiente de simulao.

adjust(paramName: String, value: double): void

Ajusta o parmetro especificado com o valor fornecido.

Vida Artificial em Ambientes Virtuais

138

configureEnvironment(cfg: EnvConfig): void

Configura o ambiente inicial utilizando o objeto de configurao cfg.

findAgent(id: int): void

Executa busca de agente por nmero de identificao.

get(param: String): double

Retorna o valor do parmetro especificado.

getAgent(pos: int): Agent

Retorna o agente na posio pos do vetor de agentes.

killAgent(pos: int): void

Finaliza o agente na posio pos do vetor de agentes.

log(String): void

Grava no arquivo de registro a mensagem passada.

message(String): void

Exibe na sada padro a mensagem passada.

removeActor(Actor): void

Remove o ator especificado da cena virtual.

removeAgent(Agent): void

Remove o agente especificado da simulao.

set(paramName: String, value: double): void

Define valor para o parmetro com nome especificado.

set(n:int, paramName: String, value: double): void

Define valor e nome para o parmetro com o nmero especificado.

Vida Artificial em Ambientes Virtuais

139

B.1.6. Mtodos de Auxlio (Utilitrios ou Helper methods)

generateRandomVector(): Vector3d

Gera um vetor aleatrio normalizado.

probability(P: double): Boolean

Retorna verdadeiro, com probabilidade P (entre 0 e 1).

rest(tempo: int): void

Permanece inativo pelo tempo (ms) especificado.

rnd(min:double, max: double): double

Retorna um valor aleatrio no intervalo determinado pelo mximo e mnimo.

rnd(min:int, max: int): double

Retorna um valor aleatrio no intervalo determinado pelo mximo e mnimo.

round(val:double, n:int): String

Retorna uma String contendo o valor arredondado com n casas decimais.

signal(var: double): double

Retorna +1 se positivo ou -1 se negativo.

test(test: boolean): double

Retorna 1d se verdadeiro ou 0d se falso.

B.2. Superclasse Agente


A superclasse Agente (Agent.class) utilizada na criao de qualquer agente desenvolvido no contexto da plataforma. Seu funcionamento similar superclasse ambiente, exceto por possuir mtodos abstratos que necessitam substituio na classe

Vida Artificial em Ambientes Virtuais

140

filha. O diagrama, descrio das variveis e utilizao dos mtodos apresentado a seguir. B.2.1. Diagrama de Classe
Agent Superclass

+acceleration Vector3d = (0,0,0) +direction Vector3d {random (normal)} +position Vector3d {random (bounded)} +speed Vector3d = (0,0,0) +actor: Actor +alive: Boolean = true +color: Color3f = (0,0,0) Environment +env: +highLightTime: int = 0 +control: UserInterface +id: int +param: double[] +paramName: String[] +path: String +size: double = 1 +adjust (paramName:String, value:double): void +behavior (): void +cleanUp (): void +configureToEnvironment(env:Environment): void +createActor (): Actor +die (): void +generateRandomVector(): Vector3d +get (param:String): double +getInfo (): String +highLight (): void +log (s:String): void +message (s:String): void +makeAlive (): void +probability (p:double): Boolean +rest (time:int): void +rnd (min:double, max:double): double +rnd (min:int, max:int): double +round (val:double, n:int): String +set (paramName:String, value:double): void +signal (val:double): double +startUp (): void +test (b: boolean): double +updateActor (): void Responsabilidades: --prover mtodos para manipulao do agente --prover mtodos de manipulao de atores
Figura 48. Diagrama de classe da superclasse Agente.

Vida Artificial em Ambientes Virtuais

141

B.2.2. Descrio das Variveis


actor: Actor

Referncia para objeto ator que representa o agente na cena.

alive: Boolean

Atividade do agente. Se verdadeiro, o agente est executando; se falso, o agente encerrou a execuo.

color: Color3f

Cor do agente, para uso pblico ou em conjunto com atributos visuais do ator.

highlightTime: int

Marca o tempo em que o objeto (ator) fica em evidncia, quando o agente selecionado.

id: int

Nmero nico de identificao do agente, atribudo seqencialmente por ordem de criao.

paramName: String[]

Vetor contendo a lista com os nomes dos parmetros do agente. As variveis representam atributos prprios do agente, como cromossomos, temperatura ou concentraes qumicas especficas.

param: double[]

Vetor contendo os valores dos parmetros especificados pela lista acima.

path: String

Caminho para acesso aos arquivos do pacote.

size: double

tamanho do agente.

Vida Artificial em Ambientes Virtuais

142

acceleration: Vector3d

Vetor acelerao do agente.

direction: Vector3d

Vetor direo do agente.

position: Vector3d

Vetor indicando a posio atual do agente.

speed: Vector3d

Vetor velocidade do agente. B.2.3. Mtodos a Serem Substitudos por Cdigo do Usurio* (*Abstract methods: Override required)

behavior(): void

Mtodo que contm as operaes feitas com o agente em tempo de execuo.

createActor(): Actor

O mtodo deve retornar um ator vlido para representar o agente na cena, no sendo executado se o sinalizador (flag) env.config.RENDER estiver desabilitado.

updateActor(): void

Opera alteraes visuais no ator em tempo de execuo. O mtodo no executado se qualquer um dos sinalizadores (flags) de sntese de imagens,

env.renderEnabled ou env.config.RENDER, estiverem desabilitados.

B.2.4. Mtodos que Podem ser Substitudos por Cdigo do Usurio** (**Override allowed)

cleanUp(): void

O mtodo executado quando a simulao termina.

Vida Artificial em Ambientes Virtuais

143

die(): void

O mtodo destri as variveis criadas pela instncia, remove o ator da cena e o agente do ambiente.

getInfo():String

Retorna informaes sobre os parmetros e vetores do agente.

startUp(): void

O mtodo executado quando a simulao comea. B.2.5. Mtodos de Acesso e Controle*** (***Final: Override forbiden)

adjust(paramName: String, value: double): void

Ajusta o parmetro especificado com o valor fornecido.

configureToEnvironment(env: Environment): void

Configura o agente para o ambiente fornecido.

get(param: String): double

Retorna o valor do parmetro especificado.

highLight(): void

Marca o ator com alto contraste por um intervalo de tempo determinado.

log(String): void

Grava no arquivo de registro a mensagem passada.

message(String): void

Exibe a mensagem passada no console.

makeAlive(): void

Inicia a execuo do agente.

Vida Artificial em Ambientes Virtuais

144

removeAgent(Agent): void

Remove o agente especificado da simulao.

set(paramName: String, value: double): void

Define o valor para o parmetro com nome especificado.

set(n:int, paramName: String, value: double): void

Define o valor e nome para o parmetro com o ndice especificado. B.2.6. Mtodos de Auxlio (Utilitrios ou Helper Methods)

generateRandomVector(): Vector3d

Gera um vetor aleatrio normalizado.

probability(P:double): Boolean

Retorna verdadeiro, com probabilidade P (entre 0 e 1).

rest(tempo:int): void

Permanece inativo pelo tempo (ms) especificado.

rnd(min:double, max:double): double

Retorna um valor aleatrio no intervalo especificado.

rnd(min:int, max:int): double

Retorna um valor aleatrio no intervalo especificado.

round(val:double, n:int): String

Retorna uma String contendo o valor arredondado com n casas decimais.

signal(var: double): double

Retorna +1 se positivo ou -1 se negativo.min-max.

Vida Artificial em Ambientes Virtuais

145

test(b: boolean): double

Retorna 1 se verdadeiro ou 0 se falso.

B.3. Superclasse Ator


A superclasse ator responsvel pela padronizao de acesso e operao dos atores criados no contexto da plataforma. B.3.1. Diagrama de Classe
Actor Superclass

+emissiveColor: Color3f = (0,0,0) +ambientColor: Color3f = (.6,.6,.6) +diffuseColor: Color3f = (.6,.6,.6) +specularColor: Color3f = (1,1,1) +shiness: float = 100 +id: int +model: String "" +scale: double = 0.01 +texturefile: String "" #tg: TransformGroup #dir Vector3d = (0,0,0) #pos Vector3d = (0,0,0) +black: Color3f = (0,0,0) +blue: Color3f = (0,0,1) +cyan: Color3f = (0,1,1) +green: Color3f = (0,1,0) +magenta: Color3f = (1,0,1) +red: Color3f = (1,0,0) +white: Color3f = (1,1,1) +yellow: Color3f = (1,1,0) +build (): void +createGeometry (): void +getColor (): Color3f +getMaterial (): Material +getTransform (): Transform3D +getTransformGroup (): TransformGroup +set (pos:Vector3d, size:double): double +set (pos, dir, size): String +setAllColors (): void +setColor (r:float, g:float, b:float): void +setColor (c:Color3f): void +setTexture (filename:String): void +signal (val:double): double Responsabilidades: --prover mtodos para manipulao de atores
Figura 49. Diagrama de classe da superclasse Ator.

Vida Artificial em Ambientes Virtuais

146

B.3.2. Descrio das Variveis


emissiveColor: Color3f

Cor emissiva (prpria) do material de que constitui o ator.


ambientColor: Color3f

Cor ambiente (uniforme) do material de que constitui o ator.


diffuseColor: Color3f

Cor difusa (fosca) do material de que constitui o ator.


specularColor: Color3f

Cor especular (lisa) do material de que constitui o ator.


shiness: float

Brilho do material de que constitui o ator.


id: int

Nmero nico de identificao do agente proprietrio.


model: String

String descrevendo o modelo utilizado para o ator, para uso em sntese distribuda.
scale: double

Escala do objeto ou ator.


texturefile: String

String com o nome do arquivo de imagem utilizado na textura, para sntese distribuda.
tg: TransformGroup

Grupo princcipal de transformao que opera a geometria do ator.

dir: Vector3d

Vetor direo do ator.

Vida Artificial em Ambientes Virtuais

147

pos: Vector3d

Vetor contendo a posio do ator na cena.

+black, blue, cyan, green, magenta, red, white, yellow: Color3f

Cores pr-definidas para uso dos agentes e atores. B.3.3. Mtodos a Serem Substitudos por Cdigo do Usurio* (*Override required)

createGeometry(): void

O mtodo deve adicionar uma forma geomtrica ao grupo principal de transformao


tg.

B.3.4. Mtodos que Podem ser Substitudos por Cdigo do Usurio** (**Override allowed)

set(position:Vector3d, scale:double): void

Define somente posio e escala do ator na cena.

set(position:Vector3d, direction:Vector3d, scale:double): void

Define posio, direo e escala do ator na cena. B.3.5. Mtodos de Acesso e Controle*** (***Override forbiden)

build(): void

Constri o ator com base na geometria contida no mtodo createGeometry().

getColor(): Color3f

Retorna a cor emissiva do ator.

Vida Artificial em Ambientes Virtuais

148

getMaterial(): Material

Retorna uma referncia para o objeto de material utilizado no ator.

getTransform(): Transform3D

Retorna a matriz de transformao do ator.

getTransformGroup(): TransformGroup

Retorna uma referncia ao n de transformao do ator.

setColor(r:float, g:float, b:float): void

Define a cor emissiva do ator, com base nos valores RGB passados.

setColor(c:Color3f): void

Estabelece a cor emissiva do ator com as componentes do objeto passado.

setAllColors():void

Atualiza as referncias do objeto de material para o conjunto de cores e brilho determinados pelas variveis internas do ator.

setTexture(filename: String): void

Define a figura informada pelo nome do arquivo para ser usada como textura no ator.

setTransparency(transparency: float): void

Define a transparncia do ator para o valor passado, que deve estar entre 0 e 1.

Vida Artificial em Ambientes Virtuais

149

APNDICE C. CONCEITOS DE PROGRAMAO


C.1. Conceitos Fundamentais da Linguagem Java
Para utilizar a plataforma, o usurio dever escrever algum cdigo, e, portanto, dever possuir algum conhecimento da linguagem Java. Um conhecimento elementar do paradigma de POO requerido, devendo o leitor recorrer a qualquer das literaturas supracitadas para dados mais detalhados sobre tal paradigma, bem como sobre a linguagem Java e sua utilizao. Aqui so descritas apenas algumas caractersticas essenciais da linguagem Java, necessrias e suficientes para o entendimento dos segmentos de cdigo que so apresentados nas prximas sees.

A linguagem Java estruturalmente similar a suas linguagens precursoras, C e C++. Nos programas desenvolvidos em Java, C e C++, cada expresso (statement) separada por um ponto-e-vrgula.

Os blocos de cdigos so separados por chaves {}, que definem um conjunto de expresses pertencentes a um mesmo escopo. Expresses conectadas do tipo se... ento, podem ser ligadas em uma s expresso, dispensando o ponto-e-vrgula e a chave, desde que apenas uma avaliao ou operao seja efetuada.

/* Comentrio cdigo exemplo */ public void mtodo(boolean booleanFlag, int soma) { // Escopo do mtodo double valorDouble = (double)soma; // type cast if (booleanFlag) soma+=1; // 1 expresso condicional if (soma==20) { // 2 expresses condicionais // Escopo da expresso condicional soma=0; booleanFlag=false; } // Fim do escopo da expresso condicional } // Fim do escopo do mtodo

Os mtodos so similares a funes em linguagens funcionais como Pascal e Fortran, tendo seus nomes precedidos pelo tipo de acesso, este podendo ser pblico, privado

Vida Artificial em Ambientes Virtuais

150

ou protegido, e o tipo de varivel de retorno, void indicando sem retorno. Aps a declarao do nome do mtodo, entre parnteses, esto as variveis passadas como parmetros, separadas por vrgulas e precedidas pela especificao do seu tipo.

O texto precedido por // ou entre os smbolos /* e */ so considerados comentrios e no so processados pelo compilador.

Os tipos de acesso s classes e mtodos so: pblico (public), privado (private) e protegido (protected), como explicado no captulo anterior. Para se acessar um mtodo em um objeto diferente do local (this) deve-se especificar o objeto referenciado seguido de um ponto e do mtodo evocado no objeto referido. Para indicar mtodos e variveis locais, ou seja, que pertencem ao prprio objeto operado, a palavra reservada this pode ser utilizada para indicar localidade, embora seja desnecessria se o mtodo ou varivel local possuir escopo global e no houver variveis de escopo local que a ocultem.

public void run() { // Chama condicionalmente um mtodo no objeto number if (booleanFlag) number.add(5); // parmetro = 5 // Chama um mtodo local mtodo(); // O mesmo que this.mtodo() // Chama um mtodo alheio outroObjeto.mtodo(); }

Os tipos de variveis em Java so:

Vida Artificial em Ambientes Virtuais

151

Tabela 6. Tipos de variveis na linguagem Java

boolean

byte short int long float double

Varivel binria com valores verdadeiro ou falso (true, false), diferente da representao em C++, no possui converso para outros tipos. Representa resultados de testes lgicos Inteiro de 8-bits , complemento de 2, assume valores de -128 a 127 Inteiro curto de 16-bits complemento de 2, assume valores de -32768 a 32767 Inteiro de 32-bits complemento de 2, assume valores de -2147483648 a 2147483647 Inteiro longo de 64-bits complemento de 2, assume valores de -9223372036854775808 a 9223372036854775807 Ponto-flutuante de 32-bits (IEEE754), representa nmeros com preciso de (+/-)1.4E-45 a (+/-)3.4028235E38 Ponto-flutuante de 64-bits (IEEE754), representa nmeros com preciso de (+/-)4.9E-324 a (+/-)1.7976931348623157E308

No existem especificadores de tipos unsigned, como na linguagem C e C++, todos os tipos inteiros possuem sinal. Um valor especificado sem ponto considerado int como padro, para atribuir esta constante a um long, basta fazer um type cast:

double valorDouble = 718123.1231; long number; number=(long)valorDouble; // (type cast) //number = 718123;

As iniciais dos tipos inteiros e de ponto-flutuante tambm podem ser utilizadas como terminao para indicar o tipo do nmero especificado. Um valor contendo ponto, do tipo 3.14159, considerado double como padro, para atribuir esta constante a um float, basta fazer um type cast ou utilizar a terminao f aps o nmero.

double valorDouble = 718123.1231; long valorLong = 123456L; float valorFloat = 11.11f; float valorFloat2 = (float)valorDouble;

Para indicar valores octais basta anteced-los com um zero (0421), e para valores hexadecimais, com um 0X ou 0x. Exemplo: 0xBCD4.

Vida Artificial em Ambientes Virtuais

152

Uma introduo linguagem de programao Java em portugus pode ser obtida gratuitamente pela Internet em [CESTA SITE].

C.2. Utilizao do API Java3D


O API Java3D fornece classes de manipulao de figuras geomtricas, vetores, objetos compostos e udio espacial, atravs de trs pacotes includos na sua instalao:

javax.media.j3d.* javax.vecmath.* com.sun.j3d.utils.*.

Para utilizar em um cdigo, por exemplo, o pacote de clculo vetorial, deve-se incluir o pacote no incio do programa.

package meu_projeto import java.applet.Applet; import javax.media.j3d.*; import javax.vecmath.* public class MinhaClasse { // Meu cdigo }

No contexto da plataforma, so regularmente utilizados clculos vetoriais para a manipulao dos objetos e agentes. O acesso direto a objetos estruturais do Java3D foi mascarado por mtodos de mais alto nvel que visam facilitar a manipulao dos objetos na cena virtual. Para operar a posio de um agente, sua velocidade e acelerao, basta modificar os vetores correspondentes no objeto.

Vida Artificial em Ambientes Virtuais

153

Tabela 7. Operaes com vetores em Java3D com o pacote vecmath.

void absolute() double angle(Vector3d v1) void add(v1) void add(v1, v2) void cross(v1, v2) double dot(v1) boolean equals(v1) double length() double lengthSquared() void negate() void negate(v1) void normalize() void normalize(v1) void scale(double s) void scale(double s, v1) void scaleAdd(s, v1) void scaleAdd(s, v1, v2) void set(x, y, z) void set(v1) void sub(v1) void sub(v1, v2) String toString()

Deixa todos os componentes do vetor this absolutos Retorna o ngulo em radianos entre o vetor this e v1 Adiciona v1 a this Armazena em this a soma de v1 e v2 Armazena em this o produto vetorial de v1 e v2 Retorna o produto escalar de this e v1 Retorna verdadeiro se this e v1 forem iguais Retorna o comprimento do vetor this Retorna o comprimento ao quadrado do vetor this Nega o valor do vetor this Nega o valor de v1 e armazena em this Normaliza o vetor Normaliza o vetor v1 e armazena em this Multiplica o vetor this pelo escalar s Multiplica o vetor v1 por s e armazena em this this = s * this + v1 this = s * v1 + v2 Define this para os valores double x, y e z Define a coordenada do vetor this a mesma de v1 Subtrai v1, this = this - v1 Subtrai v2 de v1 e armazena em this = v1 v2 Retorna uma string do tipo (x, y, z)

A Tabela 7 sintetiza a utilizao da classe Vector3d do pacote javax.vecmath. Nela, os objetos vn (v1, v2) pertencem a classe Vector3d, e s, x, y e z so variveis numricas do tipo double.

Para realizar operaes mais complexas, que requerem modificao estrutural das formas em tempo de execuo ou construo de atores e representaes dinmicas de agentes, o usurio deve recorrer especificao da plataforma Java3D e sua documentao, disponvel gratuitamente em [SUN SITE].

Você também pode gostar