intfminunc

Solves an unconstrained mixed-integer nonlinear optimization problem.

Calling Sequence

xopt = intfminunc(f,x0)
xopt = intfminunc(f,x0,intcon)
xopt = intfminunc(f,x0,intcon,options)
[xopt,fopt] = intfminunc(.....)
[xopt,fopt,exitflag]= intfminunc(.....)

Input Parameters

f :

A function, representing the objective function of the problem.

x0 :

A vector of doubles, containing the starting values of variables of size (1 X n) or (n X 1) where 'n' is the number of Variables.

intcon :

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

options :

A list, containing the option 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.

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 multivariable mixed integer nonlinear programming unconstrained optimization problem specified by : Find the minimum of f(x) such that intfminunc 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" );

• IntegerTolerance : A Scalar, a number with that value of an integer is considered integer.
• MaxNodes : A Scalar, containing the maximum number of nodes that the solver should search.
• CpuTime : A scalar, specifying the maximum amount of CPU Time in seconds that the solver should take.
• AllowableGap : A scalar, that specifies the gap between the computed solution and the the objective value of the best known solution stop, at which the tree search can be stopped.
• MaxIter : A scalar, specifying the maximum number of iterations that the solver should take.
• gradobj : A string, to turn on or off the user supplied objective gradient.
• hessian : A scalar, to turn on or off the user supplied objective hessian.
The default values for the various items are given as:

The exitflag allows to know the status of the optimization which is given back by Ipopt.

• 0 : Optimal Solution Found
• 1 : InFeasible Solution.
• 2 : Objective Function is Continuous Unbounded.
• 3 : Limit Exceeded.
• 4 : User Interrupt.
• 5 : MINLP Error.

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 intfminunc have been provided below. You will find a series of problems and the appropriate code snippets to solve them.

Example

We begin with the minimization of a simple nonlinear function.

Find x in R^2 such that it minimizes: //Example 1: //Objective function to be minimised function y=f(x) y= x(1)^2 + x(2)^2; endfunction //Starting point x0=[2,1]; intcon = ; [xopt,fopt]=intfminunc(f,x0,intcon) // Press ENTER to continue

Example

We now look at the Rosenbrock function, a non-convex performance test problem for optimization routines. We use this example to illustrate how we can enhance the functionality of intfminunc 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= 100*(x(2) - x(1)^2)^2 + (1-x(1))^2; endfunction //Starting point x0=[-1,2]; intcon =  //Options options=list("MaxIter", , "CpuTime", ); //Calling [xopt,fopt,exitflag,gradient,hessian]=intfminunc(f,x0,intcon,options) // Press ENTER to continue

Example

Unbounded Problems: Find x in R^2 such that it minimizes: //The below problem is an unbounded problem: //Find x in R^2 such that the below function is minimum //f = - x1^2 - x2^2 //Objective function to be minimised function [y, g, h]=f(x) y = -x(1)^2 - x(2)^2; g = [-2*x(1),-2*x(2)]; h = [-2,0;0,-2]; endfunction //Starting point x0=[2,1]; intcon =  options = list("gradobj","ON","hessian","on"); [xopt,fopt,exitflag,gradient,hessian]=intfminunc(f,x0,intcon,options)