1. 运筹学中指派问题除求最小值的匈牙利法,请问有何方法求最大值
最大值求法,跟最小值一样的。先求在指派矩阵里面最大的数,data,所以用这个数减去矩阵里面的所有数。之后,按求最小值的方法,求所得矩阵的最小值,即是所求的最大值。
2. 求解指派问题的匈牙利算法
这个应该是最优匹配,请直接网络KM算法!
3. 运筹学中指派问题除求最小值的匈牙利法,请问有何方法
效率矩阵乘以(-1),变换成求最小问题。再应用同行(或列)加一个常数,不改变指派问题最优解的定理,将效率矩阵变成非负的,再应用匈牙利算法求解。
4. 求效率矩阵的指派问题最优解
初解
0 3 6 6 5 (4)
2 0 3 0 0 (6)
9 0 8 0 4 (6)
5 1 0 0 1 (9)
0 5 10 7 2 (7)
再解:
|0 3 6 6 5 \/
- |2- 0 - 3- Q - Q- -
- |9 - Q - 8 - 0- 4 --
- |5 - 1 - 0- Q - 1--
|Q 5 10 7 2=min \/
\/
0 1 4 4 3
4 0 3 0 0
11 0 8 0 4
7 1 0 0 1
0 3 8 5 0
0 1 4 4 3
4 0 3 Q Q
11 Q 8 0 4
7 1 0 Q 1
Q 3 8 5 0
最优解
x(1,1) x(2,2) x(3,4) x(4,3) x(5,5) 不唯一, 还可以从倒数第二个矩阵找到其它。
最小值=34
5. 关于几种不平衡指派问题的修正匈牙利解法
文章摘要: 本文利用实例验证了在用匈牙利算法求解指派问题时,不平衡的指派问题转化为平衡指派问题的必要性;总结对于几种不平衡的指派问题转化为平衡指派问题的方法,从理论上作出解释,并给出了相应的例题,特别对于任务数多于人数的指派问题,本文提出了新的更有针对性的转化方法,如"一人化成p人法"、"加边补小法"、"加边补零(M)法"等。
6. 如何有分枝定界法解指派问题
分枝定界法(branch and bound)是一种求解非线性整数规划问题的常用算法.这种方法不但可以求解纯整数规划,还可以求解混合整数规划问题.
分枝定界法的步骤如下:
Step 1 放宽或取消原问题的某些约束条件,如求整数解的条件.如果这是求出的最优解是原问题的可行解,那么这个解就是原问题的最优解,计算结束.否则这个解的目标函数值是原问题的最优解的上界(求极大值时).
Step 2 将放宽了某些约束条件的替代问题分成若干子问题,要求各子问题的解集合的并集要包含原问题的所有可行解,然后对每个子问题求最优解.这些子问题的最优解中的最优者若是原问题的可行解,则它就是原问题的最优解,计算结束.否则它的目标函数值就是原问题的一个新的上界.另外,各子问题的最优解中,若有为原问题的可行解的,选这些可行解的最大的目标函数值,它就是原问题最优解的一个下界.
Step 3 对最优解的目标函数值已小于这个下界的问题,其可行解中必无原问题的最优解,可以放弃.对最优解的目标函数值大于这个下界的子问题,都先保留下来,进入Step 4 .
Step 4 在保留下的所有子问题中,选出最优解的目标函数值最大的一个,重复Step 1 和Step 2 .如果已经找到该子问题的最优可行解,那么用其目标函数值与前面保留的其他问题在内的所有子问题的可行解中目标函数值最大者,将它作为新的下界,重复Step 3 ,直到求出最优解.
以上就是分支定界法的主要步骤.
7. lingo解决指派问题
sets:
event /1..4/:;
athlete /1..5/:;
link(athlete,event):chji,x;
endsets
data:
chji = 8.6 9.7 8.9 9.4
9.2 8.3 8.5 8.1
8.8 8.7 9.3 9.6
8.5 7.8 9.5 7.9
8.0 9.4 8.2 7.7;
enddata
max = @sum(link:chji * x);
@sum(link:x) = 10;
@for(athlete(I):@sum(event(J):x(I,J)) >= 1);
@for(athlete(I):@sum(event(J):x(I,J)) <= 3);
@for(event(J):@sum(athlete(I):x(I,J)) >= 1);
@for (link:@bin(x));
8. 运筹学,用匈牙利法求下列指派问题最优解
原矩阵
14 11 13 17
9 7 2 9
4 9 10 15
15 10 5 13
第一步,各行减去最小值,矩阵变为
3 0 2 6
7 5 0 7
0 5 6 11
10 5 0 8
第二步,各列减去最小值,矩阵变为
3 0 2 0
7 5 0 1
0 5 6 5
10 5 0 2
第三步,
3-1从第一行开始,若该行只有一个零元素,就对这个零元素加括号,对加括号的零元素所在的列以粗斜体表示划去,若该行没有零元素或者有两个以上零元素(已划去的不算在内),则转下一行,依次进行到最后一行。
3-2 从第一列开始,若该列只有一个零元素,就对这个零元素加括号,对加括号的零元素所在的行以粗斜体表示划去,若该列没有零元素或者有两个以上零元素(已划去的不算在内),则转下一列,依次进行到最后一列。
矩阵变为
3 (0) 2 0
7 5 (0) 1
(0) 5 6 5
10 5 0 2
第四步
①从矩阵未被直线覆盖的数字中找出一个最小的k;
②当矩阵中的第i行有直线覆盖时,令 Ui=0 ;无直线覆盖时。令 Ui=k ;
③当矩阵中的第j列有直线覆盖时,令 Vj=-k ;无直线覆盖时,令Vj=0 ;
④令原矩阵的每个元素Aij 分别减去 Ui 和 Vj.
U1至U4分别为:0,1,1,1
V1至V4分别为:-1,0,-1,0
则矩阵变为
4 0 3 0
7 4 0 0
0 4 6 4
10 4 0 1
重复第三步,得
4 (0 ) 3 0
7 4 0 (0)
(0) 4 6 4
10 4 (0) 1
此时零元素是独立不相关的了,
则分配矩阵为
0 1 0 0
0 0 0 1
1 0 0 0
0 0 1 0
Min Z=11+9+4+5=29