MultiMINLP: Difference between revisions

From TomWiki
Jump to navigationJump to search
No edit summary
No edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Solvers]]
[[Category:Solvers]]
{{cleanup|Clean this article.}}
==Purpose==
==Purpose==


Line 23: Line 21:
& 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{3}{l}{x_{j} \in \MATHSET{N} \ \ \forall j \in $I$}  \\
&      &      & {x_{j} \in \mathbb{N} \ \ \forall j \in I}  \\
\end{array}
\end{array}
</math>
</math>


where <math>x,x_{L},x_{U}\in \MATHSET{R}^{n}</math> , <math>c(x),c_{L},c_{U}\in
where <math>x,x_{L},x_{U}\in \mathbb{R}^{n}</math> , <math>c(x),c_{L},c_{U}\in
\MATHSET{R}^{m_{1}}</math>, <math>A\in \MATHSET{R}^{m_{2}\times n}</math> and
\mathbb{R}^{m_{1}}</math>, <math>A\in \mathbb{R}^{m_{2}\times n}</math> and
<math>b_{L},b_{U}\in \MATHSET{R}^{m_{2}}</math> . The variables <math>x \in I</math>, the index subset of <math>1,...,n</math> are restricted to be integers.
<math>b_{L},b_{U}\in \mathbb{R}^{m_{2}}</math> . The variables <math>x \in I</math>, the index subset of <math>1,...,n</math> are restricted to be integers.


==Calling Syntax==
==Calling Syntax==


<source lang="matlab">
Result = tomRun('multiMINLP',Prob,...)
Result = tomRun('multiMINLP',Prob,...)
</source>


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


{|
{| class="wikitable"
|''Prob''||colspan="2"|Problem description structure. The following fields are used:
!''Prob''||colspan="2"|Problem description structure. The following fields are used:
|-
|-
|||||Prob is a structure, defined  as to solve a standard MINLP  problem. The Prob structure is fed to the localSolver. See e.g. minlpAssign.
Prob is a structure, defined  as to solve a standard MINLP  problem. The Prob structure is fed to the localSolver. See e.g. minlpAssign.
|-
 
|||||See multiMin  and glcDirect for input to the subsolvers e.g. Prob.xInit is used in multiMin (and fCut, RandState, xEQTol).
See multiMin  and glcDirect for input to the subsolvers e.g. Prob.xInit is used in multiMin (and fCut, RandState, xEQTol).
|-valign="top"
|-valign="top"
|||''x_L''||Lower bounds for each element in x. If generating random points, -inf elements of x L are set to min(-L,xMin,x  U-L) xMin is the minimum of the finite x L values.
|||''x_L''||Lower bounds for each element in x. If generating random points, -inf elements of x_L are set to min(-L,xMin,x  U-L) xMin is the minimum of the finite x_L values.
|-valign="top"
|-valign="top"
|||''x_U''||Upper bounds for each element in x. If generating random points, inf elements of x U are set to max(L,xMax,x L+L) xMax is the maximum of the finite x U values.
|||''x_U''||Upper bounds for each element in x. If generating random points, inf elements of x_U are set to max(L,xMax,x L+L) xMax is the maximum of the finite x_U values.
|-
 
|||||L is 100 for nonlinear least squares, otherwise 1000.
L is 100 for nonlinear least squares, otherwise 1000.
|-
|-
|||''b_L''||Lower bounds on linear constraints.  
|||''b_L''||Lower bounds on linear constraints.  
Line 59: Line 59:
|-
|-
|||''c_U''||Upper bounds on nonlinear constraints.
|||''c_U''||Upper bounds on nonlinear constraints.
|-
|-valign="top"
|||''PriLev''||Print Level:
|||''PriLev''||Print Level:
|-
 
|||||0 = Silent
0 = Silent
|-
 
|||||1 = Display 2 summary rows
1 = Display 2 summary rows
|-
 
|||||2 = Display some extra summary rows
2 = Display some extra summary rows
|-
 
|||||5 = Print level 1 in tomRun call
5 = Print level 1 in tomRun call
|-
 
|||||6 = Print level 2 in tomRun call
6 = Print level 2 in tomRun call
|-
 
|||||7 = Print level 3 in tomRun call
7 = Print level 3 in tomRun call
|-
|-
|||''xInit''||Used in multiMin. See help for multiMin.
|||''xInit''||Used in multiMin. See help for multiMin.
Line 84: Line 84:
|||''fGoal''||Goal for function value f(x), if empty not used. If fGoal is reached, no further local optimizations are done
|||''fGoal''||Goal for function value f(x), if empty not used. If fGoal is reached, no further local optimizations are done
|-valign="top"
|-valign="top"
|||''eps_f''||Relative accuracy for function value, fTol == eps_f.  Stop if abs(f-fGoal) ''<''= abs(fGoal) \* fTol , if fGoal = 0. Stop if abs(f-fGoal) ''<''= fTol , if fGoal ==0. Default 1e-8.
|||''eps_f''||Relative accuracy for function value, fTol == eps_f.  Stop if abs(f-fGoal) ''<''= abs(fGoal) * fTol , if fGoal = 0. Stop if abs(f-fGoal) ''<''= fTol , if fGoal ==0. Default 1e-8.
|-
|-
|||''bTol''||Linear constraint feasibility tolerance. Default 1e-6
|||''bTol''||Linear constraint feasibility tolerance. Default 1e-6
Line 96: Line 96:
|||''nMax''||Number of integer combinations possible, if  empty multiMINLP computes nMax.
|||''nMax''||Number of integer combinations possible, if  empty multiMINLP computes nMax.
|-
|-
|||''Rfac''||Reduction factor for real variables in MINLP  subproblem  close to local multiMINLP minimum. Bounds set to x_L = max(x_L,x-Rfac\*(x_U-x_L)) and x_U= min(x_U,x+Rfac\*(x_U-x_L)). Default 0.25.
|||''Rfac''||Reduction factor for real variables in MINLP  subproblem  close to local multiMINLP minimum. Bounds set to x_L = max(x_L,x-Rfac*(x_U-x_L)) and x_U= min(x_U,x+Rfac*(x_U-x_L)). Default 0.25.
|}
|}


