d972236081a665bd99ffb6d7378485e1d04d5c15
[scilab.git] / scilab / modules / optimization / macros / qpsolve.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA - Serge Steer
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
9 //
10
11 function [x, iact, iter, f]=qpsolve(Q,p,C,b,ci,cs,me)
12     rhs = argn(2);
13     if rhs <> 7
14         error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "qsolve", 7));
15     end
16     Cb=[];bb=[];
17     isCsparse=typeof(C)=="sparse"|ci<>[]|cs<>[]
18     C(me+1:$,:)=-C(me+1:$,:);
19     b(me+1:$)=-b(me+1:$);
20     // replace boundary contraints by linear constraints
21     Cb=[];bb=[];
22     if ci<>[] then
23         Cb=[Cb;speye(Q)]
24         bb=[bb;ci]
25     end
26     if cs<>[] then
27         Cb=[Cb;speye(Q)]
28         bb=[bb;-cs]
29     end
30     C=[C;Cb];b=[b;bb]
31     [x, iact, iter, f]=qp_solve(Q,-p,C',b,me)
32 endfunction
33