0 引言
运筹优化的问题可以按照如下简化的流程来解决:
其中,比较核心的两个步骤是:建模(modeling)和求解(solve)。
对于现在有很多成熟的软件或者工具包,可以求解线性规划问题。比如,lingo, cplex, gurobi, glpk,lpsolve, scip,matlab optimization toolbox,or-tool等。
实际问题五花八门,它们的约束、目标等各不相同。如何对实际问题建模,并将它归结为一个线性规划问题,是应用线性规划求解问题时最重要,往往也是最困难的一步。问题建模是否合理,很大程度上会影响到后续的模型求解过程。
但是,受限于实际问题特征、建模经验、建模技巧等因素,我们在对问题建立初步模型之后,目标函数和约束条件因为往往包含一些特殊约束或者特殊变量使模型成为非线性规划问题,增加了求解难度。
常见的特殊约束或者特殊变量如下:
- 含有绝对值符号,比如目标函数包含绝对值 min X ( f ( X ) + λ ∣ ∣ X ∣ ∣ 1 ) \underset{X}{\min}(f(X)+\lambda||X||_1) Xmin(f(X)+λ∣∣X∣∣1);
- 含有最值(最大、最小)符号,比如目标函数中含有表达式 min i max j a i j \underset{i}{\min}\ \underset{j}{\max}\ a_{ij} imin jmax aij;
- 含“多选多”约束条件,即存在n(n至少为2)个为“or”关系的约束条件,要求这个从n个约束条件中至少同时满足其中m个约束条件;
- 含有" i f − t h e n if-then if−then"逻辑表达式的约束条件,比如“如果事件A发生,则事件B必发生”、“如果完成工作A,则不能完成工作B”等等类似的逻辑表达;
- 含有乘积表达式的约束条件;
- 含有分段函数;
我们使用下面介绍的一些化简技巧可将含有常见的特殊约束的非线性规划转换为线性规划或者整数规划,大大降低模型求解难度。
1 化简方法
1.1 含有绝对值符号的问题;
例如规划问题:
min ∑ i = 1 n ∣ x i ∣ s.t. A X ≤ b \begin{alignedat}{2} &\text{min} \sum_{i=1}^{n}|x_i| \\ &\text{s.t.} \ \ \ AX\leq b \end{alignedat} mini=1∑n∣xi∣s.t. AX≤b
其中, X = [ x 1 , . . . , x n ] T X=[x_1,...,x_n]^T X=[x1,...,xn]T, A A A和 b b b为相应维数的矩阵和向量。
要把上面的问题变换成线性规划问题,可以根据如下事实:
对任意的 x i x_i xi,存在 u i , v i > 0 u_i,v_i>0 ui,vi>0满足
∣ x i ∣ = u i + v i x i = u i − v i \begin{alignedat}{2} |x_i|&=u_i+v_i \\ x_i&=u_i-v_i \end{alignedat} ∣xi∣xi=ui+vi=ui−vi
并且任意地,只要我们取 u i = ∣ x i ∣ + x i 2 , v i = ∣ x i ∣ − x i 2 u_i=\frac{|x_i|+x_i}{2},v_i=\frac{|x_i|-x_i}{2} ui=2∣xi∣+xi,vi=2∣xi∣−xi就能满足要求。
这样,就可以把问题的初始模型转化为如下线性规划模型:
min ∑ i = 1 n ( u i + v i ) s.t. { A ( u − v ) ≤ b u , v ≥ 0 \begin{alignedat}{2} &\text{min} \sum_{i=1}^{n}(u_i+v_i) \\ &\text{s.t.} \begin{cases} A(u-v)\leq b \\ u,v\geq 0 \end{cases} \end{alignedat} mini=1∑n(ui+vi)s.t.{
A(u−v)≤bu,v≥0
其中, u , = [ u 1 , . . . , u n ] T , v = [ v 1 , . . . , v n ] T u,=[u_1,...,u_n]^T,v=[v_1,...,v_n]^T u,=[u1,...,un]T,v=[v1,...,vn]T。
1.2 含有最值符号的问题
例如规划问题:
min x i { max y i ∣ a i x i − b i y i ∣ } , i = 1 , 2 , . . . , n \text{min}_{x_i} \{\text{max}_{y_i}|a_ix_i-b_iy_i|\},\ \ i=1,2,...,n minxi{
maxyi∣aixi−biyi∣}, i=1,2,...,n
其中,决策变量 x i , y