杨洪明1 白培林2 1.长沙电力学院电力系 湖南 长沙410077 2.长沙电业局 湖南 长沙410002
0 引 言 近年来,随着人工神经网络(ANN)研究的深入,应用ANN进行电力系统负荷预报的工作取得了丰硕的成果,有的已达到实际应用阶段。但在应用过程中一直面临着一些问题,其中最重要的是神经网络结构的选取。 神经网络的性能取决于结构。但由于目前尚无系统的理论指导,一般采用试凑法来选择网络的结构。结果是计算量大、效率低、而且难以评价所得的网络结构是否为优。这种盲目的选择方法严重阻碍了神经网络的应用和发展,进而也影响了神经网络负荷预报模型的精度。最近,基于群体进化的遗传算法发展很快,它为神经网络结构设计的研究提供了一条新途径。本文论述的将遗传算法用于神经网络结构的设计,建立起基于遗传算法的人工神经网络负荷预报模型,获得了令人满意的预报结果。
1 遗传算法 遗传算法(Genetic Algorithm)是一种在思路和方法上都别开生面的新的优化方法,是一种借鉴生物界自然选择和自然遗传机制的高度并行、随机、自适应搜索算法。 遗传算法以随机产生的一群候选解开始,每一解均被表示成二进制数码串形式,称为染色体串。然后,通过使用复制、杂交和变异等遗传算子对这些染色体串进行组合,使群体向着更好解的方向进化,以求解问题。其过程的基本步骤如下: a.编码。若现在需对变量X,Y,Z进行编码,则用一定位数的0,1二进制数对变量X,Y,Z进行编码,形成基因染色体串。每一个染色体串代表一个个体,表示优化问题的一个解: b.随机产生一个初始群体; c.计算群体中每个个体的适应值F(x);
d.应用复制、杂交和变异算子产生下一代群体; e.获得最优解。 第c,d步不断地循环往复,使群体中的平均适应值不断提高,以满足停止准则。此时,算法结束,选出适应值最高的个体即为遗传算法的执行结果。
2 BP网络 多层BP网络结构如图1。

式中 Oi,k为第k层神经元i的输出;neti,k为第k层神经元i的输入;Wi,j,k为第k-1层神经元j与第k层神经元i的连接权值;θi,k为第k层神经元i的阈值。 f(.)是一个单调连续可微函数,一般可选用f(u)=1/(1+e-u),对于P个学习样本,其输出 总误差为:

其中,tL,OL分别为输出层对第P1个样本结点L的期望值和实际输出值。 在BP网络的学习算法中,可采用最速下降梯度和共轭梯度等方法来修改权值。
3 用遗传算法设计神经网络结构 神经网络结构包括网络中的隐层数和隐层单元数、学习算法中的步长因子η和训练精度ε等参数以及初始权值。用遗传算法设计网络结构,也就是用遗传算法来优化选择隐层数、隐层单元数、步长因子、训练精度以及初始权值等参数。在遗传算法进化网络结构时,首要问题是对网络结构参数进行编码。下面详细介绍编码情况。 a.隐层数 隐层数目用2位二进制数来编码表示3种状态,即“00”代表无隐层,“01”代表隐层数为1,“10”代表隐层数为2。 b.隐层单元数 本文例中的输入结点不大,可以不要太多的隐单元数。因而,设隐层中神经元的最大数目为16(根据需要可增加数目),用4位二进制数表示,其二进制数对应的十进制数就是隐单元的个数。 c.步长因子η 步长因子η一般取(0,1)之间的数,用5位二进制数来编码。设二进制数对应的十进制数为t,则η编码变换为η实际值的公式为η=t/31。 d.训练精度ε 训练精度ε采用3位二进制数进行编码,分别代表8种训练精度,即0.01,0.005,0.001,0.0005,0.0001,0.00005,0.00001,0.000005。 e.初始权值 初始权值要求比较小,一般取(-1,1)之间的数。每个初始权值的编码都由8位二进制数组成(根据需要可增加位数)。最高位为符号位,“0”代表正数,“1”代表负数。剩余7位表示初始权值的数值。初始权值编码转换成数值的公式为:剩余7位二进制数对应的十进制数除以127。 以上各参数分别按各自的规则进行编码后,所有编码连接起来就组成了一个染色体串,即群体中的一个个体。由于连接权值的个数很多,因而,初始权值编码会很长,优化所需的时间会很长。因此,文中采用初始权值单独优化的方法,即先进行其他参数的优化,再进行初始权值的优化。 按照遗传算法的计算步骤,最后可获得最优的染色体串,按相应的规则变换成网络结构的实际值,就得到了较优的神经网络结构。
4 负荷预报模型 建立人工神经网络预报模型实质上就是要获得反映训练数据中输入、输出映射关系的权值。因而,如何获得预报权值就成为了建立预报模型的一个关键环节。 首先,用遗传算法优化BP网络结构,获得较优的网络结构参数。这一优化过程所需时间很长,只能离线完成。在实际预报中,可每年优化一次网络结构。 然后,在优化的网络结构基础上,用大量的样本来训练神经网络。训练结束后获得的权值,这里称为初始预报权值。这一步训练时间比较长,一般也离线完成。在实际负荷预报中,每年或几个月才改变一次初始预报权值。 由于初始预报权值在很长一段时间内是不变的。因而,随着预报时间的延长,预报误差会增加。所以,加入在线修改初始预报权值模型,使它能随时跟踪负荷的变化,以获得较高精度的预报值。在线修正权值的方法是采用一个子训练集来进行。首先,在现有的数据中,从最近的数据开始,选出关联度最大的b组数据,形成子训练集,b一般取5~10。然后,把初始预报权值作为神经网络的初始权值,用子训练集再训练一次神经网络,获得的权值就是预报所需的权值,称为预报权值。最后,将预报负荷输入数据施加于该神经网络上,获得的输出值就是所求的预报值。由于子训练集样本数很小,因而,这一步训练所需时间很短(为几秒),它不会影响负荷预报的在线完成,而预报精度却会大幅度提高。 5 算例及分析 本例的数据来自华中电管局1995年的全网每小时用电负荷数据。根据负荷每小时变化的不同规律,采用每小时对应一个模型,即24 h分别对应24个模型。根据1995年4、5月份的负荷资料,用遗传算法优化BP网络结构,再用优化后的BP网络对4、5月份的数据进行训练,获得6月份的初始预报权值,经过初始预报权值的在线修正,对6月份2 h的负荷进行了预报。预报结果见表1。

注:限于版面,表1中只列出偶数天的预报值。原始数据中缺23日的负荷数据,所以使得24日的预报值误差偏大。
从表1可以看出,基于遗传算法预报模型的相对误差曲线较平稳,最大相对误差为1.82,最小相对误差为0.04,无较大的起伏。而基于人工选择的无在线修改权值的神经网络预报模型和回归模型的相对误差曲线则波动较大,误差值也较大。可见基于遗传算法的预报模型能更好地拟合负荷之间的映射关系,有很高的预报精度。
6 结 论
本文提出的用遗传算法设计神经网络结构的方法是有效的,基于此建立的短期负荷预报模型有很好的精度。
|