diff --git a/src/evox/algorithms/mo/bce_ibea.py b/src/evox/algorithms/mo/bce_ibea.py index 1e9d4742..365428f1 100644 --- a/src/evox/algorithms/mo/bce_ibea.py +++ b/src/evox/algorithms/mo/bce_ibea.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. Bi-criterion evolution based IBEA algorithm is described in the following papers: +# +# Title: Pareto or Non-Pareto: Bi-Criterion Evolution in Multiobjective Optimization +# Link: https://ieeexplore.ieee.org/abstract/document/7347391 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp @@ -162,11 +173,7 @@ def body_fun(i, vals): @jit_class class BCEIBEA(Algorithm): - """Bi-criterion evolution based IBEA - - link: https://ieeexplore.ieee.org/abstract/document/7347391 - Inspired by PlatEMO. - + """ Note: The number of outer iterations needs to be set to Maximum Generation*2+1. Args: diff --git a/src/evox/algorithms/mo/bige.py b/src/evox/algorithms/mo/bige.py index 4007d5e9..45c0ab54 100644 --- a/src/evox/algorithms/mo/bige.py +++ b/src/evox/algorithms/mo/bige.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. BiGE algorithm is described in the following papers: +# +# Title: Bi-goal evolution for many-objective optimization problems +# Link: https://doi.org/10.1016/j.artint.2015.06.007 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp from jax import vmap @@ -51,10 +62,6 @@ def calc_sh(fit_a, pr_a, fit_b, pr_b, r): @jit_class class BiGE(Algorithm): - """BiGE algorithm - - link: https://doi.org/10.1016/j.artint.2015.06.007 - """ def __init__( self, diff --git a/src/evox/algorithms/mo/eagmoead.py b/src/evox/algorithms/mo/eagmoead.py index 49977772..3c1ad7c2 100644 --- a/src/evox/algorithms/mo/eagmoead.py +++ b/src/evox/algorithms/mo/eagmoead.py @@ -1,3 +1,15 @@ +# -------------------------------------------------------------------------------------- +# 1. EAG-MOEA/D algorithm is described in the following papers: +# +# Title: An External Archive Guided Multiobjective Evolutionary Algorithm Based on Decomposition for Combinatorial +# Optimization +# Link: https://ieeexplore.ieee.org/abstract/document/6882229 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp from functools import partial @@ -28,11 +40,6 @@ def environmental_selection(fitness, n): @jit_class class EAGMOEAD(Algorithm): - """EAG-MOEA/D algorithm - - link: https://ieeexplore.ieee.org/abstract/document/6882229 - Inspired by PlatEMO. - """ def __init__( self, diff --git a/src/evox/algorithms/mo/gde3.py b/src/evox/algorithms/mo/gde3.py index 1091a17f..858c8539 100644 --- a/src/evox/algorithms/mo/gde3.py +++ b/src/evox/algorithms/mo/gde3.py @@ -1,7 +1,16 @@ +# -------------------------------------------------------------------------------------- +# 1. GDE3 algorithm is described in the following papers: +# +# Title: GDE3: the third evolution step of generalized differential evolution +# Link: https://ieeexplore.ieee.org/document/1554717 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp -from jax import vmap -from functools import partial from evox import Algorithm, jit_class, State from evox.operators import ( @@ -13,10 +22,6 @@ @jit_class class GDE3(Algorithm): - """GDE3 algorithm - - link: https://ieeexplore.ieee.org/document/1554717 - """ def __init__( self, diff --git a/src/evox/algorithms/mo/hype.py b/src/evox/algorithms/mo/hype.py index 239a761b..c39e243b 100644 --- a/src/evox/algorithms/mo/hype.py +++ b/src/evox/algorithms/mo/hype.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. HypE algorithm is described in the following papers: +# +# Title: HypE: An Algorithm for Fast Hypervolume-Based Many-Objective Optimization +# Link: https://direct.mit.edu/evco/article-abstract/19/1/45/1363/HypE-An-Algorithm-for-Fast-Hypervolume-Based-Many +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp from functools import partial diff --git a/src/evox/algorithms/mo/ibea.py b/src/evox/algorithms/mo/ibea.py index d7c040a2..616b2cad 100644 --- a/src/evox/algorithms/mo/ibea.py +++ b/src/evox/algorithms/mo/ibea.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. IBEA algorithm is described in the following papers: +# +# Title: Indicator-Based Selection in Multiobjective Search +# Link: https://link.springer.com/chapter/10.1007/978-3-540-30217-9_84 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp @@ -23,11 +34,6 @@ def cal_fitness(pop_obj, kappa): @jit_class class IBEA(Algorithm): - """IBEA algorithm - - link: https://link.springer.com/chapter/10.1007/978-3-540-30217-9_84 - Inspired by PlatEMO. - """ def __init__( self, diff --git a/src/evox/algorithms/mo/knea.py b/src/evox/algorithms/mo/knea.py index ac2c7423..2db8fdc6 100644 --- a/src/evox/algorithms/mo/knea.py +++ b/src/evox/algorithms/mo/knea.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. KnEA algorithm is described in the following papers: +# +# Title: A Knee Point-Driven Evolutionary Algorithm for Many-Objective Optimization +# Link: https://ieeexplore.ieee.org/document/6975108 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp from functools import partial @@ -26,10 +37,6 @@ def calc_DW(fit, k): @jit_class class KnEA(Algorithm): - """KnEA algorithm - - link: https://ieeexplore.ieee.org/document/6975108 - """ def __init__( self, diff --git a/src/evox/algorithms/mo/moead.py b/src/evox/algorithms/mo/moead.py index a3941c79..46b0574f 100644 --- a/src/evox/algorithms/mo/moead.py +++ b/src/evox/algorithms/mo/moead.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. MOEA/D algorithm is described in the following papers: +# +# Title: MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition +# Link: https://ieeexplore.ieee.org/document/4358754 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp @@ -9,11 +20,6 @@ @jit_class class MOEAD(Algorithm): - """MOEA/D algorithm - - link: https://ieeexplore.ieee.org/document/4358754 - Inspired by PlatEMO. - """ def __init__( self, diff --git a/src/evox/algorithms/mo/moeaddra.py b/src/evox/algorithms/mo/moeaddra.py index 4516ecbe..8fdcccac 100644 --- a/src/evox/algorithms/mo/moeaddra.py +++ b/src/evox/algorithms/mo/moeaddra.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. MOEA/D-DRA algorithm is described in the following papers: +# +# Title: The performance of a new version of MOEA/D on CEC09 unconstrained MOP test instances +# Link: https://ieeexplore.ieee.org/abstract/document/4982949 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp @@ -9,11 +20,6 @@ @jit_class class MOEADDRA(Algorithm): - """MOEA/D-DRA algorithm - - link: https://ieeexplore.ieee.org/abstract/document/4982949 - Inspired by PlatEMO. - """ def __init__( self, diff --git a/src/evox/algorithms/mo/moeadm2m.py b/src/evox/algorithms/mo/moeadm2m.py index 4762b3fc..896adb38 100644 --- a/src/evox/algorithms/mo/moeadm2m.py +++ b/src/evox/algorithms/mo/moeadm2m.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. MOEA/D based on MOP to MOP algorithm is described in the following papers: +# +# Title: Decomposition of a Multiobjective Optimization Problem Into a Number of Simple Multiobjective Subproblems +# Link: https://ieeexplore.ieee.org/abstract/document/6595549 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp @@ -83,11 +94,6 @@ def false_fun(c): @jit_class class MOEADM2M(Algorithm): - """MOEA/D based on MOP to MOP algorithm - - link: https://ieeexplore.ieee.org/abstract/document/6595549 - Inspired by PlatEMO. - """ def __init__( self, diff --git a/src/evox/algorithms/mo/nsga2.py b/src/evox/algorithms/mo/nsga2.py index c19e35d0..d55672ab 100644 --- a/src/evox/algorithms/mo/nsga2.py +++ b/src/evox/algorithms/mo/nsga2.py @@ -1,3 +1,10 @@ +# -------------------------------------------------------------------------------------- +# 1. NSGA-II algorithm is described in the following papers: +# +# Title: A fast and elitist multiobjective genetic algorithm: NSGA-II +# Link: https://ieeexplore.ieee.org/document/996017 +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp diff --git a/src/evox/algorithms/mo/nsga3.py b/src/evox/algorithms/mo/nsga3.py index 826509d9..0a665687 100644 --- a/src/evox/algorithms/mo/nsga3.py +++ b/src/evox/algorithms/mo/nsga3.py @@ -1,3 +1,15 @@ +# -------------------------------------------------------------------------------------- +# 1. NSGA-III algorithm is described in the following papers: +# +# Title: An Evolutionary Many-Objective Optimization Algorithm Using Reference-Point-Based Nondominated Sorting +# Approach, Part I: Solving Problems With Box Constraints +# Link: https://ieeexplore.ieee.org/document/6600851 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp @@ -13,10 +25,6 @@ @jit_class class NSGA3(Algorithm): - """NSGA-III algorithm - - link: https://ieeexplore.ieee.org/document/6600851 - """ def __init__( self, diff --git a/src/evox/algorithms/mo/rvea.py b/src/evox/algorithms/mo/rvea.py index 6c771977..1635c762 100644 --- a/src/evox/algorithms/mo/rvea.py +++ b/src/evox/algorithms/mo/rvea.py @@ -1,6 +1,12 @@ +# -------------------------------------------------------------------------------------- +# 1. RVEA algorithm is described in the following papers: +# +# Title: A Reference Vector Guided Evolutionary Algorithm for Many-Objective Optimization +# Link: https://ieeexplore.ieee.org/document/7386636 +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp -from evox.utils import cos_dist from evox.operators import mutation, crossover, selection from evox.operators.sampling import UniformSampling, LatinHypercubeSampling @@ -9,10 +15,6 @@ @jit_class class RVEA(Algorithm): - """RVEA algorithms - - link: https://ieeexplore.ieee.org/document/7386636 - """ def __init__( self, diff --git a/src/evox/algorithms/mo/spea2.py b/src/evox/algorithms/mo/spea2.py index fbf0dd8d..99ac090b 100644 --- a/src/evox/algorithms/mo/spea2.py +++ b/src/evox/algorithms/mo/spea2.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. SPEA2 algorithm is described in the following papers: +# +# Title: SPEA2: Improving the strength pareto evolutionary algorithm +# Link: https://www.research-collection.ethz.ch/handle/20.500.11850/145755 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp @@ -58,11 +69,6 @@ def body_fun(vals): @jit_class class SPEA2(Algorithm): - """SPEA2 algorithm - - link: https://www.research-collection.ethz.ch/handle/20.500.11850/145755 - Inspired by PlatEMO. - """ def __init__( self, diff --git a/src/evox/algorithms/mo/sra.py b/src/evox/algorithms/mo/sra.py index 69d12964..68f6386d 100644 --- a/src/evox/algorithms/mo/sra.py +++ b/src/evox/algorithms/mo/sra.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. Stochastic ranking algorithm is described in the following papers: +# +# Title: Stochastic Ranking Algorithm for Many-Objective Optimization Based on Multiple Indicators +# Link: https://ieeexplore.ieee.org/abstract/document/7445185 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp @@ -102,11 +113,6 @@ def in_body(j, d): @jit_class class SRA(Algorithm): - """Stochastic ranking algorithm - - link: https://ieeexplore.ieee.org/abstract/document/7445185 - Inspired by PlatEMO. - """ def __init__( self, diff --git a/src/evox/algorithms/mo/tdea.py b/src/evox/algorithms/mo/tdea.py index 0932ce34..bbbbcda5 100644 --- a/src/evox/algorithms/mo/tdea.py +++ b/src/evox/algorithms/mo/tdea.py @@ -1,3 +1,14 @@ +# -------------------------------------------------------------------------------------- +# 1. Theta-dominance based evolutionary algorithm is described in the following papers: +# +# Title: A New Dominance Relation-Based Evolutionary Algorithm for Many-Objective Optimization +# Link: https://ieeexplore.ieee.org/abstract/document/7080938 +# +# 2. This code has been inspired by PlatEMO. +# More information about PlatEMO can be found at the following URL: +# GitHub Link: https://github.com/BIMK/PlatEMO +# -------------------------------------------------------------------------------------- + import jax import jax.numpy as jnp @@ -88,11 +99,6 @@ def environmental_selection(pop, obj, w, n, z, z_nad): @jit_class class TDEA(Algorithm): - """Theta-dominance based evolutionary algorithm - - link: https://ieeexplore.ieee.org/abstract/document/7080938 - Inspired by PlatEMO. - """ def __init__( self,