mpt_call_sedumi

Purpose

A gateway function to SEDUMI solver (without errorchecks)

Syntax

R = mpt_call_sedumi(S)

Description

The function implements calls to solve LP directly and QP via transformation to second order cone. For LP in a form

../../../../fig/mpt/modules/solvers/mpt_call_sedumi45.png

we need to get a following form accepted by SEDUMI

../../../../fig/mpt/modules/solvers/mpt_call_sedumi46.png

This can be achieved by introducing variables ../../../../fig/mpt/modules/solvers/mpt_call_sedumi1.png, ../../../../fig/mpt/modules/solvers/mpt_call_sedumi2.png, and ../../../../fig/mpt/modules/solvers/mpt_call_sedumi3.png

../../../../fig/mpt/modules/solvers/mpt_call_sedumi47.png

and putting them in one vector ../../../../fig/mpt/modules/solvers/mpt_call_sedumi4.png. The LP to be solved by SEDUMI is formed by

../../../../fig/mpt/modules/solvers/mpt_call_sedumi48.png

and solved in ../../../../fig/mpt/modules/solvers/mpt_call_sedumi5.png variables. For QP of the form

../../../../fig/mpt/modules/solvers/mpt_call_sedumi49.png

we need to impose constraints a in quadratic cone ../../../../fig/mpt/modules/solvers/mpt_call_sedumi6.png and to express the above problem as

../../../../fig/mpt/modules/solvers/mpt_call_sedumi50.png

Since QP is convex, we can express ../../../../fig/mpt/modules/solvers/mpt_call_sedumi7.png in an epigraph form

../../../../fig/mpt/modules/solvers/mpt_call_sedumi51.png

over quadratic constraints ../../../../fig/mpt/modules/solvers/mpt_call_sedumi8.png. From the literature for convex programming follows that the quadratic constraints ../../../../fig/mpt/modules/solvers/mpt_call_sedumi9.png can be written as conic constraints

../../../../fig/mpt/modules/solvers/mpt_call_sedumi52.png

where the matrix ../../../../fig/mpt/modules/solvers/mpt_call_sedumi10.png is a Cholesky factor of ../../../../fig/mpt/modules/solvers/mpt_call_sedumi11.png. This equivalence allows us to rewrite the epigraph form of QP ../../../../fig/mpt/modules/solvers/mpt_call_sedumi12.png to a primal form ../../../../fig/mpt/modules/solvers/mpt_call_sedumi13.png accepted by SEDUMI. Equality and inequality constraints are treated the same way as in LP case, i.e. by introducing the new variables ../../../../fig/mpt/modules/solvers/mpt_call_sedumi14.png, ../../../../fig/mpt/modules/solvers/mpt_call_sedumi15.png, ../../../../fig/mpt/modules/solvers/mpt_call_sedumi16.png, and ../../../../fig/mpt/modules/solvers/mpt_call_sedumi17.png, ../../../../fig/mpt/modules/solvers/mpt_call_sedumi18.png. Moreover, to express conic constraints we need two more variables ../../../../fig/mpt/modules/solvers/mpt_call_sedumi19.png, ../../../../fig/mpt/modules/solvers/mpt_call_sedumi20.png

../../../../fig/mpt/modules/solvers/mpt_call_sedumi53.png

Collecting all variables to one column vector ../../../../fig/mpt/modules/solvers/mpt_call_sedumi21.png the linear equality constraints ../../../../fig/mpt/modules/solvers/mpt_call_sedumi22.png can be expressed in ../../../../fig/mpt/modules/solvers/mpt_call_sedumi23.png variable as ../../../../fig/mpt/modules/solvers/mpt_call_sedumi24.png where

../../../../fig/mpt/modules/solvers/mpt_call_sedumi54.png

The objective function in ../../../../fig/mpt/modules/solvers/mpt_call_sedumi25.png is composed as ../../../../fig/mpt/modules/solvers/mpt_call_sedumi26.png. The individual constraints ../../../../fig/mpt/modules/solvers/mpt_call_sedumi27.png in ../../../../fig/mpt/modules/solvers/mpt_call_sedumi28.png are given in ../../../../fig/mpt/modules/solvers/mpt_call_sedumi29.png vector as follows: ../../../../fig/mpt/modules/solvers/mpt_call_sedumi30.png is free variable, ../../../../fig/mpt/modules/solvers/mpt_call_sedumi31.png, ../../../../fig/mpt/modules/solvers/mpt_call_sedumi32.png, ../../../../fig/mpt/modules/solvers/mpt_call_sedumi33.png are restricted to be nonnegative and ../../../../fig/mpt/modules/solvers/mpt_call_sedumi34.png, ../../../../fig/mpt/modules/solvers/mpt_call_sedumi35.png form the conic constraint ../../../../fig/mpt/modules/solvers/mpt_call_sedumi36.png.

Input Arguments

S

Structure of the Opt class

Class: struct

S.H

Quadratic part of the objective function.

Class: double

Default: []

S.f

Linear part of the objective function.

Class: double

S.A

Linear part of the inequality constraints ../../../../fig/mpt/modules/solvers/mpt_call_sedumi37.png.

Class: double

S.b

Right hand side of the inequality constraints ../../../../fig/mpt/modules/solvers/mpt_call_sedumi38.png.

Class: double

S.Ae

Linear part of the equality constraints ../../../../fig/mpt/modules/solvers/mpt_call_sedumi39.png.

Class: double

Default: []

S.be

Right hand side of the equality constraints ../../../../fig/mpt/modules/solvers/mpt_call_sedumi40.png.

Class: double

Default: []

S.lb

Lower bound for the variables ../../../../fig/mpt/modules/solvers/mpt_call_sedumi41.png.

Class: double

Default: []

S.ub

Upper bound for the variables ../../../../fig/mpt/modules/solvers/mpt_call_sedumi42.png.

Class: double

Default: []

S.n

Problem dimension (number of variables).

Class: double

S.m

Number of inequalities in ../../../../fig/mpt/modules/solvers/mpt_call_sedumi43.png.

Class: double

S.me

Number of equalities in ../../../../fig/mpt/modules/solvers/mpt_call_sedumi44.png.

Class: double

S.problem_type

A string specifying the problem to be solved (only LP and QP are allowed).

Class: char

S.test

Call (false) or not to call (true) MPT global settings.

Class: logical

Default: false

Output Arguments

R

result structure

Class: struct

R.xopt

optimal solution

Class: double

R.obj

Optimal objective value.

Class: double

R.lambda

Lagrangian multipliers

Class: double

R.exitflag

An integer value that informs if the result was feasible (1), or otherwise (different from 1).

Class: double

R.how

A string that informs if the result was feasible ('ok'), or if any problem appeared through optimization.

Class: char

References

[1] Stephen Boyd and Lieven Vandenberghe: Convex Optimization; Cambridge University Press

See Also

mpt_solve


© 2010-2013 Martin Herceg: ETH Zurich, herceg@control.ee.ethz.ch