Mercurial > hg > pycsalgos
view pyCSalgos/BP/cvxopt_lp.py @ 68:cab8a215f9a1 tip
Minor
author | Nic Cleju <nikcleju@gmail.com> |
---|---|
date | Tue, 09 Jul 2013 14:50:09 +0300 |
parents | 3d53309236c4 |
children |
line wrap: on
line source
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));