當前位置:編程學習大全網 - 編程語言 - 大學數學實驗(第二版) 清華大學出版社 實驗8 線性規劃 第5題 某市有甲乙丙丁四個居民區,自來水由ABC

大學數學實驗(第二版) 清華大學出版社 實驗8 線性規劃 第5題 某市有甲乙丙丁四個居民區,自來水由ABC

模型與解析:設A水庫向甲、乙、丙、丁供水量為x(1),x(2),x(3),x(4)(單位為kt,以下皆同)。設B水庫向甲、乙、丙、丁供水量為x(5),x(6),x(7),x(8) 。C水庫向甲、乙、丙供水量為x(9),x(10),x(11)。設自來水公司的獲利為z(單位為元)。

z=(900-450)*(x(1)+x(2)+x(3)+x(4) )+x(5)+x(6)+x(7)+x(8)+x(9)+x(10)+x(11))-(160*x(1)+130*x(2)+220*x(3)+170*x(4)+140*x(5)+130*x(6)+190*x(7)+150*x(8)+190*x(9)+200*x(10)+230*x(11)=290*x(1)+320*x(2)+230*x(3)+280*x(4)+310*x(5)+320*x(6)+260*x(7)+300*x(8)+260*x(9)+250*x(10)+220*x(11)

約束條件為:

x(1)+x(2)+x(3)+x(4)≤50 (1)

x(5)+x(6)+x(7)+x(8)≤60 (2)

x(9)+x(10)+x(11)≤50 (3)

x(1)+x(5)+x(9)≤30+50 (4)

x(2)+x(6)+x(10)≤70+70 (5)

x(3)+x(7)+x(11)≤10+20 (6)

x(4)+x(8)≤10+40 (7)

x(1)+x(5)+x(9)≥30 (8)

x(2)+x(6)+x(10)≥70 (9)

x(3)+x(7)+x(11)≥10 (10)

x(4)+x(8)≥10 (11)

x(i)≥0, i=1,2,3,4,5,6,7,8,9,10,11 (12)

本題要求解z的最大值,即求解(-z)的最小值。這是壹個線性規劃的問題。用MATLAB求解,程序如下:

c=-[290,320,230,280,310,320,260,300,260,250,220];

% 加負號將求極大化為求極小

part=[eye(3);zeros(1,3)];

%A1=[ 1 1 1 1 0 0 0 0 0 0 0

% 0 0 0 0 1 1 1 1 0 0 0

% 0 0 0 0 0 0 0 0 1 1 1

% 1 0 0 0 1 0 0 0 1 0 0

% 0 1 0 0 0 1 0 0 0 1 0

% 0 0 1 0 0 0 1 0 0 0 1

% 0 0 0 1 0 0 0 1 0 0 0

% -1 0 0 0 -1 0 0 0 -1 0 0

% 0 -1 0 0 0 -1 0 0 0 -1 0

% 0 0 -1 0 0 0 -1 0 0 0 -1

% 0 0 0 -1 0 0 0 -1 0 0 0 ]

A1=[ones(1,4),zeros(1,7);zeros(1,4),ones(1,4),zeros(1,3);zeros(1,8),ones(1,3);eye(4),eye(4),part;-eye(4),-eye(4),-part];

b1=[50,60,50,80,140,30,50,-30,-70,-10,-10];

v1=[0,0,0,0,0,0,0,0,0,0,0];

%下界

[x,f,exitflag,output,lag]=linprog(c,A1,b1,[],[],v1)

得到最優解為 x=[0,50,0,0,0,50,0,10,40,0,10],最優值為 f=-47600(最大值z=-f=47600),exitflag=1(收斂)。列表如下:

供水量/kt 甲 乙 丙 丁

A 0 50 0 0

B 0 50 0 10

C 40 0 10 /

該公司如此分配供水量,才能獲利最多,為47600元。

若三個水庫每天的最大供水量都提高壹倍,則目標函數不變,約束條件(4)~(12)不變,(1)~(3)改變,如下:

x(1)+x(2)+x(3)+x(4)≤100 (1)

x(5)+x(6)+x(7)+x(8)≤120 (2)

x(9)+x(10)+x(11)≤100 (3)

用MATLAB求解,程序如下:

c=-[290,320,230,280,310,320,260,300,260,250,220];

% 加負號將求極大化為求極小

part=[eye(3);zeros(1,3)];

%A1=[ 1 1 1 1 0 0 0 0 0 0 0

% 0 0 0 0 1 1 1 1 0 0 0

% 0 0 0 0 0 0 0 0 1 1 1

% 1 0 0 0 1 0 0 0 1 0 0

% 0 1 0 0 0 1 0 0 0 1 0

% 0 0 1 0 0 0 1 0 0 0 1

% 0 0 0 1 0 0 0 1 0 0 0

% -1 0 0 0 -1 0 0 0 -1 0 0

% 0 -1 0 0 0 -1 0 0 0 -1 0

% 0 0 -1 0 0 0 -1 0 0 0 -1

% 0 0 0 -1 0 0 0 -1 0 0 0 ]

A1=[ones(1,4),zeros(1,7);zeros(1,4),ones(1,4),zeros(1,3);zeros(1,8),ones(1,3);eye(4),eye(4),part;-eye(4),-eye(4),-part];

b1=[100,120,100,80,140,30,50,-30,-70,-10,-10];

v1=[0,0,0,0,0,0,0,0,0,0,0];

%下界

[x,f,exitflag,output,lag]=linprog(c,A1,b1,[],[],v1)

得到最優解為 x=[0,100,0,0,30,40,0,50,50,0,30],最優值 f=-88700(最大值z=-f=88700),exitflag=1(收斂)。列表如下:

供水量/kt 甲 乙 丙 丁

A 0 100 0 0

B 30 40 0 50

C 50 0 30 /

三個水庫每天的最大供水量都提高壹倍後,該公司如此分配供水量,才能獲利最多,為88700元,相比之前提高了41100元。

  • 上一篇:C語言 UDP中revcfrom怎麽從阻塞中跳出?
  • 下一篇:易佰特(福建)電子有限公司怎麽樣?
  • copyright 2024編程學習大全網