1.3.1.1 Core War
Core War é um jogo de computador programado no qual dois ou mais programas de computador competem entre si na memória do computador. O objetivo de cada programa é causar a interrupção da execução dos demais programas. Os jogadores criam seu próprio programa de computador usando uma linguagem semelhante à linguagem de programação Assembly, e os inserem para competir. O desenvolvimento do conceito de programas de computador auto-replicantes na memória do computador representou um passo importante para o desenvolvimento de plataformas mais complexas de estudo da evolução biológica, como o sistema Tierra e o Avida [152].
1.3.1.2 Sistema Tierra
O sistema de simulação computacional Tierra foi desenvolvido no início da década de noventa por Thomas Shelby Ray Júnior, mais conhecido como Tom Ray, um ecologista estadunidense. O sistema Tierra consiste em um conjunto de programas de computador (denominados, no sistema Tierra, como organismos digitais) que competem pelos recursos do
25
sistema, como tempo de processamento, denominado energia, e memória, denominada recurso da CPU. Os organismos digitais podem evoluir mediante replicação, mutação, recombinação, e seleção (competição por energia e recurso) [151].
O Tierra é utilizado para o estudo de processos básicos de evolução e dinâmica ecológica. Nos anos iniciais de seu desenvolvimento, o sistema Tierra ganhou destaque nos meios de comunicação devido a ser o primeiro sistema a utilizar organismos digitais para o estudo da evolução biológica [151].
Críticas ao sistema incluem aumento limitado da complexidade informacional mantida pelos organismos, e questionamento sobre a validade do método para representar características do sistema evolutivo natural [141, 142].
1.3.1.2 Plataforma Avida
A plataforma Avida foi desenvolvida em 1993 por Charles Ofria e C. Titus Brown. Ela ainda está em desenvolvimento na Universidade do Estado de Michigan, por Charles Ofria, e no Instituto de Tecnologia da Califórnia, por Claus Wilke. Ela é um software utilizado para realizar experimentos de evolução com programas de computador auto-replicantes - organismos digitais semelhantes ao sistema Tierra - oferecendo mais funcionalidades que o sistema Tierra [143].
Entre as características apresentadas pela plataforma Avida, encontram-se [143]:
01. Possibilidade de registrar dados sobre a população;
02. Diferentemente do sistema Tierra, os organismos são executados simultaneamente;
26
03. Possui um sistema de eventos para agendar ações a serem executadas ao longo do experimento;
04. Os organismos digitais podem ser configurados de diversas formas;
05. Possui um modo de análise para processar os dados após o experimento.
A plataforma Avida é composta por três módulos [143]:
01. Núcleo da plataforma: o qual mantém a população de organismos digitais (cada organismo com seu genoma, hardware virtual etc.); um ambiente que mantêm as reações e recursos com os quais os organismos interagirão; um gerenciador para alocar o tempo da CPU destinado a processar os organismos;
02 Interface gráfica de comunicação com o usuário (GUI): por meio do qual o pesquisador pode configurar o experimento;
03 Ferramentas de análise: inclui um ambiente de teste de organismos fora da população; ferramentas para reconstrução filogenética; análise de fitness e mutações; entre outras.
Um quarto módulo está em desenvolvimento, o qual oferecerá uma documentação de ajuda interativa.
Os organismos do Avida podem gerar outros organismos (replicar) e definir o genoma de cada organismo gerado. Cada organismo tenta fazer uma cópia idêntica do genoma dele, e a plataforma Avida insere aleatoriamente o organismo gerado na população, matando o organismo que ocupava previamente aquela posição [143].
O genoma dos organismos é um conjunto de símbolos (instruções parecidas com as instruções da linguagem de programação Assembly) os quais serão processados pela CPU.
27
O hardware virtual da plataforma Avida é estruturado conforme a ilustração:
Ilustração 5 - Componentes do hardware virtual Avida [143].
Registradores: O núcleo do hardware virtual é a CPU, a qual processa cada instrução dos genomas e modifica os estados dos seus componentes. Operações matemáticas, comparações e outras operações podem ser feitas em três registradores, AX, BX, e CX. Esses registradores armazenam e manipulam os dados em número de 32 bits.
Pilhas (Stacks): A CPU pode armazenar dados em duas pilhas. Somente uma pilha pode ser acessada por vez, podendo ser trocada qual está ativa.
Memória: a memória é carregada com o genoma do organismo e a execução começa na primeira instrução da memória e prossegue linearmente até a última.
28
Tecnicamente essa memória é considerada circular, pois, quando a última instrução é executada, a CPU volta a executar a primeira instrução novamente, formando um laço.
Cabeças (Heads): são essencialmente ponteiros para localizações da memória. Entre as quatro cabeças existentes no Avida, somente o ponteiro de execução existe na arquitetura padrão de computadores. Para poder se replicar, um organismo precisa conseguir ler instruções da memória e escrever elas em outra posição da memória. A cabeça de leitura aponta para a posição da memória na qual os dados serão lidos, e a cabeça de escrita aponta para a posição da memória na qual os dados serão escritos. A cabeça de controle de fluxo é usada para saltos e execução repetida de instruções (loop). Os valores das quatro cabeças podem ser manipulados pelos organismos via instruções.
Entrada e saída de dados: o hardware virtual tem um buffer de leitura e um buffer de escrita, os quais são utilizados pelos organismos para interagir com o ambiente. Os organismos podem ler um ou vários números do buffer de leitura, e escrever os resultados no buffer de saída. Essa interação com o ambiente exerce uma função crucial na evolução dos organismos da plataforma Avida.
As instruções da linguagem genética do Avida são semelhantes às instruções da linguagem de programação Assembly, porém várias linguagens de programação podem ser utilizadas na plataforma. Essas linguagens de programação são formadas por grupos de instruções relacionadas (referidos como ―instruction sets‖) existentes entre as centenas de instruções oferecidas pela plataforma [143].
Cada instrução no genoma tem sua função determinada somente por ela e pelas instruções próximas. O grupo de instrução padrão da plataforma é composto por vinte e seis instruções [143].
Artigos científicos usando a plataforma Avida foram publicados em revistas como Nature, Science e PLoS [144-148].
29
Ilustração 6 - Exemplo do código de um organismo digital na linguagem genética Avida [141].
Ilustração 7 - procedimento realizado por um organismo digital ao se reproduzir: alocar memória e copiar o genoma dele (dividir) para a memória alocada [141].
30 1.3.1.3 EvolSimulator
O programa EvolSimulator permite a simulação da evolução de um genoma completo, com mudanças na sequência de nucleotídeo ou de proteína, e no conteúdo gênico. Um dos principais objetivos do EvolSimulator é testar as hipóteses de evolução genômica sob a luz da transferência lateral de genes. A configuração do programa é feita por meio de diversos parâmetros oferecidos pelo mesmo, precisando o pesquisador escolher um conjunto deles para iniciar o experimento [149].
1.3.1.4 Breve
A plataforma Breve permite ao usuário definir o comportamento de agentes em um ambiente 3D, e observar como eles interagem. Ela inclui suporte para visualização gráfica do ambiente, simulação de leis físicas, e uma linguagem script para programação. As simulações podem ser escritas tanto por uma linguagem script, quanto pela linguagem Python. Ambas as linguagens podem ser usadas para simular diversos tipos de ambientes, como criaturas virtuais, ecossistemas virtuais, e simulações de biologia molecular [150].
31