Nesta página listaremos os links. Originalmente, estes links refletem o apêndice A do livro,
mas como prometido, estas páginas ficarão em permanente construção. Logo, pretendo
incrementá-las bastante ao longo do tempo.
é importante entender que a Internet é um mundo em constante mutação. Logo, alguns destes
sites podem ter saído do ar quando você acessá-los. Se você descobrir algum novo site
interessante ou que algum dos endereços colocados aqui não são mais corretos, eu terei
prazer em receber suas sugestões por e-mail.
1) Sites
Como quase sempre, quando queremos buscar informações na Internet, podemos começar
procurando na WikiPedia. Este projeto mantém uma página interessante sobre
algoritmos genéticos,
no qual existem informações interessantes, links para outros sites com boas informações
e para informações complementares sobre conceitos nos quais os GAs se baseiam.
Nenhuma referência a material público sobre algoritmos genéticos poderia estar completa
sem mencionar o “Hitchhiker’s Guide to Evolutionary Computation”,
(formato de arquivo para Acrobat Reader) e seu apêndice.
O guia surgiu inicialmente como um guia para o newsgroup comp.ai.genetic, mas que
cresceu de forma espantosa (a última versão acessada já tinha 116 páginas). Ele é organizado
em forma de perguntas e respostas e sua (falta de) organização reflete o fato de ter múltiplos
autores. Entretanto, é muito provável que a resposta para alguma pergunta que você tenha
(ou pelo menos uma dica de onde encontrá-la) seja encontrado no guia.
Existem vários sites que coontêm informações interessantes sobre algoritmos genéticos.
Dois que podemos destacar são:
- O primeiro deles contém um texto introdutório
básico, que vai acrescentar pouco. Entretanto, possui applets que funcionam
perfeitamente no Internet Explorer e que lhe permitem visualizar graficamente o
desenvolvimento da população de um GA que busca resolver um problema de otimização de
uma função multi-modal.
- O outro site contém um
texto básico, mas que contém uma applet na qual podemos ver em tempo real a evolução
de uma população. No caso deste site, a evolução é de estruturas que são codificadas
de forma tradicional, mas que são desenhadas graficamente, dando uma roupagem
interessante ao problema. Este site inclusive permite que se faça o download do
código fonte da applet, o que é uma excelente maneira de se aprender um pouco mais
sobre GAs.
Como neste livro mencionamos outras áreas da computação evolucionária, você pode ter ficado
interessado em uma delas. Como sempre a internet é uma fonte valiosa de recursos e muitas
informações podem ser encontradas nos seguintes sites:
- Site organizado pelo “papa” da programação genética,
John Koza, que contém muita informação interessante, incluindo um capítulo do
seu livro (que é mencionado na nossa bibliografia), teses de doutorado, artigos,
tutoriais e outras informações interesantes.
2) Comunicação com a Comunidade
Um dos grandes mecanismos de comunicação com a comunidade de algoritmos genéticos é o
EC-Digest (antigo GAList), que é um bom lugar para se ver chamadas de congressos,
pedir ajuda ou até auxiliar ao próximo (agora que vocês já estão extremamente proficientes
na área de algoritmos genéticos). A mudança de nome da lista decorre da alteração de
paradigma do conteúdo. Antigamente, nesta lista, só se falava de algoritmos genéticos.
Entretanto, hoje ela evoluiu e lá se fala de programação genética, estratégias evolucionárias
e todos os temas ligados à computação evolucionária como um todo.
Para se inscrever nesta lista, mande um e-mail sem assunto para
este endereço com o texto
subscribe EC-Digest-L . Logo após você receberá um e-mail de confirmação
contendo instruções para se inscrever. Após alguns minutos, você será parte da grande
comunidade mundial da computação evolucionária.
3) Código Fonte
Existem vários sites que oferecem código fonte de implementações de algoritmos genéticos.
Um dos mais completos mantém uma listagem
de cerca de 50 aplicativos em várias linguagens diferentes (C, C++, Java, Eiffel, Fortran,
LISP e Matlab). As normas de utilização dos códigos disponibilizados estão contidas
no próprio site e devem ser respeitadas, obviamente.
4) Produtos Comerciais
Não tenho nenhum interesse comercial em qualquer dos produtos listados aqui (e em nenhum
outro existente). Logo, não considerem a presença ou ausência de um produto nesta lista
como sendo uma recomendação da minha parte. A quantidade de aplicativos que usam GAs hoje
é tão grande que seria impossível fazer uma lista exaustiva de produtos disponíveis no mercado.
Os seguintes estão disponíveis para compra e/ou licenciamento de forma a conseguir
software com apoio profissional. é importante buscar, antes de se decidir por qualquer
um deles, ferramentas que sigam a filosofia open source ou não comerciais, que
listamos na próxima seção, que podem eventualmente ser mais adequadas para sua empreitada.
Entre os softwares existentes, podemos apontar:
5) Produtos Não Comerciais
Existem dezenas de produtos não comerciais cujo código fonte está disponível para uso.
Muitos são bem comentados, outros são bibliotecas de usos. Listamos a seguir uma relação
resumida, alguns dos quais foram originalmente referenciados em (Carvalho, 2003) e no
FAQ intitulado “Hitchhiker's Guide to Evolutionary Computation”.
Os softwares são os seguintes:
- Evolutionary Objects é uma biblioteca escrita em C++ criada pela
equipe Geneura da Universidade de Granada que foi projetada para facilitar a
construção de algoritmos evolutiovos. O sistema roda em uma diversidade de
ambientes, incluindo vários tipos de Linux e Windows 95/NT.
Neste endereço também encontram-se links para um tutorial de uso, além de um paper
e slides usados em uma conferência de 2001 onde o sistema foi apresentado.
- GALib é uma biblioteca escrita em C++ que fornece um conjunto de
objetos para o projeto de GAs. A documentação on-line e o código fonte podem ser
obtidos no link acima. Com GALib, é possível utilizar vários tipos distintos de
seleção, crossover e mutação em várias diferentes representações cromossomiais,
além de usar diversos módulos de população e critérios de parada distintos.
Este software requer um compilador C++ e pode ser rodado em vários sistemas
operacionais distintos, tais como vários sistemas Unix, Mac/OS e DOS/Windows.
- GALOPPS o nome é um acrônimo para Genetic ALgorithm Optimized for Portability and Paralelism.
é um sistema escrito na linguagem C que cria um GA baseado nos princípios do GA
mais simples, descrito no capítulo 4 do nosso livro, e sua idéia básica é criar
um ambiente que os usuários possam ampliar e no qual eles possam aprender.
Para usá-lo, o usuário deve definir uma função de avaliação e quaisquer outras
funções necessárias, usando templates definidos pelo sistema. Pode rodar em uma ou
mais sub-estações, possuindo um modo batch ou um modo gráfico para maior interação
com o usuário. No link onde podem ser obtidas a versão Unix, a versão Windows,
um guia do usuário e uma versão voltada para o uso de threads, adequada para
execução paralela. Este sistema paralelo usa o esquema “island”, descrito na seção
16.3 e pode ser utilizado em um único computador pessoal ou vários computadores
em rede. O sistema já foi testado nos ambientes DOS, Windows, NeXTStep, SunOS, Solaris,
HP-UX, Metrowerks Macintosh.
- GANNET
GANNET (Genetic Algorithm / Neural NETwork) é um pacote de software escrito por
Jason Spofford em 1990 que permite evoluir redes neurais binárias pequenas, de
forma a construir um modelo educacional do que foi discutido no capítulo 11.
Apesar de ser relativamente antigo, ele é interessante pois permite avaliar as
redes sobre vários critérios diferentes de forma relativamente fácil.
- Genesis e variantes
Genesis é um GA baseado em gerações escrito em C por John Grefenstette. Como foi um
dos primeiros pacotes distribuído de forma gratuita e extensa, o Genesis foi muito
influente na popularização dos algoritmos genéticos e vários pacotes disponíveis
atualmente são baseados nele. O
DGenesis é uma implementação distribuída baseada na
versão 5.0 do Genesis para ser implementada em uma rede de workstations, onde cada
sub-população é mantida como uma thread, e todas se comunicam usando sockets.
é programado na linguagem C e pode ser utilizado em estações de trabalho Unix.
- GenET
é um pacote genérico para GAs, no sentido de que mecanismos
independentes de problema foram implementados e podem ser usados não importando o
domínio da aplicação. O pacote permite múltiplas representações cromossomiais distintas, além
de múltiplos operadores para cada representação. O GA foi implementado oferecendo
uma ampla gama de possibilidades de parametrização, como por exemplo no caso do
módulo de população, que suporta modelos que incluem um baseado em gerações, um
steady-state e até mesmo outros, mais avançados. Foi implementado em C++.
- GA Playground The GA Playground é um pacote de ferramentas de propósito
geral no qual o usuário pode definir e rodar seus próprios problemas de otimização.
Foi implementado na linguagem Java e requer um compilador Java, além da JVM instalada
no computador que vai executá-lo. Para resolver seu problema particular, o usuário
só precisa modificar um arquivo denominado GaaFunction, onde se codificará,
em Java, sua função de avaliação.
6) Revistas e Periódicos
Seguem abaixo alguns dos principais periódicos e revistas disponíveis no meio científico
para que você possa se manter a par das novas pesquisas na área de algoritmos genéticos.
Novamente, a presença ou ausência de um periódico nesta lista não é indicativo de qualidade,
posto que a listagem não é, de maneira nenhuma, exaustiva. Ademais os periódicos descritos
nesta seção publicam artigos decorrentes de pesquisas novas e, geralmente, inovadoras, o
que pode fazer com que sejam leitura extremamente difícil para um iniciante na área.
- Evolutionary Computation: contém artigos que descrevem várias áreas de modelos
inspirados em sistemas naturais, com especial ênfase em sistemas evolutionários,
tais como algoritmos genéticos e estratégias evolucionárias.
- IEEE Transactions on Evolutionary Computation: tem como objetivo publicar artigos de
computação evolucionária e áreas correlatas com ênfase nas aplicações práticas para
resolução de problemas na indústria, medicina e outras disciplinas. Dá preferência a
artigos sobre algoritmos genéticos, estratégias evolucionárias e programação genética,
entre outras.
- BioSystems: publica artigos que ligam a informática à biologia e ao pensamento
evolucionário. Suas áreas de interesse são amplas e incluem desde modelagem de
sistemas biológicos complexos até modelos evolucionários da computação.
- Machine Learning: é uma revista que congrega todas as diferentes abordagens do
aprendizado de máquina. Publica artigos em teoria do aprendizado ou na aplicação de
diferentes métodos de aprendizado, entre os quais os GAs, aplicados a várias áreas de
aplicação distintas.
Estes periódicos, assim como muitos outros, estão disponíveis no excelente
Portal de Periódicos
da CAPES.
7) Conferências
Na década de 80, o progresso dos algoritmos evolucionários e sua popularização no meio
científico fizeram com que surgissem as primeiras conferências dedicadas exclusivamente a estes tópicos.
Em termos internacionais, podemos destacar alguns eventos, listados em (Eiben 2003):
- Em 1985 surgiu a International Conference on Genetic Algorithms (1985), uma conferência bienal, que, em 1999, fundiu-se com a Annual Conference on Genetic Programming e formou um dos mais prestigiados eventos da comunidade, a Genetic and Evolutionary Computation Conference (GECCO).
- Em 1992 surgiu a Annual Conference on Evolutionary Programming que se fundiu com a IEEE Conference on Evolutionary Computation e se tornou o Congress on Evolutionary Computation (CEC), evento que ainda mantém seu caráter anual.
- Na Europa surgiu, em 1990, a conferência intitulada Parallel Problem Solving from Nature (PPSN), que desde então mantém seu caráter bienal.
- Existe também uma conferência dedicada apenas aos aspectos teóricos de algoritmos genéticos, intitulada Foundations of Genetic Algoirhtms (FOGA), que também é bienal.
- International Joint Conference on Artificial Intelligence (IJCAI) é um encontro realizado de forma biannual que é organizado de forma independente mas com o apoio das sociedades de inteligência artificial dos países sedes. é uma conferência de vários temas de IA, não só de algoritmos evolucionários, e, consequentemente, pode conter poucos artigos sobre o assunto.
Existem também eventos nacionais que, apesar de não serem dedicados única e exclusivamente
aos algoritmos evolucionários, dão a esta área um grande destaque. Entre eles podemos
destacar:
- Simpósio Brasileiro de Inteligência Artificial (SBIA), que é um evento bienal, que em 2004 chegou à sua 17ª. Edução e que busca ser o forum principal da comunidade de inteligência artificial no Brasil, incluindo nestes os pesquisadores na área de algoritmos evolucionários. Desde os anos 90 o SBIA tem atraído pesquisadores de todo o mundo e hoje em dia possui um comitê de programa internacional, além de ter vários estrangeiros nas posições de palestrantes principais.
- Workshop Brasileiro de Teses e Dissertações em Inteligência Artificial (WTDIA), evento bienal e em 2004 realizou sua segunda edição. Como seu próprio site oficial afirma, o WTDIA tem como objetivo principal a existência de um forum de discussão para os trabalhos de tese e dissertações em Inteligência Artificial, promovendo a integração e cooperação dos pesquisadores nesta área e propiciando maior visibilidade dos trabalhos em andamento para a comunidade acadêmica e industrial. Pretende ainda propiciar maior participação de alunos de pós-graduação no evento, e estimular a melhoria da qualidade dos trabalhos de teses de Doutorado e de dissertações de Mestrado da área de Inteligência Artificial
- Simpósio Brasileiro de Automação Inteligente (SBAI), que é um evento bianual, promovido pela Sociedade Brasileira de Automática, reunindo pesquisadores da área de automação que utilizam técnicas de inteligência artificial e áreas correlatas. Várias aplicações interessantes de algoritmos evolucionários e outras técnicas computacionais podem ser vistas neste evento.
é importante ressaltar que nenhum dos eventos nacionais é dedicado exclusivamente a
algoritmos evolucionários e é possível que, em alguma edição, haja muitos poucos artigos
ligados a EA. Entretanto, pelo seu caráter científico e tecnológico, estes são eventos
que sempre interessarão a uma pessoa verdadeiramente dedicada à área.
8) Informações biológicas
No capítulo 2 nós tentamos oferecer uma introdução simples e compacta sobre os conceitos
biológicos usados como inspiração dos algoritmos genéticos. Devido ao fato do público alvo
deste livro ser composto de informatas, e não biólogos, esta seção ficou bastante
incompleta. Assim, listamos aqui alguns sites que podem ajudar àqueles que queiram
complementar estas informações.
Para compreender bem a teoria da evolução, o surgimento da vida e até mesmo algumas
teorias contrárias à de Darwin, um bom site para é este aqui.
Outro site que pode lhe ajudar bastante é
este.
Para entender melhor a história do descobrimento do DNA, sua função e como ele se relaciona
com as proteínas, um excelente site é este aqui,
fonte inclusive de parte da informação listada no capítulo 2.
A Wikipedia, sempre uma fonte interessante de subsídios, pode lhe fornecer informação
sobre os cromossomos, no site de endereço dado aqui.
A sua compreensão sobre o DNA e o dogma central pode ser ampliada através da informação
contida neste site.
Lá também estão armazenadas informações sobre o RNA, mutações e outros conceitos
biológicos interessantes.
Outro ponto importante é a associação entre genótipo e fenótipo. Algumas informações
interessantes podem ser encontradas aqui e, como sempre,
na Wikipedia, neste endereço e
neste.
Estes sites são apenas uma sugestão para uma introdução rápida. Muitos outros existem,
em todos os níveis imagináveis de profundidade. Use as capacidades do seu buscador
favorito para encontrar muito mais informação disponível na internet.
Template provided by WEBalley