2013-02-22 12 views
0

Я пытаюсь решить задачу линейного программирования видаиспользованием cvxopt для задач ЛП с только Aeq = УР (без ограничений с А * х <= б)

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

для транспортной задачи.

Однако использование CVXOPT требует определения переменных G.x < = h для решателя lp (G, h, A, b).

Я попытался создать свои матрицы A и b, а для G и h-матриц я использую единичную матрицу для G (умноженную на -1) и вектор нулей для h, чтобы наложить x> = 0.

Однако, когда я запускаю свой код, он возвращает «единственную матрицу KKT».

Может ли кто-нибудь помочь мне в чем проблема или как я могу запустить решатель CVXOPT без переменных G и h.

+0

Почему вы не используете в LP (линейное программирование) решатель? CVXOPT предназначен для выпуклой оптимизации, что намного сложнее, чем LP. См. [Мой более ранний ответ] (http://stackoverflow.com/a/10705799/341970) здесь. – Ali

+0

Да, сейчас я пытаюсь использовать PuLP и Pyglpk. благодаря! @Ali – mtigger

ответ

0

Поиск оптимального решения проблемы транспортировки осуществляется с использованием метода потенциала. Чтобы использовать метод Потенциала, вы должны решить три уравнения лавелла. Проблемы с сетью, такие как проблема транспортировки, должны решить с помощью двойной проблемы, пожалуйста.

0

Ваше решение (-G - единичная матрица, ч - нули вектор) должны быть работа. Вы можете разместить свои данные здесь.

Например:

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] 

 Смежные вопросы

  • Нет связанных вопросов^_^