2进制转十进制在线计算器利⽤遗传算法解决函数最优化问题(单⽬标)
⼀、问题描述
利⽤遗传算法求解⼀些典型的⼆元单⽬标函数优化问题,对五个⼆元最优化函数(函数表达式、决策变量取值范围)进⾏求解,结果要尽可能精确。五个函数分别为:
⼆维球形函数:,De-Jong函数:,Himmelblau函数: ,SIX-HUMP CAMEL函数:,BOHACHEVSKY函数: ,⼆、解决思路和⽅案
遗传算法是⼀种借鉴⽣物界⾃然选择和遗传机制的随机化搜索最优解的算法。它模拟⾃然选择和遗传过程中发⽣的环境选择、有性繁殖和基因突变现象,在每次迭代都从种中选取较优的个体,利⽤交叉算⼦和变异算⼦使个体发⽣交叉(产⽣新个体的主要⽅式)和变异(产⽣新个体的辅助⽅式,有利于跳出函数的局部最优解),产⽣适应性更好(使函数更加最优解)的新⼀代种,重复此过程,直到满⾜某种收敛指标为⽌。应⽤遗传算法需确定的⼏个主要内容是:初始种的产⽣、适应度函数的确定、遗传算⼦(选择、交叉、变异)的确定、终⽌条件。
(1)初始种的产⽣
产⽣初始种的编码采取⼆进制编码⽅式,在产⽣初始种之前,要确定染⾊体的基因数⽬,这是由算法
想达到的精度决定的,如果要求最终求得的决策变量精确为5(精确到⼩数点后五位),根据公式,即可确定该决策变量需要的基因数,其中  和  为该决策变量取值的上下界,⼀个个体所需的基因数⽬为所有决策变量对应的之和。在基因数⽬确定了之后,即可产⽣初始种,采取⼆进制编码随机⽣成的⽅式,(2)适应度函数
适应度评价函数反映了个体对环境的适应能⼒,在以上⼏个最⼩化的函数中,f函数值越⼩说明其适应能⼒越强。为了符合常规习惯,将求 f 最⼩值的问题转化为求 -f 的最⼤值,那么适应度评价函数即为 -f, 其值越⼤,适应能⼒越强,越应该被保留。(3)遗传算⼦的确定
对于选择步骤,采取赌选择,其思想是适应度更⼤的个体更⼤概率会被保留。另外加⼊了精英保留策略,即每次选择时都将适应度最⾼的个体保留下来不淘汰,这样可以优化种质量,提升收敛速度。
对于交叉步骤,采⽤单点交叉⽅式,交叉算⼦设置为0.75,交叉是针对个体⽽⾔的,如果随机产⽣的概率⼩于0.75,则该个体可以参与交叉,随机与另外⼀个个体交叉,⽣成新的⼦代。
对于变异步骤,采⽤单点变异,变异算⼦设置为0.01,变异是针对染⾊体的每个基因⽽⾔的,如果随机产⽣的概率⼩于0.01,则该基因位发⽣变异,0和1互换。(4)终⽌条件
⾸先设置了⼀个进化代数的上下限,最多迭代1000代,最⼩100代。另外,如果持续很多代最优值的改
善幅度很⼩,便会提前终⽌,在算法执⾏时间和精确性之间取得了⼀个平衡。这⾥,如果持续200代最优值的改善幅度不超过1e-6(10^-6)便提前终⽌。
使⽤python语⾔进⾏仿真实现,求解每个最优化函数的最优解和对应的决策变量值,并可视化进化代数和最优值的关系。决策变量的精度为5,⽬标变量精度为6。
三、仿真结果及分析
(1)函数 f1 仿真结果
f (x ,y )=1x +2y 2x ,y ∈[−5.12,5.12]
f (x ,y )=2100y −x +(2)2
(x −1)2x ,y ∈[−2.048,2.048]f (x ,y )=3x +y −11+(2)2
x +y −7(2)2
x ,y ∈[−6,6]
f (x ,y )=44x −2  2.1x +4x /3+6xy +4y −44y 2x ,y ∈[−5,5]f (x ,y )=5x +22y −20.3cos 3πx cos 4πy +0.3x ,
y ∈[−1,1]
2<l −1j b −a ×(j j )10≤52−l j 1l j b j a j l j
函数 ,在迭代了307代后收敛,图3.1为迭代结束后的结果展⽰,在x=-0.00049,y=0.00285
处取得了最优值8e-06,基本收敛到精确解0。其他函数同,其他函数便不进⾏解释,只进⾏结果展⽰。
图3.1 f1 求解结果
图3.2可视化了函数 f1 和x, y之间的关系,红点表⽰最后函数收敛到了最⼩。其他函数同。
图3.2 f1 可视化
f (x ,y )=1x +2y 2x ,y ∈[−5.12,5.12]
图3.3表⽰了随着进化代数的增加,“当代最优值”(绿⾊曲线)和“⽬前为⽌最优值”(红⾊曲线)的变化情况,可以看出,红⾊曲线始终在绿⾊的下⽅,说明最优值不会变差,当代最优值虽有波动,但整体来
看,也在变好。并且,图中每隔50代标注了⽬前为⽌的最优值(具体数值见表3.1),可以看出,随着代数的增加,最优值的改善不会很明显,同时函数也基本收敛。其他函数同。
图3.3 f1 进化代数-最优值变化图
表3.1 f1 进化代数-最优值变化表
进化代数151101151201251301
最优值0.2470350.001725  1.2e-058e-068e-068e-068e-06(2)函数 f2 仿真结果
函数
图3.4 f2 求解结果
图3.5 f2 可视化
图3.6 f2 进化代数-最优值变化图表3.2 f2 进化代数-最优值变化表
进化代数151101151201最优值  1.4182740.006480.006480.005180.002211进化代数
251
301
351
401
451
f (x ,y )=2100y −x +(2)2
(x −1)2x ,y ∈[−2.048,2.048]
最优值0.0008680.000850.000850.000850.00085
进化代数1
51101151201(3)函数 f3 仿真结果
函数
图3.7 f3 求解结果
图3.8 f3 可视化
图3.9 f3 进化代数-最优值变化图
f (x ,y )=3x +y −11+(2)2
x +y −7(2)2
x ,y ∈[−6,6]