Skip to content

Commit

Permalink
Update to pymoo 0.6.1 (#25)
Browse files Browse the repository at this point in the history
  • Loading branch information
jbussemaker authored May 8, 2024
2 parents f26d8f7 + b40453a commit 51594a6
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 7 deletions.
9 changes: 8 additions & 1 deletion sb_arch_opt/algo/arch_sbo/infill.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,14 @@
from pymoo.core.algorithm import filter_optimum
from pymoo.util.normalization import Normalization
from pymoo.util.nds.non_dominated_sorting import NonDominatedSorting
from pymoo.algorithms.moo.nsga2 import RankAndCrowdingSurvival, calc_crowding_distance
from pymoo.algorithms.moo.nsga2 import RankAndCrowdingSurvival

try:
# pymoo < 0.6.1
from pymoo.algorithms.moo.nsga2 import calc_crowding_distance
except ImportError:
# pymoo >= 0.6.1
from pymoo.operators.survival.rank_and_crowding.metrics import calc_crowding_distance

__all__ = ['SurrogateInfill', 'FunctionEstimateInfill', 'ConstrainedInfill', 'FunctionEstimateConstrainedInfill',
'ExpectedImprovementInfill', 'MinVariancePFInfill', 'ConstraintStrategy', 'MeanConstraintPrediction',
Expand Down
9 changes: 5 additions & 4 deletions sb_arch_opt/algo/pymoo_interface/md_mating.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,14 @@ def _do(self, problem, pop, n_offsprings, parents=False, **kwargs):
crossover = self.crossover[clazz]
assert crossover.n_parents == n_parents_crossover and crossover.n_offsprings == n_offspring_crossover

_parents = [[Individual(X=parent.X[x_idx]) for parent in parents] for parents in pop]
_parents = [Population.new(X=[parent.X[x_idx].astype(float) for parent in parents]) for parents in pop]
# _parents = [[Individual(X=parent.X[x_idx]) for parent in parents] for parents in pop]

_vars = [var_defs[e] for e in list_of_vars]
_vars = {i: var_defs[e] for i, e in enumerate(list_of_vars)}
_xl, _xu = None, None

if clazz in [Real, Integer]:
_xl, _xu = np.array([v.bounds for v in _vars]).T
_xl, _xu = np.array([v.bounds for v in _vars.values()]).T

_problem = Problem(vars=_vars, xl=_xl, xu=_xu)

Expand All @@ -133,7 +134,7 @@ def _do(self, problem, pop, n_offsprings, parents=False, **kwargs):
_off = mutation(_problem, _off, **kwargs)

# Sometimes NaN's might sneak into the outputs, try again if this is the case
x_off = _off.get('X')[:n_offsprings, :]
x_off = _off.get('X')[:n_offsprings, :].astype(float)
if np.any(np.isnan(x_off)):
continue
break
Expand Down
8 changes: 7 additions & 1 deletion sb_arch_opt/pareto_front.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,17 @@
from pymoo.core.evaluator import Evaluator
from pymoo.visualization.scatter import Scatter
from pymoo.core.initialization import Initialization
from pymoo.algorithms.moo.nsga2 import calc_crowding_distance
from pymoo.util.nds.non_dominated_sorting import NonDominatedSorting
from pymoo.termination.default import DefaultMultiObjectiveTermination, DefaultSingleObjectiveTermination
from sb_arch_opt.sampling import HierarchicalExhaustiveSampling, HierarchicalSampling

try:
# pymoo < 0.6.1
from pymoo.algorithms.moo.nsga2 import calc_crowding_distance
except ImportError:
# pymoo >= 0.6.1
from pymoo.operators.survival.rank_and_crowding.metrics import calc_crowding_distance

__all__ = ['CachedParetoFrontMixin']


Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def _get_readme():
license='MIT',
install_requires=[
'numpy',
'pymoo~=0.6.0.1',
'pymoo~=0.6.1',
'scipy',
'deprecated',
'pandas',
Expand Down

0 comments on commit 51594a6

Please sign in to comment.