Algoritmo 4.1 – Algoritmo genético tradicional
4.6 D E S ISTEMAS E VOLUTIVOS A S ISTEMAS “C RIATIVOS ”
Inspirar-se na evolução para a implementação de algoritmos aproximados eficientes, capazes de realizar busca na presença de uma explosão combinatória de candidatos à solução, é algo muito importante quando se consideram os propósitos desta tese. Mas como habilitar a evolução a manipular a criatividade? O que é um sistema evolutivo “criativo”?
Dizer que algo gerado computacionalmente é “criativo” traz consigo ambigüidade e controvérsia. A esse respeito, GERO (1996) diferencia duas fontes de criatividade: um indivíduo pode demonstrar criatividade ao projetar e um projeto pode ter características reconhecidas como criativas. Em seguida, GERO (1996) se concentra na primeira possibilidade, e conclui que um computador está operando criativamente quando explora o espaço de estados de projetos possíveis, além de explorar o conjunto de atributos associados aos projetos individuais. Numa abordagem similar, BODEN (1990) sugeriu que a
criatividade só é possível indo além dos limites da representação, encontrando uma solução nova que simplesmente não poderia ter sido definida por aquela representação.
Outras definições para o projeto criativo incluem a transferência de conhecimento de outros domínios, tendo a habilidade de gerar ‘soluções surpreendentes e inovadoras’ (GERO & KAZAKOV, 1996), ou a descrição de ROSENMAN (1997):
Sob esse ponto de vista, a principal característica que todos os sistemas evolutivos “criativos” têm em comum é a habilidade de gerar projetos inteiramente novos a partir de pouco ou nada, isto é, populações iniciais aleatórias e direcionamento apenas a partir da informação de ordem 0 associada ao valor de fitness de cada indivíduo, o qual, por sua vez, é função explícita ou implícita de objetivos do projeto, formalizados em uma linguagem de alto nível. Tanto a representação como as atribuições paramétricas de cada representação candidata devem então ser alvos da evolução (BENTLEY & WAKEFIELD, 1997; ROSENMAN,
1997).
Outros, mais concisos (BENTLEY & CORNE, 2002; GERO, 1996), definem um
sistema evolutivo criativo como um sistema computacional que usa algum aspecto da computação evolutiva e é projetado para:
• auxiliar o processo criativo humano;
• gerar respostas para problemas que tradicionalmente requerem pessoas criativas para encontrar soluções.
Atingindo esses objetivos, um sistema evolutivo criativo pode também aparentar atuar “criativamente”. Por exemplo, um sistema pode achar soluções altamente inovadoras, ou pode combinar duas idéias bem diferentes e previamente existentes para fazer alguma coisa nova.
Muitos dos avanços na evolução criativa surgiram na área de projeto evolutivo (BENTLEY, 1999). É fácil ver por que isso aconteceu: problemas de projeto de arquitetura e engenharia vêm ganhando mais e mais complexidade, com múltiplos objetivos freqüentemente conflitantes, muitas restrições e especificações de desempenho, e elevado número de parâmetros (PARMEE, 1999). Há tantas regras diferentes, opiniões, preferências e materiais que, para cada novo prédio, há um número praticamente infinito de possíveis soluções de projeto. Explorar essas soluções é parte da difícil tarefa de ser um arquiteto. Conseqüentemente, não é coincidência que as primeiras investidas no projeto evolutivo e explorativo foram feitas por arquitetos. Alguns dos primeiros trabalhos foram feitos por John Frazer, que investiu muitos anos desenvolvendo sistemas de arquitetura evolutivos com seus alunos (FRAZER, 1995). Ele mostrou como a evolução pode gerar muitas formas arquitetônicas surpreendentes e inspiradoras e como estruturas novas e funcionais foram
evoluídas. Seus métodos freqüentemente envolveram, por exemplo, a evolução de autômatos celulares para a proposição de configurações bidimensionais empregadas na geração de exteriores suaves. Na Austrália, o trabalho de Gero e seus colegas arquitetos também investigou o uso da evolução para gerar novas formas arquitetônicas (ROSENMAN
& GERO, 1999). Eles também mostraram como a evolução pode levar à concepção de prédios no estilo de arquitetos renomados (GERO & KAZAKOV, 1996; SCHNIER & GERO,
1996).
Artistas são também entusiastas dos sistemas criativos evolutivos. Os biomorphs de DAWKINS (1991) inspiraram os mencionados trabalhos de TODD & LATHAM (1999) e SIMS
(1999), apresentados no Capítulo 3. Mas é interessante notar que todos esses exemplos de sistemas evolutivos usaram a evolução mais como exploradora do que como otimizadora. Normalmente guiado por um usuário, o sistema é usado para investigar muitas possíveis soluções, como instigador, e para perscrutar conjuntos de possíveis soluções. Apesar de produzir resultados expressivos, tais sistemas sempre receberam críticas no sentido de que a presença de um ser humano para guiar a busca por soluções era a chave para o sucesso desses sistemas. Mas o trabalho de THOMPSON (1995) e KOZA (1992) supriu algumas das primeiras demonstrações de que a evolução era capaz de inovação sem guia humano. Através da instrução ao computador da função desejada na forma de um conjunto de rotinas de avaliação e nada a respeito do projeto desejado, o elemento humano foi removido do ciclo e o poder da evolução exploratória foi demonstrado conclusivamente (BENTLEY & WAKEFIELD, 1995; 1997; BENTLEY, 1996). THOMPSON (1995) também demonstrou o poder
da evolução para gerar novos projetos de circuitos eletrônicos e aplicou as mesmas técnicas para gerar seqüências sonoras. De forma similar, John Koza vem demonstrando há anos o uso de programação genética para buscar novos programas de computadores, levando assim os computadores a se auto-programarem (KOZA, 1992). Vale salientar que SIMS (1993) realizou uma implementação muito similar à programação genética em seus trabalhos, descritos no Capítulo 3, mais precisamente na seção 3.6.1.
Trabalhos como esse iniciaram uma recente mudança no pensamento sobre a evolução: os algoritmos evolutivos não mais são vistos apenas como ferramentas de apoio,
Como uma conseqüência imediata, mais soluções para um dado problema podem ser encontradas mais rapidamente, fornecendo uma fonte de informação sobre tipos de soluções alternativas para o usuário. O resultado é que as soluções que a evolução descobre são freqüentemente muito diferentes das soluções que somos capazes de imaginar.