算法开始 编码 产生初始种群 计算适应值函数 适应值定标 满足终止条件? 否 是 选择 交叉 变异 确定最优解 解码 输出最优解 算法结束
Step1. 针对机组组合问题的矩阵实数编码
本文以要安排发电机组起停计划作为遗传算法中的个体,采用实数矩阵形式进行编码。其具体形式为
10
Gk??V1,V2,...,Vt,...,VT???R1,R2,...,Ri,...,Rn?T?p11?p?21?????pi1?????pn1p12?p22??pi2????p1t?p2t??pit????pn2?pnt?p1T?p2T????? (15) piT????pnT??其中:Gk 为遗传种群中的第k个个体
pit为编码矩阵中的第i行第t列元素,含义为发电机组i在t时段的发电出力 Ri为编码矩阵中的第i个行向量,含义为发电机组i在发电计划制定周期内的出力过程
含义为t时段内发电机组间的负荷分配情况 Vt为编码矩阵中的第t个列向量,
发电机组的运行状态取决于矩阵中元素的具体取值,即根据机组在某时段中的出力大小来确定启停状态,具体表达式为
?0,uit???1,Step2. 遗传种群初始化
pit?0 (16) 其他遗传种群初始化时,按编码矩阵中列向量的顺序进行。以Gk中Vt为例,初始过程如下:
(
(2)计算百分比系数数组Per
per??per1,per2,...,peri,...,pern? (17)
其中:1)生成服从均匀分布的随机数数组
n. . , (18) R=?r1,r2,...,ri,...,rn? i?1,2,.其中:ri为在发电机组i最大最小出力之间随机生成的正数
n , i?1,2,...
(3)初始化各台发电机组的出力,即初始化Vt
Vt??p1t,p2t,...,pit,...,pnt? (19)
11
T
其中:pit?perLn ,ijt i?1,2,...Ljt为负荷j在t时段的负荷量
Step3. 个体调整方法
在进行个体调整时按列向量的先后顺序进行。以个体Gk中Vt为例,具体调整措施如下:
(1)根据机组组合问题对精度的要求,对Vt列中的各个元素保留
(2)调整Vt列中的元素取值,使其满足相应发电机组出力范围约束。其方法如下:
?pimax,?p,?1pit??it?pimin,??0,pit?pimaxpimin?pit?pimax (20)
?pimin?pit?pimax其他其中:pit为调整前发电机组i在t时段的发电出力
pit1为调整后发电机组i在t时段的发电出力
?为介于0、1之间的常数,本文取??0.6 pimin发电机组i最小稳定运行出力; pimax发电机组i最大出力;
(3)调整Vt列中的元素取值,使其满足相应发电机组的增出力和降出力约束约束。具体如下:
pit2?pit?1?rri,pit1?pit?1?rri???pit?1?rdi,pit1?pit?1?rdi (21) ?p1,p?r?p1?p?ritit?1ri?itit?1di其中:pit1为前一步调整完成的发电机组i在t时段的发电出力
pit2为此步调整后的发电机组i在t时段的发电出力 rdi为机组i最大减出力 rri为机组i最大增出力
(4)调整发电机组启停状态使其满足系统备用约束。具体调整方法如下:
12
当
?u?piti?1nmiax时,增开发电机组,令新投入运行的发电机组发电出力为?p?i?Rtt其最小出力,直至满足系统备用约束为止。其中,Rt为t时段系统备用要求
(5)经过上述三步调整后,Vt列中所有元素的总和可能不等于t时段中的系统总负荷。因此要进行负荷分配的调整。具体的调整办法为:当?uitpit??Ljt时,通过增加
i?1j?1nm运行发电机组出力来满足负荷平衡约束;反之,若?uitpit??Ljt,则降低运行发电机
i?1j?1nm组的出力。此步调整中,只能在发电机组的最大出力允许范围内进行调整,不能改变机
组的运行状态。
(6)算法趋于收敛时,若发电机组的出力过程不满足最小运行、停运时间约束条件,则通过调整违反约束发电机组的运行状态满足此项约束条件,即:
ui?t?1?ui?t?1??uit???uj?t?Ti1t?1t?1ij?Ti1时,延长发电机组i的运行时间;
uituit?ui?t?1????采用将发电机组i违反约束的全部停运状态转变为运行1?uij?Ti2时,
j?t?Ti2状态的方式来满足约束条件,并令相应的出力为机组i的最小出力。
其中:Ti1为机组i最小运行时间;
Ti2为机组i最小停运时间;
Step4. 适度函数的选取
采用个体调整方法后,在求解的过程中只有发电机组的最小运行、停运时间约束条
件可能得不到满足。为了加快算法收敛,本文的适度函数采用如下形式:
fitness(Gk)?A(F??m?Si)in (22)
其中:Si 为发电机组i违反最小运行或停运时间约束条件时的惩罚量,本文取Si为机组i的启动成本;?为惩罚因子,本文取??2;m为违反此项约束的次数;A为正常数,本文取A?1.0?106。其含义为:发电机组i违反1次最小运行时间或停运时间约束,便以机组i的??2倍的启动成本Si进行惩罚。
Step5. 选择-复制
13
(1)群体中各个体的选择概率
选择概率的计算公式为:
P(xi)?fitness(xi)n (23)
?fj?1itness(xj)其中:P(xi)为第i个体的选择概率
xi为第i个个体,即本文中机组i各个时段的发电出力
(2)赌轮选择法
赌轮选择法用下面的子过程来模拟:
① 在?0,1?区间内产生一个均匀分布的随机数r; ② 若r?q1,则染色体x1被选中;
③ 若qk?1?r?qk(2?k?n), 则染色体xk被选中。 其中qi称为染色体xi(i?1,2,...,n)的积累概率, 其计算公式为
qi??P(xj) (24)
j?1iStep6. 交叉
通过Step5.在父代中选择交配个体后,将准备进行交叉操作的父代个体表示为
C1C1C1C1C1?GC1???V1,V2,...,Vt,...,VT?? (25)
C2C2C2C2C2C2?G???V1,V2,...,Vt,...,VT??交叉操作产生的个体记为C1、C2,保留到子代中的个体记为O1、O2。本文的交叉操作是在2个父代个体奇数列与偶数列之间进行的。具体操作过程为:
(1)生成随机数?,??(0,1);生成随机交叉位j,1?j?T。 (2)交叉操作生成个体D1、D2,其表达式为
C1C1C1C1C2C1C1?D1??V,V,...,V,(1??)V??V,V,...,V12j?1jjj?1T?? (26)
C2C2C2C1C2C2C2D2???V1,V2,...,Vj?1,?Vj?(1??)Vj,Vj?1,...,VT??(3)对交叉生成的个体依照Step3.个体调整方法进行个体调整,然后计算出D1、D2的适度值。
(4)采用局部锦标赛选择法在父代个体和交叉产生的个体间进行子代选择,具体
14