python scipy求解一个简单线性规划问题
线性规划问题是一类在数学中广泛研究的问题,它涉及在给定的线性等式或不等式约束条件下,寻找一个线性目标函数的最大值或最小值。这类问题在经济学、管理学、工程学等领域有着广泛的应用。
问题
问题分析
目标函数z为生产价值,x1,x2分别为产品1,产品2的生产数量。
max z=2x_1+3x_2
约束条件:
s.t.\begin{cases}
x_1+2x_2\leq 8\\
4x_1\leq 16\\
4x_2\leq 12\\
x_1,x_2\geq 0
\end{cases}
- linprog默认求解最小值问题,这里把公式取负数
- 把几个约束条件转换成矩阵A与向量b求解。
A=\begin{bmatrix}1&2\\4&0\\0&4\\\end{bmatrix} b=\begin{bmatrix}8\\16\\12\\\end{bmatrix}
- 最后定义x1,x2的取值边界,0到无穷大
- 最后出求解结果与运筹学书上结果一致,最优解z=14,x1=4,x2=2。
import numpy as np
from scipy.optimize import linprog
c = np.array([-2, -3])
A = np.array([[1, 2], [4, 0],[0,4]])
b = np.array([8, 16,12])
x_bounds = (0, None)
y_bounds = (0, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x_bounds, y_bounds], method='highs')
print("Optimal value:", -res.fun)
print("Optimal solution:", res.x)
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
编程之家!
喜欢就支持一下吧