Projeto de Aprendizagem ----------------------- 1. Tema: vida artificial 2. Quadro Cognitivo Inicial 2.1. O que sei? --------------- A Vida Artificial (VA, ou "ALife" em inglês) busca reproduzir em meio virtual os processos que são característicos dos seres vivos. Seu objetivo é duplo: ganhar uma maior compreensão sobre a natureza da vida e encontrar novas formas de resolver problemas computacionais. Até agora, as técnicas que consegui identificar como pertencentes ao escopo da VA são os seguintes: * Computação evolutiva: + Algoritmos genéticos; + Estratégias evolutivas; + Programação evolutiva; + Programação genética; + Sistemas classificadores (CS's); * Redes neurais; * Comportamento emergente. Uma das características principais da VA como estratégia para solução de problemas é a abordagem "bottom-up" ("da base para cima"), em contraste à tradicional "top-down" ("do topo para baixo"), muito utilizada na computação em geral, e na Inteligência Artificial (IA) em particular. Em resumo, ao invés de se começar a programar um sistema pelo seu módulo principal (o "topo") e seguir implementando ("descendo até") os módulos de suporte, a VA propõe que se comece o desenvolvimento pelos subsistemas (a "base"), programe-se as interações locais entre eles, e então dê-se espaço para os próprios módulos definirem ("subirem até") o comportamento geral do sistema. Como um exemplo clássico, no BOIDS, um simulador de bandos de passáros, cada indivíduo busca seguir as seguintes três regras: 1 - Dirigir-se à posição média dos indivíduos imediatamente à sua volta; 2 - Manter-se a uma distância mínima dos indivíduos imediatamente à sua volta; 3 - Orientar-se para a direção média dos indivíduos imediatamente à sua volta. Nenhuma dessas regras especifica que todo o conjunto deve se portar de forma coesa; entretanto, quando os pássaros virtuais começam a segui-las, eles naturalmente organizam-se em um bando, mesmo quando iniciam a simulação espalhados aleatoriamente pelo espaço. De uma maneira geral, técnicas de vida artificial são usadas para encontrar soluções satisfatórias para problemas cuja solução analítica exigiria tempo e/ou recursos proibitivos. Muitos desses casos constituem-se de instâncias "grandes" de problemas clássicos, como o problema do caixeiro viajante, busca em bases de dados ou análise combinatorial. Na área de biologia, a VA é usada para testar teorias sobre o desenvolvimento e comportamento de seres vivos, enquanto profissionais das áreas de games eletrônicos e cinema se aproveitam de pesquisas sobre comportameto emergente para atribuir mais realismo a seqüências de animação. Um campo pouco explorado pela VA é a interação homem-máquina. Em geral, pesquisas sobre interfaces mais intuitivas ficam restritas à Inteligência Artificial, com o uso intenso de técnicas de reconhecimento de linguagem natural, representação de conhecimento e assim por diante. Isso é uma pena, porque a VA nos proporciona uma técnica com possibilidades muito promissoras para o campo: os Sistemas Classisficatórios ("Learning Classifier Systems", ou LCS's). Em resumo, são sistemas constituídos por sete partes: 1. Um ambiente, onde o sistema "vive"; 2. Sensores ("receptors") que mantém o sistema informado sobre o estado do ambiente; 3. Dispositivos que permitam ao sistema manipular seu ambiente ("effectors"); 4. Uma lista de regras da forma "se-então", chamadas "classificadores"; 5. Um sistema de alocação de crédito, que atribui prioridades dinâmicas aos classificadores; 6. Um mecanismo para pesquisa de novas regras; 7. Uma memória de trabalho para postagem de mensagens entre os classificadores e os dispositivos de entrada / saída. Não é difícil imaginar um LCS como um "configurador dinâmico" para aplicações: o "ambiente" é o espaço da interface humana, e os classificadores representam opções de configuração da aplicação. Adicione uma forma de o usuário comunicar sua (in)satisfação, e temos um mecanismo para ajustar dinamicamente o comportamento da aplicação -- talvez até de formas que não seriam previstas pelos projetistas. Uma conseqüência muito importante da VA é que, ao tornar os sistemas de computação capazes de se aperfeiçoar por sua própria conta, seu desenvolvimento deve eventualmente tornar supérflua a intervenção humana. Combine essa perspectiva com a do surgimento de inteligências artificiais mais sofisticadas, e não é difícil imaginar um futuro onde os computadores não apenas sejam independentes dos humanos, mas tornem-se muito mais complexos e poderosos do que nós jamais seremos capazes de compreender. De fato, o transhumanismo e outras filosofias variantes (transtopia, extropia, etc) prevêem que o desenvolvimento inexorável de máquinas auto-conscientes e auto-organizadas, portanto capazes de orientar sua auto-evolução, levará ao desaparecimento da espécie humana -- pelo menos na forma como a conhecemos. 2.2. O que vou fazer? - Pesquisa e redação de um relatório sobre as questões levantadas; - Implementação de um sistema de vida artificial que ilustre pelo menos uma das técnicas encontradas, em linguagem funcional (LISP) ou lógica (PROLOG). 2.3. Como vou fazer? - Pesquisa na Internet (fóruns, páginas, entrevistas via e-mail ou chat); - Implementação com ferramentas livres (GPL / Open Source). 2.4. Quando vou fazer? - Levantamento de fontes: ................... até 02/02/2004 - Redação do relatório * Técnicas de implementação: ............... até 29/02/2004 * Problemas cobertos pela área: ............ até 08/03/2004 * Implicações da criação de vida artificial: até 05/03/2004 - Implementação: ............................ até 12/04/2004