Mercurial > hg > pycsalgos
comparison pyCSalgos/BP/cvxopt_lp.py @ 65:3d53309236c4
Added cvxopt_lp.py. Some bugfixes in gap.py and l1eq_pd.py
author | Nic Cleju <nikcleju@gmail.com> |
---|---|
date | Fri, 16 Mar 2012 13:35:47 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
64:a115c982a0fd | 65:3d53309236c4 |
---|---|
1 | |
2 import numpy | |
3 import cvxopt | |
4 import cvxopt.solvers | |
5 import cvxopt.msk | |
6 import mosek | |
7 | |
8 def cvxopt_lp(y, A): | |
9 | |
10 N = A.shape[1] | |
11 AA = numpy.hstack((A, -A)) | |
12 c = numpy.ones((2*N, 1)) | |
13 | |
14 G = numpy.vstack((numpy.zeros((2*N,2*N)), -numpy.eye(2*N))) | |
15 h = numpy.zeros((4*N,1)) | |
16 | |
17 # Convert numpy arrays to cvxopt matrices | |
18 cvx_c = cvxopt.matrix(c) | |
19 cvx_G = cvxopt.matrix(G) | |
20 cvx_h = cvxopt.matrix(h) | |
21 cvx_AA = cvxopt.matrix(AA) | |
22 cvx_y = cvxopt.matrix(y.reshape(y.size,1)) | |
23 | |
24 # Options | |
25 cvxopt.solvers.options['show_progress'] = False | |
26 #cvxopt.solvers.options['MOSEK'] = {mosek.iparam.log: 0} | |
27 | |
28 # Solve | |
29 #res = cvxopt.solvers.lp(cvx_c, cvx_G, cvx_h, A=cvx_AA, b=cvx_y, solver='mosek') | |
30 res = cvxopt.solvers.lp(cvx_c, cvx_G, cvx_h, A=cvx_AA, b=cvx_y) | |
31 | |
32 primal = numpy.squeeze(numpy.array(res['x'])) | |
33 gamma = primal[:N] - primal[N:] | |
34 return gamma | |
35 | |
36 #lb = zeros(2*N,1); | |
37 #ub = Inf*ones(2*N,1); | |
38 ##[primal,obj,exitflag,output2,dual] = linprog(c,[],[],A,y,lb,ub,[],opt); | |
39 ##[primal,~,~,~,~] = linprog(c,[],[],A,aggy,lb,ub); | |
40 #[primal,obj,exitflag,output2,dual] = linprog(c,[],[],A,aggy,lb,ub); | |
41 #gamma = primal(1:N) - primal((N+1):(2*N)); |