算法思想
分支定界法是求解整数规划问题的“鼻祖型”算法了,其基本步骤是:
- 先将整数规划问题松弛成线性规划问题,并求出最优解;
- 慢慢砍掉那些非整数的搜索空间,将原问题分支成一个个子问题;
- 求解这些子问题最优解,并缩紧最优解的上下界,最终求得整数最优解。
上下界更新的原则:
- 上界:子问题最优解的最大值作为新的上界;
- 下界:子问题最优整数解的最大值作为新的下界。
一个例子
step 1: 松弛为线性规划问题B并求解,进行初始定界;
x
1
=
4.81
x_1 = 4.81
x1=4.81,
x
2
=
1.82
x_2 = 1.82
x2=1.82,
z
0
=
356
z_0 = 356
z0=356
因此,初始定界为
0
≤
Z
∗
≤
356
0 \leq Z^* \leq 356
0≤Z∗≤356。
step 2:基于非整数变量分支;
我们选择
x
1
=
4.81
x_1 = 4.81
x1=4.81进行分支(选择
x
2
x_2
x2也可以),如下图所示。
在图上看就是下面这个效果,切割了一部分非整数的可行域:
step 3: 分别求解子问题B1和B2的解(只是将问题B中
x
1
x_1
x1的约束范围改变一下求解),并重新定界;
step 4: 继续对问题
B
1
B_1
B1分支为
B
3
B_3
B3和
B
4
B_4
B4,并且求解,定界:
step 4: 继续对问题
B
2
B_2
B2分支为
B
5
B_5
B5和
B
6
B_6
B6,并且求解,定界:
step 4: 所有节点都已经搜索完,找到最优解340,停止计算。: