转载+原创
函数优化
函数最值
函数最值
该例子参考 深入浅出遗传算法,透析GA本质.(强烈安利)中的例子,加上了一些自己的理解和改动
ex:已知x为整数,求在区间[0,31]区间上的二次函数y=x^2的最大值(max:x2)
分析:
个体:区间上的每一个x;适应度 f(x)=x^2;解空间 [0,31]
解:
-
设定种群规模;编码;产生初始种群
设种群规模为4;用二进制数编码;取已下个体为初始种群:
13(01101)
24(11000)
8 (01000)
19(10011) -
设定适应度函数
令f(x) = x^2 -
计算各代种群中的个体适应度,对染色体进行遗传操作,直到个体适应度最高的个体出现
由f(x) = x^2计算适应值、由f(xi)/ΣF(xi)计算选择概率、再逐个累加得积累概率 填入下表。
设 从[0,1]区间产生4个随机数:
r1 = 0.329876
r2 = 0.098798
r3 = 0.580045
r4 = 0.790431
代入积累概率区间可得选中次数分别为
编号 | 初始群体 | 变量x | 适应值f(x) | 选择比 | 积累概率 | 选中次数 |
---|---|---|---|---|---|---|
1 | 0 1 1 0 1 | 13 | 169 | 0.14 | 0.14 | 1 |
2 | 1 1 0 0 0 | 24 | 576 | 0.49 | 0.63 | 2 |
3 | 0 1 0 0 0 | 8 | 64 | 0.06 | 0.69 | 0 |
4 | 1 0 0 1 1 | 19 | 361 | 0.31 | 1.00 | 1 |
和 | ------------- | ------------ | 1170 | 1 | ------------ | 4 |
平均值 | ------------- | ------------ | 293 | 0.25 | ------------ | 1 |
最大值 | ------------- | 24 | 576 | 0.49 | ------------ | 2 |
于是经复制得到到:
13(01101)
24(11000)
24(11000)
19(10011)
假设交叉率Pc=100%,作交叉操作(1和2、3和4)
编号 | 交配池 | 交叉位置 | 交叉后的新种群 | 变量x | 适应值f(x) |
---|---|---|---|---|---|
1 | 0 1 1 0 \ 1 | 4 | 0 1 1 0 0 | 12 | 144 |
2 | 1 1 0 0 \ 0 | 4 | 1 1 0 0 1 | 25 | 625 |
3 | 1 1 \ 0 0 0 | 2 | 1 1 0 1 1 | 27 | 729 |
4 | 1 0 \ 0 1 1 | 2 | 1 0 0 0 0 | 16 | 256 |
和 | 1754 |