2013-02-22 76 views
0

我试图解决的形式使用cvxopt为LP问题仅AEQ = BEQ(与A * X没有约束<= b)的

minimise cT.x 
A.x = b 
x >= 0 

的线性规划问题要运输问题。

但是,使用CVXOPT需要为lp(G,h,A,b)求解器定义变量G.x < = h。

我已经尝试创建我的A和B矩阵,并且对于G和h矩阵,我使用G(乘以-1)的单位矩阵和h的零向量,以强制x> = 0约束。

但是,当我运行我的代码时,它返回一个“单数KKT矩阵”。

任何人都可以帮助我解决问题,或者如何运行没有G和H变量的CVXOPT解算器。

+0

你为什么不使用LP(线性规划)求解? CVXOPT用于凸面优化,这比LP困难得多。请参阅[我的更早的答案](http://stackoverflow.com/a/10705799/341970)。 – Ali 2013-02-22 18:56:54

+0

是的,我正在尝试使用PuLP和Pyglpk。谢谢! @Ali – mtigger 2013-02-23 18:17:13

回答

0

运用Potential Method搜索运输问题的最优解。 要使用Potential Method,你应该解决三个lavel方程。 运输问题等网络问题需要使用双重问题来解决。

0

您的解决方案(-G - 单位矩阵,h - 零矢量)应该工作。你可以在这里发布你的数据。

例如:

from cvxopt import matrix, solvers 
c = matrix([ 2.0, 1.0 ]) 
G = matrix(-np.eye(2)) 
h = matrix(np.zeros(2)) 
A = matrix(np.eye(2)) 
b = matrix([1., 2.]) 
sol = solvers.lp(c, G, h, A, b) 
print(sol['x']) 

Optimal solution found. 
[ 1.00e+00] 
[ 2.00e+00]