机电工程学院第四届数学建模竞赛.docx

上传人:b****4 文档编号:5532932 上传时间:2023-05-08 格式:DOCX 页数:21 大小:83.44KB
下载 相关 举报
机电工程学院第四届数学建模竞赛.docx_第1页
第1页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第2页
第2页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第3页
第3页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第4页
第4页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第5页
第5页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第6页
第6页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第7页
第7页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第8页
第8页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第9页
第9页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第10页
第10页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第11页
第11页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第12页
第12页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第13页
第13页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第14页
第14页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第15页
第15页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第16页
第16页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第17页
第17页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第18页
第18页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第19页
第19页 / 共21页
机电工程学院第四届数学建模竞赛.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

机电工程学院第四届数学建模竞赛.docx

《机电工程学院第四届数学建模竞赛.docx》由会员分享,可在线阅读,更多相关《机电工程学院第四届数学建模竞赛.docx(21页珍藏版)》请在冰点文库上搜索。

机电工程学院第四届数学建模竞赛.docx

机电工程学院第四届数学建模竞赛

机电工程学院第四届数学建模竞赛

题目自来水公司供水方案

 

摘要

 

本文主要讨论了在满足各地区供水需求,以及各子公司的净水能力的情况下,利润的最大化与供水方案的关系,即当引水管理费的总费用最低时,公司的利润达到最大。

首先我们跟据题目的约束条件,运用线性规划的模型思路对供水方案的实施建立模型,并依据题意设立未知数,由于未知数与约束条件较多,运用Matlab数学软件进行数据分析,求解出在满足各厂供给能力与各地区需求的情况下的利润最大化方案。

对于问题一,经分析处理得出最小的总引水管理费为3.2838e+005。

问题二中,由于各子公司的净水能力翻倍,所以约束的范围变化,再次对数据进行分析得出最小总引水管理费为3.2838e+005。

问题三中,综合考虑了在满足各地区的基本和额外的用水前提下的利润最大化,此时所需总引水管理费为7.4489e+005。

本模型是在完全满足约束的前提下所求解最优解,在对于求解最优的问题上据有普遍适用性,所得结果可以为自来水公司的供水方案提供重要依据,具有一定的实用价值和指导意义。

 

1问题重述

问题一:

求使该公司四个子公司的饮水管理费,在满足

~

十个地区基本供水和低于四个子公司

~

的净水能力的前提下达到最低,公司的收益最大的供水方案。

问题二:

求当

~

的净水能力都翻一倍的情况,且满足问题一中的限制条件下,使该公司的最大收益的方案。

问题三:

求既要满足

~

基本供水又要满足

~

的额外供水的情况下,使该公司的最大收益的方案。

2合理假设

1.各个地区的基本用水不受季节和特殊状况的影响且基本保持不变

2.各个子公司向地区供水的饮水管理费用在一段时间内基本保持不变

3.公司向各个地区的供水管道一段时间内不发生管道的破裂等意外的状况导致费用的改变

4.各地区水价相同,并且在一段时期内保持不变,因此公司的毛利润基本不变

5.供水量不受各种自然因素、社会因素和人为因素的影响;

6.四个水厂在任何时刻都能正常供应水资源;

7.该城市的居民收入的变化不会影响其家庭用水量。

3符号约定

--------表示子公司数,

为1~4,分别表示

四个子公司;

-------表示地区数,

为1~10,分别表示

十个地区;

----表示第

个子公司向第

个地区的供水数(单位:

千吨);

-----表示第

个子公司向第

个地区的供水所付出的引水管理费,很明显proi=sum(xij,j,1,10)注意这里引入的东西是说对j从1到10求和;

------表示各公司的净水能力;

-----表示各地区的需水量,很明显needj=sum(xij,i,1,4);

-----表示供水状况

4问题的分析

公司通过各子公司向各地区供水所需的引水管理费并不相同,因此选择适当的供水方式能够减少引水管理费,从而节约成本,增加公司所获收益。

在选择供水方式时,主要有有以下约束条件:

1.所选供水方式必须在各子公司的净水范围之内

2.必须满足各地区的需水量

3.各子公司对某个地区是否存在供水管道

影响收益

的因素有以下几点:

1.各个地区的需水量,即基本用水量和额外用水量之和。

2.各个子公司向不同的地区供水所收取的饮水管理费。

