机电工程学院第四届数学建模竞赛.docx
- 文档编号:11125701
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:21
- 大小:83.44KB
机电工程学院第四届数学建模竞赛.docx
《机电工程学院第四届数学建模竞赛.docx》由会员分享,可在线阅读,更多相关《机电工程学院第四届数学建模竞赛.docx(21页珍藏版)》请在冰豆网上搜索。
机电工程学院第四届数学建模竞赛
机电工程学院第四届数学建模竞赛
题目自来水公司供水方案
摘要
本文主要讨论了在满足各地区供水需求,以及各子公司的净水能力的情况下,利润的最大化与供水方案的关系,即当引水管理费的总费用最低时,公司的利润达到最大。
首先我们跟据题目的约束条件,运用线性规划的模型思路对供水方案的实施建立模型,并依据题意设立未知数,由于未知数与约束条件较多,运用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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机电工程 学院 第四 数学 建模 竞赛