当前位置:文档之家› 数学建模电力安排问题

数学建模电力安排问题

电力生产问题摘要本文解决的是电力生产中发电机的安排问题,在满足每日各时间段电力需求的条件下,安排各型号发电机来供电,以期获得最小的成本。

为解决此问题,我们建立了两个最优化模型。

针对问题一:建立了非线性单目标最优化模型。

从已知条件、目标函数、约束条件三方面进行综合分析可知,每天的总成本由总固定成本、总边际成本、总启动成本组成,确定总成本为目标函数,各时段各型号发电机工作数量及其总超出功率为主要变量,并列出相应约束条件。

最后通过Lingo软件[2]求出最小成本为1540770元,并得出各时段各型号发电机的数量及其功率如下表(具体见表三):针对问题二:建立了线性单目标最优化模型。

引入非负变量,即为各时段新增开的各型号的发电机台数,通过此变量线性表示出启动成本。

以总成本为目标函数,在模型一的基础上,只需改变一个约束条件,即发电机组在任意时间段内所能发出的最大总功率的80%要大于等于该时段的用电需求。

最后通过lingo软件求出最小成本为1885420元,并得出各时段各型号发电机的数量及其功率。

关键词:非线性最优化模型线性最优化模型最小生产成本1 问题重述1.1 问题背景在电力生产过程中,为满足每日的电力需求并且使生产成本达到最小,因不同发电性能的发电机成本不同,故可以选用不同型号的发电机组合使用。

1.2 题目信息题中给出了一天中七个时段的用电需求(见表一)及四种发电机的发电性能和相应成本(见表二)。

其中,所有发电机都有一个最大发电能力,当接入电网时,其输出功率不应低于其最小输出功率,且所有发电机均存在一个启动成本,以及工作于其最小功率状态时固定的每小时成本,并且如果功率高于最小功率,则超出部分的功率每兆瓦每小时还存在一个成本,即边际成本。

问题(1):在每个时段应分别使用哪些发电机才能使每天的总成本最小,最小总成本为多少?问题(2):如果在任何时刻,正在工作的发电机组必须留出20%的发电能力余量,以防用电量突然上升。

那么每个时段又应分别使用哪些发电机才能使每天的总成本最小,此时最小总成本又为多少?2 模型假设假设1:不计发电机启动时所需时间;假设2:各发电机均在24时关闭,即不考虑循环过程;假设3:各发电机的输出功率在时段初调整好后,保持不变;假设4:题目所列出的成本以外的成本消耗不计。

3 符号说明xijtipijnj1,27j4 问题分析此题研究的是电力生产中合理安排不同类型发电机的数学建模问题。

为满足电力需求,对于每日七个时段,需要对四种不同类型发电机进行合理安排。

针对问题一:从以下三方面来分析(1)对已知条件的分析:七个时段分别对应不同的用电需求,四种不同类型发电机可供使用,且已知其可用数量、最小输出功率、最大输出功率、固定成本、每兆瓦边际成本、启用成本。

要使总成本达到最小,则问题的目标函数就是总成本函数。

(2)对目标函数的分析:发电机总成本包括总固定成本、总边际成本、总启动成本。

该问题的关键在于如何求启动成本。

(3) 对约束条件的分析:四种型号发电机在第i 个时间段的发电总量应不小于总需求量;型号j 发电机在任一时间段的数量不能超过可用数量;型号j 发电机在任一时间段的超出功率不超过最大功率与最小功率之差。

综合以上分析,我们将建立非线性单目标最优化模型。

针对问题二:为了使求解更简单,我们试图采用线性方法来解决该问题,对于启动成本的求解,将引入ij x 表示第i 个时段新增开的型号j 的发电机的台数,后一时间段需关闭发电机时,0ij x =。

此外,只需改变一个约束条件,即发电机组在第i 个时间段所能发出的最大总功率的80%要大于等于该时段的用电需求。

最后建立线性单目标最优化模型来求解。

