Multi-Objective Solvers

Base Class

class autooed.mobo.solver.base.Solver(problem, **kwargs)[source]

Bases: abc.ABC

Base class of multi-objective solver.

__init__(problem, **kwargs)[source]

Initialize a solver.

abstract _solve(X, Y)[source]

Solve the multi-objective problem and propose a batch of candidates.

Parameters:X (np.array) – Current design variables (continuous).
Returns:
  • X_candidate (np.array) – Proposed candidate design variables (continuous).
  • Y_candidate (np.array) – Objective values of proposed candidate designs.
solve(X, Y, batch_size, acquisition)[source]

Solve the multi-objective problem and propose a batch of candidates.

Parameters:
  • X (np.array) – Current design variables (raw).
  • batch_size (int) – Size of the candidate batch.
Returns:

  • X_candidate (np.array) – Proposed candidate design variables (raw).
  • Y_candidate (np.array) – Objective values of proposed candidate designs.

NSGA-II

class autooed.mobo.solver.nsga2.NSGA2(problem, n_gen=200, pop_size=200, **kwargs)[source]

Bases: autooed.mobo.solver.base.Solver

Solver based on NSGA-II.

__init__(problem, n_gen=200, pop_size=200, **kwargs)[source]

Initialize a solver.

_solve(X, Y, batch_size)[source]

Solve the multi-objective problem and propose a batch of candidates.

Parameters:X (np.array) – Current design variables (continuous).
Returns:
  • X_candidate (np.array) – Proposed candidate design variables (continuous).
  • Y_candidate (np.array) – Objective values of proposed candidate designs.

MOEA/D

class autooed.mobo.solver.moead.MOEAD(problem, n_gen=100, pop_size=100, **kwargs)[source]

Bases: autooed.mobo.solver.base.Solver

Solver based on MOEA/D in MOEA/D-EGO. NOTE: only compatible with Direct selection.

__init__(problem, n_gen=100, pop_size=100, **kwargs)[source]

Initialize a solver.

_solve(X, Y, batch_size)[source]

Solve the multi-objective problem and propose a batch of candidates.

Parameters:X (np.array) – Current design variables (continuous).
Returns:
  • X_candidate (np.array) – Proposed candidate design variables (continuous).
  • Y_candidate (np.array) – Objective values of proposed candidate designs.

ParEGO

class autooed.mobo.solver.parego.parego.ParEGO(problem, n_process=2, **kwargs)[source]

Bases: autooed.mobo.solver.base.Solver

Solver based on ParEGO. NOTE: only compatible with Direct selection.

__init__(problem, n_process=2, **kwargs)[source]

Initialize a solver.

_solve(X, Y, batch_size)[source]

Solve the multi-objective problem by multiple scalarized single-objective solvers.

ParetoFrontDiscovery

class autooed.mobo.solver.pareto_discovery.pareto_discovery.ParetoDiscovery(problem, n_gen=10, pop_size=100, n_process=2, **kwargs)[source]

Bases: autooed.mobo.solver.base.Solver

Solver based on ParetoDiscovery [Schulz et al. 2018]. NOTE: only compatible with direct selection.

__init__(problem, n_gen=10, pop_size=100, n_process=2, **kwargs)[source]

Initialize a solver.

_solve(X, Y, batch_size)[source]

Solve the multi-objective problem and propose a batch of candidates.

Parameters:X (np.array) – Current design variables (continuous).
Returns:
  • X_candidate (np.array) – Proposed candidate design variables (continuous).
  • Y_candidate (np.array) – Objective values of proposed candidate designs.