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));