日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线性规划 - 用单纯形法解决整数规划问题 - (Matlab、Lingo建模)

發布時間:2024/7/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性规划 - 用单纯形法解决整数规划问题 - (Matlab、Lingo建模) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現實生活中,比如機器的臺數,參與工作的人數,可調動的車輛數,這些數據都是整數。因此對于變量中包含整數、或者完全是整數的規劃問題,我們稱之為整數規劃。在解決整數規劃常用的算法便是單純形法。

課題名稱:任務的分配

設有甲、乙、丙、丁四個人,各有能力去完成A、B、C、D、E五項任務中的任一項,由于四個人的能力和經驗不同,所需完成各項任務的時間如表1所示.由于任務數多于人數,要求考慮如下問題:

(1)?????? 任務E必須完成,其他四項中可任選三項完成;

(2)?????? 要求有一個人完成兩項任務,其他人各完成一項;

(3)?????? 要求任務A可由甲或丙完成,任務C可由丙或丁完成,任務E可由甲、乙或丁完成,且規定四個人中丙或丁能夠完成兩項任務,其他人完成一項任務。

試分別確定最優的分配方案,使得完成任務的總時間最少。

表1?? 每個人完成各項任務的能力

項目

人員

A

B

C

D

E

25

29

31

42

37

39

38

26

20

33

34

27

28

40

32

24

42

36

23

45

????由于任務數大于人數,所以需要有一個虛擬的人,設為戊。因為工作E必須完成,故設戊完成E的時間為M(M為非常大的數),即戊不能做工作E,其余的假想時間為0,建立的效率矩陣如表2:

表2?? 每個人完成各項任務的能力

項目

人員

A

B

C

D

E

25

29

31

42

37

39

38

26

20

33

34

27

28

40

32

24

42

36

23

45

0

0

0

0

M

令第 i 個人表示甲、乙、丙、丁、戊,第 j 個任務分別表示ABCD、E項任務,cij 表示第 i 個人完成第 j 個任務的時間(d)。設:

Z為完成任務的總時間(d)。則該問題的數學模型為:

為輸入程序方便,令M=1000.

方法一:Matlab求解

Matlab程序:

c=[25 29 31 42 37;39 38 26 20 33;34 27 28 40 32;24 42 36 23 45;0 0 0 0 1000]; n=size(c,1); c=c(:); a=zeros(2*n,n^2); for i=1:na(i,(i-1)*n+1:n*i)=1;a(n+i,i:n:n^2)=1; end b=ones(2*n,1); [x,y]=linprog(c,[],[],a,b,zeros(n^2,1),ones(n^2,1)); X=reshape(x,n,n); X_min=round((X)),y

Matlab運行結果:

Optimization terminated. X_min =0 1 0 0 00 0 0 1 00 0 0 0 11 0 0 0 00 0 1 0 0 y =105.0000

方案:甲——B ,乙——D ,丙——E ,丁——A ,? 總時間為105(d).

方法二:lingo求解

Lingo程序:

model: sets: row/1..5/; arrange/1..5/; link(row,arrange):c,x; endsets data: c=25,29,31,42,37,39,38,26,20,33,34,27,28,40,32,24,42,36,23,45,0,0,0,0,1000; enddata [OBJ]min=@sum(link(i,j):c(i,j)*x(i,j)); x(1,1)+x(1,2)+x(1,3)+x(1,4)+x(1,5)=1; x(2,1)+x(2,2)+x(2,3)+x(2,4)+x(2,5)=1; x(3,1)+x(3,2)+x(3,3)+x(3,4)+x(3,5)=1; x(4,1)+x(4,2)+x(4,3)+x(4,4)+x(4,5)=1; x(5,1)+x(5,2)+x(5,3)+x(5,4)+x(5,5)=1; x(1,1)+x(2,1)+x(3,1)+x(4,1)+x(5,1)=1; x(1,2)+x(2,2)+x(3,2)+x(4,2)+x(5,2)=1; x(1,3)+x(2,3)+x(3,3)+x(4,3)+x(5,3)=1; x(1,4)+x(2,4)+x(3,4)+x(4,4)+x(5,4)=1; x(1,5)+x(2,5)+x(3,5)+x(4,5)+x(5,5)=1; @for(link(i,j):x(i,j)>=0;); end

Lingo運行結果:

Global optimal solution found.Objective value: 136.0000Infeasibilities: 0.000000Total solver iterations: 9Elapsed runtime seconds: 0.04Variable Value Reduced CostC( 1, 1) 25.00000 0.000000C( 1, 2) 29.00000 0.000000C( 1, 3) 1000.000 0.000000C( 1, 4) 42.00000 0.000000C( 1, 5) 37.00000 0.000000C( 2, 1) 1000.000 0.000000C( 2, 2) 38.00000 0.000000C( 2, 3) 1000.000 0.000000C( 2, 4) 20.00000 0.000000C( 2, 5) 33.00000 0.000000C( 3, 1) 34.00000 0.000000C( 3, 2) 27.00000 0.000000C( 3, 3) 28.00000 0.000000C( 3, 4) 40.00000 0.000000C( 3, 5) 1000.000 0.000000C( 4, 1) 1000.000 0.000000C( 4, 2) 42.00000 0.000000C( 4, 3) 36.00000 0.000000C( 4, 4) 23.00000 0.000000C( 4, 5) 45.00000 0.000000C( 5, 1) 34.00000 0.000000C( 5, 2) 27.00000 0.000000C( 5, 3) 28.00000 0.000000C( 5, 4) 23.00000 0.000000C( 5, 5) 45.00000 0.000000X( 1, 1) 1.000000 0.000000X( 1, 2) 0.000000 11.00000X( 1, 3) 0.000000 981.0000X( 1, 4) 0.000000 28.00000X( 1, 5) 0.000000 10.00000X( 2, 1) 0.000000 969.0000X( 2, 2) 0.000000 14.00000X( 2, 3) 0.000000 975.0000X( 2, 4) 0.000000 0.000000X( 2, 5) 1.000000 0.000000X( 3, 1) 0.000000 0.000000X( 3, 2) 0.000000 0.000000X( 3, 3) 1.000000 0.000000X( 3, 4) 0.000000 17.00000X( 3, 5) 0.000000 964.0000X( 4, 1) 0.000000 966.0000X( 4, 2) 0.000000 15.00000X( 4, 3) 0.000000 8.000000X( 4, 4) 1.000000 0.000000X( 4, 5) 0.000000 9.000000X( 5, 1) 0.000000 0.000000X( 5, 2) 1.000000 0.000000X( 5, 3) 0.000000 0.000000X( 5, 4) 0.000000 0.000000X( 5, 5) 0.000000 9.000000

lingo所得的方案與matlab一致。甲——B ,乙——D ,丙——E ,丁——A ,? 總時間為105(d).

lingo的運行結果怎么解讀的問題,我已經在上一篇“非線性規劃”的文章中說了,不再贅述,不懂的同學可以過去看一看,以后用lingo解決的問題還會有,不會每次都講解怎么看運行結果哦,希望見諒,下面是“非線性規劃”文章的鏈接。

數據建模-用非線性規劃解決問題

????整數規劃問題是線性規劃問題的一種特殊情況,本例題為典型的非標準形式的指派問題,根據題目的不同要求,相應地添加虛擬人或任務以及修改效率矩陣。另外,在轉換成程序語言時,引進的M可以任意取定一個較大的數,方便計算的進行。

總結

以上是生活随笔為你收集整理的线性规划 - 用单纯形法解决整数规划问题 - (Matlab、Lingo建模)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。