三峡大学数学建模第一题-电力生产问题

上传人:沈*** 文档编号:82918844 上传时间:2022-04-30 格式:DOC 页数:29 大小:260.50KB
返回 下载 相关 举报
三峡大学数学建模第一题-电力生产问题_第1页
第1页 / 共29页
三峡大学数学建模第一题-电力生产问题_第2页
第2页 / 共29页
三峡大学数学建模第一题-电力生产问题_第3页
第3页 / 共29页
点击查看更多>>
资源描述
word电力生产问题为满足每日电力需求单位为兆瓦MW,可以选用四种不同类型的发电机。每日电力需求如下表1。 表1:每日用电需求兆瓦时段0-240-66-99-1212-1414-1818-2222-24需求12000320002500036000250003000018000每种发电机都有一个最大发电能力,当接入电网时,其输出功率不应低于某一最小输出功率。所有发电机都存在一个启动本钱,以与工作于最小功率状态时的固定的每小时本钱,并且如果功率高于最小功率,如此超出局部的功率每兆瓦每小时还存在一个本钱,即边际本钱。这些数据均列于表2中。表2:发电机情况可用数量最小输出功率MW最大输出功率MW固定本钱元/小时每兆瓦边际本钱元/小时启动本钱型号110750175022505000型号241000150018001600型号381200200037502400型号431800350048001200只有在每个时段开始时才允许启动或关闭发电机。与启动发电机不同,关闭发电机不需要付出任何代价。问题1 在每个时段应分别使用哪些发电机才能使每天的总本钱最小,最小总本钱为多少?问题2 如果在任何时刻,正在工作的发电机组必须留出20%的发电能力余量,以防用电量突然上升。那么每个时段又应分别使用哪些发电机才能使每天的总本钱最小,此时最小总本钱又为多少?电力生产问题的数学模型摘 要本文解决的是电力生产问题,在发电机的发电量能满足每日的电力需求的条件下,为了使每日的总本钱达到最低,我们建立了一个最优化模型。对于问题一:由条件可知有固定本钱、边际本钱、启用本钱,据此,我们确定了三个指标:即固定总本钱、边际总本钱、启动总本钱。总本钱即为这三项总本钱之和。每天分为七个时段,发电机共有四种型号,方案结果应该包括每个时段每种型号平均功率与该时段该型号发电机的数量,一共有56个未知数,为减少未知数,并将非线性约束条件转化为线性约束条件,将整数规划转化为非整数规划,我们以每个时段每种型号的几个发电机发出的总功率为变量,并列出相应的约束条件,然后通过LINGO求出个时段各种型号发电机的总功率,再采用分支定界法求出最小总本钱为146.9210万元。再根据总功率利用Matlab软件计算出总功率所对应的该型号发电机的数量见表一。对于问题二:题目要求在任何时刻,正在工作的发电机组必须留出20%的发电能力余量,以防用电量突然上升。其他条件与问题一一样,因此,只需增加一个约束条件,即发电机机组所能发出的最大总功率乘以80%后大于用电需求。为锻炼编程技术,故在第二问改用Matlab软件编程来求解,将所要求的7个时段4种型号的发电机的平均功率一共28个未知数用X1,X2,,X28表示,将其对应的发电机数量用X29,X30,X56表示,并利用矩阵列出约束条件和目标函数,然后编程并运行求解,得到的发电机数量有的不为整数,然后采用分支定界法,得到调整后的结果,最小总本钱为157.5426万元。关键词:线性规划、总功率、使用数量、总本钱为满足每日电力需求单位为兆瓦MW,可以选用四种不同类型的发电机。每日电力需求如下表1。 表1:每日用电需求兆瓦时段0-240-66-99-1212-1414-1818-2222-24需求12000320002500036000250003000018000每种发电机都有一个最大发电能力,当接入电网时,其输出功率不应低于某一最小输出功率。所有发电机都存在一个启动本钱,以与工作于最小功率状态时的固定的每小时本钱,并且如果功率高于最小功率,如此超出局部的功率每兆瓦每小时还存在一个本钱,即边际本钱。这些数据均列于表2中。表2:发电机情况可用数量最小输出功率MW最大输出功率MW固定本钱元/小时每兆瓦边际本钱元/小时启动本钱型号110750175022505000型号241000150018001600型号381200200037502400型号431800350048001200只有在每个时段开始时才允许启动或关闭发电机。与启动发电机不同,关闭发电机不需要付出任何代价。问题1 在每个时段应分别使用哪些发电机才能使每天的总本钱最小,最小总本钱为多少?问题2 如果在任何时刻,正在工作的发电机组必须留出20%的发电能力余量,以防用电量突然上升。那么每个时段又应分别使用哪些发电机才能使每天的总本钱最小,此时最小总本钱又为多少?2. 模型假设假设1:调整发电机功率没有本钱假设2:发电机生产的电量在传输过程中没有损耗假设3:忽略发电机启动的时间假设4:发电机的功率在时段初调整好后在那个时段内保持不变3.符号说明符号符号说明型号j发电机在第i个时间段的总功率型号j发电机的总数量单个型号j发电机的最小功率单个型号j发电机的最大功率第i个时间段的时间型号j发电机每小时的固定本钱型号j发电机每兆瓦边际本钱型号j发电机的启用本钱第i个时间段的用电需求量型号j发电机在第i个时间段的使用数量,式中代表向下取整型号j发电机在第i-1个时间段的使用数量,式中代表向下取整第i时段型号为j的发电机的平均输出功率第i时段型号为j的发电机的数量此题研究的是电力生产中在满足每日电力需求的条件下,使每日的总本钱达到最小的数学建模问题。针对问题一:从以下三方面来分析(1) 对条件的分析:从的条件来看,此题将一天分为了七个时间段,在每一个时间段都有对应的电力需求量。为了满足每日的电力需求,有四种型号的发电机可供使用,每种型号的发电机都其可用数量、最小输出功率、最大输出功率、固定本钱、每兆瓦边际本钱、启用本钱。要使总本钱达到最小,如此问题的目标函数就是总本钱函数。(2) 对目标函数的分析:总本钱由三个指标组成,即固定总本钱、边际总本钱、启动总本钱。分别对每个指标进展分析。固定总本钱为第i个时间段的时间、型号j发电机在第i个时间段的数量、型号j发电机每小时的固定本钱这三者之积的累积和。边际总本钱为第i个时间段的时间、型号j发电机在第i个时间段超出此时间段最小总功率的功率、型号j发电机每兆瓦边际本钱这三者之积的累积和。启动总本钱为型号j发电机启动数量和型号j发电机的启动本钱之积的累积和。 3对约束条件的分析:对机型j发电机在第i个时间段总功率的约束有两个。一是假如机型j发电机在第i个时间段不使用,如此机型j发电机在第i个时间段的总功率为零;假如机型j发电机在第i个时间段使用,如此机型j发电机在第i个时间段的总功率要满足大于等于单个机型j发电机的最小输出功率且小于等于全部机型j发电机最大输出功率之和;二是四种机型的发电机在第i个时间段生产的总功率要满足大于等于第i个时间段的用电量需求。针对问题二:题目要求在任何时刻,正在工作的发电机组必须留出20%的发电能力余量,以防用电量突然上升,即发电机组在第i个时间段所能发出的最大总功率的80%要大于等于该时段的用电需求。针对问题一我们建立了模型一该模型是为了解决电力生产中,在满足每日电力需求的条件下,用四类不同型号的发电机在一天的七个时段进展电力生产,使总本钱达到最小的问题。总本钱由以下三项指标组成:指标一:固定总本钱指标二:边际总本钱指标三:启用总本钱 为了使总本钱达到最小,我们建立了如下的目标函数: 1假如机型j发电机在第i个时间段不使用,如此机型j发电机在第i个时间 段的总功率为零;假如机型j发电机在第i个时间段使用,如此机型j发电 机在第i个时间段的总功率要满足大于等于单个机型j发电机的最小输 出功率且小于等于全部机型j发电机最大输出功率之和。据此,我们建 立了如下约束条件: 其中=1,2,7=1,2,3,4 2四种机型的发电机在第i个时间段生产的总功率要满足大于等于第i 个时间段的用电量需求。据此,我们建立如下约束条件: 其中=1,2,7=1,2,3,46.1.3综上所述,得到问题一的最优化模型 我们用Lingo软件求解这个模型,对于这个约束条件,Lingo软件不能直接处理,因此,我们先用分支定界法将此条件改为,然后用Lingo软件求解,分析计算结果发现有的时段的某型号发电机输出功率小于该型号发电机的最小功率,故对进展调整,调整后得到满足约束条件的最低总本钱为146.9210万元。根据Lingo软件计算得到的第i时段型号为j的几个发电机发出的总功率,然后用Matlab软件以总功率除以该型号单个发电机的最大输出功率,然后向正无穷方向取整,得到第i时段型号为j的发电机的数量。各个时段各种型号几个发电机发出的总功率与对应的发电机数量如下表一所示:表一时 段 型 号型号1型号2型号3型号4总功率数量总功率数量总功率数量总功率数量0-6006000460003006-926000416000839-1226000480012-1436000416000810500314-1830002600041600080018-22160004160008322-24004700根据问题一的模型,我们已经求出了在满足每日电力需求的条件下,用四类不同型号的发电机在一天的七个时段进展电力生产,使总本钱达到最小,而问题二要求在任何时刻,正在工作的发电机组必须留出20%的发电能力余量,以防用电量突然上升。故在第一问的目标函数和约束条件保持不变的情况下,应再增加一个约束条件,即第i个时段发电机组所能输出地最大功率的80%应大于第i个时段的用电需求。列出目标函数和约束条件如下:将目标函数和约束条件用矩阵的形式表示出来,然后用Matlab软件求解,求解结果中有的不为整数,故用分支定界法进展调整,调整后得到满足约束条件的最小总本钱为每天万元。各个时段各种型号的发电机发出的平均功率和对应的数量见下表: 表 二时段型号型号1型号2型号3型号4平均功率数量平均功率数量平均功率数量平均功率数量0-67503420002006-992051500420008180039-12750611254200080012-141075815004200081800314-18750611254200080018-22750414004200081800322-247503100046007. 模型的评价、改良与推广优点:1根据题目的要求我们确立了三个指标,即固定总本钱、边际总 本钱、启用总本钱,以上三项总本钱之和即为总本钱,通过对 三项总本钱的逐项分析,建立了最优的目标函数。 2对于约束条件的建立,我们综合考虑了各种情况,使约束条件 达到了具体化全面化。 3以每个时段每种型号的几个发电机发出的总功率为变量,将56 个未知数缩减为28个,将约束条件中的非线性约束转化为线性 约束,将整数规划转化为非整数规划,并提高了运行速度,缺点:我们用总功率来表示数量,通过总功率来求数量,而此数量的结果不 能在LINGO中直接表示出来,需要另外通过其他软件来得出结果,使建模工作复杂化(1) 所建模型是在发电机无故障的条件下建立的,如果考虑发电机随使用 时间的增加,在不同的时间段譬如以月为时间段单位需要不同的 检修费用,再把检修费用平分到每一天,将此检修费用也算作总本钱 的一局部。增加约束条件,使模型更精准优化。3所建模型假设了发电机的功率在时段初调整好后在那个时段内保持不 变,如果在每个时段,发电机的功率在满足约束条的情况下为可变的, 如此可以根据实际情况做不同调整,使模型更实际化。我们建的模型不仅适用于电力生产,也适用于其它方面的生产,也可用于产销平衡问题,选址问题,值班问题等等。8. 参考文献1赵静,但琦,数学建模与数学实验,高等教育,2008.2楼顺天,姚假如玉,沈俊霞,MATLAB7.x程序设计语言,某某电子科技大学出 版社,2008.9. 附录附录一:问题一中发电机组各时段的功率和开启的数量时 段型号型号1型号2型号3型号4总功率数量总功率数量总功率数量总功率数量0-6006000460003006-926000416000839-1226000480012-1436000416000810500314-1830002600041600080018-22160004160008322-24004700附录二:问题二中发电机组各时段的功率和开启的数量表 二时段型号型号1型号2型号3型号4总功率数量总功率数量总功率数量总功率数量0-680014800464004006-910400848004112007560029-1290007480041120070012-14112008480041280087200314-1890007480041120070018-2284006480041120075600222-2400480049600636002附录三:模型一调整前所用程序sets:!电力生产问题;shiduan/1.7/:s,x;xinghao/1.4/:n,p,q,g,b,v;link(shiduan,xinghao):c;endsetsdata:!各个时段的小时数;s=6,3,3,2,4,4,2;!各个时段的用电需求;x=12000,32000,25000,36000,25000,30000,18000;!可用数量;n=10,4,8,3;!最小输出功率;p=750,1000,1200,1800;!最大输出功率;q=1750,1500,2000,3500;!固定本钱;g=2500,1800,3750,4800;!边际本钱;b=2.7,2.2,1.8,3.8;!启动本钱;v=5000,1600,2400,1200;enddata!目标函数floorc(i,j)/q(j)+0.999999)为第i时段型号为j的发电机的数量if函数用来判断:当i=1时,i-1=7;min=sum(link(i,j):s(i)*(floor(c(i,j)/q(j)+0.999999)*g(j)+(c(i,j)-(floor(c(i,j)/q(j)+0.999999)*p(j)*b(j)+(sign(floor(c(i,j)/q(j)+0.999999)-(floor(if(i #ge# 2,c(i-1,j),0)/q(j)+0.999999)+1)/2*(if(i #ge# 2,floor(c(i,j)/q(j)+0.999999)-(floor(c(i-1,j)/q(j)+0.999999),floor(c(1,j)/q(j)+0.999999)*v(j);!第i时段的总发电量大于该时段的用电需求;for(shiduan(i): sum(xinghao(j): c(i,j)=x(i);!型号为j的发电机发出的总功率小于或等于该型号几个发电机所能发出的最大功率;for(link(i,j):c(i,j)=0);End程序运行结果Feasible solution found. Objective value: 1463554. Total solver iterations: 377 Variable Value Reduced Cost Row Slack or Surplus Dual Price附录四:模型一调整后所用程序 sets:!电力生产问题;shiduan/1.7/:s,x;xinghao/1.4/:n,p,q,g,b,v;link(shiduan,xinghao):c;endsetsdata:!各个时段的小时数;s=6,3,3,2,4,4,2;!各个时段的用电需求;x=12000,32000,25000,36000,25000,30000,18000;!可用数量;n=10,4,8,3;!最小输出功率;p=750,1000,1200,1800;!最大输出功率留有20%余量;q=1400,1200,1600,2800;!固定本钱;g=2500,1800,3750,4800;!边际本钱;b=2.7,2.2,1.8,3.8;!启动本钱;v=5000,1600,2400,1200;enddata!目标函数floorc(i,j)/q(j)+0.999999)为第i时段型号为j的发电机的数量if函数用来判断:当i=1时,i-1=7;min=sum(link(i,j):s(i)*(floor(c(i,j)/q(j)+0.999999)*g(j)+(c(i,j)-(floor(c(i,j)/q(j)+0.999999)*p(j)*b(j)+(sign(floor(c(i,j)/q(j)+0.999999)-(floor(if(i #ge# 2,c(i-1,j),0)/q(j)+0.999999)+1)/2*(if(i #ge# 2,floor(c(i,j)/q(j)+0.999999)-(floor(c(i-1,j)/q(j)+0.999999),floor(c(1,j)/q(j)+0.999999)*v(j);!第i时段的总发电量大于该时段的用电需求;for(shiduan(i): sum(xinghao(j): c(i,j)=x(i);!型号为j的发电机发出的总功率小于或等于该型号几个发电机所能发出的最大功率;for(link(i,j):c(i,j)=0);c(3,4)=0;c(5,4)=0;c(7,1)=0;c(6,1)=750;EndLocal optimal solution found. Objective value: 1575426. Objective bound: 1541773. Extended solver steps: 4 Total solver iterations: 685024 Variable Value Reduced Cost Row Slack or Surplus Dual Price附录五:问题一中用Matlab软件求第i个时间段型号j发电机的数量的程序c=0 6000 6000 0 3047.908 6000 15952.09 0 3500.002 6000 16000 10500 3000 6000 16000 0 0 5285.470 12714.83 0;%c(i,j)为第i时段型号为j的几个发电机发出的总功率q=1750 1500 2000 3500; =repmat(q,7,1);% i,j为型号为j的单个发电机所能发出的最大功率n=10 4 8 3;nn=repmat(n,7,1);%nni,j为型号为j的发电机的可用数量N=ceil(c./ )%Ni,j为第i时段型号为j的发电机的数量N=nn%Ni,j应小于nni,j,故运算结果应该为所有元素均为1的7行4列的矩阵,此运算用于检验程序运行结果N = 0 4 3 0 2 4 8 3 2 4 8 0 3 4 8 3 2 4 8 0 1 4 8 3 0 4 7 0ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1附录六:问题二中用Matlab软件求第i个时间段型号j发电机的数量的程序c=800 4800 6400 010400 4800 11200 56009000 4800 11200 011200 4800 12800 72009000 4800 11200 08400 4800 11200 56000 4800 9600 3600;%c(i,j)为第i时段型号为j的几个发电机发出的总功率q=1400 1200 1600 2800; =repmat(q,7,1);% i,j为型号为j的单个发电机所能发出的最大功率n=10 4 8 3;nn=repmat(n,7,1);%nni,j为型号为j的发电机的可用数量N=ceil(c./ )%Ni,j为第i时段型号为j的发电机的数量N=nn%Ni,j应小于nni,j,故运算结果应该为所有元素均为1的7行4列的矩阵,此运算用于检验N = 1 4 4 0 8 4 7 2 7 4 7 0 8 4 8 3 7 4 7 0 6 4 7 2 0 4 6 2ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1M文件总本钱:zchbfunction f=zchb(x)G=ones(1,28);h=2250 1800 3750 4800;H=repmat(h,7,1);i=750 1000 1200 1800;I=repmat(i,7,1);j=2.7 2.2 1.8 3.8;J=repmat(j,7,1);K=6 6 6 6 3 3 3 3 3 3 3 3 2 2 2 2 4 4 4 4 4 4 4 4 2 2 2 2;l=5000 1600 2400 1200;L=repmat(l,7,1);xxx=zeros(28,1);xxx(:)=x(1:28);nnn=zeros(28,1);nnn(:)=x(29:56);u=1 1 1 1;s=zeros(24,1);s(:)=x(33:56);t=zeros(24,1);t(:)=x(29:52);xsh=(sign(s-t)+1)/2;XSh=cat(1,u,xsh);v=x(29) x(30) x(31) x(32);shlch=cat(1,v,s-t);f=det(G*(nnn.*(H+(xxx-I).*J).*K+L.*XSh.*shlch);M文件用电需求:ydxq:function g,ceq = ydxq(x)%非线性约束条件xxx=zeros(28,1);xxx(:)=x(1:28);xxxx=(reshape(xxx,4,7);nnn=zeros(28,1);nnn(:)=x(29:56);nnnn=reshape(nnn,4,7);xq=12000 32000 25000 36000 25000 30000 18000;a=eye(7);b=ones(7,1);c=1750 1500 2000 3500;cc=(repmat(c,1,7);g=xq-xxxx*nnnn.*a*b;xq-0.8*cc*nnnn.*a*b;ceq=;主程序:p=750;1000;1200;1800;pp=repmat(p,7,1);nnmin=0;0;0;0; 0;0;0;0; 0;0;0;0; 0;0;0;0; 0;0;0;0; 0;0;0;0; 0;0;0;0;VLB=cat(1,pp,nnmin);q=1750;1500;2000;3500; =repmat(q,7,1);nnmax=10;4;8;3;10;4;8;3;10;4;8;3;10;4;8;3;10;4;8;3;10;4;8;3;10;4;8;3;VUB=cat(1, ,nnmax);nmax=10;4;8;3;t=repmat(nmax,7,1);x0=cat(1, ,t);x,fval,exitflag,output=fmincon(zchb,x0,VLB,VUB,ydxq)xx=zeros(4,7);nn=zeros(4,7);xx(:)=x(1:28)nn(:)=x(29:56)程序运行结果fval = 1.4975e+006output = iterations: 97 funcCount: 5646 lssteplength: 1 algorithm: medium-scale: SQP, Quasi-Newton, line-search firstorderopt: 5.6274e+003 message: 1x146 charxx = 1.0e+003 *nn = -0.0000 3.0000 -0.0000 3.0000 0.0000 3.0000 0附录七:模型二调整后所用程序主程序:p=750;1000;1200;1800;pp=repmat(p,7,1);nnmin=3;4;2;0; 5;4;8;3; 6;4;8;0; 8;4;8;3; 6;4;8;0; 4;4;8;3; 3;4;6;0;VLB=cat(1,pp,nnmin);q=1750;1500;2000;3500; =repmat(q,7,1);nnmax=10;4;8;3; 10;4;8;3; 10;4;8;3; 10;4;8;3; 10;4;8;3; 10;4;8;3; 10;4;8;3;VUB=cat(1, ,nnmax);nmax=10;4;8;3;t=repmat(nmax,7,1);x0=cat(1, ,t);x,fval,exitflag,output=fmincon(zchb,x0,VLB,VUB,ydxq)xx=zeros(4,7);nn=zeros(4,7);xx(:)=x(1:28)nn(:)=x(29:56)程序运行结果:fval = 1508835exitflag = 1output = iterations: 48 funcCount: 2736 lssteplength: 1 algorithm: medium-scale: SQP, Quasi-Newton, line-search message: 1x834 charxx = 1.0e+003 *nn = -0.0000 3.0000 -0.0000 3.0000 0.0000 3.0000 0 29 / 29
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!