数学规划是运筹学的一个支,其用来研究:在给定的条件下(约束条件),如何按照某一量指标(目标函数)来寻求计划、管理工作中的最优案。求目标函数在一定约束条件下的极值问题。
例子:数学高考试卷中的线维规划大题
$$ \begin{aligned} &min(max) \qquad Z = f(x)\\&S.T. \qquad g_i(x)\le0, i=1,2,···,m(不等式约束) \end{aligned} $$
$$ \begin{aligned}&x:决策变量(一般含有多个自变量)\\&f(x):目标函数\\&不等式约束,等式约束,整数约束,条件约束\end{aligned} $$
例如:
$$ min \quad Z = 6x_1+3x_2+4x_3 \\ S.t. \begin{cases} x_1+2x_2-3x_3 \le 80\\ x_1+x_2+x_3 =120\\x_1 \ge 30\\0\le x_2 \le 50\\x_3 \ge 20 \end{cases} $$
$$ min \quad Z=x_1^2-2x_1x_2+2x^{2}_2-4x_1-12x_2 \\ S.t. \begin{cases}x_1+x_1=2\\x_1-2x_2 \ge -2 \\ 2x_1+x_3 \le 3 \\ x_1, x_2 \ge 0 \end{cases} $$
$$ min \quad Z=20x_1+10x_2\\S.t. \begin{cases}5x_1+4x_2 \le 24\\2x_1+5x_2 \le 13\\x_1, x_2 \\ x_1, x_2 \in Z \\ x_1, x_2 \ge 0\end{cases} $$
如果目标函数 $f(x)$为和约束件均是决策复量的线姓表达式,那此时的数学规划问题就属于线性规划。 194,美国数学家丹齐格(G.B.Dantzig)提出了求解线性规划的单纯形法,奠定了这门学科基础。
当目标函数 $f(x)$或者的条件中有一个是决策变量×的非线性表达式,那么此时的数学规划问题就属于非线性规划。解决非线性规划要比线性规划困难得多,目前没有通用算法,大多数算法都是在选定决策变量的初始值后,通过一定的搜索方法寻求最优的决策变量。
线性整数规划是一类要求变量取整数值得数学规划
目前,所流行的求解艳数规划的算法往往只适用于线性整数规划,所以本节学习的求解均针对结性整数规划。
$$
min \quad C^Tx \quad (向量的内积,C=\begin{pmatrix}C_1 \\C_2 \\\vdots \\C_n \end{pmatrix}), x =\begin{pmatrix}x_1 \\x_2 \\\vdots \\x_n \end{pmatrix}, n是决策变量的个数) $$
$$ S.t. \begin{cases} Ax \le b (不等式约束) \\Aeg·x=beg (等式约束) \\lb \le x \le ub (上下界约束或当成不等式约束)\end{cases} $$
注意:可能只对部分决策变量有约束
$$ \begin{array}{l}\text { (1) } \min z=-5 x_{1}-4 x_{2}-6 x_{3} \\\text { s.t. }\left\{\begin{array}{l}x_{1}-x_{2}+x_{3} \leqslant 20 \\3 x_{1}+2 x_{2}+4 x_{3} \leqslant 42 \\3 x_{1}+2 x_{2} \leqslant 30 \\x_{1}, x_{2}, x_{3} \geqslant 0\end{array} \quad \Rightarrow c=\left[\begin{array}{c}-5 \\-4 \\-6\end{array}\right], x=\left[\begin{array}{l}x_{1} \\x_{2} \\x_{3}\end{array}\right], A=\left[\begin{array}{ccc}1 & -1 & 1 \\3 & 2 & 4 \\3 & 2 & 0\end{array}\right], b=\left[\begin{array}{l}20 \\42 \\30\end{array}\right], lb=\left[\begin{array}{l}0 \\0 \\0\end{array}\right]\right. \text {, }ub=\left[\begin{array}{l}+inf \\+inf \\+inf\end{array}\right]\end{array} $$
$$ \begin{array}{l}\text { (2) } \min \quad z=0.04 x_{1}+0.15 x_{2}+0.1 x_{3}+0.125x_4 \\\text { s.t. }\left\{\begin{array}{l}0.03x_{1}+0.3x_{2}+0.15x_{4} \ge 32 \\0.05x_{1}+0.2 x_{2}+0.1 x_{4} =24 \\0.14 x_{1}+0.07 x_{4} \le 42 \\x_{1}, x_{2}, x_{3} ,x_4\geqslant 0\end{array}\quad \Rightarrow c=\left[\begin{array}{c}0.04 \\0.15\\0.1\\0.125\end{array}\right], x=\left[\begin{array}{l}x_{1} \\x_{2} \\x_{3}\\x_4\end{array}\right], A=\left[\begin{array}{ccc}-0.03 & -0.3 & 0&-0.15 \\0.14 & 0 & 0 &0.07 \end{array}\right], b=\left[\begin{array}{l}-32 \\42 \end{array}\right], lb=\left[\begin{array}{l}0 \\0 \\0\\0\end{array}\right]\right. \text {, }Aeq=\left[\begin{array}{ccc}0.05 & 0 & 0.2&0.1 \end{array}\right], beq =24\end{array} $$
$$ \begin{array}{l}\text { (3) } \max z=2 x_{1}+3 x_{2}-5 x_{3}\\\text { s.t. }\left\{\begin{array}{l}x_{1}+x_{2}+x_{3}=7 \\ 2 x_{1}-5 x_{2}+x_{3} \geqslant 10 \\ x_{1}+3 x_{2}+x_{3} \leqslant 12 \\ x_{1}, x_{2}, x_{3} \geqslant 0\end{array}\quad \Rightarrow c=\left[\begin{array}{c}-2\\-3\\5\end{array}\right], x=\left[\begin{array}{l}x_{1} \\x_{2} \\x_{3}\end{array}\right], A=\left[\begin{array}{ccc}-2& 5 & -1\\1 & 3 & 1 \end{array}\right], b=\left[\begin{array}{l}-10 \\12 \end{array}\right], lb=\left[\begin{array}{l}0 \\0 \\0\end{array}\right]\right. \text {, }Aeq=\left[\begin{array}{ccc}1 & 1 & 1 \end{array}\right], beq =7\end{array} $$
求解max需要转换成-min
(2)matlab解结性规划的函数
[×, fvalJ= liprog (c, A, b, Aeg、 beg、 Ib. ub、 X0)
上面三个题的代码:
[x , fvalJ = linprog (c, A, b,[], [], lb)
[× , fvalJ = linprog (c, A, b, Aeg, beg,lb)
[x , fval] = linprog (c, A, b, Aeg, beg,lb)
fval=-fval
1.3某厂生产三种产品I,Ⅱ,Ⅲ。每种产品要经过A,B两道工序加工。设该厂有两种规格的设备能完成A工序,它们以A1,A2表示;有三种规格的设备能完成B工序,以B1,B2,B3表示。产品I可在A,B任何一种规格设备上加工。产品Ⅱ可在任何规格的A设备上加工,但完成B工序时,只能在B1设备上加工;产品Ⅲ只能在A2与B2设备上加工。已知在各种机床设备的单件工时、原材料费、产品销售价格、各种设备有效台时以及满负荷操作时机床设备的费用如表1.1所列,求安排最优的生产计划,使该厂利润最大。
解: 对产品I来说,设以A1,A2完成A工序的产品分别为x1,x2件,转入B工序时,以B1,B2,B3完成B工序的产品分别为x2,x4,x5件;对产品Ⅱ来说,设以A1,A2完成A工序的产品分别为x6,x7件,转入B工序时,以B1完成B工序的产品为xg件;对产品Ⅲ来说,设以A2完成A工序的产品为x件,则以B2完成B工序的产品也为x9件。由上述条件,得:
$$ x_1+x_2=x_3+x_4+x_5, \\ x_6+x_7+x_8 $$
有题目所给的条件可以得到如下线性规划模型
$$ \begin{aligned}z=&(\underbrace{1.25-0.25)\left(x_{1}+x_{2}\right)+(2-0.35) x_{8}+(2.8-0.5) x_{9}}\\&-\frac{300}{6000}\left(5 x_{1}+10 x_{6}\right)-\frac{321}{10000}\left(7 x_{2}+9 x_{7}+12 x_{9}\right) \\&-\frac{250}{4000}\left(6 x_{3}+8 x_{8}\right)-\frac{783}{7000}\left(4 x_{4}+11 x_{9}\right)-\frac{200}{4000} \times 7 x_{5} \\\text { s. t. }\left\{\begin{array}{l}5 x_{1}+10 x_{6} \leqslant 6000 \\7 x_{2}+9 x_{7}+12 x_{9} \leqslant 10000 \\6 x_{3}+8 x_{8} \leqslant 4000 \\4 x_{4}+11 x_{9} \leqslant 7000 \\7 x_{5} \leqslant 4000 \\x_{1}+x_{2}=x_{3}+x_{4}+x_{5} \\x_{6}+x_{7}=x_{8} \\x_{i} \geqslant 0, i=1,2, \cdots, 9\end{array}\right.\end{aligned} $$
$$ \begin{array}{l}\min f(x)\\\text { S.t. }\left\{\begin{array}{ll}A x \leqslant b, \text { Aeq } x=b e q & \text { (linear constaints) } \\C(x) \leqslant 0, \quad C e g(x)=0 & \text { (nonlinear constraints) } \\1 b \leqslant x \leqslant u b\end{array}\right.\end{array} $$
注意:可能只对部分决策变量有约束。
练习题: 将下列⾮线性规划问题转换为MATLAB中的标准型
$$ \max f(x)=x_{1}^{2}+x_{2}^{2}-x_{1} x_{2}-2 x_{1}-5 x_{2} \\ s.t. \left\{\begin{array}{l}-\left(x_{1}-1\right)^{2}+x_{2} \geqslant 0 \\ 2 x_{1}-3 x_{2}+6 \geqslant 0\end{array}\right. $$
$$ \min f(x)=x_{1}^{2}+x_{2}^{2}+x_{3}^{2}+8 \\ \text { s.t. }\left\{\begin{array}{l}x_{1}^{2}-x_{2}+x_{3}^{2} \geqslant 0 \\x_{1}+x_{2}^{2}+x_{3}^{2} \leqslant 20 \\-x_{1}-x_{2}^{2}+2=0 \\x_{2}+2 x_{3}^{2}=3 \\x_{1}, x_{2}, x_{3} \geqslant 0\end{array}\right. $$
$$ \max f(x)=x_{1} x_{2} x_{3} \\ \text { s.t. }\left\{\begin{array}{l}-x_{1}+2 x_{2}+2 x_{3} \geqslant 0 \\x_{1}+2 x_{2}+2 x_{3} \leq 72 \\10 \leq x_{2} \leq 20 \\x_{1}-x_{2}=10\end{array}\right. $$
$$ \min \quad -f(x)=-x_{1}^{2}-x_{2}^{2}+x_{1} x_{2}+2 x_{1}+5 x_{2}\\s.t. \left\{\begin{array}{l}\left(x_{1}-1\right)^{2}-x_{2} \le 0 \\ -2 x_{1}+3 x_{2}-6 \le 0\end{array}\right. $$
$$ \begin{array}{l}\min f(x)=x_{1}^{2}+x_{2}^{2}+x_{3}^{2}+8 \\\left\{\begin{array}{ll}-x_{1}^{2}+x_{2}-x_{3}^{2} \leq 0, & x_{1}+x_{2}^{2}+x_{3}^{2}-20 \leq 0 \\-x_{1}-x_{2}^{2}+2=0, & x_{2}+2 x_{3}^{2}-3=0 \\x_{1}, x_{2}, x_{3} \geqslant 0\end{array}\right.\end{array} $$
$$ \min -f(x)=-x_{1} x_{2} x_{3} \\ \text { s.t. }\left\{\begin{array}{l}x_{1}-2 x_{2}-2 x_{3} \leq 0 \\x_{1}+2 x_{2}+2 x_{3} \leq 72 \\x_{1}-x_{2}=10 \\10 \leqslant x_{2} \leq 20\end{array}\right. $$
[ x, fval] = fmincon(@fun.XO.A.b.Aeq.beq , [email protected] )