Skip to content

Instantly share code, notes, and snippets.

@pilifjed
Created June 8, 2020 09:50
Show Gist options
  • Save pilifjed/1571ee235c3fbfda4e31346be0e91b24 to your computer and use it in GitHub Desktop.
Save pilifjed/1571ee235c3fbfda4e31346be0e91b24 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"from jmetal.algorithm.multiobjective import NSGAII, MOEAD, SPEA2, HYPE\n",
"from jmetal.algorithm.multiobjective.nsgaiii import (\n",
" NSGAIII,\n",
" UniformReferenceDirectionFactory,\n",
" ReferenceDirectionFactory,\n",
")\n",
"from jmetal.core.solution import FloatSolution\n",
"from jmetal.operator import (\n",
" SBXCrossover,\n",
" PolynomialMutation,\n",
" DifferentialEvolutionCrossover,\n",
")\n",
"from jmetal.problem import ZDT6\n",
"from jmetal.util.aggregative_function import Tschebycheff\n",
"from jmetal.util.termination_criterion import StoppingByEvaluations\n",
"from jmetal.lab.visualization import Plot\n",
"from jmetal.util.solution import get_non_dominated_solutions\n",
"from jmetal.core.problem import FloatProblem, FloatSolution\n",
"\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"class MMF1(FloatProblem):\n",
"\n",
" def __init__(self):\n",
" super(MMF1, self).__init__()\n",
" self.number_of_variables = 2\n",
" self.number_of_objectives = 2\n",
" self.number_of_constraints = 0\n",
" \n",
" self.obj_directions = [self.MINIMIZE, self.MINIMIZE]\n",
" self.obj_labels = ['x', 'y']\n",
"\n",
" self.lower_bound = [1.,-1.]\n",
" self.upper_bound = [3.,1.]\n",
"\n",
" def evaluate(self, solution: FloatSolution) -> FloatSolution:\n",
" \n",
" x = solution.variables\n",
"\n",
" solution.objectives[0] = np.abs(x[0] - 2.)\n",
" solution.objectives[1] = 1.-np.sqrt(np.abs(x[0]-2.))+2*(x[1]-np.sin(6*np.pi*np.abs(x[0]-2.)+np.pi))**2.\n",
"\n",
" return solution\n",
" \n",
" def get_r(self, solution):\n",
" return solution.variables\n",
"\n",
" def get_name(self):\n",
" return 'MMF1'"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"\n",
"problem = MMF1()\n",
"\n",
"reference_direction = UniformReferenceDirectionFactory(n_dim=2, n_points=2)\n",
"\n",
"reference_point = FloatSolution([0], [1], problem.number_of_objectives,)\n",
"reference_point.objectives = [1.0, 1.0] # Mandatory for HYPE\n",
"\n",
"for algorithm in [\n",
" NSGAII(\n",
" problem=problem,\n",
" population_size=100,\n",
" offspring_population_size=100,\n",
" mutation=PolynomialMutation(\n",
" probability=1.0 / problem.number_of_variables, distribution_index=20\n",
" ),\n",
" crossover=SBXCrossover(probability=1.0, distribution_index=20),\n",
" termination_criterion=StoppingByEvaluations(max_evaluations=25000),\n",
" ),\n",
" NSGAIII(\n",
" reference_direction,\n",
" problem=problem,\n",
" population_size=100,\n",
" mutation=PolynomialMutation(\n",
" probability=1.0 / problem.number_of_variables, distribution_index=20\n",
" ),\n",
" crossover=SBXCrossover(probability=1.0, distribution_index=20),\n",
" termination_criterion=StoppingByEvaluations(max_evaluations=25000),\n",
" ),\n",
" MOEAD(\n",
" problem=problem,\n",
" population_size=300,\n",
" crossover=DifferentialEvolutionCrossover(CR=1.0, F=0.5, K=0.5),\n",
" mutation=PolynomialMutation(\n",
" probability=1.0 / problem.number_of_variables, distribution_index=20\n",
" ),\n",
" aggregative_function=Tschebycheff(dimension=problem.number_of_objectives),\n",
" neighbor_size=20,\n",
" neighbourhood_selection_probability=0.9,\n",
" max_number_of_replaced_solutions=2,\n",
" weight_files_path=\"resources/MOEAD_weights\",\n",
" termination_criterion=StoppingByEvaluations(max_evaluations=150000),\n",
" ),\n",
" SPEA2(\n",
" problem=problem,\n",
" population_size=40,\n",
" offspring_population_size=40,\n",
" mutation=PolynomialMutation(\n",
" probability=1.0 / problem.number_of_variables, distribution_index=20\n",
" ),\n",
" crossover=SBXCrossover(probability=1.0, distribution_index=20),\n",
" termination_criterion=StoppingByEvaluations(max_evaluations=20000),\n",
" ),\n",
" HYPE(\n",
" problem=problem,\n",
" reference_point=reference_point,\n",
" population_size=100,\n",
" offspring_population_size=100,\n",
" mutation=PolynomialMutation(\n",
" probability=1.0 / problem.number_of_variables, distribution_index=20\n",
" ),\n",
" crossover=SBXCrossover(probability=1.0, distribution_index=20),\n",
" termination_criterion=StoppingByEvaluations(max_evaluations=2500),\n",
" ),\n",
"]:\n",
" algorithm.run()\n",
" front = get_non_dominated_solutions(algorithm.get_result())\n",
" plot_front = Plot(title=algorithm.__class__.__name__, axis_labels=[\"x\", \"y\"])\n",
" plot_front.plot(front, format=\"png\")\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.9"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment