# TOMLAB  
# REGISTER (TOMLAB)
# LOGIN  
# myTOMLAB
TOMLAB LOGO

« Previous « Start » Next »

E  External Interfaces

Some users may have been used to work with MathWorks Optimization Toolbox, or have code written for use with these toolboxes. For that reason TOMLAB  contains interfaces to simplify the transfer of code to TOMLAB . There are two ways in which the MathWorks Optimization Toolbox may be used in TOMLAB . One way is to use the same type of call to the main solvers as in MathWorks Optimization TB, but the solution is obtained by converting the problem into the TOMLAB format and calling a TOMLAB  solver. The other way is to formulate the problem in any of the TOMLAB  formats, but when solving the problem calling the driver routine with the name of the Optimization Toolbox solver. Interfaces have been made to both MathWorks Optimization TB and MathWorks Optimization TB v1.5. Which way to use is determined by setting if 0 or if 1 in startup.m  in the addpath for the variable OPTIM . If setting if 1 then the TOMLAB  versions are put first and MathWorks Optimization TB is not accessible.

E.1  Solver Call Compatible with Optimization Toolbox

TOMLAB  is call compatible with MathWorks Optimization TB. This means that the same syntax could be used, but the solver is a TOMLAB  solver instead. TOMLAB  normally adds one extra input, the Prob  structure, and one extra output argument, the Result  structure. Both extra parameters are optional, but if the user are adding extra input arguments in his call to the MathWorks Optimization TB solver, to use the TOMLAB  equivalents, the extra input must be shifted one step right, and the variable Prob  be put first among the extra arguments. Table 32 gives a list of the solvers with compatible interfaces.



Table 32: Call compatible interfaces to MathWorks Optimization TB.


Function Type of problem solved
bintprog  Binary programming.
fmincon  Constrained minimization.
fminsearch  Unconstrained minimization using Nelder-Mead type simplex search method.
fminunc  Unconstrained minimization using gradient search.
linprog  Linear programming.
lsqcurvefit  Nonlinear least squares curve fitting.
lsqlin  Linear least squares.
lsqnonlin  Linear least squares with nonnegative variable constraints.
lsqnonneg  Nonlinear least squares.
quadprog  Quadratic programming.

In Table 33 a list is given with the demonstration files available in the directory examples  that exemplify the usage of the call compatible interfaces. In the next sections the usage of some of the solvers are further discussed and exemplified.



Table 33: Testroutines for the call compatible interfaces to MathWorks Optimization TB present in the examples directory in the TOMLAB  distribution.


Function Type of problem solved
testbintprog  Test of binary programming.
testfmincon  Test of constrained minimization.
testfminsearch  Test of unconstrained minimization using a Nelder-Mead type simplex search method.
testfminunc  Test of unconstrained minimization using gradient search.
testlinprog  Test of linear programming.
testlsqcurvefit  Test of nonlinear least squares curve fitting.
testlsqlin  Test of linear least squares.
testlsqnonlin  Test of linear least squares with nonnegative variable constraints.
testlsqnonneg  Test of nonlinear least squares.
testquadprog  Test of quadratic programming.

E.1.1  Solving LP Similar to Optimization Toolbox

For linear programs the MathWorks Optimization TB solver is linprog . The TOMLAB  linprog  solver adds one extra input argument, the Prob  structure, and one extra output argument, the Result  structure. Both extra parameters are optional, but means that the additional functionality of the TOMLAB  LP solver is accessible.

An example of the use of the TOMLAB  linprog  solver to solve test problem (13) illustrates the basic usage

File: tomlab/usersguide/lpTest4.m


lpExample;

% linprog needs linear inequalities and equalities to be given separately
% If the problem has both linear inequalities (only upper bounded)
% and equalities we can easily detect which ones doing the following calls

ix = b_L==b_U;
E  = find(ix);
I  = find(~ix);

[x, fVal, ExitFlag, Out, Lambda] = linprog(c, A(I,:),b_U(I),...
    A(E,:), b_U(E), x_L, x_U, x_0);

% If the problem has linear inequalites with different lower and upper bounds
% the problem can be transformed using the TOMLAB routine cpTransf.
% See the example file tomlab\examples\testlinprog.m for an example.

fprintf('\n');
fprintf('\n');
disp('Run TOMLAB linprog on LP Example');
fprintf('\n');
xprinte(A*x-b_U,          'Constraints Ax-b_U ');
xprinte(Lambda.lower,     'Lambda.lower:      ');
xprinte(Lambda.upper,     'Lambda.upper:      ');
xprinte(Lambda.eqlin,     'Lambda.eqlin:      ');
xprinte(Lambda.ineqlin,   'Lambda.ineqlin:    ');
xprinte(x,                'x:                 ');
format compact
disp('Output Structure')
disp(Out)
fprintf('Function value %30.20f. ExitFlag %d\n',fVal,ExitFlag);

The results from this test show the same results as previous runs in Section 5, because the same solver is called.

File: tomlab/usersguide/lpTest4.out

linprog (MINOS): Optimization terminated successfully


Run TOMLAB linprog on LP Example

