pymoo
Latest Version: pymoo==0.3.2

Test Problems

In the future we are planning to provide a comprehensive overview of problems. So far we have managed to describe a view of them and plot the functions. Please note, that we have used for some problems the descriptions from here.

We would like to keep the function definitions as error free as possible and matching with the implementation. If you find any deviation please let us know.

Many-Objective

Problem

Description

DTLZ1

DTLZ2

DTLZ3

DTLZ4

DTLZ5

DTLZ6

DTLZ7

DTLZ1^-1

Scaled DTLZ

Convex DTLZ

Multi-Objective

Problem

Variables

Objectives

Constraints

Description

BNH

2

2

2

Carside

7

3

10

Kursawe

3

2

OSY

6

2

6

TNK

2

2

2

Truss2D

3

2

1

Welded Beam

4

2

4

CTP1

2

2

CTP2

2

2

CTP3

2

2

CTP4

2

2

CTP5

2

2

CTP6

2

2

CTP7

2

2

CTP8

2

2

ZDT1

30

2

ZDT2

30

2

ZDT3

30

2

ZDT4

10

2

ZDT5

80

2

ZDT6

10

2

Single-Objective

Problem

Variables

Constraints

Type

Ackley

s

Cantilevered Beams

4

2

Griewank

s

Himmelblau

2

Knapsack

s

1

Pressure Vessel

4

4

Rastrigin

s

Rosenbrock

s

Schwefel

s

Sphere

s

Zakharov

s

G01

13

9

G02

20

2

G03

10

1

G04

5

6

G05

4

5

G06

2

2

G07

10

8

G08

2

2

G09

8

6

Global Optimization

