• Nenhum resultado encontrado

3.4 Noções Gerais de Complexidade do Algoritmo

4.1.1 O Algoritmo dopt-aiNet

Ao tentar aplicar o algoritmo opt-aiNet (de Castro & Timmis, 2002a) a problemas de otimização em ambientes dinâmicos, ou seja, a problemas com funções-objetivo cujos ótimos locais e globais variam com o tempo, de França et al. (2005) observaram uma série de limitações em alguns dos mecanismos da proposta original de de Castro & Timmis (2002a), sendo que algumas delas já fo- ram inclusive discutidas na Seção 2.2.2. Diante disso, com o intuito de amenizar estes problemas e criar uma ferramenta capaz de reagir rapidamente a mudanças no ambiente, de França et al. (2005) propuseram o algoritmo dopt-aiNet (Artificial Immune Network for Dynamic Optimization).

Como na opt-aiNet e na cob-aiNet, as soluções candidatas na dopt-aiNet são representadas como vetores de atributos reais, gerados inicialmente de maneira aleatória e com distribuição uniforme

dentro do domínio do problema. Além disso, a estrutura geral da dopt-aiNet é semelhante à da opt- aiNet (vide Seção 2.2.2), já que ambos os algoritmos possuem etapas de clonagem, hipermutação, seleção e supressão. No entanto, algumas diferenças importantes estão presentes, dentre as quais podemos ressaltar a inclusão de novos operadores de mutação e a utilização de uma nova métrica de distância na etapa de supressão, proposta com o intuito de deixar o algoritmo menos sensível a ajustes inadequados do limiar σs.

Com relação aos novos operadores de mutação, dada a dificuldade de ajuste do parâmetro β do operador original da opt-aiNet (vide Equação 2.1), que é de responsabilidade do usuário, de França et al. (2005) propuseram um mecanismo de ajuste automático deste parâmetro, baseado na estratégia de busca linear conhecida como seção áurea (Bazaraa et al., 1993). Apesar de possuir a grande vantagem de tirar a responsabilidade de ajuste de β do usuário, este novo operador demanda um maior número de avaliações da função-objetivo a cada iteração do algoritmo, já que, para cada valor de β obtido pela busca linear, uma série de novos indivíduos devem ser criados com o operador de mutação para que seja possível avaliar sua qualidade.

Além desta mudança no cálculo de β, de França et al. (2005) também identificaram a possível desvantagem associada ao fato de o operador de mutação da opt-aiNet alterar todas as variáveis de cada indivíduo ao mesmo tempo (vide Seção 3.3.4). Diante disso, um segundo operador de mutação foi introduzido (chamado de mutação unidimensional), que gera uma nova população de indivíduos de tamanho igual ao número de variáveis do problema e aplica uma variação gaussiana a uma única variável de cada um destes novos indivíduos. Ou seja, cada nova solução é alterada pelo operador de mutação unidimensional ao longo de uma única dimensão.

Um terceiro operador de mutação também foi proposto no algoritmo dopt-aiNet, chamado de duplicação gênica. Basicamente, o operador de duplicação gênica escolhe aleatoriamente o valor presente em uma das variáveis de uma solução-candidata e o replica para as demais variáveis iterati- vamente, mantendo a alteração sempre que o novo indivíduo gerado for melhor que o anterior. Apesar de este operador acelerar a convergência da população, ele também possui duas desvantagens princi- pais, identificadas por Coelho et al. (2010): (i) como cada variável geralmente pertence a um domínio específico, a replicação do valor de uma variável para as demais não é direta, sendo necessária uma adequação ao domínio de cada nova variável, o que aumenta o custo computacional e pode levar a interpretações distintas de como isso deve ser feito; e (ii) cada replicação do valor escolhido para as demais variáveis exige uma nova avaliação da função-objetivo, o que aumenta significativamente o custo computacional por iteração do algoritmo.

Outra modificação introduzida pela dopt-aiNet foi a substituição da distância euclidiana, na etapa de supressão, por outro operador denominado distância de linha. A motivação para este novo ope- rador está justamente no fato de que o uso direto da distância euclidiana pode levar a situações em

que células posicionadas em picos distintos podem ser suprimidas caso o limiar de supressão σsnão esteja corretamente ajustado, como foi previamente discutido e ilustrado na Seção 3.3.3.

O cálculo da distância de linha entre dois pontos P1 e P2 se dá basicamente através da criação

de um segmento de reta entre estes dois pontos e da identificação de P , que corresponde ao ponto,

na superfície do problema, mais próximo do ponto médio Pb da linha criada, como ilustrado na

Figura 4.1. Identificados P e Pb, a distância de linha entre os pontos P1 e P2será então equivalente à

distância euclidiana entre P e Pb, o que nada mais é que distância entre uma aproximação simples de

função utilizando dois pontos e a superfície real do problema. Apesar desta nova métrica de distância ser capaz de indicar mais efetivamente quando dois indivíduos estão em picos/vales diferentes do problema, novamente a principal desvantagem é o impacto negativo no custo computacional total do algoritmo, já que mais avaliações da função-objetivo se tornam necessárias para a determinação de P , Pb e a distância entre eles.

−0.2 0.2 0.8 −0.2 0.3 0.8 P P2 P 1 Pb distância (a) −3.5 −3 −2.5 0 0.1 0.2 0.3 0.4 0.5 Pb distância P2 P1 P (b)

Fig. 4.1: Dois exemplos de distância de linha entre os pontos P1e P2no espaço de busca. Pb é o ponto médio

da linha formada por P1e P2, e P é o ponto mais próximo de Pbna superfície real da função-objetivo. Em (a),

P1e P2 estão no mesmo pico, o que leva a uma distância de linha baixa, enquanto que em (b), eles estão em

picos diferentes, o que resulta em um maior valor da distância de linha.

Por fim, a última modificação da dopt-aiNet em relação à opt-aiNet está no uso do conceito de múltiplas populações. Como a dopt-aiNet foi proposta para tratar cenários em constante modifica- ção, foi introduzida uma população de memória, que armazena todas as células da população que já convergiram (não podem mais ser melhoradas) para uso futuro, o que é especialmente importante em situações em que a função-objetivo varia ciclicamente.

Apesar de ter sido proposta originalmente visando tratar problemas dinâmicos de otimização con- tínua, a dopt-aiNet também foi aplicada com sucesso em problemas estáticos (de França et al., 2005), o que motivou o seu uso nas comparações com a cob-aiNet.