# TOMNET  
# REGISTER (TOMNET)
# LOGIN  
# myTOMNET
TOMLAB LOGO

« Previous « Start » Next »

6  Solver Reference

Detailed descriptions of the TOMNET solvers, driver routines and some utilities are given in the following sections. Also see the help for each solver. All solvers except for the TOMNET Base Module are described in separate manuals.

6.1  TOMNET /BASE

For a description of solvers, see the help in the the User's Guide for the particular solver.

6.1.1  glbDirect

Purpose
Solve box-bounded global optimization problems.

glbDirect  solves problems of the form
 
min
x
f(x)        
s/t xL x xU
where f ∈ R and x,xL,xU∈ R n.

glbDirect  was originally a Fortran implementation.


Calling Syntax
glbDirect solver = new glbDirect();
solver.Solve(Prob, out result);
Description of Inputs
Prob Problem description. The following members are used:
 
x_L Lower bounds for x, must be given to restrict the search space.
  x_U Upper bounds for x, must be given to restrict the search space.
 
  Name Name of the problem. Used for security if doing warm start.
  f The objective function f(x) is used.
 

Description of Outputs
Result Object with result from optimization. The following fields are of special interest:
 
 
  x_k Optimal point.
  f_k Function value at optimum.
 
  Iter Number of iterations.
  FuncEv Number function evaluations.
  ExitText Text string giving ExitFlag and Inform information.
  ExitFlag Exit code.
    0 = Normal termination, max number of iterations /func.evals reached.
    1 = Some bound, lower or upper is missing.
    2 = Some bound is inf, must be finite.
    4 = Numerical trouble determining optimal rectangle, empty set and cannot continue.
  Inform Inform code.
    1 = Function value f is less than fGoal.
    2 = Absolute function value f is less than fTol, only if fGoal = 0 or Relative error in function value f is less than fTol, i.e. abs(ffGoal)/abs(fGoal) <= fTol.
    3 = Maximum number of iterations done.
    4 = Maximum number of function evaluations done.
    91= Numerical trouble, did not find element in list.
    92= Numerical trouble, No rectangle to work on.
    99= Other error, see ExitFlag.

Description of Options
Options available for glbDirect
 
 
LogFile File for log information.
 
PrintLevel Print Level. 0 = Silent. 1 = Errors. 2 = Termination message and warm start info. 3 = Option summary.
 
MaxFunc Maximal number of function evaluations, default 10000 (roughly).
 
Maxiter Maximal number of iterations, default 200.
 
Parallel Set to 1 in order to have glbDirect to call Prob.FUNCS.f with a matrix x of points to let the user function compute function values in parallel. Default: 0. Not currently active.
 
WarmStart If true, >0, glbDirect  reads the output from the last run if it exists. glbDirect  uses this warm start information to continue from the last run.
 
IterPrint Print iteration log every ITERPRINT iteration. Set to 0 for no iteration log. PRILEV must be set to at least 1 to have iteration log to be printed.
 
FunTol Relative accuracy for function value. Stop if abs(fFGOAL) <= abs(FGOAL) * FUNTOL , if FGOAL  =0. Stop if abs(fFGOAL) <= FUNTOL , if FGOAL == 0.
 
VarTol Convergence tolerance in x. All possible rectangles are less than this tolerance (scaled to (0,1) ). See the output field MAXTRI.
 
GLWeight Global/local weight parameter, default 1E-4.
 
FGoal Goal for function value, if empty not used.
 

Description
The global optimization routine glbDirect  is an implementation of the DIRECT algorithm presented in [5].The algorithm in glbDirect  is a Fortran implementation of the Matlab algorithm in glbSolve . DIRECT is a modification of the standard Lipschitzian approach that eliminates the need to specify a Lipschitz constant. Since no such constant is used, there is no natural way of defining convergence (except when the optimal function value is known). Therefore glbDirect  runs a predefined number of iterations and considers the best function value found as the optimal one. It is possible for the user to restart glbDirect  with the final status of all parameters from the previous run, a so called warm start. Assume that a run has been made with glbDirect  on a certain problem for 50 iterations. Then a run of e.g. 40 iterations more should give the same result as if the run had been using 90 iterations in the first place. To do a warm start of glbDirect  an option WARMSTART  should be set to one and warm start information defined. Then glbDirect  is using output previously obtained to make the restart. The code also includes the subfunction conhull  (embedded) which is an implementation of the algorithm GRAHAMHULL in [22, page 108] with the modifications proposed on page 109. conhull  is used to identify all points lying on the convex hull defined by a set of points in the plane.

6.1.2  glcDirect

Purpose
Solve global mixed-integer nonlinear programming problems.

glcDirect  solves problems of the form
 
min
x
f(x)        
s/t xL x xU
  bL Ax bU
  cL c(x) cU
      xi integer   i ∈ I
