数学建模-线性
数学建模-线性
求解线性规划问题
- 使用
scipy.optimize.linprog()
函数(求最小值的)
linprog: (c, A_ub, b_ub, A_eq, b_eq, bounds, method='interior-point', callback, options, x0)
- A_ub(可选参数):不等式约束矩阵, 二维
- b_ub(可选参数):不等式约束向量, 一维
- A_eq(可选参数):等式约束矩阵,二维
- b_eq(可选参数):等式约束向量,一维
- bounds(可选参数):定义决策变量
x
的最小值和最大值
- 数据类型:
(min, max)
序列对- None:使用None表示没有界限,默认情况下,界限为(0,None)(所有决策变量均为非负数)
- 如果提供一个元组
(min, max)
,则最小值和最大值将用作所有决策变量的界限。
- 例一
$$
max z = 2x_1 + 3x_2 - 5x_3\newline
$$
$$
s.t.
\begin{cases}
x_1+ x_2 + x_3 = 7\newline
2x_1 - 5x_2 + x_3 \geq 10\newline
x_1 + 3x_2 + x_3 \leq 12\newline
x_1, x_2, x_3 \geq 0
\end{cases}
$$
- max 化为 min
$$
minz = -2x_1 - 3x_2 + 5x_3
$$
得到 c = [-2, -3, 5]
- 把大于等于化为小于等于得到: $-2x_1 + 5x_2 - x_3 \leq -10$
$$
\begin{cases}
-2x_1 + 5x_2 - x_3 \leq -10\newline
x_1 + 3x_2 + x_3 \leq 12
\end{cases}
$$
得到 A_ub = [[-2, 5, -1], [1, 3, 1]], b_ub = [-10, 12]
- 找到等于号的式子
$$
x_1 + x_2 + x_3 = 7
$$
则 a_eq = [[1, 1, ,1]](二维), b_eq = [7]
1 | from scipy import optimize |
- 例二
$$
max z = 3x_1 + 2x_2\
$$
$$
\begin{cases}
2x_1 + 3x_2 \leq 14\newline
2x_1 + x_2 \leq 9\newline
x_1 \leq 3, x_2 \leq 2\newline
x_1, x_2 \geq 0
\end{cases}
$$
1 | c = np.array([-3, -2]) |