0-1规划介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.5 0-1规划
在军队管理、作战指挥、计算机辅助决策中常常会碰到一类分配问题,又称指派问题。这是指有m 个单位或人去完成,条件是
(1)每项工作只能分配给一个单位或人去完成; (2)每个单位或人只能接受其中一项工作。
问题是怎样合理分配,才能使总的费用最小或总的效益最高?
例16
我军有1D 、2D 、3D 、4D 四个导弹阵地,同时射击地方1A 、2A 、3A 、4
A 四架敌机。根据敌机来袭方向和阵地位置等,算得每个导弹阵地对各架敌机的击毁概率如表2-21。试给每个导弹阵地分配一架敌机,给每架敌机分配一个导弹阵地,使得对敌机的击毁概率最大。
解:设ij x 为问题的决策变量,它只取0,1两种值。我们定义
⎪⎩⎪⎨⎧=时。
分配给目标当不把阵地时,分配给目标当把阵地j i j i ij A D A D x 01
i=1,2,3,4;
j=1,2,3,4。
得线性规划
44
434241343332312423222114
1212112.08.09.06.08.06.08.04.06.08.06.08.06.04.09.06.0max x x x x x x x x x x x x x x x x P +++++++++++++++=
表2-21 A 1
A 2
A 3
A 4
D 1
0.6 0.9 0.4 0.6 D 2
0.8 0.6 0.8 0.6 D 3
0.4 0.8 0.6 0.8 D 4
0.6
0.9
0.8
0.2
约束于
敌
机 击
毁
概
率 导 弹
阵
地
⎪⎪⎪
⎪⎪⎪⎩
⎪
⎪⎪
⎪⎪⎪
⎨⎧====+++=+++=++=+++=+++=+++=+++=+++4,3,2,1,4,3,2,1,,1,01
11
1
1111443424144333231342
322212
4131211144434241343332312423222114131211j i x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x ij + 由于这个规划的决策变量只能取0,1两个值,故这种规划我们也称之为0-1规划。一般来说,指派问题可以化成如下的0-1规划:
∑∑
===m
j ij ij
m
i X C
Z 1
1
min
(2-12)
约束于
⎪⎪⎪⎩
⎪⎪⎪⎨⎧=======∑∑==m j m i X m
i X m j X ij m
j ij m
i ij ,,2,1,,,2,1,1,0,,2,1,1,,2,1,11
1 解决指派问题有一种有效的方法——匈牙利法。下面我们来介绍这种方法。
不难证明,指派问题(2-12)的最优解有这样的性质:若从系数(ij C )的一行或一列
各元素中减(加)同一常数,那么该问题的最优解不变。
利用这一性质,我们可以从指派问题系数矩阵(ij C )的每行和每列中分别减去该行该
列的最小元素,得到新矩阵(ij b )。这样,新矩阵中将会出现很多零元素,而最优解不变。
在系数矩阵(ij b )中,我们关心位于不同行且不同列的0元素,一下简称独立的0元
素。若能在系数矩阵(ij b )中找出m 个独立的0元素,则令解矩阵(ij X )中对应于这m 个独立的0元素。若能在系数矩阵(ij b )中着出m 个独立的0元素,则令解矩阵(ij X )中对应于这m 个独立的0元素的解取1,其他解元素取0。将这样的解代入其目标函数中得到b Z =0,又因为矩阵(ij b )中没有负元素,故b Z =0是目标函数的最小值,这样就得到了以(ij b )为系数矩阵的指派问题的最优解,它当然也是原指派问题的最优解。
库恩(W.W.Kuhn )于1955年提出了指派问题的解法。他引用了匈牙利数学家康尼格
(D.Konig )一个关于矩阵中“0”元素的定理:系数矩阵中独立“0”元素的最多个数等于能覆盖所有“0”元素的最少直线数。故这种方法得名为匈牙利法。也就是说,只要我们在指派问题的系数矩阵或其同解变形后的矩阵中能找到m 个独立的“0”元素,就得到了指派问题的解。
下面我们结合求解例16变成如(2-12)的0-1规划,需要把目标函数极小化,因此例16的系数矩阵相当于系数矩阵中所有元素加一负号,变为
⎥⎥
⎥⎥⎦
⎤⎢⎢⎢⎢⎣⎡----------------2.08.09.06
.08.06.08.04.06.08.06.08.06.04.09.06.0 所有元素加0.9,得非负矩阵
⎥⎥⎥⎥⎦
⎤⎢
⎢⎢
⎢⎣⎡7.01
.00
3.01.03.01.05.03.01.03.01.03.05.003.0 将上述矩阵中每行元素减去该行中最小值,再将每列元素减去该列中最小值得矩阵
⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎣⎡7.01.003.002.004.02.002.003.05.003.0 这个矩阵中有不少“0”元素。我们发现,最少可用三条直线将矩阵中的全部“0”元素复盖,
故矩阵中的独立“0”元素只有三个,不足四个(矩阵的阶数),因此尚未得到最优解。
对上述矩阵中所有未被划去的数字分别减去它们的最小值0.1,相当于对矩阵的第1、3、4列各元素减去0.1,为使第2、3行多数元素不变,再对第2、3行各元素加上0.1。最后的效果是,对上矩阵中所有未被划去的数字分别减去0.1时,还要再复盖线交叉处的元素上加0.1,其余数字不变,得矩阵
⎥
⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡6.000
2.002.01.04.02.00
3.002.0
4.002.0 我们发现,至少要用四条直线才能全部复盖上面的矩阵中的“0”元素,即上矩阵中独立的
“0”元素个数为四,等于矩阵的阶数,于是便可找到最优解了。
我们可以找到不同行、不同列的四个“0”元素,可令对应的决策变量为1,其余的决策变量为0。寻找的办法是先在有唯一零值的行或列开始寻找,凡找过的行和列中的零元素便不再考虑。于是可得
143342112====X X X X
其余0=ij X 。
即最优分配方案是指派第一个导弹阵地打第二架飞机,指派第二个导弹阵地打第一架飞