Page 1

Uma introdução ao jMetal Rafael Carmo UECE - MACC


Roteiro • Introdução – Principais características – Arquitetura do projeto

• Classes importantes • Utilização do Framework – Implementação da subclasse de Problem • Opções de implementação e variáveis necessárias

– Modificação do fonte Metaheurística_main

• Conclusão


Introdução – Principais características • jMetal =“Metaheuristic Algorithms in Java” • GNU LGLP 2.1 • Framework construído pensando-se em: – Simplicidade e facilidade de uso – Flexibilidade • Possibilidade de reuso simplicidade nos mecanismos de utilização do framework

– Portabilidade – Extensibilidade


Introdução – Principais características • Provê – Conjunto de metaheurísticas multi-objetivo implementadas: NSGA-II, SPEA2, PAES, OMOPSO, AbYSS, MOCell, PESA-II, CellDE, MOEA/D, DENSEA, SMPSO, IBEA, pesquisa aleatória – Classes de problemas – Representação de variáveis: binário, real, real codificado em binário, inteiro e permutacional.


Introdução – Principais Características


Introdução – Arquitetura do projeto


Classes importantes • Aqui trataremos as classes que são necessárias para a execução correta de uma simulação através do framework, portanto a discussão sobre a implementação das metaheurísticas fica para outro momento. Portanto, citaremos as classes: Problem, Solution e Variable


Classes importantes – Problem • Classe Problem – Classe abstrata que temos que estender para “resolvermos” instâncias dos problemas – É a classe que devemos nos preocupar – Contém: • Representação “pessoal” para instâncias do problema em questão – Valores da função objetivo e restrições – Representação “pessoal” = para VOCÊ entender e utilizar nos métodos que avaliam validade e qualidade de uma dada solução


Classes importantes - Solution • Nesta classe podemos encontrar configuração das variáveis de decisão de uma instância do problema • É nesta classe que determinamos se uma solução é válida ou não e o quão boa ela é


Classes importantes - Variable • Ela contém o valor individual de uma variável de decisão relacionada ao problema que se quer resolver • A interpretação de cada valor depende exclusivamente da representação “pessoal” contida na classe Problem


Utilização do Framework • Subclasse de Problem – Construtor • Inicializa as variáveis da instância do problema


Utilização do Framework • Subclasse de Problem – Construtor • A necessidade de inicialização depende do tipo de variável utilizada visto que cada uma tem dependências diferentes • Ler jmetal.base.Problem para melhor entendimento – Código-fonte bem explicado


Utilização do Framework • Subclasse de Problem – Método evaluate(Solution s) • Avalia a qualidade de uma dada solução - Minimização


Utilização do Framework • Subclasse de Problem – Método evaluateConstraints(Solution s) • Avalia a validade de uma dada solução – Maior número de restrições violadas – pior – Menor valor de “violação” - pior


Utilização do Framework • Modificação do fonte Metaheurística_main – Dizer qual o problema que vai ser otimizado


Utilização do Framework • Modificação do fonte Metaheurística_main • Configurar a execução da metaheurística


Conclusão • Framework jMetal corresponde às espectativas iniciais durante a construção do mesmo • Cuidados devem ser tomados com: – Inicialização de variáveis – Sinais (+ e -) ao se determinar a validade e a qualidade de uma solução

• Boa opção para utilização de metaheurísticas para resolver problemas de otimização multiobjetivo

Uma Introdução ao jMetal - Rafael Carmo (GOES.UECE)  

Esta apresentação traz os conceitos básicos do framework jMetal e ilustra sua utilização.

Read more
Read more
Similar to
Popular now
Just for you