第六题答案

  • 格式:doc
  • 大小:253.50 KB
  • 文档页数:12

发电机安排计划一、问题提出(略).二、问题假设1. 各发电机在需要时都能够正常运行;2.发电机的启动与停止可以瞬间完成。

三、符号说明A:第i类发电机的总台数,i=1,2,3,4表示四类发电机;;iC:第i类发电机在最低功率级以上每兆瓦小时需付出的费用(元/h/MW),ii=1,2,3,4表示四类发电机;D:第i类发电机运用在最低功率级上每小时的费用(元/h);iE:第i类发电机的启动费用;iF:第j个时间段规定的需要量,j=1,2,…,7是问题中给出的全天7个时j间段;m:第i类发电机规定的最小输出量;iM:第i类发电机规定的最大输出量;it:第j个时间段的时间长度;jn:第j个时间段中运转的第i类发电机数量,整数变量;ijs:第j个时间段中所新启动的第i类发电机的台数,整数变量;ijx:第j个时间段中第i类发电机送出的总输出功率,连续变量;ijz: 各发电机每天的总费用。

四、问题分析与建模1.问题分析本问题是希望建立一个数学模型来解决若干发电机在一天中7个时段各自出力多少,即使用多少台发电机发电,使得总的成本最低。

由于供电是一个不间断的进行,因此在考虑此问题时应该注意两天之间的衔接,体现在此处就是第一个时段(午夜12点至上午6点)与第7个时段(晚上10点至12点)之间的衔接,我们将它与其它时间段之间的衔接同样处理,此过程可以用图1表示。

在第j个时段内,第i 类的发电机中有ij n 台在工作,由此会产生的费用有三项:(1) 为满足需要启动新的发电机时产生的费用i E ,新启动的第i 类发电机台数为ij s ,则该时段内启动新发电机所产生的费用为 i ij E s ;(2) 每台发电机运行在最低功率i m 时每小时产生的费用i D ,则该时段内产生的此项费用为 i ij j D n t ;(3) 如果发电机输出功率超过最低功率级,每小时每兆瓦要产生一定的费用i C ,超出的功率可表示为 ij i ij x m n -,则该时段内产生的此项费用为()i ij i ij j C x m n t -。

因此,各发电站全天产生的总费用即为,,,()i ij i ij j i j ij i ij i ji ji jz C x m n t D t n E s =-++∑∑∑ (1.1)我们的目标就是使这个总费用最小。

在每个时段,发电机在工作过程中还应该满足相应的约束,例如供电需求,每类发电机的发电能力约束,发电机数量约束等,具体讲,有下面几种类型的约束:(1)每个时段不需满足供电需要,第j 个时段第i 类发电机的总输出功率为ij x ,则在第j 个时段三类发电机的总的输出功率为41ij i x =∑,它应该大于等于供电需要 j F ,即有41ijj i xF =≥∑ (1.2).第2时段第6时段 图1 运转示意图情况下得到满足,即只能调整现有运行的发电机的输出功率来得到满足,换句话讲当前运行的每台发电机的最大输出功率之和41i ij i M n =∑应该大于等于j F ,即有41iijj i M nF =≥∑ (1.3)【注】:此约束条件可以由(1)和(3)联合得到,但考虑到第三问,此处仍列出。

(3)每类发电机的输出功率一定要在发电机安全工作的范围内:,1,2,3,4i ij ij i ij m n x M n i ≤≤= (1.4)(4)可供使用的发电机总数满足条件:0ij i n A ≤≤ (1.5)(5)在时段j 中新启动的发电机台数必须等于发电机增加的台数:,,1,,1,,,1,2,3,4;1,2,3,4,5,6,70,i j i j i j i j i jn n n n s i j others ---≥⎧===⎨⎩ (1.6)式中ij n 为在周期j 中所起动的发电机台数(当j=1时,周期j-1取7)。

2.数学模型根据上述分析,我们可以建立原问题的优化数学模型:,,,4141,,1,,1,1,2,3,4;1,2,...,7min ()..,1,2,...,7,1,2,...,7,1,2,3,4;1,2,...,70,,0,i ij i ij j i j ij i ij i j i j i j ij j i i ij j i i ij ij i ij ij i i j i j i j i j i j i j z C x m n t D t n E s s t x F j M n F j m n x M n i j n A n n n n s other ==--===-++≥=≥=≤≤==≤≤-≥=∑∑∑∑∑,1,2,3,4;1,2,3,4,5,6,7i j s ⎧⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧⎪==⎨⎪⎩⎪⎩(2.1) 这是一个混合整数规划问题。

五、模型求解1.求解方法在上述模型中,由于,,1,,1,,,1,2,3,4;1,2,...,70,i j i j i j i j i jn n n n s i j others ---≥⎧===⎨⎩,是一个分段函数,因此要做一定的变换将其表示成一个函数。

