quinta-feira, maio 05, 2005

Pingos e "Vida Digital"

Ando brincando com programinhas evolutivos. Não, não... nada de algoritmos genéticos ou programação genética. Coisa bem mais simples, mas muito divertida. O objetivo inicial era fazer um objeto capaz de reconhecer algo "bom" e algo "mau" segundo sua própria perspectiva. Fazer ELE decidir o que é bom e o que é ruim pra ele. Para isso criei uns objetos que sabem comer uns aos outros, chamei eles de "Pingos". Cada pingo tem um valor de energia e um número meio doido (chamado "inteligência") para decidir se deve comer o outro pingo ou não. Qdo um pingo acumula energia demais ele se divide e seu valor de inteligência é randomicamente alterado em até 10%. Se ele fica sem energia (morre), eu tiro ele do sistema. Botei os bichinhos pra rodar, com poucas iterações só sobraram os pingos que decidiam comer os pingos mais fracos e ignoravam os maiores. Agora o objetivo é fazer com que os pingos consigam se coligar permanentemente pra ver se eles chegam a montar alguma estrutura mais complexa. Vamos ver. Bom, o objetivo original foi alcançado. Cada pingo sabe reconhecer o que é "bom" e "mau" sob sua própria perspectiva. Como o sistema é baseado em sobrevivência, o conceito de "bom" e "mau" é necessariamente orientada a isso. Items interessantes a se notar: - Se eu "envelheço" os pingos, tirando um pouco de energia a cada ação, o sistema no geral enfraquece e o número de pingos vai diminuindo. Interessantíssimo pq demonstra que a lei de conservação de energia tb pode funcionar digitalmente. A diferença é que é muito simples retirar e adicionar energia de sistema digital. Uma simples cópia de pingos significa que eu adicionei energia no sistema. - No começo, dividir-se era uma operação opcional dos pingos. O que acontecia era que eles iam comendo, comendo e acabava sobrando apenas UM com toda energia do sistema nele. Esse pingo sempre era um dos pingos da primeira geração. Qdo eu obriguei a se dividirem, a quantidade de pingos no sistema se estabilizou e os pingos passaram a ter uma vida média. Detalhe, qdo eu divido o pingo, um deles continua com a idade de antes. A parte interessante aqui é que colocar um número para "desestabilizar" o pingo (obrigando ele a se dividir se ficar muito grande) fez com o que sistema como um todo estabilizasse. É meio óbvio tb, mas é muito interessante. - Não importa muito os números que eu uso ou a conta que eu faço, os pingos sempre se adaptam pra as melhores escolhas. Mas acho q se eu fizer uma conta de decisão melhor, os pingos conseguem evoluir mais rápido. - No fundo no fundo, o mais interessante está sendo observar que leis "naturais" tb valem digitalmente.

Um comentário:

  1. Anônimo11:01 AM

    Ronie,

    fiz programas de simulação digital na IC da facul pra simular epidemias, é bem parecido, mas ao invés de pingos usávamos modelos baseados em vírus ou algum tipo de hospedeiro, tínhamos modelagens bem interessantes, principalmente na parte de evolução, resultados parecidos com os seus. Só pra você sabeer o que fez, chame isso de modelo de evolução probabilística.

    []'s

    ResponderExcluir