3.各个子公司向不同地区的供水量。

4.各子公司的净水能力。

问题还考虑到当各子公司的净水能力发生变化时,对方案的调整;

当个地区的总需水量发生变化时,对方案的调整

考虑到每一个因素单独作用时m与其的关系

1.各个地区的用水量越多,收益m的值越大,但是题中的各个地区的用水量和额外用水量已近确定。

2.子公司向各个地区收取的饮水管理费Cij用越小他的收益也越大,但题中的管理费用已经确定。

无需考虑这些因素的改变。

3.各个子公司向不同地区的供水量

之间没有简单的正负相关的关系,总有j相同的各项相加所得必须大于个、各地区需水量,且都为正。

各项之间在满足约束条件的前提下的合理搭配解决本此问题的关键所在。

而经过建模找出收益的总金额各个变量之间的关系,通过各个变量坐下生成的函数以及各个变量之间的约束关系来求得这个

的最大值。

 

5模型的建立与求解

对问题一的分析与求解

通过问题分析,我们可以得出的一般模型:

供水的总数proi=sum(xij,j,1,10)

实际用水量needj=sum(xij,i,1,4)

由上知道由于一段时期内自来水产的毛利润基本不变,所以当引水管理费最低时即为公司利润最大,因此我求出引水管理费用最小即可,

由以上两式我们得出

 

minf=sum(sum(costij.*xij,i,1,4),j,1,10)

 

(1)根据"问题分析"我们可以得到规划

目标:

minf=sum(sum(costij.*xij,i,1,4),j,1,10)

约束条件:

xij>=0其中i=1,2,3,4;j=1~10

pro1=sum(x1j,j,1,10)<=450

pro2=sum(x2j,j,1,10)<=300

pro3=sum(x3j,j,1,10)<=315

pro4=sum(x3j,j,1,10)<=500

need1=sum(xi1,i,1,4)>=110

need2=sum(xi2,i,1,4)>=80

need3=sum(xi3,i,1,4)>=90

need4=sum(xi4,i,1,4)>=100

need5=sum(xi4,i,1,4)>=105

need6=sum(xi4,i,1,4)>=30

need7=sum(xi4,i,1,4)>=75

need8=sum(xi4,i,1,4)>=90

need9=sum(xi4,i,1,4)>=110

need10=sum(xi4,i,1,4)>=60

(2)由于未知数较多,我们运用Matlab进行求解(程序编写如下)

 

程序编写(注意这里要将Aij转成列向量)

clear

cost=[400,609,0,500,0,0,467,0,680,457;

359,0,568,567,0,650,389,0,0,0;

200,345,0,380,530,654,500,0,580,0;

0,368,380,412,567,0,387,400,368,432];

f=cost(:

);%目标

A=[

1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0;

1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0;

0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0;

-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,-1,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,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,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,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,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,-1,-1,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,-1;

];%约束,注意大于号约束时,我们两边乘以-1,变成小于号约束

b=[450;300;315;500;-110;-80;-90;-100;-105;-30;-75;-90;-110;-60];

Aeq=[];

beq=[];

xmin=zeros(40,1);

xmax=inf*ones(40,1);

x0=xmin;

[x,fmin]=linprog(f,A,b,Aeq,beq,xmin,xmax,x0);

reshape(x,4,10),fmin

totalwater=sum(x)

 

ans=

Columns1through8

0.00000.0000101.13980.000075.788673.90050.0000161.5358

0.000000.00000.0000030.00000.00000

110.000080.00000100.0000105.00000.00000.00000

00.000090.00000.00000.0000075.000090.0000

Columns9through10

0.00000.0000

00

0.00000

110.000060.0000

 

fmin=

3.2838e+005

 

totalwater=

1.2624e+003

 

cost=

4006090500004670680457

35905685670650389000

200345038053065450005800

03683804125670387400368432

 

对比cost与answer得结果得以下图表

 

 

=1表示子公司向

地区供水,

表示子公司向

地区不供水

 

各子公司向各地区的供水量

B1

B2

B3

B4

B5

B6

B7

B8

B9

B10

A1

A2

30

A3

110

80

100

105

A4

90

75

90

110

60

(注:

空格表示子公司不向相应地区供水)

 

问题二的分析与求解

 

对于问题二来说,只是改变了各公司的净水能力,所以只是约束的范围变大,但分析与求解方法不变,因此我们运用MatLAB工具编程求解如下

 

