数学建模电力生产问题.docx
《数学建模电力生产问题.docx》由会员分享,可在线阅读,更多相关《数学建模电力生产问题.docx(16页珍藏版)》请在冰豆网上搜索。
数学建模电力生产问题
电力生产问题数学模型
摘要
本文解决的是电力生产问题,在解决发电机的发电量能满足每日的电力需求的条件下,为了使每日的总成本达到最低,我们建了一个最优化模型。
首先我们根据题意运用单目标非线性规划方法列出目标函数即四种型号的发电机的总的固定成本、总的边际成本、总的启动成本的和函数,其次根据表一和表二所给的数据要求,列出模型约束条件,然后根据lingo软件,编出相应的程序,对建立的模型进行求解,得出相应最适合问题一和问题二的电机的选取方法。
同时我们对模型进行了评价、改进和推广,便于我们所建立的模型更好的应用到生活实际中去。
对于问题一,在满足每天的用电需求情况下,我们建立了求每天的最小总成本的最优化模型。
根据非线性规划的思想,我们引入了三个指标函数:
总固定成本S1、总的边际成本S2、总的启动成本S3,进而确定了目标函数S=S1+S2+S3,再根据表一和表二的数据得出约束条件,利用lingo计算软件最终得出每天最低总成本为146.343万元。
可以得出型号一的发电机在各个时间段的平均功率最大处在第四时间段,第一阶段和第七阶段发电机没有启动,第二种型号的发电机都投入使用,而且它的平均输出功率比较稳定,第三种型号的发电机投入的数量比较多,平均输出功率为2000,第四种型号的电机在第一阶段和第七阶段发电机的台数为0,平均功率在第四阶段达到最大值。
对于问题二,显然问题一建模的思想也适应于问题二,问题一所列的目标函数也适用于问题二,与问题一不同的是,问题二多了一个约束条件,即在任何时间段工作的发电机组要保留20%的发电余量以防用电量增加,换言之即每个时间段某种型号的发电机发电量要小于等于该型号发电机的最大发电量的80%,并据此又列出一个约束方程,最终也根据lingo计算软件得出每天最低成本为155.6186万元.型号四的电机输出功率比较平均,型号一的电机在第七阶段没有功率输出,型号三的电机平均输出功率有一定的波动,型号二的发电机在第五阶段输出功率达到最大。
关键词:
单目标非线性规划最优化电力生产问题
1、问题重述
1.1问题背景:
由于各种不同型号的发电机的性能不同,各种型号的发电机数量不同,所需成本也一样,合理的选择发电机组既可以满足用电需求,又能够降低生产成本,提高经济效益。
在本文中我们要解决的问题就是怎样合理选择发电机的组合,从而将电厂的生产成本降低至最小值以便提高电厂的经济效益。
1.2每日用电需求与发电机具体情况:
为满足每日电力需求(单位为兆瓦(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
只有在每个时段开始时才允许启动或关闭发电机。
与启动发电机不同,关闭发电机不需要付出任何代价。
1.3本文需解决的问题:
问题
(1)在每个时段应分别使用哪些发电机才能使每天的总成本最小,最小总成本为多少?
问题
(2)如果在任何时刻,正在工作的发电机组必须留出20%的发电能力余量,以防用电量突然上升。
那么每个时段又应分别使用哪些发电机才能使每天的总成本最小,此时最小总成本又为多少?
2、模型假设及符号说明
2.1模型假设
假设1:
在每个时段里,型号相同的发电机的功率相等并且在该时段维持不变
假设2:
发电机在每天的零点全部关闭,第二天根据需要选择性的开启
假设3:
发电机启动和关闭时间都忽略不计
假设4:
发电机在运行过程中不发生故障
假设5:
不计发电机的摩擦损耗功率
假设6:
不计调整发电机功率的成本
2.2模型符号
符号
符号说明
T(i)
表示第i个时段(i=1,2,3,4,5,6,7)单位:
时
N(i,j)
表示第i个时段j机型数量单位:
台
M(j)
表示j机型的总数量(j=1,2,3,4)单位:
台
W(j)
j机型的固定成本单位:
元
Q(i,j)
第i个时段j机型的发电功率单位:
MW
Qmin(j)
j机型的最小发电功率单位:
MW
Qmax(j)
j机型的最大发电功率单位:
MW
A(j)
j机型的边际成本单位:
元
B(j)
j机型的启动成本单位:
元
S1
总固定成本单位:
元
S2
总边际成本单位:
元
S3
总启动成本单位:
元
S
总成本单位:
元
D
各时段用电需求量单位:
元
3问题分析
此题解决的的是在不同时间段应如何选择不同发电机的型号使总成本最低的优化模型问题。
要使所选择的发电机的总成本最低应该需要建立合理的模型。
总成本是由由各个时间段的总的固定成本、总的边际成本和总的启动成本构成的。
由于不同时间段中,上一阶段的电机运行情况将影响下一阶段的启动成本,这样就会进接影响总成本,因此在考虑电机的运行费用时应该把下一阶段电机的运行状况和上一阶段的运行状况联系起来,这样的话我们将得到最优的总成本。
对于问题一,建了一个模型要求在各个时间段应该选择哪种型号电机使每天的总成本最低。
总成本可分为:
固定成本、边际成本、启动成本。
此问题除了考虑满足每天的用电需求外,还应该使每天电机的运行费用尽可能的小。
启动的发电机数量越少功率越小总成本越低,数量越多输出功率越大就越能满足每个阶段用电需求。
于是根据问题一,假设发电机在每天的24:
00全部关闭,0:
00开启。
它的启动成本等于第一阶段开启的发电机数量、第二阶段开启的发电机数量在第一阶段开启的发电机数量……一直到第七阶段开启的数量在第六阶段开启的数量的总和乘以每台发电机的启动成本。
于是我们把七个时间段情况综合起来考虑,运用单目标非线性化方法建立了模型一,然后根据合理的分配、使用有效的资源来减少使用成本,来达到最佳效益。
对于问题二,要在任何时候,使正在工作的发电机必须留出20%的发电能力余量,以防用电量突然上升,我们只需要在第一问的基础上,把各时段电机最大输出功率总和的80%作为各时段电机输出功率总和的最大值。
模型一的思想也适用于模型二,通过非线性规划,用lingo软件计算,最终得到最优解。
4数据分析
由问题重述中的表一我们可以画出如下的各时段用电需求图,从图中得知,2,4,6时段用电量相对其他几个时段较多,为用电高峰期。
由问题重述中的表二我们同样可以画出如下的图表,由图表可知型号二的固定成本最小,启动成本也相对较小,而型号一的启动成本和型号四的固定成本较大,我们也可以从原表二中观察出型号三的边际成本最小,型号四的边际成本最大。
4问题一的解答
4.1确定出目标函数
由题目给的条件及模型假设知目标函数由发电厂每天的总固定成本,总边际成本,总启动成本组成,下面来一一进行求解
1、总固定成本:
即四种型号发电机在七个时间段类的固定成本乘以启动台数乘以工作时间
数值的叠加和,其数值表达式如下:
2、总边际成本:
即四种型号的发电机在七个时间段内的输出功率与最小输出功率的差值乘
以相对应的边际成本乘以启动台数乘以工作时间数值的叠加和,其数学表达式为:
3、总启动成本:
即四种型号的发电机在关闭状态下重新启动的台数乘以相应的启动成本数
值的叠加和,其数学表达式为
4、目标函数:
总成本=总固定成本+总边际成本+总启动成本
即:
minS=S1+S2+S3
4.2求出问题一的多变量最优化模型:
4.3根据题目要求确定其约束条件
St:
(1)若j型号发电机在i时段使用,则功率需在最小功率Qmin和最大功率Qmax之间,
即:
Qmin(j)<=Q(i,j)=即:
1)750<=Q(i,1)=<1750
2)1000<=Q(i,2)=<1500
3)1200<=Q(i,3)=<2000
4)1800<=Q(i,4)=<3500;
若j型号发电机在i时段不使用,则功率为零,
即:
Q(i,j)=0
(2)各个型号的发电机在一个时间段发电量的总和应等于各个时间段的用
电需求,它的的数学表达式为:
D=
(i=1,2,,3,4,5,6,7)
(3)第i个时间段的j型发电机的台数应满足题目告诉的条件,其表达为:
0<=N(i,j)=即:
1)0<=N(i,1)=<10
2)0<=N(i,2)=<4
3)0<=N(i,3)=<8
4)0<=N(i,3)=<3
综上所述:
St
4.4模型的求解及结果分析
我们用lingo软件求解这个模型,首先把各个变量,常量写入到集合中;然后根据我们所建模型,分别将目标函数,约束条件,所需数据写入程序中。
在处理发电机是否启动这个问题上,我们引入了一个变量X,根据发电机的启动台数来确定发电机的功率是否为0,若发电机的台数不为零,则为X,我们把X的范围设在最小功率和最大功率之间。
这样我们就解决了发电机的功率约束问题。
至于在计算每阶段的启动成本问题上,我们利用了lingo中的符号函数求解。
由于第一阶段的启动成本在计算上与其他6阶段有所不同,故程序中我们进行分段求解,这样既有利于编程,又简单明了。
在lingo环境下运行结果如下:
问题
类型
型号
时段
型号1
型号2
型号3
型号4
台数
平均输出功率
台数
平均输出功率
台数
平均输出功率
台数
平均输出功率
一般运行
情况
0-6
0
0
4
1500.000
3
2000.000
0
0
6-9
3
1533.333
4
1500.000
8
2000.000
3
1800.000
9-12
3
1000.000
4
1500.000
8
2000.000
0
0
12-14
3
1750.000
4
1500.000
8
2000.000
3
2916.667
14-18
2
750.000
4
1425.000
8
2000.000
1
1800.000
18-22
2
1300.000
4
1500.000
8
2000.000
3
2080.333
22-24
0
0
4
1500.000
6
2000.000
0
0
总成本
1463430元
根据此表我们可以画出关于每一时段每种型号发电机台数的柱状图,如下所示:
由图可知,型号二发电机从第一时段到第七时段一直处于运行状态,我们也可以从原始数据中找出原因,因为型号2发电机的固定成本最低,启动成本和边际成本也相对较低。
从图中我们也可以得知2,4,6时段发电机所需台数相对较多,即为用电高峰期,与原始数据正好对应。
5问题二的解答
5.1解法同问题一,得到目标函数minS=S1+S2+S3
5.2求出问题一的多变量最优化模型:
5.3根据题目要求确定其约束条件
(1)问题一的约束条件适用于问题二,下面我们只需再加一个约束条件:
即:
第i个时段发电机组所能输出的最大功率的80%应大于第i个时段的
用电需求,所列数学表达式如下:
结合问题一整理得:
St
5.4模型的求解结果分析(见附录8.1)
6模型的评价、改进、以及推广
6.1模型的评价
优点:
根据题目的要求我们确立了三个指标,即固定总成本、边际总成本、启用总成本,以上三项总成本之和即为总成本,通过对三项总成本的逐项分析,建立了最优的目标函数
将一天作为一个整体进行求解,考虑到了各个时段间的关联,得出的解为全局最优解,适用性较强
解决该题的方法方便、直观,运用的数学原理、概念简单明了,易于在计算机上实现
此模型的通用性较好,可以广泛推广到其他非线性规划模型中去
忽略次要因素,抓住关键因素,既符合实际生活中取材的主要衡量标准,又使问题简单化,便于求解
缺点:
假定了同时段同型号的发电机的输出功率相同且维持不变,与实际情况有些不符,从而使得出的最优解与实际最优解有一定误差。
6.2模型的改进
因假定了同时段同型号发电机的输出功率相等且维持不变,使得得出的结果不是十分准确,我们可在得出结果的基础上用计算机在每两个时段之间对功率进行一些调整,即:
在保证满足供电需求的情况下,调整同型号发电机的输出功率(不要求相同),使得出的结果进一步优化
6.3模型的推广
我们的模型经过一定的改进可在电力网的一些有功功率、无功功率的补偿和分配问题上具有一定的指导作用,还可用于一些运输领域的优化问题
7附录
7.1附录一
问题二的结果表格:
问题
类型
型号
时段
型号1
型号2
型号3
型号4
台数
平均输出功率
台数
平均输出功率
台数
平均输出功率
台数
平均输出功率
保留20%发电能力
0-6
5
876.132
3
1339.779
0
0
2
1800.000
6-9
6
1433.333
2
1000.000
8
2000.000
3
1800.000
9-12
6
750.000
4
1000.000
7
1842.857
2
1800.000
12-14
9
1400.000
4
1000.000
7
2000.000
3
1800.000
14-18
4
750.000
4
1500.000
8
1325.000
3
1800.000
18-22
4
1347.974
4
1302.026
7
2000.000
3
1800.000
22-24
0
0
4
1000.000
5
1719.984
3
1800.000
总成本
1556186元
7.2附录二
问题一所用程序:
model:
sets:
shiduan/1..7/:
D,T;
xiaohao/1..4/:
M,Qmin,Qmax,A,B,W;
link(shiduan,xiaohao):
N,Q,X;
endsets
s1=@sum(shiduan(i):
(@sum(xiaohao(j):
N(i,j)*W(j)*T(i))));
s2=@sum(shiduan(i):
@sum(xiaohao(j):
(Q(i,j)-Qmin(j))*A(j)*T(i)*N(i,j)));
s3=@sum(xiaohao(j):
N(1,j)*B(j))+@sum(xiaohao(j):
@sum(shiduan(i)|i#ge#2:
@if(N(i,j)#gt#N(i-1,j),(N(i,j)-N(i-1,j))*B(j),0)));
min=s1+s2+s3;
@for(link(i,j):
N(i,j)@for(shiduan(i):
@sum(xiaohao(j):
Q(i,j)*N(i,j))=D(i));
@for(link:
@gin(N));
@for(link(i,j):
Q(i,j)=@if(N(i,j)#eq#0,0,X));
@for(link(i,j):
@bnd(Qmin(j),X,Qmax(j)));
data:
T=6332442;
D=12000320002500036000250003000018000;
M=10483;
Qmin=750100012001800;
Qmax=1750150020003500;
W=2250180037504800;
A=2.72.21.83.8;
B=5000160024001200;
enddata
end
问题二所用程序:
model:
sets:
shiduan/1..7/:
D,T;
xiaohao/1..4/:
M,Qmin,Qmax,A,B,W;
link(shiduan,xiaohao):
N,Q,X;
endsets
s1=@sum(shiduan(i):
(@sum(xiaohao(j):
N(i,j)*W(j)*T(i))));
s2=@sum(shiduan(i):
@sum(xiaohao(j):
(Q(i,j)-Qmin(j))*A(j)*T(i)*N(i,j)));
s3=@sum(xiaohao(j):
N(1,j)*B(j))+@sum(xiaohao(j):
@sum(shiduan(i)|i#ge#2:
@if(N(i,j)#gt#N(i-1,j),(N(i,j)-N(i-1,j))*B(j),0)));
min=s1+s2+s3;
@for(link(i,j):
N(i,j)@for(shiduan(i):
@sum(xiaohao(j):
Q(i,j)*N(i,j))=D(i));
@for(link:
@gin(N));
@for(link(i,j):
Q(i,j)=@if(N(i,j)#eq#0,0,X));
@for(link(i,j):
@bnd(Qmin(j),X,Qmax(j)));
@for(shiduan(i):
@sum(xiaohao(j):
Q(i,j)*N(i,j))<=0.8*@sum(xiaohao(j):
Qmax(j)*N(i,j)));
data:
T=6332442;
D=12000320002500036000250003000018000;
M=10483;
Qmin=750100012001800;
Qmax=1750150020003500;
W=2250180037504800;
A=2.72.21.83.8;