Common input for all CGO solvers: Difference between revisions

From TomWiki
Jump to navigationJump to search
mNo edit summary
mNo edit summary
Line 59: Line 59:
|''f_Low''||Lower bound on the optimal function value.  If defined, used to restrict the target values into interval ['f_Low'',min(surface)].
|''f_Low''||Lower bound on the optimal function value.  If defined, used to restrict the target values into interval ['f_Low'',min(surface)].
|-valign="top"
|-valign="top"
|''optParam''||Structure with optimization parameters. See [[#optParam structure]].
|''optParam''||Structure with optimization parameters. See the [[#optParam structure|table below]] describing the fields used in the optParam structure.
|-valign="top"
|''CGO''||Structure with parameters specific to costly global optimization. See the [[#CGO structure|table below]] describing the fields used in the CGO structure.
|-valign="top"
|''MIP''||Structure with parameters specific mixed integer optimization. See the [[#MIP structure|table below]] describing the fields used in the MIP structure.
|}
|}


==optParam structure==
==optParam structure==
The most important field is MaxFunc, normally use default values for other fields.


{|class="wikitable"
{|class="wikitable"
Line 82: Line 87:
|-valign="top"
|-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);.
|''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.
|-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"
|94||DIRECT  solver ''glbFast''||6
|-valign="top"
|95||DIRECT  solver ''glcFast''||6
|-valign="top"
|96||DIRECT  solver ''glbSolve''||6
|-valign="top"
|97||DIRECT  solver ''glcSolve''||6
|-valign="top"
|98||DIRECT  solver ''glbDirect''||6
|-valign="top"
|99||DIRECT  solver ''glcDirect''||6
|-valign="top"
|||
'''Latin  Based Sampling'''||
|-valign="top"
|1||Maximin LHD 1-norm||7
|-valign="top"
|2||Maximin LHD 2-norm||8
|-valign="top"
|3||Maximin LHD Inf-norm||9
|-valign="top"
|4||Minimal Audze-Eglais||10
|-valign="top"
|5||Minimax LHD (only 2 dim)||11
|-valign="top"
|6||Latin Hypercube||12
|-valign="top"
|7||Orthogonal Samling||13
|-valign="top"
|||
'''Random  Strategies (pp in %)'''
|-valign="top"
|1pp||Circle surrounding||14
|-valign="top"
|2pp||Ellipsoid surrounding||15
|-valign="top"
|3pp||Rectangle surrounding||16
|-valign="top"
|}
|}


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.
==CGO structure==
The CGO solvers need an initial set of at least n+1 points, where n = dim(x).<br>
Either an initial Experimental Design is needed or the user may input its own choice of points, or a combination of both.<br>
A warm start with points from previous run(s) using any CGO solver is also possible.<br>


For ExD 5,6-12,14-16 user defined points are used.
The input parameters for the Experimental Design are given as fields in Prob.CGO.<br>
|-valign="top"
See [[CGO_expDesign|<tt>help expDesign</tt>]] for details on how to set the following fields in Prob.CGO defining the Experimental Design:<br>
|''nSample''||Number of sample points to be used in initial experimental design. ''nSample ''is used differently dependent on the value of Percent:
''Percent, nSample, X, F, Cc, RandState, AddMP, nTrial, CLHMethod''<br>
Note that the setting of ''RandState'' might influence parts of the CGO solvers as well.


{|class="wikitable"
{|class="wikitable"
!||(n)Sample:
!colspan="2"|'''fields used in Prob.CGO''':
|-valign="top"
|-
!ExD||< 0||= 0||> 0||[]
|'''Field'''||'''Description'''
|-valign="center"
|''Percent''||rowspan="9"| See [[CGO_expDesign|expDesign]] for detailed information on how to set the experimental design parameters.
|-valign="top"
|-valign="top"
|1||2<sup>''d''</sup>
|''nSample''
|-valign="top"
|-valign="top"
|6||<nowiki>|</nowiki>n<nowiki>|</nowiki> iterations
|''X''
|-valign="top"
|-valign="top"
|7-11||d+1||d+1||max(''d'' + 1,''n'')||(''d'' + 1)(''d'' + 2) / 2
|''F''
|-valign="top"
|-valign="top"
|12||LATIN(k)
|''CX''
|-valign="top"
|-valign="top"
|13||<nowiki>|</nowiki>n<nowiki>|</nowiki>
|''RandState''
|-valign="top"
|-valign="top"
|14-16||''d ''+ 1
|''AddMP''
|}
 
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''<sup>d</sup> ''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, nTrial'') 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"
|-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.
|''nTrial''
|-valign="top"
|-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.
|''CLHMethod''
|-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''(''<nowiki>'</nowiki>state<nowiki>'</nowiki>, ''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"
|''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.
 
1 - Take the sampled infeasible points in order.
 
2 - Take a random sample of the infeasible points.
 
3 - Use points with lowest constraint error (cErr).
|-valign="top"
|-valign="top"
|''SCALE''||0 - Original search space (default if any integer values).
|''SCALE''||0 - Original search space (default if any integer values).

Revision as of 10:04, 19 June 2014

Input parameters

Prob structure

The following fields are used in the problem description structure Prob
Field Description
Name Name of the problem. Used for security when doing warm starts.
FUNCS.f The routine to compute the function, given as a string, e.g. CGOF.
FUNCS.c The routine to compute the nonlinear constraint, e.g. CGOC.
x_L Lower bounds for each element in x. Must be finite.
x_U Upper bounds for each element in x. Must be finite.
b_L Lower bounds for the linear constraints.
b_U Upper bounds for the linear constraints.
A Linear constraint matrix.
c_L Lower bounds for the nonlinear constraints.
c_U Upper bounds for the nonlinear constraints.
WarmStart If true, >0, the solver reads the output from the last run from the mat-file cgoSave.mat, and continues from the last run.

If Prob.CGO.WarmStartInfo has been defined through a call to WarmDefGLOBAL, this field is used instead of the cgoSave.mat file.

In the last case, exactly the same points are used.

In the first case, a new test is made which points to use.

MaxCPU Maximal CPU Time (in seconds) to be used.
user User field used to send information to low-level functions.
PriLevOpt Print Level.
value output
0 Silent
1 Summary
2 Printing each iteration
3 Info about local / global solution
4 Progress in x.
PriLevSub Print Level in subproblem solvers, see help in snSolve and gnSolve.
f_Low Lower bound on the optimal function value. If defined, used to restrict the target values into interval ['f_Low,min(surface)].
optParam Structure with optimization parameters. See the table below describing the fields used in the optParam structure.
CGO Structure with parameters specific to costly global optimization. See the table below describing the fields used in the CGO structure.
MIP Structure with parameters specific mixed integer optimization. See the table below describing the fields used in the MIP structure.

optParam structure

The most important field is MaxFunc, normally use default values for other fields.

fields used in Prob.optParam:
Field Description
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.
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).
fGoal Goal for function value, not used if inf or empty.
eps_f Relative accuracy for function value, fTol == eps_f. Stop if |f - f Goal| <= |fGoal| * fTol, if fGoal ≠ 0. Stop if |f - fGoal| <= fTol, if fGoal = 0. See the output field maxTri.
bTol Linear constraint tolerance.
cTol Nonlinear constraint tolerance.
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);.

CGO structure

The CGO solvers need an initial set of at least n+1 points, where n = dim(x).
Either an initial Experimental Design is needed or the user may input its own choice of points, or a combination of both.
A warm start with points from previous run(s) using any CGO solver is also possible.

The input parameters for the Experimental Design are given as fields in Prob.CGO.
See help expDesign for details on how to set the following fields in Prob.CGO defining the Experimental Design:
Percent, nSample, X, F, Cc, RandState, AddMP, nTrial, CLHMethod
Note that the setting of RandState might influence parts of the CGO solvers as well.

fields used in Prob.CGO:
Field Description
Percent See expDesign for detailed information on how to set the experimental design parameters.
nSample
X
F
CX
RandState
AddMP
nTrial
CLHMethod
SCALE 0 - Original search space (default if any integer values).

1 - Transform search space to unit cube (default if no integers).

REPLACE 0 - No replacement, default for constrained problems.

1 - Large function values are replaced by the median.

> 1 - Large values Z are replaced by new values. The replacement is defined as Z := FMAX + log10(Z - FMAX + 1), where FMAX = 10REPLACE , if min(F ) < 0 and FMAX = 10(ceil(log10(min(F )))+REPLACE), 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.

LOCAL 0 - No local searches after global search. If RBF surface is inaccurate, might be an advantage.

1 - Local search from best points after global search. If equal best function values, up to 20 local searches are done.

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.

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.
localSolver Local optimization solver used for subproblem optimization. If not defined, the TOMLAB default constrained NLP solver is used.

- Special RBF algorithm parameters in Prob.CGO -

rbfType Type of radial basis function: 1 - thin plate spline; 2 - Cubic Spline (default); 3 - Multiquadric; 4 - Inverse multiquadric; 5 - Gaussian; 6 - Linear.
idea Type of search strategy on the response surface.

idea = 1 - cycle of N+1 points in target value fnStar.

if fStarRule =3, then N=1 default, otherwise N=4 default.

By default idea =1, fStarRule =1, i.e. N =4. To change N, see below.

idea = 2 - cycle of 4 points (N+1, N=3 always) in alpha. alpha is a bound on an algorithmic constraint that implicitly sets a target value fStar.

N Cycle length in idea 1 (default N=1 for fStarRule 3, otherwise default N=4) or idea 2 (always N=3).
infStep If =1, add search step with target value -8 first in cycle. Default 0. Always

=1 for the case idea =1, fStarRule =3.

fStarRule Global-Local search strategy in idea 1, where N is the cycle length. Define minsn as the global minimum on the RBF surface. The following strategies for setting the target value fStar is defined: 1: fStar = minsn - ((N - (n - nInit))/N )2 * Δn (Default), 2: fStar = minsn - (N - (n - nInit))/N * Δn .

Strategy 1 and 2 depends on Δ n estimate (see DeltaRule). If infStep =1, add -step first in cycle. 3: fStar = -step, minsn-k *0.1*|minsn|k = N, ..., 0.

These strategies had the following names in Gutmanns thesis: III, II, I.

DeltaRule 1 = Skip large f(x) when computing f(x) interval ?. 0 = Use all points. Default 1.
AddSurfMin Add up to AddSurfMin interior local minima on RBF surface as search points, based on estimated Lipschitz constants. AddSurfMin=0 implies no additional minimum added (Default). This option is only possible if globalSolver = multiMin. Test for additional minimum is done in the local step (modN == N) If these additional local minima are used, in the printout modN = -2, -3, -4, ... are the iteration steps with these search points.
TargetMin Which minimum, if several minima found, to select in the target value problem:

=0 Use global minimum.

=1 Use best interior local minima, if none use global minimum.

=2 Use best interior local minima, if none use RBF interior minimum.

=3 Use best minimum with lowest number of coefficients on bounds.

Default is TargetMin = 3.

eps_sn Relative tolerance used to test if the minimum of the RBF surface, minsn , is sufficiently lower than the best point (fM in ) found (default is 10-7 ).
MaxCycle Max number of cycles without progress before stopping, default 10.
GO Structure Prob.GO (Default values are set for all fields).

The following fields are used:

MaxFunc Maximal number of function evaluations in each global search.
MaxIter Maximal number of iterations in each global search.
DIRECT DIRECT solver used in glcCluster, either glcSolve or glcDirect(default).
maxFunc1 glcCluster parameter, maximum number of function evaluations in the first call. Only used if globalSolver is glcCluster, see help globalSolver.
maxFunc2 glcCluster parameter, maximum number of function evaluations in the second call. Only used if globalSolver is glcCluster, see help globalSolver.
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.
localSolver The local solver used by glcCluster. If not defined, then Prob.CGO.localSolver is used
MIP Structure in Prob, Prob.MIP.

Defines integer optimization parameters. Fields used:

IntVars If empty, all variables are assumed non-integer.

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.

varargin Other parameters directly sent to low level routines.