<< fot_fminunc FOSSEE_Optimization_Toolbox fot_intfmincon >>

FOSSEE_Optimization_Toolbox >> FOSSEE_Optimization_Toolbox > fot_intfminbnd

fot_intfminbnd

Solves a mixed-integer nonlinear optimization problem on bounded variables.

Calling Sequence

xopt = fot_intfminbnd(f,intcon,x1,x2)
xopt = fot_intfminbnd(f,intcon,x1,x2,options)
[xopt,fopt] = fot_intfminbnd(.....)
[xopt,fopt,exitflag]= fot_intfminbnd(.....)
[xopt,fopt,exitflag,output]=fot_intfminbnd(.....)
[xopt,fopt,exitflag,gradient,hessian]=fot_intfminbnd(.....)

Input Parameters

f :

A function, representing the objective function of the problem.

x_{1} :

A vector, containing the lower bound of the variables of size (1 X n) or (n X 1) where n is number of variables. If it is empty it means that the lower bound is -\infty.

x_{2} :

A vector, containing the upper bound of the variables of size (1 X n) or (n X 1) or (0 X 0) where n is the number of variables. If it is empty it means that the upper bound is \infty.

intcon :

A vector of integers, representing the variables that are constrained to be integers.

options :

A list, containing the options for user to specify. See below for details.

Outputs

xopt :

A vector of doubles, containing the computed solution of the optimization problem.

fopt :

A double, containing the the function value at x.

exitflag :

An integer, containing the flag which denotes the reason for termination of algorithm. See below for details.

gradient :

A vector of doubles, containing the objective's gradient of the solution.

hessian :

A matrix of doubles, containing the Lagrangian's hessian of the solution.

Description

Search the minimum of a multi-variable function on bounded interval specified by : Find the minimum of f(x) such that

\begin{eqnarray}
&\mbox{min}_{x}
& f(x)\\
& \text{Subjected to:}\\ & x_{1} \ < x \ < x_{2} \\
\end{eqnarray}

fot_intfminbnd calls Bonmin, which is an optimization library written in C++, to solve the bound optimization problem.

Options

The options allow the user to set various parameters of the Optimization problem. The syntax for the options is given by:

options= list("IntegerTolerance", [---], "MaxNodes",[---], "MaxIter", [---], "AllowableGap",[---] "CpuTime", [---],"gradobj", "off", "hessian", "off" );

The default values for the various items are given as:

options = list('integertolerance',1d-06,'maxnodes',2147483647,'cputime',1d10,'allowablegap',0,'maxiter',2147483647,'gradobj',"off",'hessian',"off")

The exitflag allows the user to know the status of the optimization which is returned by Bonmin. The values it can take and what they indicate is described below:

For more details on exitflag, see the Bonmin documentation which can be found on http://www.coin-or.org/Bonmin

A few examples displaying the various functionalities of fot_intfminbnd have been provided below. You will find a series of problems and the appropriate code snippets to solve them.

Example

We start with a simple objective function. Find x in R^6 such that it minimizes:

\begin{eqnarray}
\mbox{min}_{x}\ f(x) = sin(x_{1}) + sin(x_{2}) + sin(x_{3}) + sin(x_{4}) + sin(x_{5}) + sin(x_{6})
\end{eqnarray}
\\\text{Subjected to:}\\
\begin{eqnarray}
\hspace{70pt} &-2  &\leq x{1},  x{2},  x{3},  x{4},  x{5},  x{6}  &\leq 2\\
\end{eqnarray}\\
\text{With integer constraints as: }\\
\begin{eqnarray}
\begin{array}{ccc}
[2 & 3 & 4] \\
\end{array}
\end{eqnarray}

//Example 1:
//Objective function to be minimised
function y=f(x)
y=0
for i =1:6
y=y+sin(x(i));
end
endfunction
//Variable bounds
x1 = [-2, -2, -2, -2, -2, -2];
x2 = [2, 2, 2, 2, 2, 2];
intcon = [2 3 4]
[x,fval] =fot_intfminbnd(f ,intcon, x1, x2)
// Press ENTER to continue

Example

Here we solve a bounded objective function in R^6. We use this function to illustrate how we can further enhance the functionality of fminbnd by setting input options. We can pre-define the gradient of the objective function and/or the hessian of the lagrange function and thereby improve the speed of computation. This is elaborated on in example 2. We also set solver parameters using the options.
//Example 2:
//Objective function to be minimised
function y=f(x)
y=0;
for i =1:6
y=y+sin(x(i));
end
endfunction
//Variable bounds
x1 = [-2, -2, -2, -2, -2, -2];
x2 = [2, 2, 2, 2, 2, 2];
intcon = [2 3 4]
//Options
options= list("IntegerTolerance", 1d-06, "MaxNodes",[500], "MaxIter", [2000], "AllowableGap",[0], "CpuTime", [500], "gradobj", "off", "hessian", "off" );
[x,fval] =fot_intfminbnd(f ,intcon, x1, x2, options)
// Press ENTER to continue

Example

Unbounded Problems: Find x in R^2 such that it minimizes:

\begin{eqnarray}
f(x) = -((x_{1}-1)^{2}+(x_{2}-1)^{2})
\end{eqnarray}
\\\text{Subjected to:}\\
\begin{eqnarray}
-\infty &\leq x_{1} &\leq \infty\\
-\infty &\leq x_{2} &\leq \infty
\end{eqnarray}\\
\text{With integer constraints as: } \\
\begin{eqnarray}
\begin{array}{cccccc}
[1 & 2] \\
\end{array}
\end{eqnarray}

///Example 3: Unbounded problem:
//Objective function to be minimised
function y=f(x)
y=-((x(1)-1)^2+(x(2)-1)^2);
endfunction
//Variable bounds
x1 = [-%inf , -%inf];
x2 = [ %inf , %inf];
//Options
options=list("MaxIter",[1500],"CpuTime", [100]);
intcon = [1 2];
[x,fval,exitflag,output,lambda] =fot_intfminbnd(f,intcon, x1, x2, options)

Authors


Report an issue
<< fot_fminunc FOSSEE_Optimization_Toolbox fot_intfmincon >>