===Description of Outputs===
==Outputs==
{|
 
|''Result''||colspan="2"|Structure with result from optimization. The following fields are changed:
{|class="wikitable"
!''Result''||colspan="2"|Structure with result from optimization. The following fields are changed:
|-
|-
|||||Result structure from the last good optimization step giving the best f(x) value, the possible global MINLP  minimum.
|||||Result structure from the last good optimization step giving the best f(x) value, the possible global MINLP  minimum.
|-
 
|||||The following fields in Result are changed by multiMINLP before return:
The following fields in Result are changed by multiMINLP before return:
|-
|-valign="top"
|||''ExitFlag''||= 0 normal output, of if fGoal set and found.
|||''ExitFlag''||= 0 normal output, of if fGoal set and found.
= 1 A solution reaching the user defined fGoal was not found.
= 2 Unbounded problem.
=4 Infeasible problem.
The Solver, SolverAlgorithm and ExitText fields are also reset.
A special field in Result is also returned, Result.multiMINLP:
|-
|-
|||||= 1 A solution reaching the user defined fGoal was not found.
|||''xOpt''||Prob.N x k matrix with k distinct  local optima, the test being norm(x k- xOpt(:,i)) ''<''= xEqTol*max(1,norm(x k)) that if fulfilled assumes x_k to be to close to xOpt(:,i).
|-
|||||= 2 Unbounded problem.
|-
|||||=4 Infeasible problem.
|-
|||||The Solver, SolverAlgorithm and ExitText fields are also reset.
|-
|||||A special field in Result is also returned, Result.multiMINLP:
|-
|||''xOpt''||Prob.N x k matrix with k distinct  local optima, the test being norm(x k- xOpt(:,i)) ''<''= xEqTol\*max(1,norm(x k)) that if fulfilled assumes x_k to be to close to xOpt(:,i).
|-
|-
|||''fOpt''||The k function values in the local optima xOpt(:,i),i=1,...,k.
|||''fOpt''||The k function values in the local optima xOpt(:,i),i=1,...,k.

Latest revision as of 10:16, 9 March 2015

Purpose

multiMINLP solves general constrained mixed-integer global nonlinear optimization problems.

It is aimed for problems where the number of integer combinations nMax is huge and relaxation of the integer constraint is possible.

If no integer variables, multiMINLP calls multiMin. If nMax <= min(Prob.optParam.MaxFunc,5000), glcDirect is used. Otherwise, multiMINLP first finds a set M of local minima calling multiMin with no integer restriction on any variable. The best local minimum is selected. glcDirect is called to find the best integer feasible solution fIP in a small area (< +- 2 units) around the best local minimum found.

The other local minima are pruned, if fOpt(i) > fIP, no integer feasible solution could be found close to this local minimum i.

The area close to the remaining candidate local minima are searched one by one by calling glcDirect to find any fIPi < fIP.

multiMINLP solves problems of the form


where , , and . The variables , the index subset of are restricted to be integers.

Calling Syntax

Result = tomRun('multiMINLP',Prob,...)

Inputs

Prob is a structure, defined as to solve a standard MINLP problem. The Prob structure is fed to the localSolver. See e.g. minlpAssign. See multiMin and glcDirect for input to the subsolvers e.g. Prob.xInit is used in multiMin (and fCut, RandState, xEQTol).
Prob Problem description structure. The following fields are used:
x_L Lower bounds for each element in x. If generating random points, -inf elements of x_L are set to min(-L,xMin,x U-L) xMin is the minimum of the finite x_L values.
x_U Upper bounds for each element in x. If generating random points, inf elements of x_U are set to max(L,xMax,x L+L) xMax is the maximum of the finite x_U values.

L is 100 for nonlinear least squares, otherwise 1000.

b_L Lower bounds on linear constraints.
b_U Upper bounds on linear constraints.
A The linear constraint matrix.
c_L Lower bounds on nonlinear constraints.
c_U Upper bounds on nonlinear constraints.
PriLev Print Level:

0 = Silent

1 = Display 2 summary rows

2 = Display some extra summary rows

5 = Print level 1 in tomRun call

6 = Print level 2 in tomRun call

7 = Print level 3 in tomRun call

xInit Used in multiMin. See help for multiMin.
GO.localSolver The local solver used to run all local optimizations. Default is the license dependent output of GetSolver('con',1,0).
optParam Structure in Prob, Prob.optParam. Defines optimization parameters. Fields used:
MaxFunc Max number of function evaluations in each subproblem
fGoal Goal for function value f(x), if empty not used. If fGoal is reached, no further local optimizations are done
eps_f Relative accuracy for function value, fTol == eps_f. Stop if abs(f-fGoal) <= abs(fGoal) * fTol , if fGoal = 0. Stop if abs(f-fGoal) <= fTol , if fGoal ==0. Default 1e-8.
bTol Linear constraint feasibility tolerance. Default 1e-6
cTol Nonlinear constraint feasibility tolerance. Default 1e-6
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 el- ements are 0/1), then 1 = integer variable, 0 = continuous variable. If any element >1, IntVars is the indices for integer variables.
nMax Number of integer combinations possible, if empty multiMINLP computes nMax.
Rfac Reduction factor for real variables in MINLP subproblem close to local multiMINLP minimum. Bounds set to x_L = max(x_L,x-Rfac*(x_U-x_L)) and x_U= min(x_U,x+Rfac*(x_U-x_L)). Default 0.25.

Outputs

Result Structure with result from optimization. The following fields are changed:
Result structure from the last good optimization step giving the best f(x) value, the possible global MINLP minimum.

The following fields in Result are changed by multiMINLP before return:

ExitFlag = 0 normal output, of if fGoal set and found.

= 1 A solution reaching the user defined fGoal was not found.

= 2 Unbounded problem.

=4 Infeasible problem.

The Solver, SolverAlgorithm and ExitText fields are also reset.

A special field in Result is also returned, Result.multiMINLP:

xOpt Prob.N x k matrix with k distinct local optima, the test being norm(x k- xOpt(:,i)) <= xEqTol*max(1,norm(x k)) that if fulfilled assumes x_k to be to close to xOpt(:,i).
fOpt The k function values in the local optima xOpt(:,i),i=1,...,k.
Inform The Inform value returned by the local solver when finding each of the local optima xOpt(:,i); i=1,...,k. The Inform value can be used to judge the validity of the local minimum reported.
localTry Total number of local searches.
Iter Total number of iterations.
FuncEv Total number of function evaluations.
GradEv Total number of gradient evaluations.
HessEv Total number of Hessian evaluations.
ConstrEv Total number of constraint function evaluations.
ExitText Text string giving Inform information.