OTIMIZAÇÃO DE PROBLEMAS MULTI-OBJETIVO
5.3 NONDOMINATED SORTING GENETIC ALGORITHM (NSGA) - -II
A ideia por trás do processo de ordenação não dominada é utilizar o método de classifica-ção para enfatizar pontos que são considerados bons, ou seja, que se aproximam do objetivo do problema, junto a um método de nicho, que mantém subpopulações de bons pontos unidas em um mesmo conjunto. Esta é a base doNondominated Sorting Genetic Algorithm(NSGA) [84].
O algoritmo NSGA-II é uma derivação do NSGA. A versão mais antiga recebeu diver-sas críticas por sua complexidade,O(mN3), em que N é o tamanho da população e m o número de objetivos, falta de elitismo [85] e necessidade de especificação do parâmetro de compartilhamento δshare [84]. Dentre outros recursos, fazendo uso do recurso de elitismo, que acelera significativamente o desempenho de algoritmos genéticos [86], o NSGA-II é ca-paz de resolver problemas reais de maneira mais rápida e eficiente que o seu antecessor [87].
O algoritmo é descrito a seguir.
5.3.1 Ordenação rápida de soluções não dominadas
Para ordenar uma população N em acordo com o nível de não dominância de forma rápida, faz-se [3]:
1. Para cada solução, calcular duas entidades: (1)np - o número de soluções que domi-nam a solução p e (2) Tp, um conjunto de soluções dominadas por i (Complexidade O(mN2)). Todas as soluções na primeira fronteira de dominância terão o primeiro contador de dominância=0.
2. Para cada soluçãoi comni=0, visitar todos os membros q do conjuntoTi e reduzir o contador de dominância para 1 (um).
3. Se algum membro q no contador de dominância se tornar zero, ele será colocado em uma lista separadaQ e pertencerá à segunda fronteira não dominada.
4. O processo anterior é continuado com cada membro deQ e uma terceira fronteira é identificada.
Para cada solução a partir da segunda fronteira, o contador de dominânciani pode ser, no máximo,N−1, então cada soluçãoi vai ser visitada pelo menos N-1 vezes antes de seu contador de dominância se tornar nulo, quando a solução recebe um nível de dominância e nunca mais é visitada. A existência de N-1 leva a uma complexidadeO(N2), resultando em um totalO(M N2).
Pseudo código de ordenação rápida de soluções não dominadas Adaptado de [87]
Como foi visto anteriormente neste capítulo, testar diversas soluções distintas é uma forma de aumentar a probabilidade de obter melhores resultados, tendo em vista que diver-sificar reduz as chances de o algoritmo ficar preso em um ponto ótimo local. O NSGA-II propõe o uso de dois recursos com o objetivo de preservar a diversidade: a estimativa de densidade e o operador de comparação de multidão (crowded-comparison operator).
5.3.2.1 Estimativa de densidade
Para estimar a densidade de soluções em torno de um ponto em particular da população, toma-se a distância média de dois pontos (duas soluções), um em cada lado deste ponto de referência em cada um dos objetivos [87].
Essa distância id i st ance é chamada distância de multidão (crowding distance) e serve como uma estimativa do tamanho do maior cubóide que cerca um ponto i sem incluir ne-nhum outro ponto da população (crowding distance) [87], como visto na Figura 5.2.
O cálculo deid i st ance requer ordenar a população em ordem ascendente de acordo com cada função objetivo. Depois disto, é atribuído o valor∞às soluções extremas (soluções com função objetivo de maior e menor valor). As soluções intermediárias recebem um valor de distância igual à diferença entre o valor normalizado da funções de duas soluções adjacentes
Figura 5.2 – Ilustração da distância de multidão. Adaptado de [3]
a elas e o processo é repetido para todos os objetivos [3].
O valor global da distância de multidão é calculado como uma soma dos valores indivi-duais correspondentes a cada objetivo e cada objetivo é normalizado antes que o cálculo seja realizado. O pseudo-código apresentado abaixo mostra como se calcularid i st ance.
Pseudo-códigocrowding distanceadaptado de [87]
l = |I|
para cada i, faça I[i] = 0 para objetivo m
I = ordenar(I,m)
I[1]d i stânci a=I[l]d i stânci a= ∞ para i = 2 a (l-1)
I[1]d i stânci a=I[1]d i stânci a+(I[i+1]m−I[i−1]m)
Em que I[i]m se refere ao m-ésimo valor da função objetivo do i-ésimo indivíduo no conjuntoI. No pior caso, ou seja, quando todas as soluções estão na mesma fronteira, esta ordenação requerO(M N l og N)etapas de cálculo.
Após a atribuição de distância a todos os membros da população, é possível comparar duas soluções a partir do quanto elas se aproximam de outras. Quem tiver menor valor tem mais soluções por perto [3]. Essa comparação é feita pelo operador de comparação de multidão, apresentado a seguir.
5.3.2.2 Operador de Comparação de Multidão
O operador de comparação de multidão é o recurso utilizado para levar os estágios do algoritmo à fronteira de Pareto. Supondo que cada indivíduo i da população tenha dois atributos 1) rank de não dominância (ir ank) e 2) distância de multidão (id i stânci a) é possível
definir uma ordem parcial<ncomo [3]:
i<n j se (ir ank<jr ank) ou ((ir ank=jr ank) e ((id i stânci a>id i stânci a)
(5.5)
Isto significa que, entre duas soluções com diferentes ranks de não dominância, a solução com menor rank deve ser a escolhida. Por outro lado, se as duas soluções estão na mesma fonteira, então, dá-se preferência a uma que esteja localizada em uma região de maior dis-tância de aglomeração [3]. Isto encerra os recursos utilizados no NSGA-II, sendo possível apresentar o laço principal do NSGA-II.
5.3.3 Laço Principal do NSGA-II
O laço principal do NSGA-II é ilustrado pela Figura 5.3 e começa com a criação de uma população aleatóriaP0. A solução de cada função objetivo é calculada para cada indivíduo, processo este que é seguido pela atribuição do nível de dominância às soluções (1 é o melhor nível, 2 o próximo e assim por diante [3] quando se trata de um objetivo de minimização).
Essa população gera uma proleQ0 de tamanho N por meio dos processos tradicionais de recombinação e mutação, seguindo pelas fases de elitismo introduzido pelo NSGA-II e des-tacadas em azul na Figura 5.3.
Primeiro, uma populaçãoRt=Pt∪Qt é formada, em queRt possui2N indivíduos. Esta população é ordenada em acordo com a não-dominância de seus membros e, já que tanto os membros atuais quanto os passados da população estão presentes em Rt, o elitismo é garantido [3].
Depois deste processo, as soluções que pertencem ao conjunto de soluções não domina-dasF1são as principais soluções dentre os membros da população combinada. Se F1<N, todos os seus membros são selecionados para a nova população Pt+1, por outro lado, ou-tros membros vão sendo selecionados das fronteiras inferiores até quePt+1também tenhaN indivíduos [3].
A populaçãoPt+1 passa pelo processo de seleção (com base na distância de multidão), recombinação e mutação, gerando a prole Pt+1 de tamanho N. O processo se repete até que a geração máxima seja alcançada [3]. Este limite pode ser dado por uma quantidade pré-definida de iterações ou por critérios de convergência.
O pseudo-código do laço principal pode ser visto a seguir, concluindo a apresentação do algortimo.
Figura 5.3 – Ilustração do Laço Principal do NSGA-II
Pseudo-código laço principal NSGA-II adaptado de [3]
Rt=Rt∪Qt
F = Ordenação Rápida de Soluções Não Dominadas (Rt) Pt+1= ; e i=1
Enquanto|Pt+1| + |Fi| ≥N crowding distance(Fi) Pt+1=Pt+1∪Fi i = i+1
Ordene(Fi,<n)
Pt+1=Pt+1∪Fi[1 : (N− |Pt+1|)]Qt+1=nov aPopul ac ao(Pt+1)