Métodos Heurísticos Populacionais
…em até 15 minutinhos, pretendo abordar brevemente
Contextualização (Introdução)
Histórico da evolução do NSGAII
Avanços e marcos teóricos de seu desenvolvimento
Funcionamento do NSGAII
Algumas aplicações do NSGAII na minha pesquisa
Esclarecimento de dúvidas
Meus Contatos
O NSGA-II, ou “Non-dominated Sorting Genetic Algorithm II”, é um algoritmo evolutivo popular usado para otimização multiobjetivo.
Ele é projetado para resolver problemas onde há múltiplos objetivos em conflito, e a solução ideal é um conjunto de soluções, conhecido como “Frente ou Fronteira de Pareto”.
O NSGA-II é amplamente reconhecido por sua eficiência e capacidade de encontrar um conjunto diversificado de soluções na fronteira de Pareto.
Ele supera muitos de seus predecessores em termos de velocidade, precisão e diversidade das soluções.
É aplicado em uma variedade de campos, desde engenharia, bioinformática (para otimização de redes metabólicas) até economia, devido à sua capacidade de lidar com complexidades e múltiplos objetivos.
O NSGA[1] (Non-dominated Sorting Genetic Algorithm) é um algoritmo evolutivo desenvolvido para otimização multiobjetivo. Ele utiliza uma abordagem baseada em dominância para classificar e selecionar soluções, identificando aquelas que estão na fronteira de Pareto, o conjunto ideal de soluções em problemas multiobjetivo. Para garantir uma distribuição diversificada de soluções ao longo desta fronteira, o NSGA incorpora o conceito de “compartilhamento de nicho”. Combinando essas características com operadores genéticos tradicionais, como seleção, cruzamento e mutação, o NSGA busca soluções ótimas em problemas onde múltiplos objetivos estão em conflito.
O NSGA original foi introduzido em 1995 e, embora fosse eficaz, tinha algumas limitações, especialmente em termos de compartilhamento de nicho e complexidade computacional.
*Compartilhamento de nicho é uma técnica usada em algoritmos genéticos e outros algoritmos evolutivos para manter a diversidade na população durante o processo de evolução. A ideia é evitar a convergência prematura para uma solução subótima e garantir que várias regiões do espaço de busca sejam exploradas.
O NSGA-II[2] foi proposto em 2002 por Kalyanmoy Deb, Amrit Pratap, Sameer Agarwal e T. Meyarivan como uma melhoria significativa do algoritmo original, abordando suas limitações.
Inspiração:
Evolução:
Ano | Título | Descrição |
---|---|---|
\(\pm\) 60´s | Algoritmos Ponderados | Abordagem clássica para otimização multiobjetivo convertendo em problemas de objetivo único. |
\(\pm\) 70´s | Algoritmo de Otimização Vetorial (VGA) | Abordagem clássica em otimização multiobjetivo otimizando todos os objetivos simultaneamente. |
\(\pm\) 70´s | Método de Otimização de Função Escalar (SFMO) | Abordagem que tenta otimizar uma combinação escalar dos objetivos. |
\(\pm\) 70´s e 80´s | Algoritmo de Otimização de Compromisso (TCGA) | Busca soluções que sejam um compromisso entre diferentes objetivos. |
1995 | Multi-objective genetic algorithms: Problem difficulties and construction of test problems [Deb, 1995] | Introdução do NSGA original. Aborda otimização multiobjetivo e suas dificuldades. |
2002 | A Fast Elitist Non-dominated Sorting Genetic Algorithm for Multi-objective Optimisation: NSGA-II [Deb et al., 2002] | Melhoria significativa do NSGA original. Aborda compartilhamento de nicho e complexidade computacional. |
Anos subsequentes | Vários estudos e melhorias [ Hort, M., Sarro, F. (2021), Wang, Y. et al. (2019), El-Abbasy, M. S., Elazouni, A., Zayed, T. (2020), Ouyang, J., Yang, F., Yang, S., Nie, Z. (2008), Ardakan, M. A., Rezvan, M. T. (2018), Fettaka, S., Thibault, J., Gupta, Y. (2015) ] | Estudos propuseram melhorias no NSGA-II para abordar suas limitações em cenários específicos, desde otimização de minas de metal até otimização de portfólio. |
O NSGA-II é frequentemente comparado a outros algoritmos de otimização multiobjetivo, como o SPEA2 (Strength Pareto Evolutionary Algorithm 2) e o MOEA/D (Multi-Objective Evolutionary Algorithm based on Decomposition). Em muitos benchmarks e aplicações, o NSGA-II demonstrou ter uma performance superior em termos de encontrar uma fronteira de Pareto mais diversificada e precisa.
A complexidade computacional do NSGA-II é principalmente influenciada pela operação de ordenação não dominada. Para uma população de tamanho \(N\), a complexidade é da ordem de \(O(N^2)\), tornando-o eficiente para muitos problemas práticos, embora possa ser desafiador para problemas com grandes populações ou muitos objetivos.
Razões para Comparação:
Comparativos geralmente presentes na literatura
NSGA: Versão anterior do NSGA-II. Avalia melhorias na segunda versão.
SPEA2: Abordagem diferente para classificação e diversidade. Ajuda a entender vantagens e desvantagens de cada método.[ Zitzler, E., Laumanns, M., & Thiele, L. (2001). SPEA2: Improving the strength Pareto evolutionary algorithm. TIK-Report 103 ]
MOEA/D: Decompõe problemas multiobjetivo. Compara eficiência em convergência e diversidade. [ Zhang, Q., Li, H. (2007). MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition. IEEE Transactions on Evolutionary Computation, 11(6), 712-731. ]
PAES: Estratégia baseada em arquivo. Destaca diferenças entre abordagens baseadas em população e arquivo. [ Knowles, J., & Corne, D. (2000). Approximating the Nondominated Front Using the Pareto Archived Evolution Strategy. Evolutionary Computation, 8(2), 149-172. ]
OMOPSO: Versão otimizada do algoritmo de enxame. Contrasta algoritmos genéticos e baseados em enxames. [ Sierra, M. R., & Coello, C. A. C. (2005). Improving PSO-based multi-objective optimization using crowding, mutation and ε-dominance. In Proceedings of the 3rd international conference on Evolutionary Multi-Criterion Optimization (pp. 505-519). Springer, Berlin, Heidelberg. ]
Eficiência em Problemas de Grande Escala: Em alguns estudos, variantes melhoradas do NSGA-II foram propostas para otimização de problemas de grande escala, indicando que o NSGA-II padrão pode não ser o mais eficiente para tais problemas Xiaowei Gu et al., 2020.
Comparação com NSGA-III: Em certos problemas multiobjetivos, o NSGA-III, uma versão subsequente do NSGA-II, mostrou desempenho superior em métricas como distância central, métrica de espaçamento e eficiência computacional Yihan Wang et al., 2019. No entanto, em outros estudos, foi observado que o NSGA-III não supera sempre o NSGA-II, mesmo para problemas com muitos objetivos H. Ishibuchi et al., 2016.
Comparação com Outros Algoritmos: Em alguns cenários, o NSGA-II foi superado por outros algoritmos em termos de eficiência e qualidade de solução. Por exemplo, o 2-phase NSGA II superou o NSGA-II em otimização de portfólio Seyedeh Elham Eftekharian et al., 2017. Em outro estudo, o NSGA-II teve um desempenho melhor do que o MOPSO em problemas de pequena escala, mas pode não ser o caso em problemas de maior escala Nima Farmand et al., 2021.
Necessidade de Melhorias e Modificações: Vários estudos propuseram melhorias e modificações no NSGA-II para abordar suas limitações. Por exemplo, um estudo propôs uma versão melhorada do NSGA-II para otimizar o processo de produção de minas de metal Xiaowei Gu et al., 2020. Outro estudo apresentou um NSGA-II híbrido que superou todos os métodos de decomposição em um problema de agendamento M. Rabbani et al., 2017.
Passos do NSGA-II:
Inicialização: Gere uma população inicial aleatoriamente e calcule a aptidão (fitness) de cada indivíduo.
Classificação: Classifique a população com base na dominância. Aqueles que não são dominados por outros são colocados na primeira frente, os próximos na segunda frente e assim por diante.
Cálculo da Distância de Aglomeração: Para cada frente, calcule a distância de aglomeração para cada indivíduo. Isso ajuda a manter a diversidade na população.
Seleção: Use operadores de seleção, como torneio binário, para selecionar pais para cruzamento.
Cruzamento e Mutação: Aplique operadores de cruzamento (crossover) e mutação para gerar descendentes.
Combinação: Combine a população atual com os descendentes gerados.
Seleção da Próxima Geração: Selecione os melhores indivíduos com base na classificação de dominância e distância de aglomeração para formar a próxima geração.
Repetição: Repita os passos de 2 a 7 até que o número máximo de gerações seja atingido ou outro critério de parada seja satisfeito.
Seleção Multicritério de Portfólio de Commodities com NSGAII Aqui utilizo visualização 3d da frente de Pareto com 3 objetivos…
Otimização MultiObjetivo de Portfólio usando Evolução Diferencial otimização não-convexa
Otimização Multiobjetivo: Exercício teórico e aplicação em portfolio de commodities aqui utilizo um NSGAII para fazer a seleção de portfólio
O NSGA-II é um algoritmo evolutivo robusto e eficiente para otimização multiobjetivo, com uma rica história de desenvolvimento e aplicação em diversos campos.
Ele supera muitos de seus predecessores e competidores em termos de velocidade, precisão e diversidade das soluções, embora tenha suas próprias limitações e desafios.
Histórico e Evolução: Desde sua introdução em 1995, o NSGA e sua versão melhorada, NSGA-II, têm sido referências em otimização multiobjetivo.
Funcionamento: O NSGA-II combina classificação baseada em dominância, cálculo de distância de aglomeração e operadores genéticos tradicionais para encontrar soluções ótimas.
Aplicações: O NSGA-II tem sido aplicado em uma variedade de campos, desde engenharia até economia, demonstrando sua versatilidade e eficácia.
O NSGA-II continua sendo uma ferramenta valiosa para pesquisadores e profissionais que lidam com problemas de otimização multiobjetivo. Seu legado e impacto na comunidade científica são inegáveis.
Como em qualquer ferramenta ou método, é essencial entender suas forças e limitações, adaptando-o conforme necessário para atender às demandas específicas de cada problema.
Deb, K. (1995). Multi-objective genetic algorithms: Problem difficulties and construction of test problems. Evolutionary Computation, 7(3), 205-230. [Link]
Deb, K., Pratap, A., Agarwal, S., & Meyarivan, T. (2002). A Fast Elitist Non-dominated Sorting Genetic Algorithm for Multi-objective Optimisation: NSGA-II. [Link]
Drezewski, Rafal & Doroz, Krzysztof. (2017). An Agent-Based Co-Evolutionary Multi-Objective Algorithm for Portfolio Optimization. Symmetry. 9. 168. [Link]
Qu, B., Zhou, Q., Xiao, J., & Suganthan, P. N. (2017). Large-scale portfolio optimization using multiobjective evolutionary algorithms and preselection methods. Mathematical Problems in Engineering, 2017, 1-14. [Link]
Zitzler, E., Laumanns, M., & Thiele, L. (2001). SPEA2: Improving the strength Pareto evolutionary algorithm. TIK-Report 103. [Link]
Zhang, Q., Li, H. (2007). MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition. IEEE Transactions on Evolutionary Computation, 11(6), 712-731. [Link]
Knowles, J., & Corne, D. (2000). Approximating the Nondominated Front Using the Pareto Archived Evolution Strategy. Evolutionary Computation, 8(2), 149-172. [Link]
Sierra, M. R., & Coello, C. A. C. (2005). Improving PSO-based multi-objective optimization using crowding, mutation and ε-dominance. In Proceedings of the 3rd international conference on Evolutionary Multi-Criterion Optimization (pp. 505-519). Springer, Berlin, Heidelberg. [Link]
Chang, Yuqing & Bouzarkouna, Zyed & Devegowda, Deepak. (2015). Multi-objective optimization for rapid and robust optimal oilfield development under geological uncertainty. Computational Geosciences. 19. 933-950. [Link]
Filho, Rui & Vergilio, Silvia. (2016). A multi-objective test data generation approach for mutation testing of feature models. Journal of Software Engineering Research and Development. 4. [Link]
Rodrigo Hermont Ozon
\(\Rightarrow\) Ao professor Roberto Zanetti Freire pela oportunidade de contribuir com os novos pesquisadores;
\(\Rightarrow\) Agradecimentos aos pesquisadores do PPGEPS/PUCPR, aos ouvintes e em especial ao meu orientador, prof. Dr. Gilberto Reynoso Meza