算法开始 编码 确定适应值函数 产生初始种群 计算适应值函数 适应值定标 满足终止条件? 否 是 选择 交叉 变异 确定最优解 解码 输出最优解 算法结束
图二 遗传算法流程图
矩阵实数编码遗传算法的描述:
Step1.
针对机组组合问题的矩阵实数编码
10
本文以要安排发电机组起停计划作为遗传算法中的个体,采用实数矩阵形式进行编码。其具体形式为
?p11?p?21?????pi1?????pn1p12p22?pi2?pn2??????p1tp2t?pit?pnt??????p1T??p2T????piT????pnT??Gk??V1,V2,...,Vt,...,VT???R1,R2,...,Ri,...,Rn?T (16)
其中:Gk 为遗传种群中的第k个个体
pit为编码矩阵中的第i行第t列元素,含义为发电机组i在t时段的发电出力
含义为t时段内发电机组间的负荷分配情况 Vt为编码矩阵中的第t个列向量,
Ri为编码矩阵中的第i个行向量,含义为发电机组i在发电计划制定周期内
的出力过程
发电机组的运行状态取决于矩阵中元素的具体取值,即根据机组在某时段中的出力大小来确定启停状态,具体表达式为
?0,uit???1,pit?0其他 (17)
Step2. 遗传种群初始化
遗传种群初始化时,按编码矩阵中列向量的顺序进行。以Gk中Vt为例,初始过程如下:
(1)生成服从均匀分布的随机数数组
R=?r1,r2,...,ri,...,rn? i?1,2,.n. . (18)
其中:ri为在发电机组i最大最小出力之间随机生成的正数 (2)计算百分比系数数组Per
per??per1,per2,...,peri,...,pern? (19)
其中:peri?rin i?1,2,.n. .,i?ri?1(3)初始化各台发电机组的出力,即初始化Vt
11
Vt??p1t,p2t,...,pit,...,pnt?T (20)
其中:pit?periLjt i?1,2,.n. .,Ljt为负荷j在t时段的负荷量
Step3. 个体调整方法
在进行个体调整时按列向量的先后顺序进行。以个体Gk中Vt为例,具体调整措施如下:
(1)根据机组组合问题对精度的要求,对Vt列中的各个元素保留
(2)调整Vt列中的元素取值,使其满足相应发电机组出力范围约束。其方法如下:
?pimax??pit???pimin??0,,,,pit?pimaxpimin?pit?pimaxpit1?pimin?pit?pimax其他 (21)
其中:pit为调整前发电机组i在t时段的发电出力
pit1为调整后发电机组i在t时段的发电出力
?为介于0、1之间的常数,本文取??0.6
pimin发电机组i最小稳定运行出力; pimax发电机组i最大出力;
(3)调整Vt列中的元素取值,使其满足相应发电机组的增出力和降出力约束约束。具体如下:
pit2?pit?1?rri,pit1?pit?1?rri?1??pit?1?rdi,pit?pit?1?rdi1?p1,p?r?p?pit?1?rriitit?1diit? (22)
其中:pit1为前一步调整完成的发电机组i在t时段的发电出力
pit2为此步调整后的发电机组i在t时段的发电出力
rdi为机组i最大减出力 rri为机组i最大增出力
12
(4)调整发电机组启停状态使其满足系统备用约束。具体调整方法如下: 当
n?u?iti?1pmiax?p?i?t时,增开发电机组,令新投入运行的发电机组发电出力为Rt其最小出力,直至满足系统备用约束为止。其中,Rt为t时段系统备用要求
(5)经过上述三步调整后,Vt列中所有元素的总和可能不等于t时段中的系统总负
nm荷。因此要进行负荷分配的调整。具体的调整办法为:当?uitpit?i?1nm?Lj?1jt时,通过增加
运行发电机组出力来满足负荷平衡约束;反之,若?uitpit?i?1?Lj?1jt,则降低运行发电机
组的出力。此步调整中,只能在发电机组的最大出力允许范围内进行调整,不能改变机
组的运行状态。
(6)算法趋于收敛时,若发电机组的出力过程不满足最小运行、停运时间约束条件,则通过调整违反约束发电机组的运行状态满足此项约束条件,即:
ui?t?1?ui?t?1??uit???t?1t?1uij?Ti1时,延长发电机组i的运行时间;
j?t?Ti1uituit?ui?t?1????1?uij?Ti2时,采用将发电机组i违反约束的全部停运状态转变为运行
j?t?Ti2状态的方式来满足约束条件,并令相应的出力为机组i的最小出力。
其中:Ti1为机组i最小运行时间;
Ti2为机组i最小停运时间;
Step4. 适度函数的选取
采用个体调整方法后,在求解的过程中只有发电机组的最小运行、停运时间约束条
件可能得不到满足。为了加快算法收敛,本文的适度函数采用如下形式:
fitness(Gk)?(F?An (23)
i?m?Si)其中:Si 为发电机组i违反最小运行或停运时间约束条件时的惩罚量,本文取Si为机组i的启动成本;?为惩罚因子,本文取??2;m为违反此项约束的次数;A为正常数,本文取A?1.0?106。其含义为:发电机组i违反1次最小运行时间或停运时间约束,便以机组i的??2倍的启动成本Si进行惩罚。
13
Step5. 选择-复制
(1)群体中各个体的选择概率
选择概率的计算公式为:
P(xi)?fitness(xi)n (24)
?j?1fitness(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)的积累概率, 其计算公式为
iqi??P(xj?1j) (25)
Step6. 交叉
通过Step5.在父代中选择交配个体后,将准备进行交叉操作的父代个体表示为
C1?GC1C1C1C1C1????V1,V2,...,Vt,...,VT?C2?GC2???V1C2,V2C2,...,VtC2,...,VTC2?? (26)
交叉操作产生的个体记为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??D2???V1C2,V2C2,...,Vj?1C2,?VjC1?(1??)VjC2,Vj?1C2,...,VTC2?? (27)
(3)对交叉生成的个体依照Step3.个体调整方法进行个体调整,然后计算出D1、D214