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