8.2.1 反演优化问题
用遗传算法反演水文地质参数[38,61],首先要构造优化问题。设区域有m个观测值,则构造误差函数为:
含水层参数识别方法
其中:为实测值,hi (p1,p2,…,pn)为计算值。和hi 具有相同的时间和坐标点,p1,p2,…,pn 为参数,为书写方便记 P=[p1,p2,…,pn]。
模型选定之后,通过改变参数使误差函数达到最小值。那么本问题就转化为约束条件下的优化问题(8-2)。
含水层参数识别方法
8.2.2 遗传算法步骤
可用遗传算法求解优化问题(8-2),具体步骤如下。
1)解的表示结构。用十进制浮点向量,表示优化问题的解。每个染色体由一个浮点向量表示,其长度和解向量相同。这里用(p1,p2,…,pn)表示最优化问题(8-2)的解。相应的染色体为V=(p1,p2,…,pn)。
2)初始化过程。定义整数Pop-Size作为染色体的个数,并且随机产生Pop-Size个初始染色体。从优化问题的约束条件可以看出,(p1,p2,…,pn)的可行域是一个长方形,我们用随机的方法可以得到Pop-Size个初始可行的染色体。
检验(p1,p2,…,pn)是否为可行染色体,如果是,就保留。如果不是就再产生一组可行染色体。直到产生Pop-Size个初始可行的染色体V1,V2,…,VPop-Size。
3)评价函数。评价函数(用eval(V)表示)用来对种群中的每个染色体V设定一个概率,以使该染色体被选择的可能性与其种群中其他染色体的适应性成比例。通过轮盘赌,适应性强的染色体被选择产生后代的机会大。在实际应用中我们采取如下方法确定评价函数。
设目前该代中的染色体为V1,V2,…,VPop-Size,可以根据染色体的序进行再分配,无论采用何种数学规划均可以将染色体由好到坏进行重排,就是说,一个染色体越好,其序号越小。设参数α∈(0,1)给定,定义于序的评价函数为:
含水层参数识别方法
i=1意味着染色体是最好的,i=Pop-Size说明是最差的。
4)选择过程。选择过程是以旋转赌轮Pop-Size次为基础的。每次旋转都为新的种群选择一个染色体。赌轮是按每个染色体的适应度进行选择染色体的。其过程如下。
A.对每个染色体Vi,计算累积概率qi
含水层参数识别方法
B.从区间(0,qPop-Size)中产生一个随机数r。
C.若qi-1<r≤qi,则选择第i个染色体Vi(1≤i≤Pop-Size)。
D.重复步骤②和步骤③共Pop-Size次,这样可以得到Pop-Size个复制的染色体。上述过程并没有要求满足条件qPop-Size=1。实际上,可以用qPop-Size除以所有的qi,使qPop-Size=1,新得到的概率同样与适应度成比例。
5)交叉操作。设Pc为交叉操作的概率,这个概率说明种群中有期望值为Pc·Pop
-Size个染色体进行交叉操作。为确定交叉操作的父代,从i=1到Pop-Size重复以下过程:从[0,1]中产生随机数r,如果r<Pc,则选择Vi作为一个父代。
用V′1,V′2,V′3,…表示上面选择的父代,并把他们随机分为交叉对。
(V′1,V′2),(V′3,V′4),(V′5,V′6),…
现仅以第一对为例说明交叉操作的过程,从(0,1)区间产生一个随机数c,然后按下式进行交叉操作,并产生两个后代X和Y
X=cV′1+(1-c)V′2,Y=(1-c)V′1+cV′2
检验新产生的后代是否为可行解,如果可行,用它们代替父代;否则,保留其中可行的。然后,产生新的随机数c,重新进行交叉操作,直到得到两个可行的后代为止。
6)变异操作。设参数Pm为遗传操作中的变异概率,为确定变异操作的父代,从i=1到Pop-Size重复以下过程:从[0,1]中产生随机数r,如果r<Pm,则选择Vi作为一个变异父代。先选择一个变异方向D,M为一个随机数,则可以用下式:
X=V+M·D
为新后代,检验X是否为可行解。如不可行,改变随机数M或变异方向D直到X为可行解为止。
另一种产生变异的操作是在可行域中另外产生一个染色体,或染色体中的一个元素。
7)遗传算法的一般过程。遗传算法的一般过程可归纳如下:
输入参数Pop-Size,Pc,Pm;
通过初始化过程产生Pop-Size个染色体;
重复
根据某抽样机制选择染色体;
对染色体进行交叉和变异操作;
计算所有染色体的评价函数;
满足终止条件时终止,否则重复以上三个过程。