5.6. pyopus.problems.madsprob
— Mesh adaptive direct search test problems
Optimization test functions from papers on MADS. (PyOPUS subsystem name: MADSPROB)
All test functions in this module are maps from \(R^n\) to \(R\).
The nc nonlinear constraints are of the form
Beside linear constraints a problem can also have bounds of the form
This module is independent of PyOPUS, meaning that it can be taken as is
and used as a module in some other package. It depends only on the cpi
and the mgh
module.
The STYRENE and the MDO problem depend on the _mads
module.
HS114 and MAD6 depend on the _lvns
module.
References:
Audet C., Dennis J.E. Jr., Mesh Adaptive Direct Search Algorithms for Constrained Optimization. SIAM Journal on Optimization, vol. 17, pp. 188-217, 2006.
Audet C., Dennis Jr J.E., Le Digabel S., Parallel Space Decomposition of the Mesh Adaptive Direct Search Algorithm. SIAM Journal on Optimization, vol. 19, pp. 1150-1170, 2008.
Abramson M.A., Audet C., Dennis J.E. Jr., Le Digabel S., ORTHO-MADS: A Deterministic MADS Instance with Orthogonal Directions. SIAM Journal on Optimization, vol. 20, pp. 948-966, 2009.
Audet C., Dennis J.E. Jr., A Progressive Barrier for Derivative-Free Nonlinear Programming. SIAM Journal on Optimization, vol. 20, pp. 445-472, 2009.
Conn A.R., Le Digabel S., Use of Quadratic Models with Mesh Adaptive Direct Search for Constrained Black Box Optimization. Optimization Methods and Software, vol. 28, pp. 139-158, 2013.
- class pyopus.problems.madsprob.B250[source]
B250 test function (n=60, nc=1).
Mentioned as problem B in section 5.2 of [madspsd].
Rewritten from C++ source obtained from the NOMAD test problems collection.
See the
MADSPROB
class for more details.- name = 'B250'
The name of the test function
- class pyopus.problems.madsprob.B500[source]
B500 test function (n=60, nc=1).
Mentioned as problem B in section 5.2 of [madspsd].
Rewritten from C++ source obtained from the NOMAD test problems collection.
See the
MADSPROB
class for more details.- name = 'B500'
The name of the test function
- class pyopus.problems.madsprob.CRESCENT(n=10)[source]
CRESCENT test function (n=arbitrary, nc=2).
Published as the first problem in section 4.3 of [madspb].
See the
MADSPROB
class for more details.- name = 'CRESCENT'
The name of the test function
- class pyopus.problems.madsprob.DIFF2[source]
DIFF2 test function (n=2, nc=0).
Published as the problem (4.1) in [madsqm].
See the
MADSPROB
class for more details.- name = 'DIFF2'
The name of the test function
- class pyopus.problems.madsprob.DISK(n=10)[source]
DISK test function (n=arbitrary, nc=1). Also referred to a the Hypersphere problem.
Published as the first problem in section 4.2 of [madspb] or as the first problem in section 5.3 of [mads].
See the
MADSPROB
class for more details.- name = 'DISK'
The name of the test function
- class pyopus.problems.madsprob.G2(n=10)[source]
G2 test function (n=arbitrary, nc=1).
Published as problem A in section 5.2 of [madspsd].
See the
MADSPROB
class for more details.- name = 'G2'
The name of the test function
- class pyopus.problems.madsprob.HS114_mod[source]
Modification of the HS114 problem from the
lvns
module.The HS114 problem has 10 variables. One linear equality constraint links x1, x4, and x5. This modification eliminates x5 resulting in a problem with 9 variables and no equality constraint.
Published in [madsort].
- class pyopus.problems.madsprob.MAD6_mod[source]
Modification of the MAD6 problem from the
lvns
module.The MAD6 problem has 7 variables. One of them has an equality constraint imposed (x7). There is also a linear equality constraint involving x4 and x6. This modification eliminates x6 and x7 resulting in a problem with 5 variables and no equality constraint.
Published in [madsort].
- class pyopus.problems.madsprob.MADSPROB(n, m=1, nc=0)[source]
Base class for the test functions
The fesible initial point can be obtained from the
initial
member. The infeasible initial point is in theinitialinf
member. If any of these two points is not given, it is set toNone
.The full name of the problem is in the
name
member. Then
member holds the dimension of the problem.nc
is the number of nonlinear constraints.The best known minimum value of the function is in the
fmin
member. If this value is unknown it is set toNone
.Objects of this class are callable. The calling convention is
object(x, gradients)
where x is the input values vector and gradients is a boolean flag specifying whether the gradients should be evaluated. The values of the auxiliary functions and their gradients are stored in the
fi
andJ
members. The values of the cobnstraints and the corresponding Jacobian are stored in theci
andJ
members.This creates an instance of the CRESCENT function and evaluates the function and the constraints along with the gradient and the constraint Jacobian at the feasible initial point:
from pyopus.optimizer.madsprob import CRESCENT cr=CRESCENT(n=10) (f, g, c, Jc)=cr.fgcjc(cr.initial)
- cpi()[source]
Returns the common problem interface.
xmin is not available.
See the
CPI
class for more information.
- name = None
The name of the test function
- pyopus.problems.madsprob.MADSPROBsuite = [<class 'pyopus.problems.madsprob.SNAKE'>, <class 'pyopus.problems.madsprob.DISK'>, <class 'pyopus.problems.madsprob.CRESCENT'>, <class 'pyopus.problems.madsprob.G2'>, <class 'pyopus.problems.madsprob.B250'>, <class 'pyopus.problems.madsprob.B500'>, <class 'pyopus.problems.madsprob.DIFF2'>, <class 'pyopus.problems.madsprob.UFO7_26'>, <class 'pyopus.problems.madsprob.UFO7_29'>, <class 'pyopus.problems.madsprob.MDO'>, <class 'pyopus.problems.madsprob.STYRENE'>, <class 'pyopus.problems.madsprob.MAD6_mod'>, <class 'pyopus.problems.madsprob.HS114_mod'>]
A list holding references to all function classes in this module.
- class pyopus.problems.madsprob.MDO(eps=1e-12, maxiter=100)[source]
A multidisciplinary design optimization problem - maximization of aircraft range.
Warning - possible memory leaks and crashes the c++ code is not cleaned up.
Published in [madsvns].
- class pyopus.problems.madsprob.SNAKE[source]
SNAKE test function (n=2, nc=2).
Published as the first problem in section 4.1 of [madspb].
See the
MADSPROB
class for more details.- name = 'SNAKE'
The name of the test function
- class pyopus.problems.madsprob.STYRENE[source]
An engineering optimization problem - styrene process optimization
Warning - possible memory leaks and crashes the c++ code is not cleaned up.
Published in [madsvns].
- class pyopus.problems.madsprob.UFO7_26(n=10)[source]
Problem from UFO manual (n, nc=int(3*(n-2)/2)).
Published as the first problem in section 7.26 of [ufo].
See the
MADSPROB
class for more details.- cpi()[source]
Returns the common problem interface.
xmin is not available.
See the
CPI
class for more information.
- name = 'UFO7_26'
The name of the test function
- class pyopus.problems.madsprob.UFO7_29(n=10)[source]
Problem from UFO manual (n, nc=n-2).
Published as the first problem in section 7.29 of [ufo].
See the
MADSPROB
class for more details.- cpi()[source]
Returns the common problem interface.
xmin is not available.
See the
CPI
class for more information.
- name = 'UFO7_29'
The name of the test function
Example file madsprob.py in folder demo/problems/
# Problems from papers on MADS
from pyopus.problems.madsprob import MADSPROBsuite
if __name__=='__main__':
print("MADS problems")
for ii in range(len(MADSPROBsuite)):
prob=MADSPROBsuite[ii]()
fx, cx = prob.fc(prob.initial)
print("%2d: %20s n=%2d: f0=%e" % (ii, prob.name, prob.n, fx))
print()