5 Design Overview

5.1 Modeling

Optimization Toolbox for MATLAB is an interface for specifying optimization problems directly in matrix form. It means that an optimization problem such as:

\[\begin{split}\begin{array}{ll} \minimize & c^Tx \\ \st & Ax\leq b,\\ & x\in \mathcal{K} \end{array}\end{split}\]

or

\[\begin{split}\begin{array}{ll} \minimize & c^Tx \\ \st & Ax\leq b,\\ & Fx+g\in \mathcal{K} \end{array}\end{split}\]

is specified by describing the matrices \(A\), \(F\), vectors \(b,c,g\) and a list of cones \(\mathcal{K}\) directly.

The main characteristics of this interface are:

  • Simplicity: once the problem data is assembled in matrix form, it is straightforward to input it into the optimizer.

  • Exploiting sparsity: data is entered in sparse format, enabling huge, sparse problems to be defined and solved efficiently.

  • Efficiency: the API incurs almost no overhead between the user’s representation of the problem and MOSEK’s internal one.

Optimization Toolbox for MATLAB does not aid with modeling. It is the user’s responsibility to express the problem in MOSEK’s standard form, introducing, if necessary, auxiliary variables and constraints. See Sec. 12 (Problem Formulation and Solutions) for the precise formulations of problems MOSEK solves.

5.2 “Hello World!” in MOSEK

Here we present the most basic workflow pattern when using Optimization Toolbox for MATLAB.

Create a prob structure

Optimization problems using Optimization Toolbox for MATLAB are specified using a prob structure that describes the numerical data of the problem. In most cases it consists of matrices of floating-point numbers.

Retrieving the solutions

When the problem is set up, the optimizer is invoked with the call to mosekopt. The call will return a response and a structure containing the solution to all variables. See further details in Sec. 7 (Solver Interaction Tutorials).

We refer also to Sec. 7 (Solver Interaction Tutorials) for information about more advanced mechanisms of interacting with the solver.

Source code example

Below is the most basic code sample that defines and solves a trivial optimization problem

\[\begin{split}\begin{array}{ll} \minimize & x \\ \st & 2.0 \leq x \leq 3.0. \\ \end{array}\end{split}\]

For simplicity the example does not contain any error or status checks.

Listing 5.1 “Hello World!” in MOSEK
prob.a  =  sparse(0,1)  % 0 linear constraints, 1 variable
prob.c  =  [1.0]'       % Only objective coefficient
prob.blx=  [2.0]'       % Lower bound(s) on variable(s)
prob.bux=  [3.0]'       % Upper bound(s) on variable(s)

% Optimize
[r, res] = mosekopt('minimize', prob);

% Print answer
res.sol.itr.xx