CGO ego: Difference between revisions

From TomWiki
Jump to navigationJump to search
(Created page with "{{Part Of Manual|title=the CGO Manual|link=CGO Manual}} ==Purpose== Solve general constrained mixed-integer global black-box optimization problems with costly objective ...")
 
 
(21 intermediate revisions by 3 users not shown)
Line 12: Line 12:
& b_{L} & \leq & Ax & \leq  & b_{U} \\
& b_{L} & \leq & Ax & \leq  & b_{U} \\
& c_{L} & \leq & c(x) & \leq & c_{U} \\
& c_{L} & \leq & c(x) & \leq & c_{U} \\
&\multicolumn{5}{c}{ ~x_{j} \in \MATHSET{N}\ ~~\forall j \in \MATHSET{I}}, \\
& ~x_{j} \in \mathbb{N} ~~\forall j \in \mathbb{I}\\
\end{array}
\end{array},
</math>
</math>




where <math>f(x) \in \MATHSET{R}</math>; <math>x_L,~x,~x_U \in \MATHSET{R}^d</math>;
where <math>f(x) \in \mathbb{R}</math>; <math>x_L,~x,~x_U \in \mathbb{R}^d</math>;
the <math>m_1</math> linear constraints are defined by <math>A \in
the <math>m_1</math> linear constraints are defined by <math>A \in
\MATHSET{R}^{m_1 \times d}</math>, <math>b_L,~b_U \in \MATHSET{R}^{m_1}</math>;
\mathbb{R}^{m_1 \times d}</math>, <math>b_L,~b_U \in \mathbb{R}^{m_1}</math>;
and the <math>m_2</math> nonlinear constraints are defined by <math>c_L,~c(x),~c_U \in~
and the <math>m_2</math> nonlinear constraints are defined by <math>c_L,~c(x),~c_U \in~
\MATHSET{R}^{m_2}</math>.
\mathbb{R}^{m_2}</math>.
The variables <math>x_I</math> are restricted to be integers,  
The variables <math>x_I</math> are restricted to be integers,  
where <math>\MATHSET{I}</math> is an index subset of <math>\{1,\ldots,d\},</math> possibly empty.
where <math>\mathbb{I}</math> is an index subset of <math>\{1,\ldots,d\},</math> possibly empty.
It is assumed that the function <math>f(x)</math> is continuous with respect to all  
It is assumed that the function <math>f(x)</math> is continuous with respect to all  
variables, even if there is a demand that some variables only take integer values.  
variables, even if there is a demand that some variables only take integer values.  
Line 45: Line 45:
Result = tomRun('ego', Prob);
Result = tomRun('ego', Prob);
</pre>
</pre>
==Usage==
See [[CGO solver usage]]


==Description of Inputs==
==Description of Inputs==


Problem description structure. The following fields are used:
===Problem structure===
The following fields are used in the problem description structure '''Prob''':


