线性规划问题是一类在数学中广泛研究的问题,它涉及在给定的线性等式或不等式约束条件下,寻找一个线性目标函数的最大值或最小值。这类问题在经济学、管理学、工程学等领域有着广泛的应用。

问题

image-boun.png

问题分析

目标函数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}
  1. linprog默认求解最小值问题,这里把公式取负数
  2. 把几个约束条件转换成矩阵A与向量b求解。
    A=\begin{bmatrix}1&2\\4&0\\0&4\\\end{bmatrix} b=\begin{bmatrix}8\\16\\12\\\end{bmatrix}
  3. 最后定义x1,x2的取值边界,0到无穷大
  4. 最后出求解结果与运筹学书上结果一致,最优解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 许可协议。转载请注明来自 编程之家
算法、数据结构、数学
喜欢就支持一下吧