0

我正在阅读 Python 的 Scipy 包中提供的 Simplex Algorithm 的文档,但本文档页面最后显示的示例正在解决最小化问题。而我想做最大化。如果我们可以使用此包进行最大化,如何更改参数以执行最大化?

4

1 回答 1

3

每个最大化问题都可以通过将 c 向量乘以 -1 转换为最小化问题:假设您有文档中的 2-variable 问题,但想要最大化 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
于 2017-06-08T08:10:03.047 回答