where x,xL,xU∈ Rn, c(x),cL,cU∈ Rm1, A∈ Rm2× n and bL,bU∈ Rm2.

The variables x ∈ I, the index subset of 1,...,n are restricted to be integers. Recommendation: Put the integers as the first variables. Put low range integers before large range integers. Linear constraints are specially treated. Equality constraints are added as penalties to the objective. Weights are computed automatically, assuming f(x) scaled to be roughly 1 at optimum. Otherwise scale f(x).

glcDirect  is originally a Fortran implementation that has been embedded in .NET.

Calling Syntax
glcDirect solver = new glcDirect();
solver.Solve(Prob, out result);
Description of Inputs
Prob Problem description. The following members are used:
 
  Name Problem name. Used for safety when doing warm starts.
 
  f The objective function f(x) is used.
  c The nonlinear constraints c(x) is used.
 
  A Linear constraints matrix.
  b_L Lower bounds on the linear constraints.
  b_U Upper bounds on the linear constraints.
 
  c_L Lower bounds on the nonlinear constraints.
  c_U Upper bounds on the nonlinear constraints.
  x_L Lower bounds for x, must be finite to restrict the search space.
  x_U Upper bounds for x, must be finite to restrict the search space.
 
  IntVars IntVars is assumed to be a set of indices. It is advised to number the integer values as the first variables, before the continuous. The tree search will then be executed more efficiently.
 

Description of Outputs
Result Object with result from optimization. The following fields are of special interest:
 
 
  x_k Optimal point.
  f_k Function value at optimum.
  c_k Nonlinear constraints values at x_k.
 
  Iter Number of iterations.
  FuncEv Number function evaluations.
  ExitText Text string giving ExitFlag and Inform information.
  ExitFlag 0 = Normal termination, max number of iterations func.evals reached.
    2 = Some upper bounds below lower bounds.
    4 = Numerical trouble, and cannot continue.
    7 = Reached maxFunc or maxIter, NOT feasible.
    8 = Empty domain for integer variables.
    10= Input errors.
 
  Inform 1 = Function value f is less than fGoal.
    2 = Absolute function value f is less than fTol, only if fGoal = 0 or Relative error in function value f is less than fTol, i.e. abs(f-fGoal)/abs(fGoal) <= fTol.
    3 = Maximum number of iterations done.
    4 = Maximum number of function evaluations done.
    5 = Maximum number of function evaluations would most likely be too many in the next iteration, save warm start info, stop.
    6 = Maximum number of function evaluations would most likely be too many in the next iteration, because 2*sLen >= maxFDim - nFunc, save warm start info, stop.
    7 = Space is dense.
    8 = Either space is dense, or MIP is dense.
    10= No progress in this run, return solution from previous one.
    91= Infeasible.
    92= No rectangles to work on.
    93= sLen = 0, no feasible integer solution exists.
    94= All variables are fixed.
    95= There exist free constraints.
 

Description of Options
Options available for glcDirect
 
 
LogFile File for log information.
 
PrintLevel Print Level. This controls both regular printing from glcDirect and the amount of iteration log information to print.
  0 = Silent. 1 = Warnings and errors printed. Iteration log on iterations improving function value. 2 = Iteration log on all iterations. 3 = Log for each function evaluation. 4 = Print list of parameter settings.
  See ITERPRINT for more information on iteration log printing.
 
WarmStart If true, >0, glcDirect reads the output from the last run if it exists. glcDirect uses this warm start information to continue from the last run.
 
MaxCpu Maximum CPU Time (in seconds) to be used. Default 36000.
 
FCall =0 (Default). If linear constraints cannot be feasible anywhere inside rectangle, skip f(x) and c(x) computation for middle point.
  =1 Always compute f(x) and c(x), even if linear constraints are not feasible anywhere in rectangle. Do not update rates of change for the constraints.
  =2 Always compute f(x) and c(x), even if linear constraints are not feasible anywhere in rectangle. Update rates of change constraints.
 
UseRoC =1 (Default). Use original Rate of Change (RoC) for constraints to weight the constraint violations in selecting which rectangle divide.
  =0 Avoid RoC, giving equal weights to all constraint violations. Suggested if difficulty to find feasible points. For problems where linear constraints have been added among the nonlinear (NOT RECOMMENDED; AVOID!!!), then option useRoc=0 has been successful, whereas useRoC completely fails.
  =2 Avoid RoC for linear constraints, giving weight one to these constraint violations, whereas the nonlinear constraints use RoC.
  =3 Use RoC for nonlinear constraints, but linear constraints are not used to determine which rectangle to use.
 