5 问题一的解答5.1 模型的建立5.1.1 确定目标函数 要使总成本最小,需合理安排四种发电机来满足七个时间段的用电需求,总成本由以下三个指标组成:(1)总固定成本=第i 个时间段的时长⨯第i 个时间段型号j 发电机的数量⨯型号j 发电机每小时的固定成本4711j j ij j i p c t x ===∑∑(2)总边际成本=第i 个时间段的时长⨯第i 个时间段型号j 发电机的数量⨯第i 个时间段型号j 发电机超出最小功率部分的功率⨯型号j 发电机每兆瓦边际成本4711j j ij j i q d t p ===∑∑(3)总启动成本=型号j 发电机启动数量⨯型号j 发电机的启动成本4471112@12ij j j ij j j j i sign x s x e x e ===+=+∑∑∑则总成本 =固定总成本+边际总成本+启动总成本Q p q s =++5.1.2 确定约束条件 约束条件一:台数约束型号j 发电机在任一时间段的数量不超过可用数量01,271,2,3,4ij ij j ij x x n i j x ⎧∈N ⎪≤≤==⎨⎪∈N⎩约束条件二:功率约束型号j 发电机在任一时间段的超出功率不超过最大功率与最小功率只差()1,271,2,3,4ij j j ijp b a x i j ≤-==约束条件三:需求约束四种型号发电机在第i 个时间段的发电总量应不小于其需求量()411,27i ij j ij j w p a x i =≤+=∑5.1.3综上所述,得到问题一的最优化模型()47447111112@1min 2ij j j ij j j ij j j ij j j i j j i sign x Q c t x d t p x e x e =====+=+++∑∑∑∑∑()()41..0i ij j ij j ij j j ij ij ij ij j w p a x p b a x s t x x x n=⎧≤+⎪⎪⎪≤-⎨⎪∈N∈N ⎪⎪≤≤⎩∑ 5.2 模型一的求解根据建立的模型用Lingo 软件代入数据求解(源程序见附录)得最小总成本为1540770元,各时段各型号发电机的数量和总超出功率结果如表三:5.3 模型一结果分析经过对上述表格中的数据进行分析,我们可以发现,求出的结果中,发电机的数量和功率均符合要求。

型号1的发电机由于启动成本比较大,故不适宜启动过多;型号2的发电机由于固定成本和启动成本比较小,故可以尽量启动;型号3的发电机由于边际成本比较小,故该型号可以尽量采用大功率。

型号4的发电机固定成本过高,故不适宜持续启用。

6 问题二的解答6.1 模型的建立6.1.1 确定目标函数通过问题分析已知模型二中固定总成本和边际总成本与模型一相同,而采用线性方法后,启动总成本=第i 个时段新增开的型号j 的发电机的台数⨯型号j 的发电机的启动成本。

故(1)固定总成本7411j j ij i j p c t x ===∑∑(2)边际总成本7411j j ij i j q d t p ===∑∑(3)启动总成本7411ij j i j s x e ===∑∑总成本Q p q s =++6.1.2 确定约束条件因为问题二是在问题一的基础上新增了一个约束条件,即发电机组在第i 个时间段所能发出的最大总功率的80%要大于等于该时段的用电需求,可以直接将问题一的约束三变化得到新的约束条件,故约束条件一:台数约束01,271,2,3,4ij ij j ij x x n i j x *⎧∈N ⎪⎪≤≤==⎨⎪∈N ⎪⎩约束条件二:功率约束()1,271,2,3,4ij j j ijp b a x i j ≤-==约束条件三:需求约束()410.81,27i ij j ij j w p a x i =≤+=∑6.1.3综上所述,得到问题二的最优化模型()4711min ij j j j ij j j ij j i Q x e c t x d t p ===++∑∑()()410.8.0i ij j ij j ij j j ij ijij ij j w p a x p b a x s t x x x n=*⎧≤+⎪⎪⎪≤-⎨⎪∈N ∈N ⎪⎪≤≤⎩∑ 6.2 模型二的求解根据建立的模型用Lingo 软件代入数据求解(源程序见附录)得最小总成本为1885420元,各时段各型号发电机的数量和总超出功率结果如表四:6.3 模型二的结果分析将上述求解结果与表1和表2对照,发现各型号的发电机台数和功率均满足题目要求。

因为问题二要使任何时刻发电机组都有20%的发电能力余量,以防用电量突然上升,所以每个时段的发电机按上述分别进行组合后的实际供电量的80%均应大于或等于每时段的供电需求。

此结果与第一问的结果用matlab 编程分析并绘制出在两个问题的结果中发电机在每个时段的功率和台数的变化图(源程序参见附录)如下:注:图中红线代表无保留电力(问题一)情况下的发电机使用情况,蓝线代表有保留电力(问题二)情况下的发电机使用情况因该模型只是在模型一的基础上做的改进,故结果改变不大。