约束条件:

xij>=0其中i=1,2,3,4;j=1~10

pro1=sum(x1j,j,1,10)<=900

pro2=sum(x2j,j,1,10)<=600

pro3=sum(x3j,j,1,10)<=630

pro4=sum(x3j,j,1,10)<=1000

need1=sum(xi1,i,1,4)>=110

need2=sum(xi2,i,1,4)>=80

need3=sum(xi3,i,1,4)>=90

need4=sum(xi4,i,1,4)>=100

need5=sum(xi4,i,1,4)>=105

need6=sum(xi4,i,1,4)>=30

need7=sum(xi4,i,1,4)>=75

need8=sum(xi4,i,1,4)>=90

need9=sum(xi4,i,1,4)>=110

need10=sum(xi4,i,1,4)>=60

 

clear

cost=[400,609,0,500,0,0,467,0,680,457;

359,0,568,567,0,650,389,0,0,0;

200,345,0,380,530,654,500,0,580,0;

0,368,380,412,567,0,387,400,368,432];

f=cost(:

);%目标

A=[

1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0;

1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0;

0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0;

-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,-1,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,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,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,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,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,-1,-1,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,-1;

];%约束,注意大于号约束时,我们两边乘以-1,变成小于号约

b=[900;600;630;1000;-110;-80;-90;-100;-105;-30;-75;-90;-110;-60];

Aeq=[];

beq=[];

xmin=zeros(40,1);

xmax=inf*ones(40,1);

x0=xmin;

[x,fmin]=linprog(f,A,b,Aeq,beq,xmin,xmax,x0);

reshape(x,4,10),fmin

totalwater=sum(x)

 

cost=

4006090500004670680457

35905685670650389000

200345038053065450005800

03683804125670387400368432

 

对比cost与answer得结果得以下图表

 

=1表示子公司向

地区供水,

表示子公司向

地区不供水

 

各子公司向各地区的供水量

B1

B2

B3

B4

B5

B6

B7

B8

B9

B10

A1

A2

30

A3

110

80

100

105

A4

90

75

90

110

60

(注:

空格表示子公司不向相应地区供水)

根据所分析的结果得知,供水方案不变。

问题三的分析与求解

问题三中,只是增加考虑了额外用水,约束的条件再次变化,但分析与求解方法不变,因此我们仍用MatLAB工具编程求解如下

约束条件:

xij>=0其中i=1,2,3,4;j=1~10

pro1=sum(x1j,j,1,10)<=450

pro2=sum(x2j,j,1,10)<=300

pro3=sum(x3j,j,1,10)<=315

pro4=sum(x3j,j,1,10)<=500

need1=sum(xi1,i,1,4)>=190

need2=sum(xi2,i,1,4)>=130

need3=sum(xi3,i,1,4)>=260

need4=sum(xi4,i,1,4)>=240

need5=sum(xi4,i,1,4)>=235

need6=sum(xi4,i,1,4)>=70

need7=sum(xi4,i,1,4)>=155

need8=sum(xi4,i,1,4)>=220

need9=sum(xi4,i,1,4)>=260

need10=sum(xi4,i,1,4)>=135

 

clear

cost=[400,609,0,500,0,0,467,0,680,457;

359,0,568,567,0,650,389,0,0,0;

200,345,0,380,530,654,500,0,580,0;

0,368,380,412,567,0,387,400,368,432];

f=cost(:

);%目标

A=[

1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0;

1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0;

0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0;

-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,-1,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,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,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,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,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,-1,-1,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,-1;

];%约束,注意大于号约束时,我们两边乘以-1,变成小于号约束

b=[450;300;315;500;-190;-130;-260;-240;-235;-70;-155;-220;-260;-135];

Aeq=[];

beq=[];

xmin=zeros(40,1);

xmax=inf*ones(40,1);

x0=xmin;

[x,fmin]=linprog(f,A,b,Aeq,beq,xmin,xmax,x0);

reshape(x,4,10),fmin

totalwater=sum(x)

ans=

Columns1through8

0.00000.000095.76580.0000106.262375.20180.0000148.9859

0.000000.00000.0000070.00000.00000

190.0000130.00000240.0000235.00000.00000.00000

00.0000260.00000.00000.00000155.0000220.0000

Columns9through1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2