Branch =0 Divide rectangle by selecting the longest side, if ties use the lowest index. This is the Jones DIRECT paper strategy.
  =1 First branch the integer variables, selecting the variable with the least splits. If all integer variables are split, split on the continuous variables as in BRANCH=0. DEFAULT! Normally much more efficient than =0 for mixed-integer problems.
  =2 First branch the integer variables with 1,2 or 3 possible values, e.g [0,1],[0,2] variables, selecting the variable with least splits. Then branch the other integer variables, selecting the variable with the least splits. If all integer variables are split, split on the continuous variables as in BRANCH=0.
  =3 Like =2, but use priorities on the variables.
 
RecTie When minimizing the measure to find which new rectangle to try to get feasible, there are often ties, several rectangles have the same minimum. RECTIE = 0 or 1 seems reasonable choices. Rectangles with low index are often larger then the rectangles with higher index. Selecting one of each type could help, but often =0 is fastest.
  =0 Use the rectangle with value a, with lowest index (original).
  =1 (Default): Use 1 of the smallest and 1 of largest rectangles.
  =2 Use the last rectangle with the same value a, not the 1st.
  =3 Use one of the smallest rectangles with same value a.
  =4 Use all rectangles with the same value a, not just the 1st.
 
EqConFac Weight factor for equality constraints when adding to objective function f(x) (Default value 10). The weight is computed as EQCONFAC/"right or left hand side constant value", e.g. if the constraint is Ax <= b, the weight is EQCONFAC/b If DIRECT just is pushing down the f(x) value instead of fulfilling the equality constraints, increase EQCONFAC.
 
AxFeas Set nonzero to make glcDirect skip f(x) evaluations, when the linear constraints are infeasible, and still no feasible point has been found. The default is 0. Value 1 demands FCALL == 0. This option could save some time if f(x) is a bit costly, however overall performance could on some problems be dramatically worse.
 
FEqual All points with function values within tolerance FEQUAL are considered to be global minima and returned. Default 1E-10.
 
LinWeight RateOfChange = LINWEIGHT*||a(i,:)|| for linear constraints. Balance between linear and nonlinear constraints. Default 0.1. The higher value, the less influence from linear constraints.
 
Alpha Exponential forgetting factor in RoC computation, default 0.9.
 
AvIter How many values to use in startup of RoC computation before switching to exponential smoothing with forgetting factor alpha. Default 50.
 
FGoal Goal for function value, if empty not used.
 
MaxFunc Maximal number of function evaluations, default 10000 (roughly).
 
MaxIter Maximal number of iterations, default 10000.
 
IterPrint Print iteration log every ITERPRINT iteration. Set to 0 for no iteration log. PRILEV must be set to at least 1 to have iteration log to be printed.
 
FunTol Relative accuracy for function value. Stop if abs(fFGOAL) <= abs(FGOAL) * FUNTOL , if FGOAL  =0. Stop if abs(fFGOAL) <= FUNTOL , if FGOAL == 0. Default 1E-2.
 
VarTol Convergence tolerance in x. All possible rectangles are less than this tolerance (scaled to (0,1) ). See the output field MAXTRI. Default 1E-11.
 
GLWeight Global/local weight parameter. Default 1E-4.
 
NLContol Nonlinear constraint tolerance. Default 1E-5.
 
LContol Linear constraint tolerance. Default 1E-7.
 
FIP An upper bound on the optimal f(x) value. If empty, set as Inf.
 

Description
The routine glcDirect  implements an extended version of DIRECT, see [16], that handles problems with both nonlinear and integer constraints. The algorithm in glcDirect  is a Fortran implementation of the Matlab algorithm in glcSolve .

DIRECT is a modification of the standard Lipschitzian approach that eliminates the need to specify a Lipschitz constant. Since no such constant is used, there is no natural way of defining convergence (except when the optimal function value is known). Therefore glcDirect  is run for a predefined number of function evaluations and considers the best function value found as the optimal one. It is possible for the user to restart glcDirect  with the final status of all parameters from the previous run, a so called warm start. Assume that a run has been made with glcDirect  on a certain problem for 500 function evaluations. Then a run of e.g. 200 function evaluations more should give the same result as if the run had been using 700 function evaluations in the first place. To do a warm start of glcDirect  an option WARMSTART  should be set to one.

DIRECT does not explicitly handle equality constraints. It works best when the integer variables describe an ordered quantity and is less effective when they are categorical.

Warnings
A significant portion of glcDirect  is coded in Fortran format. If the solver is aborted, it may have allocated memory for the computations which is not returned. This may lead to unpredictable behavior if glcDirect  is started again.

6.2  TOMNET /MINOS

Includes MINOS and QPOPT. This package is included in the following three as well.

6.3  TOMNET /NPSOL

The following solvers are included in this package: LSSOL, LSQR, NLSSOL and NPSOL. A separate manual is available from the TOMNET home page.

6.4  TOMNET /SNOPT

The following solvers are included in this package: SNOPT and SQOPT. A separate manual is available from the TOMNET home page.

6.5  TOMNET /SOL

All three packaged listed above (MINOS, NPSOL and SNOPT).

« Previous « Start » Next »