Esempio n. 1
0
import ecos
import cvxopt as o

#from guppy import hpy
A = o.spmatrix([1.,1.], [0,1],[0,1])
b = o.matrix([1.,1.])
G = o.spmatrix([-1.,-1.], [0,1], [0,1])
h = o.matrix([0.,0.])
c = o.matrix([1.,1.])
dims = {'l': 2}

print c
print h

sol = ecos.ecos(c,G,h,dims,A,b)
print sol
print sol['x']
# Ai = numpy.matrix([0,1])
# Ap = numpy.matrix([0,1,2])
# b = numpy.matrix([1.,1.])
# c = numpy.matrix([1.,1.])
# 
# solution = p.solve(Ax, Ai, Ap, b, c)
# print solution['x']
# print solution['y']
# print solution['status']
# 
# print getrefcount(solution['x'])

# h = hpy()
# print h.heap()
Esempio n. 2
0
# with variables z (8), w (1).

cc = matrix(0.0, (9, 1))
cc[:8], cc[8] = h, b
GG = spmatrix([], [], [], (n + 8, 9))
GG[:n, :8] = -G.T
GG[:n, 8] = -A.T
GG[n::n + 9] = -1.0
hh = matrix(0.0, (n + 8, n))
hh[:n, :] = matrix([i >= j for i in range(n) for j in range(n)], (n, n),
                   'd')  # upper triangular matrix of ones
#l = [-blas.dot(cc, solvers.lp(cc, GG, hh[:,k])['x']) for k in range(n)
l = [
    -blas.dot(cc,
              ecos.ecos(cc, GG, hh[:, k], {
                  'l': GG.size[0],
                  'q': []
              })['x']) for k in range(n)
]
#u = [blas.dot(cc, solvers.lp(cc, GG, -hh[:,k])['x']) for k in range(n)]
u = [
    blas.dot(cc,
             ecos.ecos(cc, GG, -hh[:, k], {
                 'l': GG.size[0],
                 'q': []
             })['x']) for k in range(n)
]


def f(x, y):
    return x + 2 * [y]
# subject to   +/- c + G'*z + A'*w >= 0
#              z >= 0
#
# with variables z (8), w (1).

cc = matrix(0.0, (9,1))
cc[:8], cc[8] = h, b
GG = spmatrix([], [], [], (n+8, 9))
GG[:n,:8] = -G.T
GG[:n,8] = -A.T
GG[n::n+9] = -1.0
hh = matrix(0.0, (n+8,n))
hh[:n,:] = matrix([i>=j for i in range(n) for j in range(n)], 
    (n,n), 'd')  # upper triangular matrix of ones
#l = [-blas.dot(cc, solvers.lp(cc, GG, hh[:,k])['x']) for k in range(n)
l = [-blas.dot(cc, ecos.ecos(cc, GG, hh[:,k], {'l': GG.size[0], 'q': []})['x']) for k in range(n)]
#u = [blas.dot(cc, solvers.lp(cc, GG, -hh[:,k])['x']) for k in range(n)]
u = [blas.dot(cc, ecos.ecos(cc, GG, -hh[:,k], {'l': GG.size[0], 'q': []})['x']) for k in range(n)]


def f(x,y): return x+2*[y]
def stepl(x): return reduce(f, x[1:], [x[0]])
def stepr(x): return reduce(f, x[:-1], []) + [x[-1]]

try: import pylab
except ImportError: pass
else:
    pylab.figure(1, facecolor='w')
    pylab.plot(stepl(a), stepr(p), '-')
    pylab.title('Maximum entropy distribution (fig. 7.2)')
    pylab.xlabel('a')