数学建模电力安排问题.docx
《数学建模电力安排问题.docx》由会员分享,可在线阅读,更多相关《数学建模电力安排问题.docx(15页珍藏版)》请在冰豆网上搜索。
数学建模电力安排问题
CKBOODwasrevisedintheearlymorningofDecember17,2020.
数学建模电力安排问题
电力生产问题
摘要
本文解决的是电力生产中发电机的安排问题,在满足每日各时间段电力需求的条件下,安排各型号发电机来供电,以期获得最小的成本。
为解决此问题,我们建立了两个最优化模型。
针对问题一:
建立了非线性单目标最优化模型。
从已知条件、目标函数、约束条件三方面进行综合分析可知,每天的总成本由总固定成本、总边际成本、总启动成本组成,确定总成本为目标函数,各时段各型号发电机工作数量及其总超出功率为主要变量,并列出相应约束条件。
最后通过Lingo软件[2]求出最小成本为1540770元,并得出各时段各型号发电机的数量及其功率如下表(具体见表三):
时段
型号
0-6
6-9
9-12
12-14
14-18
18-22
22-24
1
台数
0
2
2
2
2
2
0
超出功率
0
2000
1500
2000
0
1100
0
······
4
台数
3
3
0
3
1
3
0
超出功率
600
1100
0
5100
0
0
0
针对问题二:
建立了线性单目标最优化模型。
引入非负变量,即为各时段新增开的各型号的发电机台数,通过此变量线性表示出启动成本。
以总成本为目标函数,在模型一的基础上,只需改变一个约束条件,即发电机组在任意时间段内所能发出的最大总功率的80%要大于等于该时段的用电需求。
最后通过lingo软件求出最小成本为1885420元,并得出各时段各型号发电机的数量及其功率。
关键词:
非线性最优化模型线性最优化模型最小生产成本
1问题重述
问题背景
在电力生产过程中,为满足每日的电力需求并且使生产成本达到最小,因不同发电性能的发电机成本不同,故可以选用不同型号的发电机组合使用。
题目信息
题中给出了一天中七个时段的用电需求(见表一)及四种发电机的发电性能和相应成本(见表二)。
其中,所有发电机都有一个最大发电能力,当接入电网时,其输出功率不应低于其最小输出功率,且所有发电机均存在一个启动成本,以及工作于其最小功率状态时固定的每小时成本,并且如果功率高于最小功率,则超出部分的功率每兆瓦每小时还存在一个成本,即边际成本。
表一:
每日用电需求(兆瓦)
时段(0-24)
0-6
6-9
9-12
12-14
14-18
18-22
22-24
需求
12000
32000
25000
36000
25000
30000
18000
表二:
发电机情况
可用数量
最小输出功率(MW)
最大输出功率(MW)
固定成本(元/小时)
每兆瓦边际成本(元/小时)
启动成本
型号1
10
750
1750
2250
5000
型号2
4
1000
1500
1800
1600
型号3
8
1200
2000
3750
2400
型号4
3
1800
3500
4800
1200
待解问题
问题
(1):
在每个时段应分别使用哪些发电机才能使每天的总成本最小,最小总成本为多少?
问题
(2):
如果在任何时刻,正在工作的发电机组必须留出20%的发电能力余量,以防用电量突然上升。
那么每个时段又应分别使用哪些发电机才能使每天的总成本最小,此时最小总成本又为多少?
2模型假设
假设1:
不计发电机启动时所需时间;
假设2:
各发电机均在24时关闭,即不考虑循环过程;
假设3:
各发电机的输出功率在时段初调整好后,保持不变;
假设4:
题目所列出的成本以外的成本消耗不计。
3符号说明
符号
符号说明
每天的不同时段
四种发电机的型号
第
个时段所需型号
发电机的台数
第
个时段新增开的型号
发电机的台数
第
个时段的时长
第
个时段型号
发电机的总超出功率
型号
发电机的可用数量
型号
发电机的最小输出功率
型号
发电机的最大输出功率
型号
发电机的启动成本
第
个时段的用电需求
型号
发电机的固定成本
型号
发电机的每兆瓦边际成本
每天的总成本
变量说明
4问题分析
此题研究的是电力生产中合理安排不同类型发电机的数学建模问题。
为满足电力需求,对于每日七个时段,需要对四种不同类型发电机进行合理安排。
针对问题一:
从以下三方面来分析
(1)对已知条件的分析:
七个时段分别对应不同的用电需求,四种不同类型发电机可供使用,且已知其可用数量、最小输出功率、最大输出功率、固定成本、每兆瓦边际成本、启用成本。
要使总成本达到最小,则问题的目标函数就是总成本函数。
(2)对目标函数的分析:
发电机总成本包括总固定成本、总边际成本、总启动成本。
该问题的关键在于如何求启动成本。
(3)对约束条件的分析:
四种型号发电机在第
个时间段的发电总量应不小于总需求量;型号
发电机在任一时间段的数量不能超过可用数量;型号
发电机在任一时间段的超出功率不超过最大功率与最小功率之差。
综合以上分析,我们将建立非线性单目标最优化模型。
针对问题二:
为了使求解更简单,我们试图采用线性方法来解决该问题,对于启动成本的求解,将引入
表示第
个时段新增开的型号
的发电机的台数,后一时间段需关闭发电机时,
。
此外,只需改变一个约束条件,即发电机组在第
个时间段所能发出的最大总功率的80%要大于等于该时段的用电需求。
最后建立线性单目标最优化模型来求解。
5问题一的解答
模型的建立
确定目标函数
要使总成本最小,需合理安排四种发电机来满足七个时间段的用电需求,总成本由以下三个指标组成:
(1)总固定成本=第
个时间段的时长
第
个时间段型号
发电机的数量
型号
发电机每小时的固定成本
(2)总边际成本=第
个时间段的时长
第
个时间段型号
发电机的数量
第
个时间段型号
发电机超出最小功率部分的功率
型号
发电机每兆瓦边际成本
(3)总启动成本=型号
发电机启动数量
型号
发电机的启动成本
则总成本=固定总成本+边际总成本+启动总成本
确定约束条件
约束条件一:
台数约束
型号
发电机在任一时间段的数量不超过可用数量
约束条件二:
功率约束
型号
发电机在任一时间段的超出功率不超过最大功率与最小功率只差
约束条件三:
需求约束
四种型号发电机在第
个时间段的发电总量应不小于其需求量
综上所述,得到问题一的最优化模型
模型一的求解
根据建立的模型用Lingo软件代入数据求解(源程序见附录)得最小总成本为1540770元,各时段各型号发电机的数量和总超出功率结果如表三:
表三:
各时段各型号发电机的数量和总超出功率
时段(h)
型号
0-6
6-9
9-12
12-14
14-18
18-22
22-24
1
台数(台)
0
2
2
2
2
2
0
总超出功率(MW)
0
2000
1500
2000
0
1100
0
2
台数(台)
4
4
4
4
4
4
4
总超出功率(MW)
2000
2000
2000
2000
1700
2000
2000
3
台数(台)
0
8
8
8
8
8
6
总超出功率(MW)
0
6400
6400
6400
6400
6400
4800
4
台数(台)
3
3
0
3
1
3
0
总超出功率(MW)
600
1100
0
5100
0
0
0
最小成本(元)
1540770
模型一结果分析
经过对上述表格中的数据进行分析,我们可以发现,求出的结果中,发电机的数量和功率均符合要求。
型号1的发电机由于启动成本比较大,故不适宜启动过多;型号2的发电机由于固定成本和启动成本比较小,故可以尽量启动;型号3的发电机由于边际成本比较小,故该型号可以尽量采用大功率。
型号4的发电机固定成本过高,故不适宜持续启用。
6问题二的解答
模型的建立
确定目标函数
通过问题分析已知模型二中固定总成本和边际总成本与模型一相同,而采用线性方法后,启动总成本=第
个时段新增开的型号
的发电机的台数
型号
的发电机的启动成本。
故
(1)固定总成本
(2)边际总成本
(3)启动总成本
总成本
确定约束条件
因为问题二是在问题一的基础上新增了一个约束条件,即发电机组在第
个时间段所能发出的最大总功率的80%要大于等于该时段的用电需求,可以直接将问题一的约束三变化得到新的约束条件,故
约束条件一:
台数约束
约束条件二:
功率约束
约束条件三:
需求约束
综上所述,得到问题二的最优化模型
模型二的求解
根据建立的模型用Lingo软件代入数据求解(源程序见附录)得最小总成本为1885420元,各时段各型号发电机的数量和总超出功率结果如表四:
表四:
各时段各型号发电机的数量和总超出功率
时段(h)
型号
0-6
6-9
9-12
12-14
14-18
18-22
22-24
1
台数(台)
1
7
7
8
6
6
1
总超出功率(MW)
250
7000
400
8000
0
5600
0
2
台数(台)
4
4
4
4
4
4
4
总超出功率(MW)
2000
2000
2000
2000
1350
2000
1750
3
台数(台)
4
8
8
8
8
8
8
总超出功率(MW)
3200
6400
6400
6400
6400
6400
6400
4
台数(台)
0
3
2
3
3
3
0
总超出功率(MW)
0
350
0
3600
0
0
0
最小成本(元)
1885420
模型二的结果分析
将上述求解结果与表1和表2对照,发现各型号的发电机台数和功率均满足题目要求。
因为问题二要使任何时刻发电机组都有20%的发电能力余量,以防用电量突然上升,所以每个时段的发电机按上述分别进行组合后的实际供电量的80%均应大于或等于每时段的供电需求。
此结果与第一问的结果用matlab编程分析并绘制出在两个问题的结果中发电机在每个时段的功率和台数的变化图(源程序参见附录)如下:
图一:
不同时段发电机的超出功率变化
图二:
不同时段发电机的台数变化
注:
图中红线代表无保留电力(问题一)情况下的发电机使用情况,蓝线代表有保留电力(问题二)情况下的发电机使用情况
因该模型只是在模型一的基础上做的改进,故结果改变不大。
由上图对比可以看出,型号1的发电机的启动成本过高,故不宜重复启动;对于型号2和型号3的发电机,因其各种成本相对较低,故可尽量多启动这两种型号并使其达到最大功率;型号4的发电机因其启动成本较低而边际成本和固定成本均较高,故输出功率不宜过高,但可重复启动。
7模型的评价
模型的优点
优点一:
模型一考虑细致,表述简洁,易于理解,便于重复利用,模型二为线性规划模型,易于求解;
优点二:
该模型对电力生产问题的考虑比较全面,在电力生产方面有较好的应用前景,对资源的合理利用上有较大的贡献;
优点三:
在结果分析的检验证明,我们所建模型得到的结果既满足了题目的约束条件又是相应问题的最优解。
模型的缺点
缺点一:
模型一为非线性规划模型,故求解上有一定的难度;
缺点二:
本文所建模型忽略了发电机输出功率的转换时间与消耗;
缺点三:
本文所建模型考虑的是一天中0时-24时发电机组的安排,而实际问题中是长期循环过程。
8模型的改进
模型改进
改进一:
模型一可以改进为线性规划模型,方便求解。
改进二:
查询更多相关资料数据,得到发电机输出功率的转换时间与消耗。
改进三:
可以考虑长期循环过程,以便模型能够得到更广泛的应用。
模型推广
上述模型不仅可用于电力生产的优化,也可用于其它生产的优化,特别是对于生产过程中涉及到资源的选择分配问题有很好的适用性。
9参考文献
[1]宋来忠,王志明,数学建模与实验,北京:
科学出版社,2005
[2]惠高峰,Lingo软件在求解数学优化问题的使用技巧,《科技视界》,2013
[3]王能淼,杨华,谢伟,电力生产安排的数学模型,XX文库,
[4]赵静,但琦,数学建模与数学实验,高等教育出版社,2008
附录
附录一:
问题一程序
model:
sets:
time/1..7/:
length,demond;
type/1..4/:
startcost,precost,fixcost,pmin,pmax,num;
cost(time,type):
p,x;
endsets
!
这里是数据;
data:
length=6,3,3,2,4,4,2;
demond=12000,32000,25000,36000,25000,30000,18000;
startcost=5000,1600,2400,1200;
precost=,,,;
fixcost=2250,1800,3750,4800;
pmin=750,1000,1200,1800;
pmax=1750,1500,2000,3500;
num=10,4,8,3;
enddata
@for(cost(i,j):
p(i,j)<=(pmax(j)-pmin(j))*x(i,j));
@for(time(i):
@sum(type(j):
(p(i,j)+pmin(j)*x(i,j)))>=demond(i));
!
电机数量约束;
!
@for(cost(i,j):
ns(i,j)<=num(j));
@for(cost(i,j):
x(i,j)<=num(j));
@for(cost:
@gin(x));
!
@for(cost(i,j)|i#gt#1:
ns(i,j)>=x(i,j)-x(i-1,j));
!
目标函数;
min=@sum(cost(i,j):
x(1,j)*startcost(j)+(@sign(x(i,j)-@if(i#ge#2,x((i-1),j),0))+1)/2*(x(i,j)-@if(i#ge#2,x((i-1),j),0))*startcost(j)+fixcost(j)*length(i)*x(i,j)+p(i,j)*precost(j)*length(i));
end
附录二:
问题二程序
model:
sets:
time/1..7/:
length,demond;
type/1..4/:
startcost,precost,fixcost,pmin,pmax,num;
cost(time,type):
p,ns,x;
endsets
data:
length=6,3,3,2,4,4,2;
demond=12000,32000,25000,36000,25000,30000,18000;
startcost=5000,1600,2400,1200;
precost=,,,;
fixcost=2250,1800,3750,4800;
pmin=750,1000,1200,1800;
pmax=1750,1500,2000,3500;
num=10,4,8,3;
enddata
!
功率约束;
@for(cost(i,j):
p(i,j)<=(pmax(j)-pmin(j))*x(i,j));
!
需求约束;
@for(time(i):
@sum(type(j):
(p(i,j)+pmin(j)*x(i,j))*>=demond(i));
!
电机数量约束;
!
@for(cost(i,j):
ns(i,j)<=num(j));
@for(cost(i,j):
x(i,j)<=num(j));
@for(cost:
@gin(x));
@for(cost(i,j):
ns(1,j)=x(1,j));
@for(cost(i,j)|i#ge#2:
ns(i,j)>=x(i,j)-x(i-1,j));
!
目标函数;
min=@sum(cost(i,j):
startcost(j)*ns(i,j)*(ns(i,j)#ge#0)+fixcost(j)*length(i)*x(i,j)+p(i,j)*precost(j)*length(i));
End
附录三:
模型一与模型二的结果分析的matlab源程序
figure('color','w')
x=1:
7;
A1=[0200015002000011000];
subplot(2,2,1)
plot(x,A1,'-r',x,A1,'ro')
holdon
B1=[25070004008000056000];
plot(x,B1,'-b',x,B1,'b*')
title('型号1发电机超出功率变化')
A2=[2000200020002000170020002000];
subplot(2,2,2)
plot(x,A2,'-r',x,A2,'ro')
holdon
B2=[2000200020002000135020001750];
plot(x,B2,'-b',x,B2,'b*')
title('型号2发电机超出功率变化')
A3=[0640064006400640064006400];
subplot(2,2,3)
plot(x,A3,'-r',x,A3,'ro')
holdon
B3=[3200640064006400640064006400];
plot(x,B3,'-b',x,B3,'b*')
title('型号3发电机超出功率变化')
A4=[600110005100000];
subplot(2,2,4)
plot(x,A4,'-r',x,A4,'ro')
holdon
B4=[035003600000];
plot(x,B4,'-b',x,B4,'b*')
title('型号4发电机超出功率变化')
%%
figure('color','w')
x=1:
7;
A1=[0222220];
subplot(2,2,1)
plot(x,A1,'-r',x,A1,'or')
holdon
B1=[1778661];
plot(x,B1,'-b',x,B1,'b*')
title('型号1发电机的台数')
A2=[4444444];
subplot(2,2,2)
plot(x,A2,'-r',x,A2,'or')
holdon
B2=[4444444];
plot(x,B2,'-b',x,B2,'b*')
title('型号2发电机的台数')
A3=[0888886];
subplot(2,2,3)
plot(x,A3,'-r',x,A3,'or')
holdon
B3=[4888888];
plot(x,B3,'-b',x,B3,'b*')
title('型号3发电机的台数')
A4=[3303130];
subplot(2,2,4)
plot(x,A4,'-r',x,A4,'ro')
holdon
B4=[0323330];
plot(x,B4,'-b',x,B4,'b*')
title('型号4发电机的台数')