{|class="wikitable"
{|class="wikitable"
!Field||Description
!Field||Description
|-valign="middle"
|''Name''||rowspan="15"|See [[Common input for all CGO solvers]]
|-valign="top"
|-valign="top"
|''Name''||Name of the problem. Used for security when doing warm starts.
|''FUNCS.f''
|-valign="top"
|''FUNCS.f''||Name of function to compute the objective function.
|-valign="top"
|''FUNCS.c''||Name of function to compute the nonlinear constraint vector.
|-valign="top"
|''x_L''||Lower bounds on the variables. Must be finite.
|-valign="top"
|''x_U''||Upper bounds on the variables. Must be finite.
|-valign="top"
|''b_U''||Upper bounds for the linear constraints.
|-valign="top"
|''b_L''||Lower bounds for the linear constraints.
|-valign="top"
|''A''||Linear constraint matrix.
|-valign="top"
|''c_L''||Lower bounds for the nonlinear constraints.
|-valign="top"
|''c_U''||Upper bounds for the nonlinear constraints.
|-valign="top"
|''WarmStart''||Set true (non-zero) to load data from previous run from ''cgoSave.mat ''and re- sume optimization from where the last run ended. If ''Prob.CGO.WarmStartInfo ''has been defined through a call to ''WarmDefGLOBAL'', this field is used instead of the ''cgoSave.mat ''file. All CGO solvers  uses the same mat-file and structure field and can read the output of one another.
|-valign="top"
|''MaxCPU''||Maximal CPU Time (in seconds) to be used.
|-valign="top"
|''user''||User field used to send information to low-level functions.
|-valign="top"
|''PriLevOpt''||Print level. 0 = silent.  1 = Summary, 2 = Printing  each iteration, 3 = Info about local / global solution, 4 = Progress in x.
|-valign="top"
|''PriLevSub''||Print Level in subproblem solvers.
|-valign="top"
|''optParam''||Structure with optimization parameters. The following fields are used:
|-valign="top"
|''MaxFunc''||Maximal number of costly function evaluations, default 300 for ''rbfSolve ''and ''arbfMIP'', and default 200 for ''ego''. ''MaxFunc ''must be ''<= ''5000. If WarmStart = 1 and MaxFunc ''<= ''nFunc (Number of f(x) used) then set MaxFunc := MaxFunc + nFunc.
|-valign="top"
|''IterPrint''||Print one information line each iteration, and the new x tried. Default IterPrint = 1.  fMinI  means the best f(x)  is infeasible. fMinF  means the best f(x)  is feasible (also integer feasible).
|-valign="top"
|''fGoal''||Goal for function value, not used if ''inf ''or empty.
|-valign="top"
|''eps_f''||Relative accuracy for function value, ''fTol ''== ''eps_f ''.  Stop if ''<nowiki>|</nowiki>f - f Goal<nowiki>|</nowiki> ='' ''<nowiki>|</nowiki>f Goal<nowiki>|</nowiki> * fTol '', if ''f Goal ''= 0. Stop if ''<nowiki>|</nowiki>f - f Goal<nowiki>|</nowiki> = fTol '', if ''f Goal ''= 0. See the output field maxTri.
|-valign="top"
|''bTol''||Linear constraint tolerance.
|-valign="top"
|''cTol''||Nonlinear constraint tolerance.
|-valign="top"
|''MaxIter''||Maximal  number of  iterations  used in  the  local optimization  on the  re- sponse surface in each step. Default 1000, except for pure IP problems, then max(GO.MaxFunc, MaxIter);.
|-valign="top"
|''CGO''||Structure (''Prob.CGO'') with parameters concerning global optimization options.
 
The following general fields in Prob.CGO are used:
|-valign="top"
|''Percent''||Type of strategy to get the initial  sampled values:
 
{|
!Percent||Experimental Design||ExD
|-valign="top"
|||'''Corner  strategies'''||
|-valign="top"
|900||All Corners||1
|-valign="top"
|997||''x<sub>L</sub> ''+ ''x<sub>U</sub>  ''+ adjacent corners||2
|-valign="top"
|998||''x<sub>U</sub>  ''+ adjacent corners||3
|-valign="top"
|999||''x<sub>L</sub> ''+ adjacent corners||4
|-valign="top"
|||
'''Deterministic Strategies'''||
|-valign="top"
|0||User given initial  points||5
|-valign="top"
|-valign="top"
|94||DIRECT  solver ''glbFast''||6
|''FUNCS.c''
|-valign="top"
|-valign="top"
|95||DIRECT  solver ''glcFast''||6
|''x_L''
|-valign="top"
|-valign="top"
|96||DIRECT  solver ''glbSolve''||6
|''x_U''
|-valign="top"
|-valign="top"
|97||DIRECT  solver ''glcSolve''||6
|''b_L''
|-valign="top"
|-valign="top"
|98||DIRECT  solver ''glbDirect''||6
|''b_U''
|-valign="top"
|-valign="top"
|99||DIRECT  solver ''glcDirect''||6
|''A''
|-valign="top"
|-valign="top"
|||
|''c_L''
'''Latin  Based Sampling'''||
|-valign="top"
|-valign="top"
|1||Maximin LHD 1-norm||7
|''c_U''
|-valign="top"
|-valign="top"
|2||Maximin LHD 2-norm||8
|''WarmStart''
|-valign="top"
|-valign="top"
|3||Maximin LHD Inf-norm||9
|''user''
|-valign="top"
|-valign="top"
|4||Minimal Audze-Eglais||10
|''MaxCPU''
|-valign="top"
|-valign="top"
|5||Minimax LHD (only 2 dim)||11
|''PriLevOpt''
|-valign="top"
|-valign="top"
|6||Latin Hypercube||12
|''optParam''
|-valign="top"
|-valign="top"
|7||Orthogonal Samling||13
|''CGO''||See the table below but also [[common input for all CGO solvers#CGO structure|this table]] for input common to all CGO solvers
|-valign="top"
|-valign="top"
|||
|''GO''||See [[common input for all CGO solvers#GO structure|common input for all CGO solvers]]
'''Random  Strategies (pp in %)'''||
|-valign="top"
|-valign="top"
|1pp||Circle surrounding||14
|''MIP''||See [[common input for all CGO solvers#MIP structure|common input for all CGO solvers]]
|-valign="top"
|2pp||Ellipsoid surrounding||15
|-valign="top"
|3pp||Rectangle surrounding||16
|-valign="top"
|-valign="top"
|''varargin''||Additional parameters to ego are sent to the costly f(x)
|}
|}


Negative values of Percent result in constrained versions of the experimental design methods 7-16. It means that all points sampled are feasible with respect to all given constraints.
For ExD 5,6-12,14-16 user defined points are used.
|-valign="top"
|''nSample''||Number of sample points to be used in initial experimental design. ''nSample ''is used differently dependent on the value of Percent:


{|class="wikitable"
{|class="wikitable"
!||(n)Sample:
!colspan="2"|'''- Special EGO algorithm parameters in Prob.CGO -'''
!ExD||''< ''0||= 0||''> ''0||[]
|-valign="top"
|1||2<sup>''d''</sup>
|-valign="top"
|6||<nowiki>|</nowiki>n<nowiki>|</nowiki>
|-valign="top"
|7-11||''d ''+ 1||''d ''+ 1||max (''d ''+ 1'', n'')||(''d ''+ 1)(''d ''+ 2)''/''2
|-valign="top"
|12||LATIN(k)||||||
|-valign="top"
|13||<nowiki>|</nowiki>n<nowiki>|</nowiki>
|-valign="top"
|14-16||''d ''+ 1
|}
 
where LATIN = [21 21 33 41 51 65 65] and ''k ''= ''<nowiki>|</nowiki>nSample<nowiki>|</nowiki>''. Otherwise nSample as input does not matter.
 
'''Description of the experimental  designs:'''
 
'''ExD  1, '''All  Corners. Initial  points is the corner points of the box given by Prob.x L and Prob.x U. Generates 2''d ''points, which results in too many points when the dimension is high.
 
'''ExD  2, '''Lower and Upper Corner point + adjacent points. Initial  points are 2 ''* d ''+ 2 corners: the lower left corner ''x<sub>L</sub>  ''and its ''d ''adjacent  corners ''x<sub>L</sub> ''+ (''x<sub>U</sub> ''(''i'') ''- x<sub>L</sub> ''(''i'')) ''* e<sub>i</sub> , i ''= 1'', ..., d ''and the upper right corner ''x<sub>U</sub>  ''and its ''d ''adjacent corners ''x<sub>U</sub> - ''(''x<sub>U</sub>''(''i'') ''- x<sub>L</sub>''(''i'')) ''* e<sub>i</sub> , i ''= 1'', ..., d''
 
'''ExD  3. '''Initial  points are the upper right corner ''x<sub>U</sub>'' and its ''d ''adjacent corners ''x<sub>U</sub> - ''(''x<sub>U</sub>''(''i'') ''- x<sub>L</sub>''(''i'')) ''* e<sub>i</sub> , i ''= 1'', ..., d''
 
'''ExD  4.  '''Initial  points are the lower left corner ''x<sub>L</sub> ''and its ''d ''adjacent corners ''x<sub>L</sub> ''+ (''x<sub>U</sub> ''(''i'') ''- x<sub>L</sub> ''(''i'')) ''* e<sub>i</sub> , i ''= 1'', ..., d''
 
'''ExD  5.  '''User given initial  points, given as a matrix in CGO.X. Each column is one sampled point. If ''d ''= length(Prob.x_L), then size(X,1) = d, size(X,2) ''='' ''d ''+ 1. CGO.F should be defined as empty, or contain a vector of corresponding ''f ''(''x'') values. Any CGO.F value set as NaN will be computed by solver routine.
 
'''ExD 6. '''Use determinstic global optimization methods to find the initial design. Current methods available (all DIRECT  methods), dependent on the value of Percent:
 
99 = glcDirect, 98 = glbDirect, 97 = glcSolve, 96 = glbSolve, 95 = glcFast, 94 = glbFast.
 
'''ExD  7-11.''' Optimal Latin Hypercube Designs (LHD) with respect to different norms. The following norms and designs are available, dependent on the value of Percent:
 
1 = Maximin  1-Norm, 2 = Maximin  2-Norm, 3 = Maximin  Inf-Norm,  4 = Audze-Eglais Norm, 5 = Minimax 2-Norm.
 
All designs taken from: [http://www.spacefillingdesigns.nl/ http://www.spacefillingdesigns.nl/]
 
Constrained versions will  try  bigger  and  bigger  designs up  to  ''M'' = max(10 ''* d, nT rial'') different designs, stopping when it has found nSample feasible points.
 
'''ExD 12.''' Latin  hypercube  space-filling design. For nSample ''< ''0, ''k  ''= ''<nowiki>|</nowiki>nSample<nowiki>|</nowiki>'' should in principle be the problem dimension. The number of points
 
sampled is:
 
k : 2 3 4 5 6 ''> ''6
 
Points : 21 33 41 51 65 65
 
The call made is: X = daceInit(abs(nSample),Prob.x L,Prob.x U);
 
Set nSample = [] to get (d+1)*(d+2)/2 sampled points:
 
d : 1 2 3 4 5 6 7 8 9 10
 
Points : 3 6 10 15 21 28 36 45 55 66
 
This is a more efficient number of points to use.
 
If CGO.X is nonempty, these points are verified as in ExD 5, and treated as already sampled points. Then nSample additional points are sampled, restricted to be close to the given points.
 
Constrained version of  Latin  hypercube  only  keep  points  that  fulfill  the linear  and  nonlinear  constraints.    The  algorithm  will  try  up  to  ''M  ''= ''max''(10 ''* d, nTrial'') points, stopping when it has found nSample feasible points (''d ''+ 1 points if ''nSample < ''0).
 
'''ExD  13. '''Orthogonal Sampling, LH with subspace density demands.
 
'''ExD  14-16'''. Random strategies, the ''<nowiki>|</nowiki>Percent<nowiki>|</nowiki> ''value gives the percentage size of an ellipsoid, circle or rectangle around the so far sampled points that new points are not allowed in. Range 1%-50%. Recommended values 10% - 20%.
 
If CGO.X is nonempty, these points are verified as in ExD 5, and treated as already sampled points. Then nSample additional points are sampled, restricted to be close to the given points.
|-valign="top"
|''X,F,CX''||The fields X,F,CX are used to define user given points. ExD = 5 (Percent = 0) needs this information. If ExD == 6-12,14-16 these points are included into the design.
|-valign="top"
|''X''||A matrix  of initial x values. One column for every x value. If ExD == 5, size(X,2) ''>= ''dim(x)+1  needed.
|-valign="top"
|''F''||A vector of initial ''f ''(''x'') values. If any element is set to NaN it will be computed.
|-valign="top"
|''CX''||Optionally a matrix of nonlinear constraint  c(x) values. If nonempty, then size(CX,2) == size(X,2).  If  any element  is set as NaN, the vector c(x) = CX(:,i) will be recomputed.
|-valign="top"
|''RandState''||If ''= ''0, ''rand''(''<nowiki>'</nowiki>state<nowiki>'</nowiki>, RandState'') is set to initialize the pseudo-random generator.  If ''< ''0, ''rand''('''state', ''100 ''* clock'') is set to give a new set of random values each run. If isnan(RandState), the random state is not initialized.  RandState will influence if a stochastic initial experimental design is applied, see input Percent and nSample. RandState will also influence if using the ''multiMin  ''solver, but the random state seed is not reset in ''multiMin''.  The state of the random generator is saved in the warm start output rngState, and the random generator is reinitialized with this state if warm start is used. Default RandState = 0.
|-valign="top"
|''AddMP''||If = 1, add the midpoint as extra point in the corner strategies. Default 1 for any corner strategy, i.e. Percent is 900, 997, 998 or 999.
|-valign="top"
|''nTrial''||For experimental design CLH, the method generates ''M ''= ''max''(10 ''* d, nTrial'') trial  points, and evaluate them until ''nSample ''feasible points  are found.  In the random designs, ''nTrial  ''is the maximum number of trial  points randomly generated for each new point to sample.
|-valign="top"
|-valign="top"
|''CLHMethod''||Different search strategies for finding feasible LH points. First of all, the least infeasible point  is added.  Then the linear feasible points are considered. If more points are needed still, the nonlinear infeasible points are added.
|''EGOAlg''||Main algorithm in the EGO solver


1 - Take the sampled infeasible points in order.
=1 Run expected improvement  steps (modN = 0,1,2,...).  If no ''f ''(''x'')  improvement, use DACE surface minimum (modN = -1) in 1 step


2 - Take a random sample of the infeasible points.
=2 Run expected improvement steps (modN=0)  until ExpI / <nowiki>|</nowiki>yMin<nowiki>|</nowiki> < ''TolExpI'' for 3 successive steps (modN = 1,2,3) without  ''f ''(''x'')  improvement (fRed ''<= ''0).<br>After 2 such steps (when modN = 2), 1 step using the DACE surface minimum (modN = -1) is tried. If then fRed > ''TolExpI'', reset to modN = 0 steps.


3 - Use points with lowest constraint error (cErr).
=3 Compute trial points from both Expexted Improvement and DACE surface minimum in every step
|-valign="top"
|''SCALE''||0 - Original search space (default if any integer values).


1 - Transform search space to unit cube (default if no integers).
=4 Compute DACE surface minimum in every step
|-valign="top"
|''REPLACE''||0 - No replacement, default for constrained problems.


1 - Large function values are replaced by the median.
Default ''EGOAlg'' = 1, but if any x is integer valued, ''EGOAlg'' = 3 is default


''> ''1 - Large values Z are replaced by new values. The replacement is defined as ''Z '':= ''FMAX ''+ ''log''10(''Z - FMAX ''+ 1), where ''FMAX  ''= 10''<sup>REPLACE</sup>'', if ''min''(''F '') ''< ''0 and ''FMAX  ''= 10<sup>(''ceil''(''log''10(''min''(''F '')))+''REPLACE'')</sup> , if ''min''(''F '') ''>= ''0. A new replacement is computed in every iteration, because ''min''(''F '') may change. Default REPLACE = 5, if no linear or nonlinear constraints.
|-valign="top"
|-valign="top"
|''LOCAL''||0 - No local searches after global search. If RBF surface is inaccurate, might be an advantage.
|''pEst''||Norm parameters, fixed or estimated, also see ''p0'', ''pLow'', ''pUpp'' (default ''pEst'' = 0).


1 - Local search from best points after global search. If equal best function values, up to 20 local searches are done.
0 = Fixed constant p-value for all components (default, ''p0''=1.99).
|-valign="top"
|''SMOOTH''||1 - The problem is smooth enough for local search using numerical gradient estimation methods (default).


0 - The problem is nonsmooth or noisy, and local search methods using numer- ical gradient estimation are likely to produce garbage search directions.
1 = Estimate one p-value valid for all components.
|-valign="top"
|''globalSolver''||Global optimization  solver used for subproblem optimization. Default ''glcCluster'' (SMOOTH=1) or  ''glcDirect  ''(SMOOTH=0).      If  the  global- Solver is ''glcCluster'', the fields ''Prob.GO.maxFunc1'', ''Prob.GO.maxFunc2'', ''Prob.GO.maxFunc3'', ''Prob.GO.localSolver'', ''Prob.GO.DIRECT ''and other fields set in ''Prob.GO ''are used. See the help for these parameters in ''glcCluster''.
|-valign="top"
|''localSolver''||Local optimization solver used for subproblem optimization. If not defined, the TOMLAB  default constrained NLP solver is used.
 
'''- Special EGO  algorithm  parameters in Prob.CGO -'''
|-valign="top"
|''EGOAlg''||Main algorithm in the EGO solver (default EGOAlg == 1)


=1  Run expected improvement  steps (modN=0,1,2,...).  If no ''f ''(''x'') improve- ment, use DACE surface minimum (modN=-1) in 1 step
2 = Estimate ''d<nowiki>|| ||</nowiki><sub>p</sub> parameters, one for each component.


=2 Run expected improvement steps (modN=0)  until ExpI/-yMin- ¡ Tol- ExpI  for 3 successive  steps (modN=1,2,3) without  ''f ''(''x'')  improvement  (fRed ''= ''0), where yMin is fMin  transformed by TRANSFORM  After 2 such steps (when modN=2), 1 step using the DACE surface minimum (modN=-1) is tried. If then fRed ¿0, reset to modN=0 steps.
|-valign="top"
|-valign="top"
|''pEst''||1 - Estimate d-vector, p parameters (default), 0 - fix p=2.
|''p0''||Fixed p-value (''pEst''==0, default = 1.99) or<br>initial p-value (''pEst'' == 1, default 1.9) or<br>d-vector of initial p-values (''pEst'' >  1, default 1.9*ones(d,1))
|-valign="top"
|-valign="top"
|''pEst''||Norm parameters, fixed or estimated, also see p0, pLow, pUpp (default pEst = 0).
|''pLow''||If pEst == 0, not used
 
0 = Fixed constant p-value for all components (default, p0=1.99).


1 = Estimate one p-value valid for all components.
if pEst == 1, lower bound on p-value (default 1.98)


''> ''1 = Estimate ''d<nowiki>||||</nowiki><sub>p</sub> parameters, one for each component.
if pEst == 2, lower bounds on p (default 1.99*ones(d,1))
|-valign="top"
|-valign="top"
|''p0''||Fixed p-value (pEst==0, default = 1.99) or initial p-value (pEst == 1, default 1.9) or d-vector of initial p-values (pEst ''> ''1, default 1.9*ones(d,1))
|''pUpp''||If pEst == 0, not used
|-valign="top"
|''pLow''||Lower bound on ''p''.


If pEst == 0, not used
if pEst == 1, upper bound on p-value (default 1.99999)


if pEst == 1, lower bound on p-value (default 1.0)
if pEst == 2, upper bounds on p (default 1.99999*ones(d,1))


if pEst ''> ''1, lower bounds on p (default ones(d,1))
|-valign="top"
|-valign="top"
|''pUpp''||Upper bound on ''p''.
|''snPLim''||Avoid the time consuming global optimization in DACEFit for iterations > ''snPLim''.<br>Instead just do a local search from the previous DACE parameter model<br>This part is the most time consuming in ego<br>Default 15 if ''pEst'' = 0, Default 20 if ''pEst'' = 1, Default 25 if ''pEst'' > 1
 
If pEst == 0, not used
 
if pEst == 1, upper bound on p-value (default 2.0)
 
if pEst ''> ''1, upper bounds on p (default 2*ones(d,1))
|-valign="top"
|''TRANSFORM''||Function value transformation.
 
0 - No transformation made.
 
1 - Median value transformation. Use REPLACE instead.
 
2 - log(y) transformation made.


3 - -log(-y) transformation made.
4 - -1/y transformation made.
Default EGO is computing the best possible transformation from the initial set of data. Note! No check is made on illegal y if user gives TRANSFORM.
|-valign="top"
|-valign="top"
|''EITRANSFORM''||Transformation of expected improvement function (default 1).
|''TolExpI''||Convergence tolerance for expected improvement (default 10<sup>-7</sup>).


= 0 No transformation made.
= 1 ''- ''log(''-f '') transformation made.
= 2 ''-''1''/f  ''transformation made.
|-valign="top"
|''TolExpI''||Convergence tolerance for expected improvement (default 10''-''6 ).
|-valign="top"
|-valign="top"
|''SAMPLEF''||Sample criterion function:
|''SAMPLEF''||Sample criterion function:
Line 348: Line 149:
0 = Expected improvment (default)
0 = Expected improvment (default)


1 = Kushner's criterion (related option: KEPS)
1 = Kushner's criterion (related option: ''KEPS'')


2 = Lower confidence bounding (related option: LCBB)
2 = Lower confidence bounding (related option: ''LCBB'')


3 = Generalized expected improvement (related option: GEIG)
3 = Generalized expected improvement (related option: ''GEIG'')


4 = Maximum variance
4 = Maximum variance


5 = Watson and Barnes 2
5 = Watson and Barnes 2
|-valign="top"
|-valign="top"
|''KEPS''||The ''&epsilon; ''parameter in the Kushner's criterion (default:  ''-''0''.''01).
|''KEPS''||The ''&epsilon; ''parameter in the Kushner's criterion<br>If set to a positive value, the epsilon is taken as KEPS. If set to a negative value, then epsilon is taken as <nowiki>|</nowiki>KEPS<nowiki>|</nowiki>*''f_min''
 
Default:  -0.01
If ''KEPS > ''0, then ''E ''= ''K EP S''.


If ''KEPS < ''0, then ''E ''= ''\|K EP S\| * fM in ''.
|-valign="top"
|''GEIG''||The exponent ''g ''in the generalized expected improvement function (default 2''.''0).
|-valign="top"
|''LCBB''||Lower Confidence Bounding parameter b (default 2.0).
|-valign="top"
|-valign="top"
|''GO''||Structure ''Prob.GO ''(Default values are set for all fields).
|''GEIG''||The exponent ''g'' in the generalized expected improvement function<br>Default: 2


The following fields are used:
|-valign="top"
|-valign="top"
|''MaxFunc''||Maximal number of function evaluations in each global search.
|''LCBB''||Lower Confidence Bounding parameter b<br>Default 2
|-valign="top"
|''MaxIter''||Maximal number of iterations in each global search.
|-valign="top"
|''DIRECT''||DIRECT  solver used in glcCluster, either glcSolve or glcDirect(default).
|-valign="top"
|''maxFunc1''||glcCluster parameter, maximum number of function evaluations in the first call. Only used if globalSolver is glcCluster, see help globalSolver.
|-valign="top"
|''maxFunc2''||glcCluster parameter, maximum number of function evaluations in the second call. Only used if globalSolver is glcCluster, see help globalSolver.
|-valign="top"
|''maxFunc3''||glcCluster parameter, maximum sum of function evaluations in repeated first calls to DIRECT routine when trying to get feasible. Only used if globalSolver is glcCluster, see help ''globalSolver''.
|-valign="top"
|''localSolver''||The local solver used by glcCluster. If not defined, then ''Prob.CGO.localSolver'' is used
|-valign="top"
|''MIP''||Structure in Prob, Prob.MIP.


Defines integer optimization parameters. Fields used:
|-valign="top"
|-valign="top"
|''IntVars''||If empty, all variables are assumed non-integer.
|''AddSurfMin''||Add up to AddSurfMin global or local minima on DACE surface as search points, based on estimated Lipschitz constants, number of components on bounds, and distance to sampled set X.<br>''AddExpIMin''=0 implies no additional minimum added.


If islogical(IntVars)  (=all  elements  are 0/1),  then 1 = integer variable, 0 = continuous variable.  If  any element  ''> ''1, IntVars  is the indices for integer variables.
|-valign="top"
|-valign="top"
|''varargin''||Other arguments sent directly to low level functions.
|''AddExpIMin''||Add up to ''AddExpIMin'' global or local minima on ''ExpI'' surface as search points, based on estimated Lipschitz constants, number of components on bounds, and distance to sampled set X.<br>AddExpIMin=0 implies no additional minimum added.<br>Only possible if ''globalSolver'' = 'multiMin' or 'glcCluster'.<br>Default ''AddExpIMin'' = 1
|}
|}


==Description of Outputs==
==Description of Outputs==


Structure with result from optimization.
===Result structure===
The output structure ''Result'' contains results from the optimization.<br>The following fields are set:


{|class="wikitable"
{|class="wikitable"
!Output||Description
!Field||Description
|-valign="top"
|-valign="middle"
|''x_k''||Matrix  with the best points as columns.
|''x_k''||rowspan="5"|See [[Common output for all CGO solvers|Common output for all CGO solvers]] for details.
|-valign="top"
|-valign="top"
|''f_k''||The best function value found so far.
|''f_k''
|-valign="top"
|-valign="top"
|''Iter''||Number of iterations.
|''Iter''
|-valign="top"
|-valign="top"
|''FuncEv''||Number of function evaluations.
|''FuncEv''
|-valign="top"
|-valign="top"
|''ExitText''||Text string with information about the run.
|''ExitText''
|-valign="top"
|-valign="top"
|''ExitFlag''||Always 0.
|''ExitFlag''||Always 0
|-valign="top"
|''CGO''||Subfield ''WarmStartInfo  ''saves warm start information, the same information as in cgoSave.mat,  see below.
|-valign="top"
|-valign="top"
|''Inform''||Information parameter.
|''Inform''||Information parameter.


0 = Normal termination.
{|class="wikitable"
!Value||Signification
|-
|0||Normal termination.
|-
|1||Function value f(x) is less than fGoal.
|-
|2||Error in function value ''f ''(''x'')'', <nowiki>|</nowiki>f - fGoal<nowiki>|</nowiki> <= fTol, fGoal ''= 0''.''
|-
|3||Relative Error in function value ''f ''(''x'') is less than fTol, i.e. <nowiki>|</nowiki>f - fGoal<nowiki>|</nowiki>/<nowiki>|</nowiki>fGoal<nowiki>|</nowiki> <= fTol.


1 = Function value ''f ''(''x'') is less than fGoal.
<!-- Removed for now
|-
|4||No new point sampled for MaxCycle iteration steps.
|-
|5||All sample points same as the best point for MaxCycle last iterations.
|-
|8||No progress for ''MaxCycle * ''(''N ''+ 1) + 1 function evaluations (''> MaxCycle'' cycles, input CGO.MaxCycle).
-->
|-
|6||All sample points same as previous point for the last 11 iterations.
|-
|7||All feasible integers tried.
|-
|9||Max CPU Time reached.
|-
|10||Expected improvement low for three iterations
|}


2 = Error in function value ''f ''(''x''), ''abs''(''f - fGoal'') ''<''= ''fTol'', fGoal=0.
|-valign="top"
|''CGO''||Subfield ''WarmStartInfo'' saves warm start information, the same information as in cgoSave.mat, see [[Common output for all CGO solvers#WSInfo]].
|}


3 = Relative  Error  in  function  value f(x)  is less  than  fTol, i.e. ''abs''(''f  -'' ''fGoal'')''/abs''(''fGoal'') ''<''= ''fTol''.
===Output printing===


4 = No new point sampled for ''N ''iteration steps.
{|class="wikitable"
!colspan="2"|PRINTING in MATLAB window in Iteration 0 after Experimental Design
|- style="text-align:center;"
|colspan="2"|'''''if ''IterPrint'' >= 1 or ''PriLev'' > 1'''''
|-
|colspan="2"|'''Row 0'''
|-
| ||Initial row with values for some important parameters from Prob.CGO for the current run
|-
|colspan="2"|'''Row 1'''
|-
|''Iter''  ||Number of iterations
|-
|''n''      ||Number of trial x, n-Iter is number of points in initial design
|-
|''nFunc''  ||Number of costly f(x) computed, nFunc <= n, n-nFunc = rejected pnts
|-
|<nowiki>--->></nowiki>  ||Time stamp (date and exact time of this printout)
|-
|''Cycle'' ||Cycle steps global to local. ''infStep'' is marked -1, 0 to ''N''-1 are global steps. Last step ''N'' in cycle is surface minimum
|-
|''R''    ||If the letter ''R'' is printed, the current step is a RESCUE step, i.e. the new point is already sampled in a previous step, instead the surface minimum is used as a rescue
|-
|''fnStar'' ||Target value fn_star (if set)
|-
|''fGoal''  ||Goal value (if set)
|-
|''fMin''  ||Best f(x) found so far. E.g. at 27/It 12 means n=27, Iter=12<br>fMinI means the best f(x) is infeasible<br>fMinF means the best f(x) is feasible (also integer feasible)
|-
|''dacePtr''||Number used internally in CGOLIB (if PriLev > 2)
|-
|colspan="2"|'''Row 2'''
|-
|''max(F)'' ||maximum of all f(x) in the initial set of points X
|-
|''med(F)'' ||median of all f(x) in the initial set of points X
|-
|''rng(F)'' ||maxF-fMin, the range of f(x) values in the initial set X
|-
|''pDist''  ||The size of the simply bounded region, <nowiki>||</nowiki>''x_U''-''x_L''<nowiki>||</nowiki><sub>2</sub>
|-
|''LipU''  ||Maximum Lipschitz constant for initial set X
|-
|''LipL''  ||Maximum Lipschitz constant for initial set X, using transformed F
|-
|''objType''||Function transformation used during run, one of 0 to 8.
|-
|''DACEfk'' ||Best DACE fitness value found
|-
|colspan="2"|'''Row 3'''
|-
| ||Information about estimation of ''p'' and ''&theta;'' in DACE model
|-
|colspan="2"|'''Row 4'''
|-
|''xMin''||Best point in initial set X
|-
|colspan="2"|'''Row 5'''
|-
|''xOptS''||User-given known global optimum Prob.x_opt
|- style="text-align:center;"
|colspan="2"|'''''if ''PriLev'' > 2 and global optimum ''xOptS'' known and given in ''Prob.x_opt'' '''''
|-
|colspan="2"|'''Row 6'''
|-
|''SumXO'' ||Sum of distances from global optimum ''xOptS'' to all sampled points ''X'' in experimental design
|-
|''MeanX0''||Mean of distances from global optimum ''xOptS'' to all sampled points ''X'' in experimental design
|-
|''doO''  ||Distance from global optimum ''xOptS'' to ''x'' with best f(x) in Experimental Design, ''xMin''
|- style="text-align:center;"


5 = All sample points same as the best point for ''N ''last iterations.
<!--- REMOVED for now
|colspan="2"|'''''if ''PriLev'' > 3'''''
|-
|''dXO''  ||Minimal distance from global optimum to closest point of all sampled points ''X'' in experimental design
|-
|''snOptf''||Surface value at ''xOptS'', ''sn_f(xOptS)''
|-
|''snOptg''||Surface gradient at ''xOptS'', ''sn_g(xOptS)''
|-
|''snOptE''||Sum of negative eigenvalues of surface Hessian at ''xOptS'', sum((eig(sn_H(xOptS)) < 0))
--->
|}


6 = All sample points same as previous point for ''N ''last iterations.
{|class="wikitable"
!colspan="2"|PRINTING in MATLAB window in Iteration 1,2, ...
|- style="text-align:center;"
|colspan="2"|'''''if ''IterPrint'' >= 1 or ''PriLev'' > 1'''''
|-
|colspan="2"|'''Row 1'''
|-
|''Iter''||Number of iterations
|-
|''n''  ||Number of trial x, ''n''-''Iter'' is number of points in initial design
|-
|''nFunc''  ||Number of costly f(x) computed, ''nFunc'' <= ''n'', ''n''-''nFunc'' = rejected pnts
|-
|<nowiki>--->></nowiki>  ||Time stamp (date and exact time of this printout)
|-
|''fGoal''  ||Goal value (if set)
|-
|''fMin''    ||Best f(x) found so far. E.g. at 27/It 12 means n=27, Iter=12<br>''fMinI'' means the best f(x) is infeasible<br>''fMinF'' means the best f(x) is feasible (also integer feasible)<br>''IT'' implies reduction in last step, ''It'' no reduction last step
|-
|colspan="2"|'''Row 2 Header line'''
|-
|colspan="2"|
{|class="wikitable"
|#||f(x)||Task||onB||ExpI-Sc||doX||doM||doS||surfErr||f-Reduc||doO||ExpImpr
|}
|-
|colspan="2"|'''Row 3 to m+2 with m new sample points ''xNew(1,1:m)'' obtained in last iteration
|-
|''#''      ||i''th'' new point x = ''xNew(:,i)
|-
|''f(x)''  ||Costly f(x) value at x
|-
|''Task''  ||Which method that gave the new point
{|class="wikitable
!Value||Method
|-
|0  ||Global minimum of Exponential Improvement
|-
|1  ||Global minimum of Kriging Variance
|-
|2  ||Global minimum of DACE surface
|-
|999||Rescue
|-
| -3 ||Additional local Exponential Improvement Minima
|-
| -7  ||Additional local surface minima
|-
| -8  ||Sample point inside the full box defined by [x_L,x_U]
|-
| -9  ||Sample point inside a trust region box
|}


7 = All feasible integers tried.
|-
 
|''onB''    ||Number of coordinates on bound for new point, ''onB(x)''
9 = Max CPU Time reached.
|-
 
|''ExpI-Sc''||Expected improvement, scaled by <nowiki>|</nowiki>fMin<nowiki>|</nowiki>
10 = Expected improvement low for three iterations.
|-
|-valign="top"
|''doX''   ||Minimal distance from ''x'' to sample set ''X'', min<nowiki>||</nowiki>''x-X''<nowiki>||</nowiki>
|''Result''||Structure with result from optimization.
|-
|-valign="top"
|''doM''   ||Distance from ''x'' to (''xMin'',''fMin''), best point found, min<nowiki>||</nowiki>''x-xMin''<nowiki>||</nowiki>
|''cgoSave.mat''||To make a warm start possible, all CGO solvers saves information in the file cgoSave.mat. The file is created independent of the solver, which enables the user to call any CGO solver using the warm start information.  cgoSave.mat is a MATLAB mat-file saved to the current directory. If the parameter SAVE is 1, the CGO solver saves  the mat file every iteration, which enables the user to break the run and restart using warm start from the current  state. SAVE = 1 is currently always set by the CGO solvers. If the cgoSave.mat file fails to open for writing, the information is also available in the output field Result.CGO.WarmStartInfo, if the run was concluded without  interruption. Through a call to WarmDefGLOBAL, the Prob structure can be setup for warm start. In this case, the CGO solver will not load the data from cgoSave.mat. The file contains the following variables:
|-
|-valign="top"
|''doS''    ||Distance from ''x'' to minimum on surface, min<nowiki>||</nowiki>''x-min_sn_y''<nowiki>||</nowiki>
|''Name''||Problem name. Checked against the ''Prob.Name ''field if doing a warmstart.
|-
|-valign="top"
|''surfErr''||Error between predicted and actual value of f(x), i.e. Costly f(x) - Surface value at ''x''
|''O''||Matrix  with sampled points (in original space).
|-
|-valign="top"
|''f-Reduc''||Function value reduction if ''fNew'' < ''fMin''
|''X''||Matrix  with sampled points (in unit space if SCALE==1)
|-
|-valign="top"
|''doO''   ||Distance from ''x'' to global optimum ''xOptS'' <nowiki>||</nowiki>''x-xOptS''<nowiki>||</nowiki> (if ''Prob.x_opt'' specified)
|''F''||Vector with function values (penalty added for costly Cc(x))
|-
|-valign="top"
|''ExpImpr''||Expected improvement
|''F_m''||Vector with function values (replaced).
|-
|-valign="top"
|''x:''     ||x values for i:''th'' point, scaled back i ''SCALE'' == 1
|''F00''||Vector of pure function values, before penalties.
|-
|-valign="top"
|colspan="2"|'''Row m+3 with values for current global surface minimum (min_sn_y, min_sn)
|''Cc''||MMatrix with costly constraint values, ''C c''(''x'').
|-
|-valign="top"
|''Sn''     ||f(x) = min_sn, onB, doX, doM, doO values for min_sn_y, and x: are values for min_sn_y transformed back to original coordinates if ''SCALE'' == 1
|''nInit ''||Number of initial  points.
|- style="text-align:center;"
|-valign="top"
|colspan="2"|'''Additional rows if PriLev > 2
|''Fpen''||Vector with function values + additional penalty if infeasible using the linear constraints and noncostly nonlinear ''c''(''x'').
|-
|-valign="top"
|colspan="2"|One row with DACEFit information, result of ''p'', ''theta'' estimation dependent on pEst value
|''fMinIdx''||Index of the best point found.
|-
|-valign="top"
|''DACEfk''||Optimal DACEFit objective -log<sub>10</sub>(-ML), where ML = Maximum Likelihood DACE fitness objective value (Step >0)
|''rngState''||Current state of the random number generator used.
|-
|''p''||Exponential parameters in DACE model
|-
|''theta''||Weights in DACE model
|-
|colspan="2"|One row with DACEupd information when updating with new sample points
|-
|''minDist''||Minimal distance between points in sample set X, if small value ill-conditioning might occur
|-
|colspan="2"|'''NOTE: All distances measured are in ''SCALED'' space [0,1]<sup>d</sup>, if ''SCALE' == 1'''
|}
|}


Line 501: Line 447:
>> clear egolib
>> clear egolib
</pre>
</pre>
[[Category:CGO]]

Latest revision as of 17:19, 21 June 2014

Notice.png

This page is part of the CGO Manual. See CGO Manual.

Purpose

Solve general constrained mixed-integer global black-box optimization problems with costly objective functions.

The optimization problem is of the following form


where ; ; the linear constraints are defined by , ; and the nonlinear constraints are defined by . The variables are restricted to be integers, where is an index subset of possibly empty. It is assumed that the function is continuous with respect to all variables, even if there is a demand that some variables only take integer values. Otherwise it would not make sense to do the surrogate modeling of used by all CGO solvers.

f (x) is assumed to be a costly function while c(x) is assumed to be cheaply computed. Any costly constraints can be treated by adding penalty terms to the objective function in the following way:

where weighting parameters wj have been added. The user then returns p(x) instead of f (x) to the CGO solver.

Calling Syntax

Result=ego(Prob,varargin) 
Result = tomRun('ego', Prob);


Usage

See CGO solver usage

Description of Inputs

Problem structure

The following fields are used in the problem description structure Prob:

Field Description
Name See Common input for all CGO solvers
FUNCS.f
FUNCS.c
x_L
x_U
b_L
b_U
A
c_L
c_U
WarmStart
user
MaxCPU
PriLevOpt
optParam
CGO See the table below but also this table for input common to all CGO solvers
GO See common input for all CGO solvers
MIP See common input for all CGO solvers
varargin Additional parameters to ego are sent to the costly f(x)


- Special EGO algorithm parameters in Prob.CGO -
EGOAlg Main algorithm in the EGO solver

=1 Run expected improvement steps (modN = 0,1,2,...). If no f (x) improvement, use DACE surface minimum (modN = -1) in 1 step

=2 Run expected improvement steps (modN=0) until ExpI / |yMin| < TolExpI for 3 successive steps (modN = 1,2,3) without f (x) improvement (fRed <= 0).
After 2 such steps (when modN = 2), 1 step using the DACE surface minimum (modN = -1) is tried. If then fRed > TolExpI, reset to modN = 0 steps.

=3 Compute trial points from both Expexted Improvement and DACE surface minimum in every step

=4 Compute DACE surface minimum in every step

Default EGOAlg = 1, but if any x is integer valued, EGOAlg = 3 is default

pEst Norm parameters, fixed or estimated, also see p0, pLow, pUpp (default pEst = 0).

0 = Fixed constant p-value for all components (default, p0=1.99).

1 = Estimate one p-value valid for all components.

2 = Estimate d|| ||p parameters, one for each component.

p0 Fixed p-value (pEst==0, default = 1.99) or
initial p-value (pEst == 1, default 1.9) or
d-vector of initial p-values (pEst > 1, default 1.9*ones(d,1))
pLow If pEst == 0, not used

if pEst == 1, lower bound on p-value (default 1.98)

if pEst == 2, lower bounds on p (default 1.99*ones(d,1))

pUpp If pEst == 0, not used

if pEst == 1, upper bound on p-value (default 1.99999)

if pEst == 2, upper bounds on p (default 1.99999*ones(d,1))

snPLim Avoid the time consuming global optimization in DACEFit for iterations > snPLim.
Instead just do a local search from the previous DACE parameter model
This part is the most time consuming in ego
Default 15 if pEst = 0, Default 20 if pEst = 1, Default 25 if pEst > 1
TolExpI Convergence tolerance for expected improvement (default 10-7).
SAMPLEF Sample criterion function:

0 = Expected improvment (default)

1 = Kushner's criterion (related option: KEPS)

2 = Lower confidence bounding (related option: LCBB)

3 = Generalized expected improvement (related option: GEIG)

4 = Maximum variance

5 = Watson and Barnes 2

KEPS The ε parameter in the Kushner's criterion
If set to a positive value, the epsilon is taken as KEPS. If set to a negative value, then epsilon is taken as |KEPS|*f_min

Default: -0.01

GEIG The exponent g in the generalized expected improvement function
Default: 2
LCBB Lower Confidence Bounding parameter b
Default 2
AddSurfMin Add up to AddSurfMin global or local minima on DACE surface as search points, based on estimated Lipschitz constants, number of components on bounds, and distance to sampled set X.
AddExpIMin=0 implies no additional minimum added.
AddExpIMin Add up to AddExpIMin global or local minima on ExpI surface as search points, based on estimated Lipschitz constants, number of components on bounds, and distance to sampled set X.
AddExpIMin=0 implies no additional minimum added.
Only possible if globalSolver = 'multiMin' or 'glcCluster'.
Default AddExpIMin = 1

Description of Outputs

Result structure

The output structure Result contains results from the optimization.
The following fields are set:

Field Description
x_k See Common output for all CGO solvers for details.
f_k
Iter
FuncEv
ExitText
ExitFlag Always 0
Inform Information parameter.
Value Signification
0 Normal termination.
1 Function value f(x) is less than fGoal.
2 Error in function value f (x), |f - fGoal| <= fTol, fGoal = 0.
3 Relative Error in function value f (x) is less than fTol, i.e. |f - fGoal|/|fGoal| <= fTol.
6 All sample points same as previous point for the last 11 iterations.
7 All feasible integers tried.
9 Max CPU Time reached.
10 Expected improvement low for three iterations
CGO Subfield WarmStartInfo saves warm start information, the same information as in cgoSave.mat, see Common output for all CGO solvers#WSInfo.

Output printing

PRINTING in MATLAB window in Iteration 0 after Experimental Design
if IterPrint >= 1 or PriLev > 1
Row 0
Initial row with values for some important parameters from Prob.CGO for the current run
Row 1
Iter Number of iterations
n Number of trial x, n-Iter is number of points in initial design
nFunc Number of costly f(x) computed, nFunc <= n, n-nFunc = rejected pnts
--->> Time stamp (date and exact time of this printout)
Cycle Cycle steps global to local. infStep is marked -1, 0 to N-1 are global steps. Last step N in cycle is surface minimum
R If the letter R is printed, the current step is a RESCUE step, i.e. the new point is already sampled in a previous step, instead the surface minimum is used as a rescue
fnStar Target value fn_star (if set)
fGoal Goal value (if set)
fMin Best f(x) found so far. E.g. at 27/It 12 means n=27, Iter=12
fMinI means the best f(x) is infeasible
fMinF means the best f(x) is feasible (also integer feasible)
dacePtr Number used internally in CGOLIB (if PriLev > 2)
Row 2
max(F) maximum of all f(x) in the initial set of points X
med(F) median of all f(x) in the initial set of points X
rng(F) maxF-fMin, the range of f(x) values in the initial set X
pDist The size of the simply bounded region, ||x_U-x_L||2
LipU Maximum Lipschitz constant for initial set X
LipL Maximum Lipschitz constant for initial set X, using transformed F
objType Function transformation used during run, one of 0 to 8.
DACEfk Best DACE fitness value found
Row 3
Information about estimation of p and θ in DACE model
Row 4
xMin Best point in initial set X
Row 5
xOptS User-given known global optimum Prob.x_opt
if PriLev > 2 and global optimum xOptS known and given in Prob.x_opt
Row 6
SumXO Sum of distances from global optimum xOptS to all sampled points X in experimental design
MeanX0 Mean of distances from global optimum xOptS to all sampled points X in experimental design
doO Distance from global optimum xOptS to x with best f(x) in Experimental Design, xMin
PRINTING in MATLAB window in Iteration 1,2, ...
if IterPrint >= 1 or PriLev > 1
Row 1
Iter Number of iterations
n Number of trial x, n-Iter is number of points in initial design
nFunc Number of costly f(x) computed, nFunc <= n, n-nFunc = rejected pnts
--->> Time stamp (date and exact time of this printout)
fGoal Goal value (if set)
fMin Best f(x) found so far. E.g. at 27/It 12 means n=27, Iter=12
fMinI means the best f(x) is infeasible
fMinF means the best f(x) is feasible (also integer feasible)
IT implies reduction in last step, It no reduction last step
Row 2 Header line
# f(x) Task onB ExpI-Sc doX doM doS surfErr f-Reduc doO ExpImpr
Row 3 to m+2 with m new sample points xNew(1,1:m) obtained in last iteration
# ith new point x = xNew(:,i)
f(x) Costly f(x) value at x
Task Which method that gave the new point
Value Method
0 Global minimum of Exponential Improvement
1 Global minimum of Kriging Variance
2 Global minimum of DACE surface
999 Rescue
-3 Additional local Exponential Improvement Minima
-7 Additional local surface minima
-8 Sample point inside the full box defined by [x_L,x_U]
-9 Sample point inside a trust region box
onB Number of coordinates on bound for new point, onB(x)
ExpI-Sc Expected improvement, scaled by |fMin|
doX Minimal distance from x to sample set X, min||x-X||
doM Distance from x to (xMin,fMin), best point found, min||x-xMin||
doS Distance from x to minimum on surface, min||x-min_sn_y||
surfErr Error between predicted and actual value of f(x), i.e. Costly f(x) - Surface value at x
f-Reduc Function value reduction if fNew < fMin
doO Distance from x to global optimum xOptS ||x-xOptS|| (if Prob.x_opt specified)
ExpImpr Expected improvement
x: x values for i:th point, scaled back i SCALE == 1
Row m+3 with values for current global surface minimum (min_sn_y, min_sn)
Sn f(x) = min_sn, onB, doX, doM, doO values for min_sn_y, and x: are values for min_sn_y transformed back to original coordinates if SCALE == 1
Additional rows if PriLev > 2
One row with DACEFit information, result of p, theta estimation dependent on pEst value
DACEfk Optimal DACEFit objective -log10(-ML), where ML = Maximum Likelihood DACE fitness objective value (Step >0)
p Exponential parameters in DACE model
theta Weights in DACE model
One row with DACEupd information when updating with new sample points
minDist Minimal distance between points in sample set X, if small value ill-conditioning might occur
NOTE: All distances measured are in SCALED space [0,1]d, if SCALE' == 1

Description

ego implements the algorithm EGO by D. R. Jones, Matthias Schonlau and William J. Welch presented in the paper "Efficient Global Optimization of Expensive Black-Box Functions".

Please note that Jones et al. has a slightly different problem formulation. The TOMLAB version of ego treats linear and nonlinear constraints separately.

ego samples points to which a response surface is fitted. The algorithm then balances between sampling new points and minimization on the surface.

ego and rbfSolve use the same format for saving warm start data. This means that it is possible to try one solver for a certain number of iterations/function evaluations and then do a warm start with the other. Example:

>> Prob	= probInit('glc_prob',1);		%   Set up problem structure
>> Result_ego = tomRun('ego',Prob);		%   Solve for a while with  ego
>> Prob.WarmStart = 1; 				%   Indicate a warm start
>> Result_rbf = tomRun('rbfSolve',Prob);	%   Warm start with rbfSolve

M-files Used

iniSolve.m, endSolve.m, conAssign.m, glcAssign.m

See Also

rbfSolve

Warnings

Observe that when cancelling with CTRL+C during a run, some memory allocated by ego will not be deallocated.

To deallocate, do:

>> clear egolib