Implementations are taken from (SciPy)[https://github.com/scipy/scipy/tree/master/benchmarks/benchmarks/go_benchmark_functions] where a variety of global optimization benchmark problems are provided. Pymoo uses a wrapper class to make all those functions available.

Problem

Variables

Constraints

Name

AMGM

2

“go-amgm”

Ackley01

2

“go-ackley01”

Ackley02

2

“go-ackley02”

Ackley03

2

“go-ackley03”

Adjiman

2

“go-adjiman”

Alpine01

2

“go-alpine01”

Alpine02

2

“go-alpine02”

BartelsConn

2

“go-bartelsconn”

Beale

2

“go-beale”

BiggsExp02

2

“go-biggsexp02”

BiggsExp03

3

“go-biggsexp03”

BiggsExp04

4

“go-biggsexp04”

BiggsExp05

5

“go-biggsexp05”

Bird

2

“go-bird”

Bohachevsky1

2

“go-bohachevsky1”

Bohachevsky2

2

“go-bohachevsky2”

Bohachevsky3

2

“go-bohachevsky3”

BoxBetts

3

“go-boxbetts”

Branin01

2

“go-branin01”

Branin02

2

“go-branin02”

Brent

2

“go-brent”

Brown

2

“go-brown”

Bukin02

2

“go-bukin02”

Bukin04

2

“go-bukin04”

Bukin06

2

“go-bukin06”

CarromTable

2

“go-carromtable”

Chichinadze

2

“go-chichinadze”

Cigar

2

“go-cigar”

Cola

17

“go-cola”

Colville

4

“go-colville”

Corana

4

“go-corana”

CosineMixture

2

“go-cosinemixture”

CrossInTray

2

“go-crossintray”

CrossLegTable

2

“go-crosslegtable”

CrownedCross

2

“go-crownedcross”

Csendes

2

“go-csendes”

Cube

2

“go-cube”

Damavandi

2

“go-damavandi”

DeVilliersGlasser01

4

“go-devilliersglasser01”

DeVilliersGlasser02

5

“go-devilliersglasser02”

Deb01

2

“go-deb01”

Deb03

2

“go-deb03”

Decanomial

2

“go-decanomial”

Deceptive

2

“go-deceptive”

DeckkersAarts

2

“go-deckkersaarts”

DeflectedCorrugatedSpring

2

“go-deflectedcorrugatedspring”

DixonPrice

2

“go-dixonprice”

Dolan

5

“go-dolan”

DropWave

2

“go-dropwave”

Easom

2

“go-easom”

Eckerle4

3

“go-eckerle4”

EggCrate

2

“go-eggcrate”

EggHolder

2

“go-eggholder”

ElAttarVidyasagarDutta

2

“go-elattarvidyasagardutta”

Exp2

2

“go-exp2”

Exponential

2

“go-exponential”

FreudensteinRoth

2

“go-freudensteinroth”

Gear

4

“go-gear”

Giunta

2

“go-giunta”

GoldsteinPrice

2

“go-goldsteinprice”

Griewank

2

“go-griewank”

Gulf

3

“go-gulf”

Hansen

2

“go-hansen”

Hartmann3

3

“go-hartmann3”

Hartmann6

6

“go-hartmann6”

HelicalValley

3

“go-helicalvalley”

HimmelBlau

2

“go-himmelblau”

HolderTable

2

“go-holdertable”

Hosaki

2

“go-hosaki”

Infinity

2

“go-infinity”

JennrichSampson

2

“go-jennrichsampson”

Judge

2

“go-judge”

Katsuura

2

“go-katsuura”

Keane

2

“go-keane”

Kowalik

4

“go-kowalik”

Langermann

2

“go-langermann”

LennardJones

6

“go-lennardjones”

Leon

2

“go-leon”

Levy03

2

“go-levy03”

Levy05

2

“go-levy05”

Levy13

2

“go-levy13”

Matyas

2

“go-matyas”

McCormick

2

“go-mccormick”

Meyer

3

“go-meyer”

Michalewicz

2

“go-michalewicz”

MieleCantrell

4

“go-mielecantrell”

Mishra01

2

“go-mishra01”

Mishra02

2

“go-mishra02”

Mishra03

2

“go-mishra03”

Mishra04

2

“go-mishra04”

Mishra05

2

“go-mishra05”

Mishra06

2

“go-mishra06”

Mishra07

2

“go-mishra07”

Mishra08

2

“go-mishra08”

Mishra09

3

“go-mishra09”

Mishra10

2

“go-mishra10”

Mishra11

2

“go-mishra11”

MultiModal

2

“go-multimodal”

NeedleEye

2

“go-needleeye”

NewFunction01

2

“go-newfunction01”

NewFunction02

2

“go-newfunction02”

OddSquare

2

“go-oddsquare”

Parsopoulos

2

“go-parsopoulos”

Pathological

2

“go-pathological”

Paviani

10

“go-paviani”

PenHolder

2

“go-penholder”

Penalty01

2

“go-penalty01”

Penalty02

2

“go-penalty02”

PermFunction01

2

“go-permfunction01”

PermFunction02

2

“go-permfunction02”

Pinter

2

“go-pinter”

Plateau

2

“go-plateau”

Powell

4

“go-powell”

PowerSum

4

“go-powersum”

Price01

2

“go-price01”

Price02

2

“go-price02”

Price03

2

“go-price03”

Price04

2

“go-price04”

Qing

2

“go-qing”

Quadratic

2

“go-quadratic”

Quintic

2

“go-quintic”

Rana

2

“go-rana”

Rastrigin

2

“go-rastrigin”

Ratkowsky01

4

“go-ratkowsky01”

Ratkowsky02

3

“go-ratkowsky02”

Ripple01

2

“go-ripple01”

Ripple25

2

“go-ripple25”

Rosenbrock

2

“go-rosenbrock”

RosenbrockModified

2

“go-rosenbrockmodified”

RotatedEllipse01

2

“go-rotatedellipse01”

RotatedEllipse02

2

“go-rotatedellipse02”

Salomon

2

“go-salomon”

Sargan

2

“go-sargan”

Schaffer01

2

“go-schaffer01”

Schaffer02

2

“go-schaffer02”

Schaffer03

2

“go-schaffer03”

Schaffer04

2

“go-schaffer04”

Schwefel01

2

“go-schwefel01”

Schwefel02

2

“go-schwefel02”

Schwefel04

2

“go-schwefel04”

Schwefel06

2

“go-schwefel06”

Schwefel20

2

“go-schwefel20”

Schwefel21

2

“go-schwefel21”

Schwefel22

2

“go-schwefel22”

Schwefel26

2

“go-schwefel26”

Schwefel36

2

“go-schwefel36”

Shekel05

4

“go-shekel05”

Shekel07

4

“go-shekel07”

Shekel10

4

“go-shekel10”

Shubert01

2

“go-shubert01”

Shubert03

2

“go-shubert03”

Shubert04

2

“go-shubert04”

SineEnvelope

2

“go-sineenvelope”

SixHumpCamel

2

“go-sixhumpcamel”

Sodp

2

“go-sodp”

Sphere

2

“go-sphere”

Step

2

“go-step”

Step2

2

“go-step2”

Stochastic

2

“go-stochastic”

StretchedV

2

“go-stretchedv”

StyblinskiTang

2

“go-styblinskitang”

TestTubeHolder

2

“go-testtubeholder”

ThreeHumpCamel

2

“go-threehumpcamel”

Thurber

7

“go-thurber”

Treccani

2

“go-treccani”

Trefethen

2

“go-trefethen”

Trid

6

“go-trid”

Trigonometric01

2

“go-trigonometric01”

Trigonometric02

2

“go-trigonometric02”

Tripod

2

“go-tripod”

Ursem01

2

“go-ursem01”

Ursem03

2

“go-ursem03”

Ursem04

2

“go-ursem04”

UrsemWaves

2

“go-ursemwaves”

VenterSobiezcczanskiSobieski

2

“go-ventersobiezcczanskisobieski”

Vincent

2

“go-vincent”

Watson

6

“go-watson”

Wavy

2

“go-wavy”

WayburnSeader01

2

“go-wayburnseader01”

WayburnSeader02

2

“go-wayburnseader02”

Weierstrass

2

“go-weierstrass”

Whitley

2

“go-whitley”

Wolfe

3

“go-wolfe”

XinSheYang01

2

“go-xinsheyang01”

XinSheYang02

2

“go-xinsheyang02”

XinSheYang03

2

“go-xinsheyang03”

XinSheYang04

2

“go-xinsheyang04”

Xor

9

“go-xor”

YaoLiu04

2

“go-yaoliu04”

YaoLiu09

2

“go-yaoliu09”

Zacharov

2

“go-zacharov”

ZeroSum

2

“go-zerosum”

Zettl

2

“go-zettl”

Zimmerman

2

“go-zimmerman”

Zirilli

2

“go-zirilli”