annotate 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
rev   line source
nikcleju@65 1
nikcleju@65 2 import numpy
nikcleju@65 3 import cvxopt
nikcleju@65 4 import cvxopt.solvers
nikcleju@65 5 import cvxopt.msk
nikcleju@65 6 import mosek
nikcleju@65 7
nikcleju@65 8 def cvxopt_lp(y, A):
nikcleju@65 9
nikcleju@65 10 N = A.shape[1]
nikcleju@65 11 AA = numpy.hstack((A, -A))
nikcleju@65 12 c = numpy.ones((2*N, 1))
nikcleju@65 13
nikcleju@65 14 G = numpy.vstack((numpy.zeros((2*N,2*N)), -numpy.eye(2*N)))
nikcleju@65 15 h = numpy.zeros((4*N,1))
nikcleju@65 16
nikcleju@65 17 # Convert numpy arrays to cvxopt matrices
nikcleju@65 18 cvx_c = cvxopt.matrix(c)
nikcleju@65 19 cvx_G = cvxopt.matrix(G)
nikcleju@65 20 cvx_h = cvxopt.matrix(h)
nikcleju@65 21 cvx_AA = cvxopt.matrix(AA)
nikcleju@65 22 cvx_y = cvxopt.matrix(y.reshape(y.size,1))
nikcleju@65 23
nikcleju@65 24 # Options
nikcleju@65 25 cvxopt.solvers.options['show_progress'] = False
nikcleju@65 26 #cvxopt.solvers.options['MOSEK'] = {mosek.iparam.log: 0}
nikcleju@65 27
nikcleju@65 28 # Solve
nikcleju@65 29 #res = cvxopt.solvers.lp(cvx_c, cvx_G, cvx_h, A=cvx_AA, b=cvx_y, solver='mosek')
nikcleju@65 30 res = cvxopt.solvers.lp(cvx_c, cvx_G, cvx_h, A=cvx_AA, b=cvx_y)
nikcleju@65 31
nikcleju@65 32 primal = numpy.squeeze(numpy.array(res['x']))
nikcleju@65 33 gamma = primal[:N] - primal[N:]
nikcleju@65 34 return gamma
nikcleju@65 35
nikcleju@65 36 #lb = zeros(2*N,1);
nikcleju@65 37 #ub = Inf*ones(2*N,1);
nikcleju@65 38 ##[primal,obj,exitflag,output2,dual] = linprog(c,[],[],A,y,lb,ub,[],opt);
nikcleju@65 39 ##[primal,~,~,~,~] = linprog(c,[],[],A,aggy,lb,ub);
nikcleju@65 40 #[primal,obj,exitflag,output2,dual] = linprog(c,[],[],A,aggy,lb,ub);
nikcleju@65 41 #gamma = primal(1:N) - primal((N+1):(2*N));