0
我試圖使用scipy.optimize.linprog,它不適用於我的情況。我一定在做錯事 - 請幫我找到它。scipy.optimize.linprog不適合我:我做錯了什麼?
這裏是投入和預期的解決方案和測試,預期的解決方案是可行的
import numpy, scipy.optimize
print "A", A_ub
print "b", b_ub
print "c", c
print "x_expected", x_expected
print "expected optimum", numpy.dot(c, x_expected)
print "feasibility test", numpy.dot(A_ub, x_expected) <= b_ub
這將打印
A [[-1. -0. 0. 1.]
[-0. -1. 1. 1.]
[-1. -0. -0. -1.]
[-0. -1. -1. -1.]]
b [ 2. 1. -2. -1.]
c [ 1. 1. 0. 0.]
x_expected [ 0 0 -1 2]
expected optimum 0.0
feasibility test [ True True True True]
當我打電話linprog我得到一個可行的解決方案,但似乎不要像我期望的那樣最佳。
r = scipy.optimize.linprog(c, A_ub, b_ub)
x_derived = r.x
print "x_derived", x_derived
print "derived optimum", numpy.dot(c, x_derived)
print "derived feasibility", numpy.dot(A_ub, x_derived) <= b_ub
這將打印
x_derived [ 1. 0. 0. 1.]
derived optimum 1.0
derived feasibility [ True True True True]
有什麼錯我的理由,我應該得到預期的解決方案(或更好的,如果有一個),而不是一個我得到什麼?如果我沒有錯,我該如何讓linprog爲我找到它?謝謝!
你想在這裏最大化或最小化? – cel
我想盡量減少numpy.dot(c,x)。 –