3.4 Sistema evolutivo
3.4.1 Componentes e o processo
O sistema evolutivo de projeto, apesar de focar no processo de projeto de arquitetura, adota os mesmos componentes e a estruturação dos algoritmos evolutivos da computação evolutiva. Sendo assim, os principais componentes que o compõem são a representação dos indivíduos, as populações, a função de avaliação (fitness function), os mecanismos de seleção e os operadores de diversidade (mutação e recombinação) (GERO, 1999; BENTLEY, 1999). Cada um desses componentes já foi definido conceitualmente no capítulo sobre computação evolutiva, no item “os componentes”, não sendo necessária a repetição dos conceitos neste momento, mas sim a aproximação deles com o processo de projeto através de comparações e exemplificações.
Uma das principais dificuldades encontradas no processo de implementação dos algoritmos evolutivos como um método de projeto está relacionada com a representação do elemento arquitetônico, do edifício, de uma malha urbana ou qualquer outro elemento passível de ser projetado. Para esses diferentes tipos de projetos, a denominação “indivíduo” será adotada como forma de generalização e padronização durante o texto, correspondendo inclusive ao termo utilizado na computação evolutiva. A representação assume um papel fundamental em todo o processo, pois a adoção de uma codificação desfavorável pode gerar indivíduos infactíveis quando ocorrer a aplicação dos operadores de diversidade durante o processo de execução do algoritmo (BENTLEY, 1999). Assim, o indivíduo será representado abstratamente através de uma codificação utilizando o modelo cromossômico como referência. Dessa forma, cada característica do indivíduo será definida por um gene, e o conjunto deles irá compor um cromossomo responsável por representar o indivíduo como um todo, a exemplo da codificação do ser humano através do DNA (Figura 3.9).
Figura 3.9 – Representação através da codificação, adotando o DNA como referência.
Fonte: elaboração própria.
A representação pode envolver um processo de codificação, ou seja, a utilização de caracteres ou valores que apenas o representam simbolicamente como no caso da representação binária, não apresentando uma relação direta com os parâmetros, apenas uma relação abstrata. Outra possibilidade é a representação sem a codificação, sendo utilizados os números inteiros para representar diretamente as características do indivíduo, evitando o processo de mapeamento e consequentemente a constante necessidade de codificação e decodificação. Assim, em um processo de projeto, as características de um indivíduo podem corresponder diretamente ao seu valor de dimensão e localização espacial como exemplificado na Figura 3.10.
Figura 3.10 – Exemplo de codificação de um indivíduo, gerando sua representação cromossômica.
O indivíduo deve ser constituído por um ou mais componentes cujas características correspondem a valores variando entre um mínimo e máximo, sendo necessário também definir as possíveis relações geométricas entre cada um deles, configurando um sistema parametrizado. Assim, o indivíduo será definido pela sua estrutura, sendo identificados apenas os padrões estruturais que os compõem, fornecendo um conhecimento geral sobre o seu potencial configurativo formado por atributos geométricos (OXMAN, OXMAN; 2010). A estruturação do indivíduo através da parametrização dos seus componentes, das suas relações, e da definição dos intervalos mínimo e máximo para cada variável, possibilitará criar diferentes arranjos e combinações entre os valores, gerando consequentemente indivíduos diferentes (Figura 3.11).
Figura 3.11 – Diferentes indivíduos obtidos a partir da variação dos parâmetros de uma mesma.
Fonte: elaboração própria.
Assim, a população inicial que dará início ao algoritmo evolutivo será composta por indivíduos escolhidos randomicamente entre as diferentes possibilidades de sua configuração, sendo o número de indivíduos definido pelo projetista. A partir dessa população, seguindo como referência a estrutura do algoritmo genético, é iniciado o processo de avaliação de cada indivíduo, sendo verificado o grau de satisfação que cada um atinge conforme o atendimento dos parâmetros definidos como ideais. Essa avaliação ocorre através da função de avaliação (fitness
function), que deverá conter na sua formulação as restrições e condições funcionais necessárias às
características desejadas no indivíduo ideal. A função de avaliação deverá ser definida através de uma função matemática ou por valores específicos adotados como referência. Essas condições
funcionais podem ser relacionadas ao conceito de descrição funcional definido por Mitchell (2008), e que está relacionado com o aspecto da função do objeto e não com as suas características físicas formais. Dessa forma, a partir da descrição funcional é possível estabelecer uma relação topológica e gerar uma formulação matemática que o represente, possibilitando uma exploração mais ampla no espaço de soluções devido às diferentes configurações formais geradas nesse processo. Assim, ao ser aplicada à função de avaliação para cada indivíduo da população através dessa formulação matemática, o valor obtido será comparado aos estabelecidos como parâmetros, atribuindo um valor de fitness que será utilizado como uma nota para a classificação de cada indivíduo. Essa classificação será utilizada no processo de seleção daqueles mais aptos que irão compor a próxima geração.
Os operadores de diversidade, a mutação e a recombinação, irão contribuir efetivamente para a manutenção da diversidade necessária para que ocorra a competição entre os indivíduos durante o processo evolutivo. A mutação irá modificar aleatoriamente (conforme critérios definidos algoritmicamente) um gene do cromossomo de um indivíduo, resultando em uma alteração fenotípica, ou seja, um indivíduo com característica diferente do original (Figura 3.12).
Figura 3.12 – A geração de um novo indivíduo a partir da mutação definida previamente para ocorrer no terceiro gene do cromossomo.
Fonte: elaboração própria.
diferentemente da mutação, ele manterá certo grau de familiaridade entre os indivíduos, uma vez que são realizadas apenas trocas entre pedaços dos cromossomos, sendo transferidas as características de um indivíduo para outro (Figura 3.13).
Figura 3.13 – A geração de novos indivíduos a partir da recombinação.
Fonte: elaboração própria.
O termo cruzamento nos algoritmos evolutivos corresponde exatamente à recombinação entre os trechos dos cromossomos, ou seja, o crossover, o que torna impossível a obtenção de indivíduos com uma composição genotípica igual aos dos seus “pais”. Segundo a teoria de Gregor Mendel, é possível obter indivíduos com a mesma estrutura dos genes dos seus
antecessores, como pode ser visto no Quadro 3.2 (neste caso foi considerada apenas uma característica e a sua variação para gene dominante “A” e recessivo “a”).
Quadro 3.2 – Formação de indivíduos “filhos” genotipicamente iguais aos pais considerando apenas uma característica denominada A .
Cruzamento 1 Cruzamento 2 Cruzamento 3 Cruzamento 4
AA aa Aa Aa Aa aa aa aa
Aa AA Aa aa
Aa Aa Aa aa
Aa Aa aa aa
AA aa aa aa
Fonte: elaboração própria.
Os algoritmos evolutivos simulam essa situação realizando a cópia de alguns indivíduos “pais” para a próxima geração, por isso existe a definição de uma taxa de crossover, sendo aplicada a recombinação em apenas uma porcentagem da população (conforme explicado no Capítulo 2 no item 2.2.3 componentes). Segundo Bentley (1999), o crossover é utilizado para gerar 70% dos indivíduos “filhos” e os 30% restantes são simplesmente clones dos seus pais. Assim, após a aplicação dos operadores de diversidade, os novos indivíduos serão avaliados e selecionados para compor a próxima geração, completando um ciclo denominado iteração, que será repetido várias vezes até obter o melhor indivíduo, ou quando atingir um tempo pré- determinado, ou um número de gerações definido previamente (BENTLEY, 1999; TIERNEY, 2007; HENSEL et al., 2010) (Figura 3.14).