水力发电最优模型讲解文档格式.docx
《水力发电最优模型讲解文档格式.docx》由会员分享,可在线阅读,更多相关《水力发电最优模型讲解文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
![水力发电最优模型讲解文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/1/679fabe3-48e4-45a2-a4ff-7ba21c7e6eee/679fabe3-48e4-45a2-a4ff-7ba21c7e6eee1.gif)
80
65
支流2
120
105
支流3
75
60
50
1、请根据上面的数据制定三个月的发电计划;
2、现已知该河流的干流及三条支流从1977年到2006年三十年每月的流量数据,请根据这些数据预测2007年干流及三条支流每月的流量;
3、如果某月干流、支流1和支流2的总流量大于500万立方米时,根据防洪需要,其前一个月水库A,B的最大储水量应该分别降低到2500和1600万立方米,请根据预测值制定2007每月的发电计划;
(水库相关数据见表一)
4、如果发电机组每年都应该检修,检修时间可以在任意的一个月,检修的当月最大发电量会减少50%,但检修后每月最大发电量会增加10%,请给出电站2007的检修计划;
5、发电站乙的设备比较陈旧了,如果更换设备就可以达到和甲一样的发电能力,试讨论更换设备的条件及方案。
2问题分析
2.1问题1的分析
本题中由于发电站电价是分段的,每月最多有9000万度电能以2000元/万度的价格出售,超出的部分只能1200元/万度的价格出售,由此可知发电站的收入也是分段的。
根据图形我们可知甲储水量是由上月储水量、干流、支流1、支流2之和减去发电量所用去的水,乙储水量是由上月储水量、支流三以及上游甲发电用水之和减去乙本月发电用水,且甲乙两水库的储水量受到限制,甲,乙两个发电站每月的最大发电能力分别是12000万度,8000万度。
以此为约束条件,建立非线性规划的模型。
2.2问题2的分析
根据30年来的数据,我们可以观察出,各条河流的流量是周期性变动的,但是否与时间有关系我们不得而知。
所以,我们应该对30年来的数据进行分析,由于数据体现周期性,我们采取了时间序列分析分析的方法。
而且,数据中有些是缺失的,因此,我们使用了插值拟合的方法来求出缺失数据,然后再对第31年的河流流量进行预测。
2.3问题3的分析
根据防洪需要基于问题二的预测数据在总流量大于500万时对最大储水量做出相关调整的情况下制定2007年每月的发电计划,即在问题一的基础上再添加一个约束条件,并由此求得最佳的发电计划使得发电站甲、乙取得最大效益。
因此仍然建立起基于线性规划的最优化模型,则问题得解。
2.4问题4的分析
根据发电机组检修而引起最大发电量的变化的情况下求取发电站2007年的检修计划,即在问题一、二的基础上引入0-1变量并且添加一个约束条件,并由此制定发电站2007年的检修计划。
因此仍然建立基于线性规划的最优化模型,则问题得解。
水电站检修时会对当月A,B两个水电站的最大发电量造成影响,在设计2007年检修计划是应该考虑以下几个因素:
A或B水电站检修当月的最大发电量会减少50%,但之后的每个月的发电量都会提高10%;
检修的月份具有不确定性。
根据此问题的以上两个特点,我们对A,B水电站分别引入0—1变量做为当月水电站的检修发生与否的指标。
之后根据其他约束条件建立模型求解。
最终对所求数据进行检验并得出最后结果。
2.5问题5的分析
需要根据在综合考虑发电站乙陈旧设备的维修费用和更换设备的花销费用以及其他多方面因素,更换设备以后即可达到发电站甲的发电能力,与之前的阶段没有关系,具有明显的无后效性。
因此建立动态规划模型,给出更换设备的条件及方案。
3模型假设
1.假设题目所给的数据真实可靠。
2.当水库储水量大于最大储水量时水库自动排水。
3.发电站的发电能力不随时间变化而改变。
4、发电机组不发生任何影响电站发电的故障。
5.甲发电用的水及当水库储水量大于最大储水量时排出的水均流入乙。
6.假设水库A、B里水的来源均为河流水,下雨及蒸发对河流的流量影响不大。
4定义与符号说明
表示第i个月甲发电站用于发电的水量
表示第i个月乙发电站用于发电的水量
表示i月份甲乙发电站的最大收益
表示第i个月份甲发电站的储水量
表示第i个月份乙发电站的储水量
表示第i个月份干流,支流1,支流2流量之和
第i月支流3的流量
第i月份甲是否检修
第i月份乙是否检修
表示i月份甲水库的最初储水量
表示i月份乙水库的最初储水量
5模型的建立与求解
5.2问题一的解答
5.2.1模型一的建立
由于每月最多有9000万度电能以2000元/万度的价格出售,超过的部分只能以1200元/万度的价格出售,并且以甲乙发电站最大利润为目标函数,具体关系表达式可写成:
考虑到分段函数在求解时比较复杂,在这里我们引入符号函数(sign:
当(9000-20*
+10*
)<
0时,sign=-1;
当(20*
-9000)>
0时,sign(x)=1)
将其简化得到:
由图可知,
A水库储水量=初始储水量+干流+支流1、2之和-甲发电用去的量
B水库储水量=初始储水量+支流3+甲发电用去的量-乙发电用去的量:
根据题目的意思,可以列出约束条件为:
5.2.2模型一的求解
我们这里运用lingo软件对方程进行求解,得出两个水库的三个月发电计划如下表3:
(单位:
表3:
三个月发电计划数据统计表(单位:
发电站
月份
一月
二月
三月
甲
600.0000
555.0000
345.0000
乙
775.0000
615.0000
395.0000
5.3问题二的解答
5.3.1模型二的建立
根据要求,我们需预测2007年每月干流及支流的流量,于是我们使用时间序列的方法将前三十年同月的流量提取出来见附录二,由于缺失第十六年和第二十五年十二月份的数据,我们使用插值拟合的方法来填补残缺数据,并预测第三十一年每月的流量。
插值拟合模型的建立:
由于干流流量第十六年和二十五年得数据缺失,我们采用插值拟合的法法求解,将干流这些年来的数据输入matlab中,并调用spline函数,求出干流第十六年的流量为125.0214,第二十五年的干流流量为94.2677。
再将完整的数据导入matlab中(程序见附录一),编写出二次拟合的代码,可分别预测出2007年干流月流量值:
模型
(1)
模型
(2)
模型(3)
154.3650
模型(4)
模型
(1)、模型
(2)、模型(3)、模型(4)分别为2007年干流,支流1、支流2和支流3的预测模型,其它月份以此类推,可得到相应模型。
.3.2模型二的求解
根据要求,我们需预测2007年每月干流及支流的流量,于是我们使用时间序列的方法将前三十年同月的流量提取出来,然后使用插值拟合的方法来填补残缺数据并预测第三十一年每月的流量,结果见表4:
表4:
预测2007年各月的流量(单位:
1
186.5017
120.0598
68.8613
47.2804
2
228.6875
147.0081
112.3129
47.3693
3
306.7740
166.1707
133.0216
48.4086
4
365.0147
175.4076
140.2721
54.4396
5
387.0283
192.6039
145.9246
43.4017
6
392.6095
187.4692
153.0627
56.8630
7
418.9580
182.3814
153.3142
57.9880
8
371.0361
182.5544
147.0011
46.0394
9
316.8016
163.2404
126.6757
54.7226
10
273.0347
142.0406
102.6629
49.9711
11
170.7402
118.8520
72.9043
59.4799
12
142.6930
82.5822
63.9449
57.2258
5.4问题三的解答
5.4.1模型三的建立
如题所示,如果某月干流、支流1和支流2的总流量大于500万立方米时,根据防洪需要,其前一个月水库A,B的最大储水量应该分别降低到2500和1600万立方米,根据第二题我们所预测的2007年流量,将每月干流、支流1、2之和(见表5):
表5:
2007年水库A各月干流、支流1、支流2的总流量(万立方米)
干流、支流1、支流2之和
375.4228
488.0025
605.9663
四月
680.6944
五月
725.5568
六月
734.0044
七月
811.6536
八月
700.6310
九月
606.7177
十月
517.7382
十一月
362.4965
十二月
189.2201
由上表可知,一月、二月、十一月和十二月,河流量之和小于500万立方米,三月到十月之间,河流量之和大于500万立方米,我们将其分为两类,并以最大利益为目标函数建立模型:
再根据防洪需要,得约束条件为:
不需要降低最大储水量的月份,即i=1,10,11,12
需要降低最大储水量的月份,即i=2,3,4,5,6,7,8,9
5.4.2模型三的求解
我们使用了LINGO对模型进行求解(程序见附录一),得出结果见表6:
表6:
2007年干流和支流的月流量预测值(单位:
甲用水量
乙用水量
475.4228
622.7032
588.0025
735.3718
618.8508
626.7417
700.6520
703.3536
689.6639
596.9650
652.5358
379.3610
141.2677
343.2594
505.0225
346.8290
530.3632
5.5问题四的解答
5.5.1模型四的建立
由于发电机每年需要检修且时间可以为任意一个月,我们引入了0-1规划:
又考虑到检修对发电能力的影响,于是我们以一年的最大收益为目标函数,建立以下模型:
由于最大发电量的改变,得出以下约束条件:
5.5.2模型四的求解
首先,我们通过lingo对上述线性规划的最优化模型进行求解(程序见附录一),所得最大发电效益见表7:
表7:
两水电站检修情况
甲发电站用水(万立方米)
乙发电站用水(万立方米)
甲收益
(万元)
乙收益
甲维修
乙维修
475.4428
622.7273
2220.000
1300.000
400.0000
447.3693
2288.003
436.7302
485.1338
2457.239
489.7872
544.2268
264.146
666.6667
710.0684
2707.036
680.3293
2774.374
1343.200
767.8551
2919.361
619.9917
666.0311
3000.000
721.3893
2940.051
533.4506
583.4217
2924.339
609.3886
668.8685
2627.447
723.8925
2200.000
分析上表可知,对于2007年发电站的检修情况,得出甲乙两发电站应分别在二月进行维修才能使收益达到最大;
5.6问题五的解答
5.6.1模型的建立与求解
由于发电站乙由于设备比较陈旧,目前,只能将1万m3的水转换为10万度电能,乙发电站每月的最大发电能力是8000万度。
但随着时间的推移,设备会更加老化,效率会越来越低,所以我们应该考虑更新设备,设备改进后1万m3的水转换为20万度电能,最大发电能力可以达到1200万度。
在这里,我们假设第n年更新设备,更新设备需要m个月。
更新设备的条件:
1.在这段期间内,水电站乙不能正常生产,水电站收益减少.
2.购置设备的成本.
3.设备检修费.
建立模型相应约束条件为:
根据以上模型可以得到设备最佳更换期,通过lingo可求得最佳结果。
7模型评价与推广
7.1优点
1.本文经过合理的假设与分析,建立了多个优化模型,合理地解决了水电站的生产计划问题。
2.使用了0-1规划,运用了符号函数。
3.假设的合理性。
4.建立的模型方法简单易行。
5.运用了正确的数据处理方法解决了数据散化整的问题。
7.2不足
1.考虑的不够全面。
2.在处理问题时可能存在一些误差。
3.规划模型的约束条件太过简单;
7.3推广
1.问题二中我们采用了时间序列分析的方法,解决了河流随时间变化的预测问题。
可以解决与时间相关的生活中的问题。
2.本文所建立的模型都具有很强的现实意义,对于现实社会生活问题的解决都具有重要的作用。
8参考文献
[1]姜启源等.数学模型(第四版).高等教育出版社,2010.
[2]韩旭里等.数学分析与实验.科学出版社,2006.
[3]赵静等.数学建模与数学实验.高等教育出版社,2012.
[4]应玖茜,魏权龄.北京:
非线性规划及其理论.中国人民大学出版社,1994.
[5]周建华,黄燕.北京:
MATLAB学习教程.北京大学出版社,2008.
[6]程卫国等.北京:
MATLAB精要、编程及高级应用.机械工业出版社,2010.
[7]谢金星等.优化建模与LINDO/LINGO软件.北京:
清华大学出版社,2005.
[8]司守奎等.北京:
数学建模算法与应用.国防工业出版社,2013.
9附录
附录一:
问题1的LINGO程序代码:
model:
max=1/2*(1+a1)*2000*(20*x1+10*y1)+1/2*(1-a1)*(2000*9000+1200*(20*x1+10*y1-9000))+1/2*(1+a2)*2000*(20*x2+10*y2)+1/2*(1-a2)*(2000*9000+1200*(20*x2+10*y2-9000))+1/2*(1+a3)*2000*(20*x3+10*y3)+1/2*(1-a3)*(2000*9000+1200*(20*x3+10*y3-9000));
620+2300-x1<
=3000;
435+620+2300-x1-x2<
345+435+620+2300-x1-x2-x3<
620+2300-x1>
=2200;
435+620+2300-x1-x2>
345+435+620+2300-x1-x2-x3>
75+1400+x1-y1<
=2100;
60+75+1400+x1+x2-y1-y2<
50+60+75+1400+x1+x2+x3-y1-y2-y3<
75+1400+x1-y1>
=1300;
60+75+1400+x1+x2-y1-y2>
50+60+75+1400+x1+x2+x3-y1-y2-y3>
20*x1<
=12000;
20*x2<
20*x3<
10*y1<
=8000;
10*y2<
10*y3<
a1=@sign(-9000+20*x1+10*y1);
a2=@sign(-9000+20*x2+10*y2);
a3=@sign(-9000+20*x3+10*y3);
end
问题二的matlab程序:
(1)插值拟合图形的代码:
X=[1:
1:
30];
Y1=[213.11194.88104.6184.43144.1344.636148.98177.41310.1237.73265.22194.06161.93112.38129.395.685122.18216.13239.06272.89236.52218.73165.84116.0491.20955.81183.72154.79260.85265.5];
Y2=[70.41865.27566.26374.21171.83388.92176.57784.55680.2178.57483.56488.42494.184.12595.29694.39593.39390.08598.67999.967111.04110.7499.679102105.44105.79103.4121.01114.18127.98];
Y3=[171.99149.79136.7145.01108.06122.13114.11115.4111798.28105.192.42794.01595.99695.83388.519108.589.94596.04791.29288.91685.50681.71671.3574.38570.07574.53175.73252.82265.231];
Y4=[41.05147.33741.50939.43238.50156.99936.42551.98449.20460.47749.69245.88736.33645.84655.00659.47249.91945.50543.42448.93649.00143.8466.96964.68152.71751.87650.17944.43742.97245.954];
A1=polyfit(X,Y1,2)
A2=polyfit(X,Y2,2)
A3=polyfit(X,Y3,2)
A4=polyfit(X,Y4,2)
z1=polyval(A1,X)
z2=polyval(A2,X)
z3=polyval(A3,X)
z4=polyval(A4,X)
plot(X,Y1,'
k+'
X,z1,'
r'
)
holdon
plot(X,Y2,'
.'
X,z2,'
y'
holdon
plot(X,Y3,'
-'
X,z3,'
b'
plot(X,Y4,'
*'
X,z4,'
k'
(2)找缺失值的代码:
x=[1:
y=[164.35172.53123.1564.6274.796872.3361.962110.77140.21210.59135.34133.55102.5759.89192.457125.0214128.59105.13108.39191.62159.31148.1224.12256.00394.266774.47340.972129.43194.64190.62];
plot(t0,y0,'
or'
)
y1=interp1(t0,y0,16,'
spline'
y2=interp1(t0,y0,25,'
(3)预测2007年每月各河流流量的代码:
Y=[213.11194.88104.6184.43144.1344.636148.98177.41310.1237.73265.22194.06161.93112.38129.395.685122.18216.13239.06272.89236.52218.73165.84116.0491.20955.81183.72154.79260.85265.5];
X1=[ones(length(X),1),X'
(X.^2)'
];
A=polyfit(X,Y,2)
z=polyval