根据ij s 的定义,可以将其表示:1()s n n n n =-+-,也可以采用,0i js 。

为了求解此模型,可以采用分支定界法或者割平面法(参见[1]),该方法能够求出局部最优解。

在Lingo软件中有关于此类算法的实现方法,因此我们直接利用Lingo软件进行求解,Lingo程序及程序输出结果参见附录1。

2.计算结果2.1 问题1的计算结果根据程序的输出结果,我们知道个发电站每天的总成本最低为:1446990元。

而在各个不同的时段上实际运行的发电机数量见下表1。

表1 一天中各个时段运行的不同种类的发电机的数量注:表中数量的单位为:台;总功率的单位为:MW。

2.2 问题2的计算结果对于问题2,需要将模型中的参数Ai赋予新的值,重新计算即可。

根据程序的输出结果,我们知道个发电站每天的总成本最低为: 1387795元。

而在各个不同的时段上实际运行的发电机数量见下表1。

表2 一天中各个时段运行的不同种类的发电机的数量注:表中数量的单位为:台;总功率的单位为:MW 。

2.3 问题3的计算结果对于问题3,需要将模型中的约束条件41i ij j i M n F =≥∑改为410.8*i ij j i M n F =≥∑。

重新计算即可。

根据程序的输出结果,我们知道个发电站每天的总成本最低为:-1474625 元。

而在各个不同的时段上实际运行的发电机数量见下表3。

表3 一天中各个时段运行的不同种类的发电机的数量注:表中数量的单位为:台;总功率的单位为:MW 。

六、模型评价与推广(略)。

