mpt_call_qpspline

Purpose

A gateway function to QPspline solver (without errorchecks)

Syntax

R = mpt_call_qpspline(S)

Description

The function implements call to QPspline solver based on formulation from Opt class. Only QP problems are supported with positive definite Hessian. It is assumed that QP entering this function is of the form

../../../../fig/mpt/modules/solvers/mpt_call_qpspline20.png

which must be transformed to

../../../../fig/mpt/modules/solvers/mpt_call_qpspline21.png

which accepts QPspline. The lower bound ../../../../fig/mpt/modules/solvers/mpt_call_qpspline1.png is always set as -MPTOPTIONS.infbound. If QP contains equality constraints, these are removed first. It is required that the system of linear equations ../../../../fig/mpt/modules/solvers/mpt_call_qpspline2.png is consistent, i.e. no linearly dependent rows are found and the number of equalities is strictly less than number of variables. The principle is based on factorizing equality constraints ../../../../fig/mpt/modules/solvers/mpt_call_qpspline3.png in basic ../../../../fig/mpt/modules/solvers/mpt_call_qpspline4.png and non-basic variables ../../../../fig/mpt/modules/solvers/mpt_call_qpspline5.png, i.e.

../../../../fig/mpt/modules/solvers/mpt_call_qpspline22.png

which gives

../../../../fig/mpt/modules/solvers/mpt_call_qpspline23.png

where the index sets Bc, Nc denote the columns from which factored system is built. The factored submatrix ../../../../fig/mpt/modules/solvers/mpt_call_qpspline6.png must be invertible in order to express basic variables as a function of non-basic variables, i.e.

../../../../fig/mpt/modules/solvers/mpt_call_qpspline24.png

With the substitution

../../../../fig/mpt/modules/solvers/mpt_call_qpspline25.png

and

../../../../fig/mpt/modules/solvers/mpt_call_qpspline26.png

the relation between basic and non-basic variables is simplified to

../../../../fig/mpt/modules/solvers/mpt_call_qpspline27.png

The above QP problem ../../../../fig/mpt/modules/solvers/mpt_call_qpspline7.png can be expressed only in non-basic variables ../../../../fig/mpt/modules/solvers/mpt_call_qpspline8.png as follows:

../../../../fig/mpt/modules/solvers/mpt_call_qpspline28.png

where

../../../../fig/mpt/modules/solvers/mpt_call_qpspline29.png

Original solution to QP problem ../../../../fig/mpt/modules/solvers/mpt_call_qpspline9.png can be obtained via relation ../../../../fig/mpt/modules/solvers/mpt_call_qpspline10.png.

Input Arguments

S

structure of the Opt class

Class: struct

S.H

Quadratic part of the objective function which is strictly convex ../../../../fig/mpt/modules/solvers/mpt_call_qpspline11.png.

Class: double

S.f

Linear part of the objective function.

Class: double

S.A

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

Class: double

S.b

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

Class: double

S.Ae

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

Class: double

Default: []

S.be

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

Class: double

Default: []

S.lb

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

Class: double

Default: []

S.ub

Upper bound for the variables ../../../../fig/mpt/modules/solvers/mpt_call_qpspline17.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_qpspline18.png.

Class: double

S.me

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

Class: double

S.problem_type

A string specifying the problem to be solved.

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

See Also

mpt_solve


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