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