七、参考文献[1] 唐换文.数学模型引论(第二版).北京:高等教育出版社,2005. [2] Lingo 教程.北京:清华大学出版社,2008八、附录附录1 求解程序及输出结果model :links(elect,timepiece):num,svar,x;endsetsmin=@sum(links(i,j):overmoney(i)*(x(i,j)-mincap(i)*num(i,j))*time(j)) +@sum(links(i,j):lowcapmoney(i)*num(i,j)*time(j))+@sum(links(i,j):beg inmoney(i)*svar(i,j));@for(timepiece(j):@sum(elect(i):x(i,j))>=timetotalcap(j));@for(links(i,j): mincap(i)*num(i,j)<=x(i,j));@for(links(i,j): maxcap(i)*num(i,j)>=x(i,j));@for(timepiece(j):@sum(elect(i):maxcap(i)*num(i,j))>=timetotalcap(j)) ;! 方案1;!@for(elect(i):svar(i,1)=@smax(0,num(i,1)-num(i,7)));!@for(elect(i):svar(i,2)=@smax(0,num(i,2)-num(i,1)));!@for(elect(i):svar(i,3)=@smax(0,num(i,3)-num(i,2)));!@for(elect(i):svar(i,4)=@smax(0,num(i,4)-num(i,3)));!@for(elect(i):svar(i,5)=@smax(0,num(i,5)-num(i,4)));!@for(elect(i):svar(i,6)=@smax(0,num(i,6)-num(i,5)));!@for(elect(i):svar(i,7)=@smax(0,num(i,7)-num(i,6)));!方案2!@for(elect(i):svar(i,1)>=num(i,1)-num(i,7));!@for(elect(i):svar(i,2)>=num(i,2)-num(i,1));!@for(elect(i):svar(i,3)>=num(i,3)-num(i,2));!@for(elect(i):svar(i,4)>=num(i,4)-num(i,3));!@for(elect(i):svar(i,5)>=num(i,5)-num(i,4));!@for(elect(i):svar(i,6)>=num(i,6)-num(i,5));!@for(elect(i):svar(i,7)>=num(i,7)-num(i,6));!@for(links(i,j):svar(i,j)>=0);!方案3;@for(elect(i):svar(i,1)=((num(i,1)-num(i,7))+@abs(num(i,1)-num(i,7))) *0.5);@for(elect(i):svar(i,2)=((num(i,2)-num(i,1))+@abs(num(i,2)-num(i,1))) *0.5);@for(elect(i):svar(i,3)=((num(i,3)-num(i,2))+@abs(num(i,3)-num(i,2))) *0.5);@for(elect(i):svar(i,4)=((num(i,4)-num(i,3))+@abs(num(i,4)-num(i,3))) *0.5);@for(elect(i):svar(i,5)=((num(i,5)-num(i,4))+@abs(num(i,5)-num(i,4))) *0.5);@for(elect(i):svar(i,6)=((num(i,6)-num(i,5))+@abs(num(i,6)-num(i,5))) *0.5);@for(elect(i):svar(i,7)=((num(i,7)-num(i,6))+@abs(num(i,7)-num(i,6))) *0.5);@for(links(i,j):@gin(svar(i,j)));!@for(links(i,j):@gin(x(i,j)));data:mincap=750 1000 1200 1800;maxcap=1750 1500 2000 3500;maxnum=10 4 8 3;beginmoney=5000 1600 2400 1200;overmoney=2.7 2.2 1.8 3.8;lowcapmoney=2250 1800 3750 4800;time=6 3 3 2 4 4 2;timetotalcap=12000 32000 25000 36000 25000 30000 18000; enddataend#方案2输出结果Global optimal solution found at iteration: 761Objective value: 1446990.Variable Value Reduced Cost MINCAP( 1) 750.0000 0.000000 MINCAP( 2) 1000.000 0.000000 MINCAP( 3) 1200.000 0.000000 MINCAP( 4) 1800.000 0.000000 MAXCAP( 1) 1750.000 0.000000 MAXCAP( 2) 1500.000 0.000000 MAXCAP( 3) 2000.000 0.000000 MAXCAP( 4) 3500.000 0.000000 MAXNUM( 1) 10.00000 0.000000 MAXNUM( 2) 4.000000 0.000000 MAXNUM( 3) 8.000000 0.000000 MAXNUM( 4) 3.000000 0.000000 BEGINMONEY( 1) 5000.000 0.000000 BEGINMONEY( 2) 1600.000 0.000000 BEGINMONEY( 3) 2400.000 0.000000 BEGINMONEY( 4) 1200.000 0.000000 OVERMONEY( 1) 2.700000 0.000000 OVERMONEY( 2) 2.200000 0.000000 OVERMONEY( 3) 1.800000 0.000000 OVERMONEY( 4) 3.800000 0.000000 LOWCAPMONEY( 1) 2250.000 0.000000 LOWCAPMONEY( 2) 1800.000 0.000000 LOWCAPMONEY( 3) 3750.000 0.000000 LOWCAPMONEY( 4) 4800.000 0.000000 TIME( 1) 6.000000 0.000000 TIME( 2) 3.000000 0.000000TIMETOTALCAP( 1) 12000.00 0.000000 TIMETOTALCAP( 2) 32000.00 0.000000 TIMETOTALCAP( 3) 25000.00 0.000000 TIMETOTALCAP( 4) 36000.00 0.000000 TIMETOTALCAP( 5) 25000.00 0.000000 TIMETOTALCAP( 6) 30000.00 0.000000 TIMETOTALCAP( 7) 18000.00 0.000000 NUM( 1, 1) 3.000000 3600.000 NUM( 1, 2) 3.000000 675.0000 NUM( 1, 3) 3.000000 675.0000 NUM( 1, 4) 3.000000 -3400.000 NUM( 1, 5) 3.000000 900.0000 NUM( 1, 6) 3.000000 900.0000 NUM( 1, 7) 3.000000 1200.000 NUM( 2, 1) 4.000000 -2400.000 NUM( 2, 2) 4.000000 -3450.000 NUM( 2, 3) 4.000000 -3450.000 NUM( 2, 4) 4.000000 -5600.000 NUM( 2, 5) 4.000000 -4600.000 NUM( 2, 6) 4.000000 -4600.000 NUM( 2, 7) 4.000000 -800.0000 NUM( 3, 1) 2.000000 4740.000 NUM( 3, 2) 8.000000 -630.0000 NUM( 3, 3) 8.000000 -630.0000 NUM( 3, 4) 8.000000 -4820.000 NUM( 3, 5) 8.000000 -840.0000 NUM( 3, 6) 8.000000 -840.0000 NUM( 3, 7) 5.000000 1580.000 NUM( 4, 1) 0.000000 -12240.00 NUM( 4, 2) 3.000000 -180.0000 NUM( 4, 3) 0.000000 -6120.000 NUM( 4, 4) 3.000000 -4080.000 NUM( 4, 5) 0.000000 -8160.000 NUM( 4, 6) 2.000000 -240.0000 NUM( 4, 7) 0.000000 -4080.000 SVAR( 1, 1) 0.000000 5000.000 SVAR( 1, 2) 0.000000 5000.000 SVAR( 1, 3) 0.000000 5000.000 SVAR( 1, 4) 0.000000 5000.000 SVAR( 1, 5) 0.000000 5000.000 SVAR( 1, 6) 0.000000 5000.000 SVAR( 1, 7) 0.000000 5000.000 SVAR( 2, 1) 0.000000 1600.000 SVAR( 2, 2) 0.000000 1600.000 SVAR( 2, 3) 0.000000 1600.000SVAR( 3, 4) 0.000000 2400.000 SVAR( 3, 5) 0.000000 2400.000 SVAR( 3, 6) 0.000000 2400.000 SVAR( 3, 7) 0.000000 2400.000 SVAR( 4, 1) 0.000000 1200.000 SVAR( 4, 2) 3.000000 1200.000 SVAR( 4, 3) 0.000000 1200.000 SVAR( 4, 4) 3.000000 1200.000 SVAR( 4, 5) 0.000000 1200.000 SVAR( 4, 6) 2.000000 1200.000 SVAR( 4, 7) 0.000000 1200.000 X( 1, 1) 2250.000 0.000000 X( 1, 2) 4600.000 0.000000 X( 1, 3) 3000.000 0.000000 X( 1, 4) 5250.000 0.000000 X( 1, 5) 3000.000 0.000000 X( 1, 6) 4400.000 0.000000 X( 1, 7) 2250.000 0.000000 X( 2, 1) 5750.000 0.000000 X( 2, 2) 6000.000 0.000000 X( 2, 3) 6000.000 0.000000 X( 2, 4) 6000.000 0.000000 X( 2, 5) 6000.000 0.000000 X( 2, 6) 6000.000 0.000000 X( 2, 7) 5750.000 0.000000 X( 3, 1) 4000.000 0.000000 X( 3, 2) 16000.00 0.000000 X( 3, 3) 16000.00 0.000000 X( 3, 4) 16000.00 0.000000 X( 3, 5) 16000.00 0.000000 X( 3, 6) 16000.00 0.000000 X( 3, 7) 10000.00 0.000000 X( 4, 1) 0.000000 9.600000 X( 4, 2) 5400.000 0.000000 X( 4, 3) 0.000000 3.300000 X( 4, 4) 8750.000 0.000000 X( 4, 5) 0.000000 4.400000 X( 4, 6) 3600.000 0.000000 X( 4, 7) 0.000000 3.200000Row Slack or Surplus Dual Price1 1446990. -1.0000002 0.000000 -13.2000010 2350.000 0.00000011 750.0000 0.00000012 3000.000 0.00000013 750.0000 0.00000014 2150.000 0.00000015 0.000000 1.00000016 1750.000 0.00000017 2000.000 0.00000018 2000.000 0.00000019 2000.000 0.00000020 2000.000 0.00000021 2000.000 0.00000022 1750.000 0.00000023 1600.000 0.00000024 6400.000 0.00000025 6400.000 0.00000026 6400.000 0.00000027 6400.000 0.00000028 6400.000 0.00000029 4000.000 0.00000030 0.000000 0.00000031 0.000000 3.30000032 0.000000 0.00000033 3350.000 0.00000034 0.000000 0.00000035 0.000000 4.40000036 0.000000 0.00000037 3000.000 0.00000038 650.0000 0.00000039 2250.000 0.00000040 0.000000 -2.20000041 2250.000 0.00000042 850.0000 0.00000043 3000.000 0.00000044 250.0000 0.00000045 0.000000 -1.50000046 0.000000 -1.50000047 0.000000 -3.20000048 0.000000 -2.00000049 0.000000 -2.00000050 250.0000 0.00000051 0.000000 -2.40000052 0.000000 -2.70000060 0.000000 0.00000061 1750.000 0.00000062 0.000000 0.00000063 3400.000 0.00000064 0.000000 0.00000065 3250.000 0.00000066 5750.000 0.00000067 2250.000 0.00000068 1750.000 0.00000069 2250.000 0.00000070 4250.000 0.00000071 3250.000 0.00000072 0.000000 0.00000073 0.000000 0.00000074 3.000000 0.00000075 0.000000 0.00000076 0.000000 0.00000077 0.000000 0.00000078 0.000000 0.00000079 0.000000 0.00000080 0.000000 0.00000081 0.000000 0.00000082 0.000000 0.00000083 3.000000 0.00000084 0.000000 0.00000085 0.000000 0.00000086 0.000000 0.00000087 0.000000 0.00000088 0.000000 0.00000089 0.000000 0.00000090 0.000000 0.00000091 3.000000 0.00000092 0.000000 0.00000093 0.000000 0.00000094 0.000000 0.00000095 0.000000 0.00000096 0.000000 0.00000097 0.000000 0.00000098 3.000000 0.00000099 2.000000 0.000000 100 0.000000 0.000000 101 0.000000 0.000000 102 0.000000 0.000000 103 0.000000 0.000000 104 0.000000 0.000000 105 0.000000 0.000000110 0.000000 0.000000 111 0.000000 0.000000 112 0.000000 0.000000 113 0.000000 0.000000 114 0.000000 0.000000 115 6.000000 0.000000 116 0.000000 0.000000 117 0.000000 0.000000 118 0.000000 0.000000 119 0.000000 0.000000 120 0.000000 0.000000 121 0.000000 0.000000 122 3.000000 0.000000 123 0.000000 0.000000 124 3.000000 0.000000 125 0.000000 0.000000 126 2.000000 0.000000 127 0.000000 0.000000。