实值参数变异算法(GA)
遗传算法 (GAs)是属于进化算法中较大部分的自适应启发式搜索算法。在每一代中,染色体(我们的候选解)经历变异、交叉和选择,以产生染色体更接近我们期望解的更好的群体。变异操作符是一元操作符,它只需要一个父操作符。它是通过从我们选择的染色体(父母)中选择一些基因,然后对它们应用所需的突变操作符来实现的。
在本文中,我将讨论四种实值参数的变异算法– 1)均匀变异 2)非均匀 3)边界变异 4)高斯变异
这里我们考虑的是一条染色体,有 n 个实数(是我们的基因),x i 代表一个基因,I 属于[1,n]。
一致突变–
在均匀突变中,我们从染色体中选择一个随机基因,比如说 x i ,并给它分配一个均匀的随机值。 让 x i 在范围【a i ,b i 内,然后我们将 U(a i ,b i 分配给 xIT15】U(aI,b i 表示范围【a i ,b 内的统一随机数
Algorithm –
1\. Select a random integer number i from [1,n]
2\. Set xi to U(ai,bi).
边界突变–
在边界突变中,我们从我们的染色体中选择一个随机基因,比如说 x i ,并给它指定 x i 的上限或下限。 让 x i 在范围【a i ,b i 内,然后我们将 a i 或 b i 分配给 x i 。 我们还选择了一个变量 r= U(0,1) ( r 是 0 到 1 之间的数字)。 如果 r 大于或等于 0.5,将 b i 指定给 x i ,否则将 a i 指定给 x i 。
Algorithm –
1\. select a random integer number i form [1,n]
2\. select a random real value r from (0,1).
3\. If(r >= 0.5)
Set xi to bi
else
Set xi to ai
非均匀突变–
在非均匀突变中,我们从染色体中选择一个随机基因,比如说 x i ,并为其分配一个非均匀随机值。 让 x i 在范围【a i ,b i 内,然后我们给它分配一个非均匀随机值。
我们使用一个函数, f(G)=(r2*(1-G/Gmax))b, 其中 R2 =(0,1) G =当前世代数 Gmax =最大世代数 b =一个形状参数 这里我们选择一个(0,1)之间的统一随机数 r1。 如果 r 大于或等于 0.5,我们分配(b i -x i ) * f(G)到 x i ,否则我们分配(a i + x i ) * f(G)。
Algorithm –
1\. Select a random integer i within [1,n]
2\. select two random real values r1 ,r2 from (0,1).
3\. If(r1 >= 0.5)
Set xi to (bi-xi) * f(G)
else
Set xi to (ai+ xi) * f(G)
高斯突变–
高斯变异利用了高斯误差函数。它在收敛方面远比前面提到的算法更有效。我们随机选择一个基因,比如说 x i ,它属于范围【a i ,b i 】。让突变的关簧为 x' i 。每个变量都有一个变异强度算子(σ i )。我们使用σ=σI/(bI-aI)作为所有 n 个变量的固定无量纲化参数; 因此后代 x’I由—
x’i= xi + √2 * σ * (bi-ai)erf-1(u’i)
这里 erf()表示高斯误差函数。
erf(y)=2⁄√π ∫y0 e-t<sup>2</sup> dt
为了计算 u i ,我们首先从范围(0,1)内选择一个随机值 u i ,然后使用以下公式
if(ui>=0.5)
u’i=2*uL*(1-2*ui)
else
u’i=2*uR*(2*ui-1)
同样,u L 和 u R 由公式给出
uL=0.5(erf( (a<sub>i</sub>-x<sub>i</sub>)⁄(√2(b<sub>i</sub>-a<sub>i</sub>)σ) )+1)
uR=0.5(erf( (b<sub>i</sub>-x<sub>i</sub>)⁄(√2(b<sub>i</sub>-a<sub>i</sub>)σ) )+1)
参考文献— 1。https://www.iitk.ac.in/kangal/papers/k2012016.pdfT3】2。https://en . Wikipedia . org/wiki/突变 _(genetic_algorithm) 3。http://read.pudn.com/downloads152/ebook/662702/gaotv5.pdf
版权属于:月萌API www.moonapi.com,转载请注明出处