Constraints Ax-b_U   0.000000e+000  0.000000e+000
Lambda.lower:        0.000000e+000  0.000000e+000
Lambda.upper:        0.000000e+000  0.000000e+000
Lambda.eqlin:
Lambda.ineqlin:     -1.857143e+000 -1.285714e+000
x:                   2.571429e+000  1.714286e+000
Output Structure
      iterations: 1
       algorithm: 'MINOS: MEX-interface to MINOS 5.5 NLP code'
    cgiterations: 0
Function value       -26.57142857142856600000. ExitFlag 1

E.1.2  Solving QP Similar to Optimization Toolbox

For quadratic programs the MathWorks Optimization TB solver is quadprog . The TOMLAB  quadprog  solver adds one extra input argument, the Prob  structure, and one extra output argument, the Result  structure. Both extra parameters are optional, but means that the additional functionality of the TOMLAB  QP solver is accessible.

An example of the use of the TOMLAB  quadprog  solver to solve test problem (15) illustrates the basic usage

File: tomlab/usersguide/qpTest4.m


qpExample;

% quadprog needs linear equalities and equalities to be given separately
% If the problem has both linear inequalities (only upper bounded)
% and equalities we can easily detect which ones doing the following calls

ix = b_L==b_U;
E  = find(ix);
I  = find(~ix);

[x, fVal, ExitFlag, Out, Lambda] = quadprog(F, c, A(I,:),b_U(I),...
    A(E,:), b_U(E), x_L, x_U, x_0);

% If A has linear inequalites with different lower and upper bounds
% the problem can be transformed using the TOMLAB routine cpTransf.
% See the example file tomlab\examples\testquadprog.m for an example.

fprintf('\n');
fprintf('\n');
disp('Run TOMLAB quadprog on QP Example');
fprintf('\n');
xprinte(A*x-b_U,          'Constraints Ax-b_U ');
xprinte(Lambda.lower,     'Lambda.lower:      ');
xprinte(Lambda.upper,     'Lambda.upper:      ');
xprinte(Lambda.eqlin,     'Lambda.eqlin:      ');
xprinte(Lambda.ineqlin,   'Lambda.ineqlin:    ');
xprinte(x,                'x:                 ');
format compact
disp('Output Structure')
disp(Out)
fprintf('Function value %30.20f. ExitFlag %d\n',fVal,ExitFlag);

The restricted problem formulation in MathWorks Optimization TB sometimes makes it necessary to transform the problem. See the comments in the above example and the test problem file tomlab/examples/testquadprog.m . The results from this test show the same results as previous runs

File: tomlab/usersguide/qpTest4.out



Run TOMLAB quadprog on QP Example

Constraints Ax-b_U  -4.900000e+000  0.000000e+000
Lambda.lower:        0.000000e+000  0.000000e+000
Lambda.upper:        0.000000e+000  0.000000e+000
Lambda.eqlin:       -3.500000e+000
Lambda.ineqlin:      0.000000e+000
x:                   5.000000e-002  5.000000e-002
Output Structure
       iterations: 1
        algorithm: 'bqpd: MEX-interface to BQPD QP/LP code'
     cgiterations: []
    firstorderopt: []
Function value        -0.02500000000000000100. ExitFlag 1

E.2  The Matlab Optimization Toolbox Interface

Included in TOMLAB  is an interface to a number of the solvers in the MathWorks Optimization TB v1.5 [12]. and MathWorks Optimization TB [14]. The solvers that are directly possible to use, when a problem is generated in the TOMLAB  format, are listed in Table 34. The user must of course have a valid license. The TOMLAB  interface routines are opt15Run  and opt20Run , but the user does not need to call these directly, but can use the standard multi-solver driver interface routine tomRun .

Several low-level interface routines have been written. For example, the constr  solver needs both the objective function and the vector of constraint functions in the same call, which nlp_fc  supplies. Also the gradient vector and the matrix of constraint normals should be supplied in one call. These parameters are returned by the routine nlp_gdc .

MathWorks Optimization TB v1.5 is using a parameter vector OPTIONS of length 18, that the routine foptions  is setting up the default values for. MathWorks Optimization TB is instead using a structure.



Table 34: Optimization toolbox routines with a TOMLAB  interface.


Function Type of problem solved
bintprog  Binary programming.
fmincon  Constrained minimization.
fminsearch  Unconstrained minimization using Nelder-Mead type simplex search method.
fminunc  Unconstrained minimization using gradient search.
linprog  Linear programming.
lsqcurvefit  Nonlinear least squares curve fitting.
lsqlin  Linear least squares.
lsqnonlin  Linear least squares with nonnegative variable constraints.
lsqnonneg  Nonlinear least squares.
quadprog  Quadratic programming.
constr  Constrained minimization.
fmins  Unconstrained minimization using Nelder-Mead type simplex search method.
fminu  Unconstrained minimization using gradient search.
leastsq  Nonlinear least squares.
lp  Linear programming.
qp  Quadratic programming.

E.3  The AMPL Interface

The AMPL interface is described in a separate manual. Enter help amplAssign in MATLAB to see the functionality.

« Previous « Start » Next »