diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pyCSalgos/BP/cvxopt_lp.py	Fri Mar 16 13:35:47 2012 +0200
@@ -0,0 +1,41 @@
+
+import numpy
+import cvxopt
+import cvxopt.solvers
+import cvxopt.msk
+import mosek
+
+def cvxopt_lp(y, A):
+
+    N = A.shape[1]
+    AA = numpy.hstack((A, -A))
+    c = numpy.ones((2*N, 1))
+    
+    G = numpy.vstack((numpy.zeros((2*N,2*N)), -numpy.eye(2*N)))
+    h = numpy.zeros((4*N,1))
+
+    # Convert numpy arrays to cvxopt matrices
+    cvx_c = cvxopt.matrix(c)
+    cvx_G = cvxopt.matrix(G)
+    cvx_h = cvxopt.matrix(h)
+    cvx_AA = cvxopt.matrix(AA)
+    cvx_y = cvxopt.matrix(y.reshape(y.size,1))
+    
+    # Options    
+    cvxopt.solvers.options['show_progress'] = False
+    #cvxopt.solvers.options['MOSEK'] = {mosek.iparam.log: 0}
+    
+    # Solve
+    #res = cvxopt.solvers.lp(cvx_c, cvx_G, cvx_h, A=cvx_AA, b=cvx_y, solver='mosek')
+    res = cvxopt.solvers.lp(cvx_c, cvx_G, cvx_h, A=cvx_AA, b=cvx_y)
+      
+    primal = numpy.squeeze(numpy.array(res['x']))
+    gamma = primal[:N] - primal[N:]
+    return gamma
+    
+    #lb = zeros(2*N,1);
+    #ub = Inf*ones(2*N,1);
+    ##[primal,obj,exitflag,output2,dual] = linprog(c,[],[],A,y,lb,ub,[],opt);
+    ##[primal,~,~,~,~] = linprog(c,[],[],A,aggy,lb,ub);
+    #[primal,obj,exitflag,output2,dual] = linprog(c,[],[],A,aggy,lb,ub);
+    #gamma = primal(1:N) - primal((N+1):(2*N));
\ No newline at end of file