线性模型总是比非线性模型更加受欢迎,非线性模型通常是无法避免的,这里我们来介绍一些能够将非线性模型转化为线性模型的例子。
通常我们遇到的非线性模型一般有极大化极小,极小化极大,以及最小化偏差。
高速公路巡逻队
这是一个真实的资源分配问题,巡逻队希望把巡逻员分配到不同的高速公路上,以最大限制的降低超速。下表列出了可用的数据,为了方便记忆。
j表示高速公路的路段号。
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
巡逻员人数上限,uj |
4 |
8 |
5 |
7 |
6 |
5 |
6 |
4 |
超速降低潜力,rj |
11 |
3 |
4 |
14 |
2 |
19 |
10 |
13 |
最大化总和的最优解,xj |
4 |
0 |
0 |
7 |
0 |
5 |
5 |
4 |
最大化最小最优解,xj |
1.09 |
4 |
3 |
0.86 |
6 |
4.85 |
1.2 |
4 |
假设巡逻队每周需要分配的巡逻人员是25人,通过分析历史数据,可以估算每个路段下面的两组数据。
uj表示每周分配给路段j的巡逻人员上限。
rj表示每增加一名巡逻路段j能够降低超速潜力。
超速降低潜力高说明该路段安排一名巡逻员是高度有效的,实际应用中,超速降低潜力值通过直接比较巡逻员和无巡逻员情形下的路段交通数据计算。
我们高速公路巡逻员分配模型的决策变量为
xj表示每周分配到路段j 的训练人数。
对应的线性规划模型是
max j=1∑8rjxj (总超速降低潜力)s.t.j=1∑8xj<25 (可用巡逻员)xj<ujxj>0
上述模型目标函数是最大化总和,因为模型使得不同路段的超速降低总和最大。模型的主要约束是分配巡逻员人数25,以及各路段可安排巡逻上限。上表第3行中给出的最大总和模型的一个最优解,其对应的总超速降低潜力值为339(第2行和第三行相乘相加).
注意
在上表中列举的最大化总和最优解中,除了一个决策变量意外,所有的决策变量取值不是0就是该路段巡逻员上限。对此结果略做思考可以发现,如果约束条件类似于上面建模的简单形式,最大化总和模型求解得到的总会是这样的,
为了使分配方案更加均衡,有时候我们倾向于采用极小化或者极大化的目标函数。
定义,极小化极大和极大化极小的目标函数是可以描述通过最差状况而不是总共的状况来度量表现形式。下面的建模方式我们聚焦在最不满意的结果,而不是整体的最优。
新的建模思路
max f(x1,..,x8) min rjxj (极大化极小超速降低潜力)s.t.j=1∑8xj<25 (可用巡逻员)xj<ujxj>0
在上述建模中,目标函数使得所有路段中超速降低潜力最低的路段的超速降低潜力最大化。而上面的模型是一个非线性规划问题,这里约束条件依然是线性的,但是目标函数不再是决策变量的加权和。然而这个非线性模型比追求最大化总和的模型更加合理,因为每个路段的超速降低得到了控制。上表的最后一行就是求出来的最优解,可以看出这种方案在各个路段都更加均衡。
非线性目标函数可能不会增加太多的计算复杂度。值得庆幸的是,即使是更加复杂的模型,我们也不会牺牲计算的便捷性。通过对模型的的非线性变形,我们可以构建一个预知等价的线性模型。
我需要引入一个连续变量。
f:目标函数值
然后添加一系列线性约束(f小于等于min中的每一项)的前提下最大化f。
这里我们给出一些原理,极大化极小或者是极小化极大的目标函数可以通过引入一些新的决策变量f表示目标函数的值。在极小化极大中,保证f>max中任意元素前提下最小化f,反之就是极大化极小。
通过上面的学习,我们来对上面的高速巡逻员模型进行一个转换。
max f (超速降低潜力极大化)s.t.f<rjxjj=1∑8<25xj<ujxj>0
无正负号限制的f是目标函数中唯一的变量,这使得目标函数成线性。新加入的线性约束保证f不大于所有的$r_{j}x_{j} $.
温馨提示
不知道大家读到这个博客有何感触,我们对于一个建模模型,只要是能将目标函数实例化后就很难再做下一步的挑战,而运筹规划很重要的是你对问题的认知停留在什么阶段,哪个阶段对整个问题发展最优是一个值得思考的问题。