由上图对比可以看出,型号1的发电机的启动成本过高,故不宜重复启动;对于型号2和型号3的发电机,因其各种成本相对较低,故可尽量多启动这两种型号并使其达到最大功率;型号4的发电机因其启动成本较低而边际成本和固定成本均较高,故输出功率不宜过高,但可重复启动。

7 模型的评价7.1 模型的优点优点一:模型一考虑细致,表述简洁,易于理解,便于重复利用,模型二为线性规划模型,易于求解;优点二:该模型对电力生产问题的考虑比较全面,在电力生产方面有较好的应用前景,对资源的合理利用上有较大的贡献;优点三:在结果分析的检验证明,我们所建模型得到的结果既满足了题目的约束条件又是相应问题的最优解。

7.2 模型的缺点缺点一:模型一为非线性规划模型,故求解上有一定的难度;缺点二: 本文所建模型忽略了发电机输出功率的转换时间与消耗;缺点三:本文所建模型考虑的是一天中0时-24时发电机组的安排,而实际问题中是长期循环过程。

8 模型的改进8.1模型改进改进一:模型一可以改进为线性规划模型,方便求解。

改进二:查询更多相关资料数据,得到发电机输出功率的转换时间与消耗。

改进三:可以考虑长期循环过程,以便模型能够得到更广泛的应用。

8.2 模型推广上述模型不仅可用于电力生产的优化,也可用于其它生产的优化,特别是对于生产过程中涉及到资源的选择分配问题有很好的适用性。

9 参考文献[1] 宋来忠,王志明,数学建模与实验,北京:科学出版社,2005[2] 惠高峰,Lingo软件在求解数学优化问题的使用技巧,《科技视界》,2013[3] 王能淼,杨华,谢伟,电力生产安排的数学模型,百度文库,2012.7[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=2.7,2.2,1.8,3.8;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;endsetsdata:length=6,3,3,2,4,4,2;demond=12000,32000,25000,36000,25000,30000,18000;startcost=5000,1600,2400,1200;precost=2.7,2.2,1.8,3.8;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))*0.8)>=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=[0 2000 1500 2000 0 1100 0];subplot(2,2,1)plot(x,A1,'-r',x,A1,'ro')hold onB1=[250 7000 400 8000 0 5600 0];plot(x,B1,'-b',x,B1,'b*')title('型号1发电机超出功率变化')A2=[2000 2000 2000 2000 1700 2000 2000];subplot(2,2,2)plot(x,A2,'-r',x,A2,'ro')hold onB2=[2000 2000 2000 2000 1350 2000 1750];plot(x,B2,'-b',x,B2,'b*')title('型号2发电机超出功率变化')A3=[0 6400 6400 6400 6400 6400 6400];subplot(2,2,3)plot(x,A3,'-r',x,A3,'ro')hold onB3=[3200 6400 6400 6400 6400 6400 6400]; plot(x,B3,'-b',x,B3,'b*')title('型号3发电机超出功率变化')A4=[600 1100 0 5100 0 0 0];subplot(2,2,4)plot(x,A4,'-r',x,A4,'ro')hold onB4=[0 350 0 3600 0 0 0];plot(x,B4,'-b',x,B4,'b*')title('型号4发电机超出功率变化')%%figure('color','w')x=1:7;A1=[0 2 2 2 2 2 0];subplot(2,2,1)plot(x,A1,'-r',x,A1,'or')hold onB1=[1 7 7 8 6 6 1];plot(x,B1,'-b',x,B1,'b*')title('型号1发电机的台数')A2=[4 4 4 4 4 4 4];subplot(2,2,2)plot(x,A2,'-r',x,A2,'or')hold onB2=[4 4 4 4 4 4 4];plot(x,B2,'-b',x,B2,'b*')title('型号2发电机的台数')A3=[0 8 8 8 8 8 6];subplot(2,2,3)plot(x,A3,'-r',x,A3,'or')hold onB3=[4 8 8 8 8 8 8];plot(x,B3,'-b',x,B3,'b*')title('型号3发电机的台数')A4=[3 3 0 3 1 3 0];subplot(2,2,4)plot(x,A4,'-r',x,A4,'ro')hold onB4=[0 3 2 3 3 3 0];plot(x,B4,'-b',x,B4,'b*')title('型号4发电机的台数')。

相关主题