March 2008qpsolvelinear quadratic programming solverCalling Sequence[x [,iact [,iter [,f]]]]=qpsolve(Q,p,C,b,ci,cs,me)ParametersQreal positive definite symmetric matrix (dimension n
x n).preal (column) vector (dimension n)Creal matrix (dimension (me + md) x n).
This matrix may be stored as either a dense matrix either a sparse
one.bRHS column vector (dimension (me +
md))cicolumn vector of lower-bounds (dimension
n). If there are no lower bound constraints, put
ci = []. If some components of
x are bounded from below, set the other
(unconstrained) values of ci to a very large
negative number (e.g. ci(j) =
-number_properties('huge').cscolumn vector of upper-bounds. (Same remarks as above).menumber of equality constraints (i.e. C(1:me,:)*x =
b(1:me))xoptimal solution found.iactvector, indicator of active constraints. The first non zero
entries give the index of the active constraintsiter. 2x1 vector, first component gives the number of "main"
iterations, the second one says how many constraints were deleted
after they became active.DescriptionMinimize 0.5*x'*Q*x + p'*xunder the constraints
C(j,:) x = b(j), j=1,...,me
C(j,:) x <= b(j), j=me+1,...,me+md
ci <= x <= cs
This function requires Q to be positive definite,
if it is not the case, one may use the quapro function.Examples
//Find x in R^6 such that:
//C1*x = b1 (3 equality constraints i.e me=3)
C1= [1,-1,1,0,3,1;
-1,0,-3,-4,5,6;
2,5,3,0,1,0];
b1=[1;2;3];
//C2*x <= b2 (2 inequality constraints)
C2=[0,1,0,1,2,-1;
-1,0,2,1,1,0];
b2=[-1;2.5];
//with x between ci and cs:
ci=[-1000;-10000;0;-1000;-1000;-1000];cs=[10000;100;1.5;100;100;1000];
//and minimize 0.5*x'*Q*x + p'*x with
p=[1;2;3;4;5;6]; Q=eye(6,6);
//No initial point is given;
C=[C1;C2] ; //
b=[b1;b2] ; //
me=3;
[x,iact,iter,f]=qpsolve(Q,p,C,b,ci,cs,me)
//Only linear constraints (1 to 4) are active
See Alsooptimqp_solveqldThe contributed toolbox "quapro" may also be of interest, in
particular for singular Q. AuthorsS. Steer, INRIA (Scilab interface)Berwin A. Turlach,School of Mathematics and Statistics (M019), The University
of Western Australia, Crawley, AUSTRALIA (solver code)Used Functionsqpgen1.f (also named QP.solve.f) developped by Berwin A. Turlach
according to the Goldfarb/Idnani algorithm