O endossimbionte gerado pela manipulação substitui a solução original ( ) na população atual se dominar ou se é uma solução não dominada
considerando as soluções no repositório . Caso seja soncisderada uma solução não dominada em relação à , o arquivo é atualizado.
3. Algoritmos Evolucionários Híbridos
Normalmente, um algoritmo evolutivo clássico está associado à ideia de evoluir uma única população através de várias gerações usando operações de mutação e cruzamento. Uma das dificuldades na utilização desse tipo de algoritmo é a possibilidade de ocorrência de convergência em mínimos locais de forte atração. Ainda que operadores de mutação possam remediar essa situação, não há como garantir que: a) todos os mínimos locais foram realmente visitados e b) o mínimo local corrente de convergência é o mínimo global.
Os dois pontos citados anteriormente exigem cuidados avanços para que sejam superados ou remediados, pelo menos experimentalmente e de forma estatística. Uma forma de buscar alternativas para diminuir os efeitos de convergência para mínimos locais é variar a região de busca – aplicar técnicas de explotação.
Em geral, as alternativas encontradas envolvem o uso de diferentes tipos de operadores de mutação, ou maneiras cada vez mais elaboradas de realizar operações de cruzamento. Outra alternativa usual é considerar critérios adicionais para corrigir ou direcionar a avaliação dos cromossomos e encaminhá-la para uma direção julgada mais adequada à busca. Informações a
priori do tomador de decisão, por exemplo, podem ajudar a decidir qual entre dois ou mais
objetivos seria o mais importante. Todavia em função do problema abordado, essa alternativa de configurar um viés eficaz pode ser de difícil implementação.
Os algoritmos evolucionários híbridos são naturalmente mais habilitados à introduzir diversidade no processo evolucionário por permitir a combinação de diferentes métodos de composição e mesmo de busca nas configurações em evolução. Na literatura, podem ser encontrados diversos exemplos desses algoritmos, cujos os primeiros, segundo Fleurent e Ferland (1996) foram introduzidos por Mühlenbein, Gorges-Shleuter e Krämer (1988) e Davis (1991). Cabe salientar que o termo híbrido na literatura dos algoritmos evolutivos é utilizado para descrever abordagens que utilizam alguma estratégia não biologicamente justificada. Um exemplo muito comum de hibridização é a substituição dos operadores de mutação, por alguma estratégia de busca, quando o algoritmo genético passa a ser chamado algoritmo memético. Outros métodos podem conter técnicas de aprendizado de máquina, uso de solvers, heurísticas etc.
Todos os algoritmos que buscam pelo extremo de uma função de custo, em média, atuam da mesma forma, para o conjunto de todas as funções de custo possíveis (WOLPERT e MACREADY, 1997). Em seu trabalho, os autores ilustram que se o algoritmo supera o algoritmo em algumas funções de custo, então genericamente falando, devem existir exatamente tantas outras funções onde o algoritmo supera o algoritmo . Desse modo, na perspectiva da resolução de problemas, seria difícil formular um algoritmo de otimização universal, que pudesse resolver todos os problemas com o mesmo desempenho. O caminho para a resolução de problemas práticos poderia estar então na hibridização dos métodos existentes. Desde a inicialização da população à geração dos seus descendentes, muitas são as oportunidades de incorporar outras técnicas/algoritmos etc. ao algoritmo evolutivo (GROSAN e ABRAHAM, 2007).
Nesse capítulo será discutida a taxonomia dos algoritmos evolucionários híbridos, através da arquitetura fornecida por Preux e Talbi (1999), que é dividida em duas categorias principais, formadas pelos algoritmos híbridos sequenciais e pelos algoritmos híbridos paralelos. Por fim, é fornecida uma pesquisa sobre abordagens evolutivas híbridas encontradas na literatura.
3.1. Arquitetura dos Algoritmos Evolucionários Híbridos
Como mencionado anteriormente, a justificativa para o uso da hibridização dos AE está associada a ideia de retardar o processo de uniformização da população, evitando assim a convergência prematura em um ponto de forte atração. Encontramos na literatura diversos modelos de hibridização que podem ser utilizados para essa tarefa.
A Figura 12 adaptada de Grosan e Abraham (2007), ilustra algumas arquiteturas genéricas de diversas formas de hibridização, onde Problema se refere a qualquer tipo de problema de otimização ou mesmo função de aproximação e Paradigma Inteligente se refere a qualquer técnica computacional inteligente, como busca local, algoritmos de otimização etc. O modelo formado pela Figura 12 ( ) e ( ) representa uma arquitetura concorrente, na qual todos os componentes são necessários para o seu correto funcionamento. Na Figura 12 ( ), o algoritmo evolutivo atua em uma etapa de pré-processamento enquanto o paradigma inteligente é usado para afinar as soluções encontradas após essa etapa. Na Figura 12 ( ) o algoritmo evolutivo e o paradigma inteligente tem os seus papeis invertidos. A Figura 12 ( ) traz um sistema híbrido transformacional, onde o algoritmo evolutivo é usado para afinar o desempenho do paradigma inteligente, ao mesmo tempo em que, o paradigma inteligente é usado para otimizar o desempenho do algoritmo evolutivo, sendo que a informação é trocada entre ambas as técnicas durante o processo de busca. A Figura 12 ( ) apresenta um modelo onde o paradigma inteligente pode ou não ser aplicado a solução encontrada pelo AE.
Preux e Talbi (1999), sugere uma classificação mais detalhada, onde destaca duas classes principais de algoritmos híbridos, os algoritmos híbridos sequenciais e os algoritmos híbridos paralelos.
3.1.1. Algoritmos Híbridos Sequenciais
Basicamente, um algoritmo híbrido sequencial é formado por um conjunto de algoritmos aplicados um após o outro, cada um utilizando a saída do anterior como sua entrada, num esquema semelhante ao de uma linha de montagem (PREUX e TALBI, 1999). Esse modelo tem como objetivo a explotação de um mínimo local já atingido, afim de encontrar dentro dele, o ponto mais eficiente possível. Uma tarefa que é experimentalmente melhor desempenhada com o uso de uma busca local.
A Figura 13 exemplifica alguns esquemas de hibridização sequencial. Na Figura 13 (a), uma busca Tabu é utilizada para otimização da solução encontrada pelo AE. Na Figura 13 (b), um algoritmo guloso é aplicado inicialmente, objetivando fornecer uma população inicial mais eficiente ao AE. Na Figura 13 (c) os dois primeiros esquemas são combinados. É preciso mencionar que é possível a existência de um esquema com vários AE enfileirados.
Figura 13: Hibridização Sequencial (PREUX e TALBI, 1999).
Na proposta apresentada por Lin, Kao e Hsu (1991), o algoritmo parte de um simulated
annealing, e utiliza AGs para otimizar as soluções encontradas. Em Esbensen (1994), dois AEs
são enfileirados com o objetivo de resolver o problema do layout de macro-células. O algoritmo apresentado em Mahfoud e Goldberg (1995), utiliza simulated annealing para explotação da população fornecida por um AE, introduzindo um método paralelo de simulated annealing. Em seu trabalho, Preux e Talbi (1999) ainda fornece vários exemplos de algoritmos híbridos sequenciais.
3.1.2. Algoritmos Híbridos Paralelos
Dependendo do tamanho do problema, o uso de um modelo híbrido paralelo pode se mostrar mais conveniente. É preciso, porém, ter cuidado para não confundir a mera implementação paralela de AEs sequenciais com a implementação de um AE paralelo (PREUX e TALBI, 1999). No primeiro caso, as características originais dos algoritmos são preservadas, enquanto, no segundo, a estrutura paralela formada tem um comportamento diferente daquele encontrado no algoritmo do qual ele teve origem.
Uma das estratégias mais comuns em se tratando da hibridização de um AE é a utilização de alguma estratégia de busca local como um de seus operadores, substituindo operadores mais simples, que não se guiam por qualquer outra informação além da própria
fitness do indivíduo, por uma estratégia de busca. Alguns exemplos de busca utilizadas são: path-relinking, busca tabu, hill-climber e 2-opt. Segundo Preux e Talbi (1999), esse tipo de
hibridização é chamada de hibridização paralela síncrona, pois os diferentes tipos de algoritmos executam de maneira precisamente sincronizada.
Outro tipo de hibridização, chamado hibridização paralela assíncrona, também se destaca entre os pesquisadores do tema. Sua ideia básica é a cooperação entre vários algoritmos que executam uma investigação do espaço de busca (ou parte dele), cada um ajudando os demais, através do envio de informações, com o objetivo de facilitar a descoberta da solução ótima. Intuitivamente, a execução de um esquema desses deve produzir um resultado ao menos tão bom, quanto aquele produzido por apenas uma das estratégias em separado (PREUX e TALBI, 1999).
A hibridização paralela assíncrona, pode ainda ser divididas nas classes:
Homogênea: Todos os algoritmos que compõem o sistema são do mesmo tipo. Heterogênea: Diferentes algoritmos são utilizados para compor o sistema. As operações realizadas por esses algoritmos são classificadas em três diferentes contextos de cooperação:
Global: Todos os algoritmos investigam a mesma região do espaço de busca, como o objetivo de cobrir a região de maneira mais minuciosa. Um exemplo de um algoritmo evolutivo assimétrico híbrido desse tipo é encontrado em Crainic, Nguyen e Gendreau (1997), onde uma população é assimetricamente atualizada pela implementação paralela de um algoritmo de busca tabu. As melhores soluções encontradas pela busca tabu paralela, produz uma população elite. Tal estratégia permite a cooperação de algoritmos com diferentes pontos de vista sobre o problema, realizando a exploração do espaço de busca, a partir de seus próprios métodos.
Parcial: O problema é a ser resolvido é dividido em subproblemas, cada um possuindo seu próprio espaço de busca. Cada algoritmo então se dedica a investigação de um desses subespaços. Esses subproblemas estão ligados, em termos gerais, por restrições impostas a solução ótima encontrada por cada algoritmo. Desta forma, os algoritmos comunicam-se em razão a tais restrições, produzindo uma solução viável para o problema.
Funcional: Cada algoritmo resolve um problema diferente. Bachelet et. al. (1998) fornecem um exemplo desse tipo de estratégia, para resolução do problema do quadrado de alocação. Enquanto uma busca tabu paralela é utilizada para resolver o problema do quadrado de alocação, um algoritmo
genético se encarrega da tarefa de diversificação, formulada como um problema de otimização.
A Figura 14 sintetiza a classificação dos algoritmos evolutivos híbridos sugerida por Preux e Talbi (1999). O Algoritmo proposto neste trabalho pode ser classificado, segundo essa estrutura como um algoritmo híbrido evolutivo paralelo assíncrono de estratégia global.
Figura 14: Classificação dos Algoritmos Híbrios Evolutivos (PREUX e TALBI, 1999).
3.2. Revisão dos Algoritmos Evolutivos Híbridos na Literatura 3.2.1. Genertical Swarm Optimization (GSO)
Uma nova técnica de hibridização é proposta por Grimaldi, Grimaccia, et. al. (2004), objetivando manter uma forte cooperação entre as abordagens AG e PSO, durante toda a execução do algoritmo. A cada nova geração, a população é dividida em dois grupos, sendo o primeiro atualizado pelo AG e o segundo pelo PSO. Em seguida, os grupos são recombinados em uma única população atualizada, que será outra vez dividida aleatoriamente em duas partes, para uma nova execução dos operadores do AG ou do PSO, e assim continua até que a condição de parada seja atingida. O processo de atualização, segundo seus autores, pode ser entendido, imaginando que parte dos indivíduos é substituída pela próxima geração por meio do AG, enquanto a parte restante, permanece a mesma da geração anterior, mas se move pelo espaço das soluções através do PSO.
O parâmetro que conduz a execução do GSO é chamado coeficiente de hibridização (CH), e expressa a porcentagem da população que será atualizada em cada iteração pelo GA. Desse modo, quando = 0, a abordagem é puramente PSO, quando = 1, puramente AG, e quando 0 < < 1, essa será a porcentagem da população evoluída pelo AG, enquanto o restante será atualizado pelo PSO.
3.2.2. Algoritmo Híbrido Baseado em PSO-GA
Na abordagem híbrida proposta por Shi, Liang, et. al (2005), um algoritmo evolucionário e um PSO são executados simultaneamente. Em seguida indivíduos são selecionados para troca após um certo número de iterações. Os passos principais do algoritmo são descritos abaixo:
(1) Inicialize os subsistemas de AE e PSO. (2) Execute o AE e o PSO simultaneamente.
(3) Memorize a melhor solução como a solução final e pare se o melhor individuo em um dos subsistemas satisfaz o critério de parada.
(4) Execute o procedimento híbrido se o número de gerações puder ser dividido exatamente pelo número de iterações determinado. Selecione indivíduos de ambos os subsistemas aleatoriamente para as operações de troca, de modo que indivíduos com melhor fitness tenham maior probabilidade de serem escolhidos. Vá para o passo 2.
O PSO utilizado no trabalho apresenta um modelo tradicional, baseado em Eberhart e Kennedy (1995). Como alternativa de AE, os autores propõem ainda um novo AG chamado
variable population-size genetic algorithm (VPGA), no qual o tamanho da população pode
variar de uma geração para a outra, com o objetivo de equilibrar a diversidade e continuidade da população.
O algoritmo proposto se baseia na ideia que os pais não morrem imediatamente após se reproduzirem e tampouco podem viver eternamente. Desse modo, cada indivíduo recebe uma expectativa de vida, por meio da qual é calculada a probabilidade de ele ser eliminado (morrer) em uma determinada geração. A _ [ ] é definida como a probabilidade dos indivíduos sobreviverem por gerações. Considerando uma expectativa de vida igual a 3, por exemplo, a probabilidade de morte para _ [0, 1, 2, 3] seria 0, 0.3, 0.7 e 1, respectivamente. O AG proposto ainda implementa o que seus autores denominam “processo de guerra/epidemia”. O tamanho da população cresce até atingir um determinado limite, quando
um evento reduz o número de indivíduos ao seu tamanho inicial, num processo que poderia ser comparado a erradicação causada por uma guerra ou a expansão de uma epidemia. Os principais passos de execução do VGPA são resumidos diagrama de fluxo da Figura 15.
Figura 15: Diagrama de fluxo do VPGA (SHI, LIANG, et al., 2005).
3.2.3. ANGEL
O algoritmo proposto por Tseng e Liang (2006), combina o uso das abordagens colônia de formigas, algoritmo genético e busca local em uma única estrutura. De início, a ACO é utilizada para fornecer uma população inicial de boa qualidade ao AG, que realimenta a ACO com feromônio atualizado através de suas operações de mutação e cruzamento. A ACO utiliza o feromônio atualizado pelo AG, para explorar o espaço de busca e produzir uma população ainda mais promissora, que será novamente repassada ao AG na próxima etapa. A busca local é aplicada sempre que uma nova solução é encontrada pelo ACO ou AG, para exploração de seus vizinhos.
Os autores introduzem em seu AG uma nova heurística de cruzamento chamada eugenic
crossover ou (E-crossover), por meio da qual cada indivíduo da população tem uma
probabilidade pré-definida de realizar cruzamento com a melhor solução encontrada até o momento, objetivando guiar o processo evolutivo para boas regiões do espaço de busca. A escolha de um valor ruim de probabilidade, no entanto, pode conduzir o algoritmo a uma conversão prematura.
A busca local utilizada no trabalho é uma variante da 2-opt (CROES, 1958), que implementa as heurísticas lista de candidatos (JOHNSON, ARAGON, et al., 1989) e don’t look
bit (BENTLEY, 1992). Dito de maneira resumida, o método 2-opt testa trocas válidas entres
pares de arestas, substituindo a conexão existente pela nova conexão, sempre que a troca resultar em uma melhoria da solução atual. O processo é finalizado quando não existirem mais opções de troca que resultem em melhoria. Como o sentido das conexões pode ser invertido durante o processo, é presumida a existência de distâncias simétricas. Na lista de candidatos estão contidos os vizinhos mais próximos de cada nó, evitando desse modo o tempo computacional necessário para checagem de toda a vizinhança. A heurística “don’t look bit” procura reduzir o número de testes realizados, atribuindo a cada nó um “bit não olhe”. Quando o valor do bit é igual a 1, o nó é desconsiderado como ponto de partida para se encontrar conexões melhoradas. Inicialmente, todos os bits têm valor igual a 0. Se um movimento de troca iniciado no nó não resultar em melhoria, o “bit não olhe” atribuído a esse nó recebe o valor 1. Por outro lado, o valor será zerado novamente se o movimento de troca de outro nó, encontrar uma melhoria com a inclusão de uma aresta incidente ao nó i.
3.2.4. Arquitetura Multiagente para Hibridização de Meta-heurísticas (AMHM)
Uma arquitetura híbrida baseada em nuvem de partículas é apresentada por Souza (2013). Nessa abordagem, as partículas são consideradas agentes autônomos reativos (WOOLDRIDGE, 2015) e possuem uma memória (constituída de informação própria e adquirida), além de métodos de decisão e aprendizagem. A informação própria advém de meta-heurísticas, possibilitando que o agente se mova pelo espaço de busca de forma autônoma, enquanto a informação adquirida tem origem em diferentes agentes como: a atratividade por certas posições do espaço de soluções, estratégias de busca e parâmetros de configuração.
Diferentemente do que acontece em um PSO tradicional (EBERHART e KENNEDY, 1995), onde não existe uma distinção clara entre partícula e posição, essa arquitetura diferencia tais conceitos, definindo a posição da partícula, como uma solução para o problema de
otimização tratado e a partícula em si, como um agente autônomo que possui uma memória e métodos de decisão e aprendizagem.
Na memória de cada partícula, estão contidas diversas informações sobre sua trajetória como: posição atual e o respectivo valor da função-objetivo, a melhor posição já atingida, uma lista de estratégias de decisão e seu histórico de utilização pela própria partícula e por seus pares, posições anteriores de boa qualidade, parâmetros para as estratégias de busca, além de outras.
As estratégias de decisão são compostas por meta-heurísticas, que podem ser baseadas tanto em trajetória, quanto em operadores populacionais, como os operadores de recombinação dos AGs. O algoritmo conta com um banco de meta-heurísticas, que são escolhidas com base em seu histórico de sucesso. O método de decisão define qual dessas estratégias será utilizada para modificação da posição da partícula. Quando a taxa de falhas da estratégia atual atinge um certo valor, a estratégia é trocada por outra mais promissora. As partículas possuem esse histórico armazenado em suas memórias.
As estratégias de aprendizagem direcionam o método de decisão, na escolha de qual estratégia de decisão será adotada, através de ações como: manter um grupo com as cinco melhores posições que a partícula já esteve, a forma como o sucesso e a falha são contabilizados, como ocorrerá a mudança de parâmetro associada a aplicação de uma nova meta-heurística etc. O método de aprendizagem é utilizado na atualização do histórico de busca de cada partícula.
Após a aplicação de uma meta-heurística, a partícula viaja de sua posição atual, para uma nova posição, movimentando-se posteriormente no espaço de busca, em direção de outra posição: ou , através de um operador de velocidade. O operador utilizado no trabalho foi o Path-Relinking, que traça uma trajetória entre uma posição de origem e outra de destino, passando por varias posições intermediárias.
As posições de origem e destino são escolhidas através de uma das seguintes alternativas:
A posição de origem é a posição atual da partícula, enquanto a posição de destino, como definido em Goldbarg, Bagi e Goldbarg (2008), pode ser escolhida através de sorteio, entre a melhor posição já visitada pela partícula e a melhor posição já visitada pela nuvem , atribuindo-se ou não a probabilidade que cada uma tem de ser escolhida.