电力生产优化建模.docx
《电力生产优化建模.docx》由会员分享,可在线阅读,更多相关《电力生产优化建模.docx(23页珍藏版)》请在冰豆网上搜索。
电力生产优化建模
目录
摘要1
1问题重述2
2模型假设3
3符号说明3
4模型的建立与求解4
4.1问题一的解决4
4.1.1模型分析4
4.1.2模型的建立4
4.1.2.1确定目标函数4
4.1.2.2确定约束条件4
4.1.3模型的求解5
4.1.4结果分析6
4.2问题二的解决7
4.2.1模型分析7
4.2.2模型的建立7
4.2.2.1确定目标函数7
4.2.2.2确定约束条件7
4.2.3模型的求解9
4.2.4结果分析9
5模型评价分析11
5.1模型的优点11
5.2模型的不足11
6模型的改进及其推广11
6.1模型的改进11
6.2模型的推广12
参考文献12
附录:
13
电力生产优化问题
摘要
“电力生产优化问题”数学模型是通过合理的分配每个时段各机型发电机的数量来使一天的总发电成本最小采用先分段再求和的方法,即通过求出每个时段最小成本得到总的最小成本。
利用LINGO软件建模并计算,得到使发电成本最低的发电机组分配方法,及最小总成本具体值。
对于问题一:
要求发电机每天发电的总成本最小。
考虑到用电需求是分段的,记第
时段型号
发电机的使用台数为
、其对应功率为
,应用LINGO程序,分别计算出每个时段使用发电机的发电成本最小值
,然后累加得每天总成本的最小值
,结果如下表:
时段(0—24)
0—6
6—9
9—12
12—14
14—18
18—22
22—24
发电机数量
型号1
0
2
1
2
1
1
0
型号2
4
4
4
4
4
4
4
型号3
3
8
8
8
8
8
6
型号4
0
3
1
3
1
3
0
每个时段的总成本(元)
176620
270400
184155
201000
245540
305200
85480
总成本(元)
1468395
对于问题二:
要求在任何时刻,正在工作的发电机组必须留有20%的发电能力,即正在工作的发电机组的输出总功率不超过发电机组总最大输出功率的80%。
结合问题一的解题思路,利用LINGO软件,我们得到结果如下表所示:
时段(0—24)
0—6
6—9
9—12
12—14
14—18
18—22
22—24
发电机数量
型号1
0
5
2
8
2
3
1
型号2
4
4
4
4
4
4
4
型号3
1
8
6
8
6
8
4
型号4
2
3
3
3
3
3
2
每个时段的总成本(元)
178660
286195
185730
219880
247640
310660
86880
总成本(元)
1515645
分析模型结果可发现:
型号2与型号3发电机多次全数启动,使用相当频繁,建议适当增加其台数或做好定期维修工作;在实际生活中,用电是日复一日的,在计算连续多天的最小总成本时,从第二天开始,最初时段需要启动的发电机数是为相对与前一天最后时段增加的发电机数,因此其启动成本与第一天相比就要少一些,而在接下来的每一天发电总成本与第二天的相同。
关键词:
LINGO软件输出功率最小总成本
1问题重述
问题背景:
电在当今科技发达的社会是不可缺少的资源之一。
我们的生活无处不需要用电,而电是一种可再生但不可保存的资源,因此,我们需要保证生产的电能有尽可能高的利用率,以保证发电用电的经济性,合理地利用电力资源。
如何节约资源、高效率是当前社会面临的重要问题之一,本题即是要求在满足用电需求的条件下,合理分配发电机使用数量,从而减小发电总成本的问题。
题目要求:
为满足每日电力需求(单位为兆瓦(MW)),可以选用四种不同类型的发电机。
每日电力需求如下表1。
表1每日用电需求(兆瓦)
时段(0-24)
0-6
6-9
9-12
12-14
14-18
18-22
22-24
需求
12000
32000
25000
36000
25000
30000
18000
每种发电机都有一个最大发电能力,当接入电网时,其输出功率不应低于某一最小输出功率。
所有发电机都存在一个启动成本,以及工作于最小功率状态时的固定的每小时成本,并且如果功率高于最小功率,则超出部分的功率每兆瓦每小时还存在一个成本,即边际成本。
这些数据均列于表2中。
表2发电机情况
可用数量
最小输出功率(MW)
最大输出功率(MW)
固定成本(元/小时)
每兆瓦边际成本(元/小时)
启动成本(元)
型号1
10
750
1750
2250
2.7
5000
型号2
4
1000
1500
1800
2.2
1600
型号3
8
1200
2000
3750
1.8
2400
型号4
3
1800
3500
4800
3.8
1200
只有在每个时段开始时才允许启动或关闭发电机。
与启动发电机不同,关闭发电机不需要付出任何代价。
要解决的问题:
问题一:
在理想假设下,将问题简化为发电成本仅仅与题目中列出的参量有关的问题,求出每个时段应分别使用哪些发电机才能使每天的总成本最小,最小总成本为多少?
问题二:
在实际生活用电中,总会出现用电量的波动,甚至可能造成用电量过大而发生故障甚至是事故。
因此,我们要求发电机要保留一定的发电能力,以应对突发情况。
如果在任何时刻,正在工作的发电机组必须留出20%的发电能力余量,以防用电量突然上升。
那么每个时段又应分别使用哪些发电机才能使每天的总成本最小,此时最小总成本又为多少?
2模型假设
1)只有在每个时段开始时才允许启动和关闭发电机,且关闭发电机不需要任何代价;
2)所有发电机在工作工程中不存在机械故障,自身的功率损耗忽略不计;
3)发电机的单位输出功率在每个时段均为定值。
3符号说明
符号
符号说明
时段,取1、2、3、4、5、6、7
发电机型号,取1、2、3、4
第i时段型号j发电机使用台数
第i时段型号j发电机的功率
发电机在第i时段的工作时间
第i时段的发电成本
每天的发电总成本
型号j发电机的最小输出功率
型号j发电机的固定成本
型号j发电机工作时的每兆瓦边际成本
一台型号j发电机的启动成本
第i时段j型号发电机的总启动成本
第i时段每小时所需功率
4模型的建立与求解
4.1问题一的解决
4.1.1模型分析
此问题要求确定在每个时段分别使用哪些发电机,从而使每天的总成本最小。
一共有4种型号的发电机,每种发电机的数量和输出功率有限制,它们各自的总成本主要包括启动成本、边际成本和固定成本。
建立模型时,我们需要确定目标函数和约束条件。
需要注意的是,如果一台发电机在前一时段时间已经开始工作了,当其继续工作进入下一时段工作时,该发电机在新的时段的工作就不需要计入启动成本。
4.1.2模型的建立
4.1.2.1确定目标函数
我们需要达到的目标是,在满足每日电力需求的基础上,使发电总成本最小。
首先需要确定每时段花费的最小总成本,再将他们进行求和,便可以得到最小总成本,得到的目标函数为:
其中,每个时段的最小总成本等于发电机的启动成本、边际成本和固定成本之和,可以表示为:
为第
时段
型号发电机的总启动成本,前面提到过如果某台发电机在多个时段里连续工作,那么只在第一时段需要计入启动成本,因此
的数学模型又可以具体表达为:
4.1.2.2确定约束条件
每种型号的发电机数量必需为非负整数,且每个时段的最大使用数量不能大于该机型发电机的总数量,因此有:
由题目可知,每种发电机都有一个最大发电能力,当接入电网时,其输出功率不应低于某一最小输出功率。
也就是说,发电机工作时,其输出功率只能在某一特定范围之内,即:
发电机工作需要满足每日的电力需求,即是要满足每时段的电力需求,因此有:
综上所述,得到问题一的数学模型为:
4.1.3模型的求解
得到问题的目标函数和约束条件之后,结合题目提供的相关数据,运用LINGO程序进行编程(程序见附录)计算,最终得出每时段各型号发电机的使用数量及其各自的功率。
由各型号发电机使用数量及各自功率可求出各时段内的最小成本及一天的最小总成本,具体的数据见表3:
表3问题一计算结果
时段(0—24)
0—6
6—9
9—12
12—14
14—18
18—22
22—24
发电机数量
型号1
0
2
1
2
1
1
0
型号2
4
4
4
4
4
4
4
型号3
3
8
8
8
8
8
6
型号4
0
3
1
3
1
3
0
发电机输出功率
型号1
0
1750
1200
1750
1200
1750
0
型号2
1500
1500
1500
1500
1500
1500
1500
型号3
2000
2000
2000
2000
2000
2000
2000
型号4
0
2166.7
1800
3500
1800
2083.4
0
每个时段的总成本(元)
176620
270400
184155
201000
245540
305200
85480
总成本(元)
1468395
4.1.4结果分析
通过图表示意图(如图1所示),可以较直观的分析模型结果的正确性。
该图标显示,每个时段(1~7)发电机实际发出的总功率不小于各时段的功率需求,说明对应的电机分配满足电量需求,那么模型求得的目标结果即是最小发电成本成本。
比较实际发出的总功率和最大输出总功率,发现时段1、时段4和时段7正在工作的发电机组处于满功率运行状态,这对防止电量突然上升情况是不利的,针对这一问题,在问题二中给出了解决方案。
图1各时段机组不同功率对比示意图
结合问题已知条件和计算得到的结果,对该问题结果进行进一步的分析,分析后不难发现:
1)型号1发电机可用数量较多,但实际使用的数量不多,而型号2、3发电机则是使用相当频繁且多为满功率工作,所以为了在满足用电需求的情况下减少总成本,可以适当减少型号1发电机,同时可适当增加型号2、3发电机数量,以防长期运行因疲劳出现故障而造成更大的损失;或者多加留意各个发电机的运行状况,做好定期维修工作(当然这势必要考虑维修费用问题,成本会相应增加);
2)结合实际用电情况,我们知道,每天的用电是周而复始的,若需要求出连续多天的发电最小总成本,则在计算时,从第二天开始,由于部分发电机已经在第一天启动运行,故不需要再计入这部分发电机的启动成本,只需计算第一天第7时段到第二天第1时段过渡时新启动的发电机的启动成本,其他成本计算不变,以此类推计算连续多天的最小发电总成本。
因此,从第二天开始,计算得到的发电成本将会是一个定值且比第一天成本低;
3)将LINGO软件运行出的结果进行计算检验,我们发现只有极少数时段的功率超出了用户需求量,且其超出部分相对于总发电量而言基本上可以忽略不计,满足充分地利用生产的电能的要求,利用率较高,结果也符合实际情况,具有较高的参考价值。
4.2问题二的解决
4.2.1模型分析
问题二在问题一的基础上增加条件,为了防止用电量突然上升,在任何时刻,正在工作的发电机必需留出20%的发电能力余量。
对于发电机而言,其发电能力主要体现在其输出功率。
留出20%的发电能力余量,即是每个时段发电机组输出的实际总功率不超过发电机组的最大总功率的80%。
4.2.2模型的建立
4.2.2.1确定目标函数
问题二需要求解的也是确定每个时段分别使用哪些发电机,来使每天的总成本最小。
即,其目标函数和问题一目标函数相同:
4.2.2.2确定约束条件
问题二在问题一的基础上增加留出20%发电能力余量这一条件,需要每个时段发电机输出的实际总功率要不超过这些发电机最大输出功率的80%,即:
与问题一相同,每种发电机都有一个最大发电能力,当接入电网时,其输出功率不应低于某一最小输出功率。
也就是说,发电机工作时,其输出功率只能在某一特定范围之内,即:
每种型号的发电机数量必需为非负整数,且每个时段的最大使用数量不能大于该机型发电机的总数量,因此有:
综上所述,得到问题二的数学模型为:
4.2.3模型的求解
得到问题的目标函数和约束条件之后,结合题目提供的相关数据,运用LINGO程序进行编程(程序见附录)计算,最终得出每时段各型号发电机的使用数量及其各自的功率。
由各型号发电机使用数量及各自功率可求出各时段内的最小成本及一天的最小总成本,具体的数据见表4:
表4问题二计算结果
时段(0—24)
0—6
6—9
9—12
12—14
14—18
18—22
22—24
发电机数量
型号1
0
5
2
8
2
3
1
型号2
4
4
4
4
4
4
4
型号3
1
8
6
8
6
8
4
型号4
2
3
3
3
3
3
2
发电机输出功率
型号1
0
920
800
1075
800
866.67
750
型号2
1500
1500
1500
1500
1500
1500
1412.5
型号3
2000
2000
2000
2000
2000
2000
2000
型号4
2000
1800
1800
1800
1800
1800
1800
每个时段的总成本(元)
178660
286195
185730
219880
247640
310660
86880
总成本(元)
1515645
4.2.4结果分析
图2各时段机组不同功率对比示意图
图3各时段机组发电能力余量示意图
图2中显示了各个时段正在工作的发电机组的实际发出总功率和最大输出功率,以及每时段电力需求总功率比较图。
结果显示,发电机实际发出的功率满足电力需求,且每个时段正在工作的发电机留有了一定的发电能力余量。
具体发电能力余量值与图3所示,图表中可以看出各时段正在工作的发电机组留出了至少20%的发电能力。
接下来结合问题已知条件和计算得到的结果,对该问题结果进行进一步的分析,分析后不难发现:
1)型号1发电机可用数量较多,但实际使用的数量不多,但相比于问题一,其使用量明显增加,而型号2、3发电机仍是使用得相当频繁且多为满功率工作。
为了减少总成本,可以适当减少型号1发电机,同时可适当增加型号2、3发电机数量或者多加留意各个发电机的运行状况,做好定期维修工作(当然这势必要考虑维修费用问题,成本会相应增加)。
2)结合实际用电情况,我们知道,每天的用电是周而复始的,若需要求出连续多天的发电最小总成本,则在计算时,从第二天开始,由于部分发电机已经在第一天启动运行,故不需要再计入这部分发电机的启动成本,只需计算第一天第7时段到第二天第1时段过渡时新启动的发电机的启动成本,其他成本计算不变,以此类推计算连续多天的最小发电总成本。
因此,从第二天开始,计算得到的发电成本将会是一个定值且比第一天成本低;
3)由于考虑到实际用电情况,要求发电机预留20%的发电能力,即,要求发电机组的总输出功率不超过发电机组的总最大输出功率的80%,大大提高了模型的安全性。
4)将LINGO软件运行出的结果进行计算检验,我们发现只有极少数时段的功率超出了用户需求量,且其超出部分相对于总发电量而言基本上可以忽略不计,满足充分地利用生产的电能的要求,利用率较高,结果也符合实际情况,具有较高的参考价值。
5模型评价分析
5.1模型的优点
1)本文采用二次规划模型求得每天发电的最小总成本,在满足用电需求的前提下,运用最优化算法,使每个时段的发电机组发电功率达到最高使用效率以降低发电总成本。
2)每个时段建立的模型基本类似,编程时只需将代码中某些常数及变量加以修改,操作起来方便快捷。
3)模型的建立充分考虑安全性和经济性。
尤其在第二问中,我们既保证了发电机组的安全启动,也满足了发电机组留有20%发电能力的要求,得到了每天发电的最小总成本。
4)我们采用LINGO程序编程计算,得出各时段各型号发电机使用的台数及其发电成本最小值,操作简便、结果准确。
5)根据7个时段建立了7个不同但又相似的模型,逐步分析,逐步求解,把复杂的问题简单明朗化,进而得到一整天的发电优化方案,循序渐进、简单易懂。
5.2模型的不足
1)模型分时段建模和计算,下一时段的计算依赖于前一时间段的计算结果,算法独立性不强,需要每个时间段的结果必须准确。
2)本文针对7个时段分别建立了7个小模型,当遇到的问题中分段量很大时,本文的建模方法不再适用。
6模型的改进及其推广
6.1模型的改进
1)本文的模型认为在每一时段内,发电机组的输出功率是不变的,但在实际运行中,功率是不断变化的,散热等实际问题都会消耗功率,若要使模型更接近实际应用的情况,就需要考虑这些消耗。
2)分析我们得到的结果后,不难发现,型号2、3发电机使用频繁,考虑到机器长期运行可能会因疲劳而发生故障,应增加相应发电机的数量以保证发电机的供电可靠性。
3)模型忽略了发电机启动以及关闭的时间,这些时间若加以考虑,将会使成本增加,模型的建立就要考虑减小发电机启动以及关闭时间造成的成本提升。
4)模型是在发电机无故障的条件下建立的,如果考虑发电机随使用时间的增加,在不同的时间段(譬如以月为时间段单位)需要不同的检修费用,再把检修费用平分到每一天,将此检修费用也算作总成本的一部分。
增加约束条件,使模型更精准优化。
由于我们目前的编程能力有限,模型的建立是分段进行的,每个时段都要修改并运行一次程序。
希望经过学习,我们可以将模型改进为一个整体,利用这个大的控制模型来得到不同时段的优化方案。
6.2模型的推广
本文采用分段求最优解的方法解决问题,此法对分段量不大的类似问题都是适用的,如经济市场中的股票的分段涨跌问题、发电厂中电力配置问题以及江水污染治理的分段控制问题等。
参考文献
[1]谢金星,薛毅.优化建模与LINDO/LINGO软件,北京:
清华大学出版社,2005.7
[2]吴育华,杜纲.管理科学基础,天津:
天津大学出版社,2001.9
[3]宋来忠.数学建模与实验,北京:
科学出版社,2005
附录:
问题一:
第一时段:
min=(5000+2250*6+(y11-750)*2.7*6)*x11+(1600+1800*6+(y12-1000)*2.2*6)*x12+(2400+3750*6+(y13-1200)*1.8*6)*x13+(1200+4800*6+(y14-1800)*3.8*6)*x14;
x11*y11+x12*y12+x13*y13+x14*y14>=12000;
@gin(x11);@gin(x12);@gin(x13);@gin(x14);
@bnd(0,x11,10);@bnd(0,x12,4);@bnd(0,x13,8);@bnd(0,x14,3);
@bnd(750,y11,1750);@bnd(1000,y12,1500);@bnd(1200,y13,2000);@bnd(1800,y14,3500);
第二时段:
min=5000*x21+2250*3*x21+(y21-750)*2.7*3*x21+1600*@if(x22-4#gt#0,x22-4,0)+1800*3*x22+(y22-1000)*2.2*3*x22+2400*@if(x23-3#gt#0,x23-3,0)+3750*3*x23+(y23-1200)*1.8*3*x23+1200*x24+4800*3*x24+(y24-1800)*3.8*3*x24;
x21*y21+x22*y22+x23*y23+x24*y24>=32000;
@gin(x21);@gin(x22);@gin(x23);@gin(x24);
@bnd(0,x21,10);@bnd(0,x22,4);@bnd(0,x23,8);@bnd(0,x24,3);
@bnd(750,y21,1750);@bnd(1000,y22,1500);@bnd(1200,y23,2000);@bnd(1800,y24,3500);
第三时段:
min=5000*@if(x31-2#gt#0,x31-2,0)+2250*3*x31+(y31-750)*2.7*3*x31+1600*@if(x32-4#gt#0,x32-4,0)+1800*3*x32+(y32-1000)*2.2*3*x32+2400*@if(x33-8#gt#0,x33-8,0)+3750*3*x33+(y33-1200)*1.8*3*x33+1200*@if(x34-3#gt#0,x34-3,0)+4800*3*x34+(y34-1800)*3.8*3*x34;
x31*y31+x32*y32+x33*y33+x34*y34>=25000;
@gin(x31);@gin(x32);@gin(x33);@gin(x34);
@bnd(0,x31,10);@bnd(0,x32,4);@bnd(0,x33,8);@bnd(0,x34,3);
@bnd(750,y31,1750);@bnd(1000,y32,1500);@bnd(1200,y33,2000);@bnd(1800,y34,3500);
第四时段:
min=5000*@if(x41-1#gt#0,x41-1,0)+2250*2*x41+(y41-750)*2.7*2*x41+1600*@if(x42-4#gt#0,x42-4,0)+1800*2*x42+(y42-1000)*2.2*2*x42+2400*@if(x43-8#gt#0,x43-8,0)+3750*2*x43+(y43-1200)*1.8*2*x43+1200*@if(x44-1#gt#0,x44-1,0)+4800*2*x44+(y44-1800)*3.8*2*x44;
x41*y41+x42*y42+x43*y43+x44*y44>=36000;
@gin(x41);@gin(x42);@gin(x43);@gin(x44);
@bnd(0,x41,10);@bnd(0,x42,4);@bnd(0,x43,8);@bnd(0,x44,3);
@bnd(750,y41,1750);@bnd(1000,y42,1500);@bnd(1200,y43,2000);@bnd(1800,y44,3500);
第五时段:
min=5000*@if(x51-2#gt#0,x51-2,0)+2250*4*x51+(y51-750)*2.7*4*x51+1600*@if(x52-4#gt#0,x52-4,0)+1800*4*x52+(y52-1000)*2.2*4*x52+2400*@if(x53-8#gt#0,x53-8,0)+3750*4*x53+(y53-1200)*1.8*4*x53+1200*@if(x54-3#gt#0,x54-3,0)+4800*4*x54+(