scipy 包 python 中的单纯形算法
Simplex algorithm in scipy package python
我正在阅读 python 的 Scipy 包中提供的单纯形算法文档,但此 documentation page 最后显示的示例正在解决最小化问题。而我想做最大化。如果我们可以使用此包进行最大化,如何更改参数以执行最大化?
每个最大化问题都可以通过将 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
我正在阅读 python 的 Scipy 包中提供的单纯形算法文档,但此 documentation page 最后显示的示例正在解决最小化问题。而我想做最大化。如果我们可以使用此包进行最大化,如何更改参数以执行最大化?
每个最大化问题都可以通过将 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