scipy包中的单纯形算法python

时间:2017-06-08 07:32:04

标签: optimization scipy simplex

我正在阅读python的Scipy包中提供的Simplex算法的文档,但是在documentation page的最后一个显示的示例是解决最小化问题。而我想做最大化。如果我们可以使用这个包进行最大化,如何更改参数以执行最大化?

1 个答案:

答案 0 :(得分:3)

通过将c向量乘以-1,可以将每个最大化问题转化为最小化问题:假设您有来自documentation的2变量问题,但希望最大化 c=[-1,4]

from scipy.optimize import linprog
import numpy
c = numpy.array([-1, 4]) # your original c for maximization
c *= -1 # negate the objective coefficients
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bnds = (None, None)
x1_bnds = (-3, None)
res = linprog(c, A, b, bounds=(x0_bnds, x1_bnds))
print("Objective = {}".format(res.get('fun') * -1)) # don't forget to retransform your objective back!

输出

>>> Objective = 11.4285714286