一种优化的Genetic Algorithm —— Python实现

该博客介绍了一种优化的遗传算法,包括加入精英保护机制、变异基因数服从泊松分布、指数关系的变异影响等改进。通过适应度函数调整和外来种群引入,加快收敛速度并防止陷入局部最优。Python实现的算法在Wikipedia标准优化测试数据上表现出色,以较少迭代次数找到更优解。
摘要由CSDN通过智能技术生成

一种优化的Genetic Algorithm —— Python实现


优化内容:

1、 加入精英保护机制,种群内最优秀个体将被保留,精英更迭采用“打擂机制”,加快收敛。

2、 变异基因数服从泊松分布,模拟每个基因在同一时刻具有相同变异几率,接近实际。

3、 为获得更清晰的数学特性,增强对变异的可控性,不再使用常规GA的基因编码方式实现难以用数学概率描述的变异。

4、 指定变异造成的变化量与变异基因数目成指数关系(源代码采用2的幂级数),模拟自然界的基因变异影响,使得陷入局部最优的可能性下降,同时保证算法的搜索精度极高。

5、 加入适应度对变异率的影响,模仿自然界中,适应度越高的个体类型竞争压力越小,基因频率发生改变的概率越小。越不适应环境的个体相应的变异率会大大提升,变异的大小也因此增大。实验发现,这项优化减小了最优解附近的搜索步长,对减少最优解附近的振荡有非常明显的作用。

6、 适应度函数加入平方项,使得优劣个体差异增大,选择强度增大,加快收敛。实验发现,达到相同收敛程度的迭代次数至少减少了50%。

7、 在每一季度(每一次迭代更新一代)加入外来种群,采用在可行域均匀分布的随机生成,模拟外来个体的竞争压力,实验表明对防止陷入局部解有很明显的作用。

源代码:

# -*- coding: utf-8 -*-
# 遗传算法优化


from math import sin as sin
from math import cos as cos
from math import exp as exp
from random import random as rand
from random import shuffle as shuffle
from copy import copy

rg = [[-2.25, 2.5], [-2.5, 1.75]]  # 搜索范围
ST = 25  # 约束条件
N = 300  # 初始种群规模
E = 0.05  # 适应度偏移修正
e = 0.01  # 变异基础值
T = 4  # 淘汰比率/每个个体平均产生配子数
n = 2  # 输入变量数/染色体数/修改这里以实现不同的模型
# g = 1000     # 输入空间分割数/决定单个性状的基因数(线性变异用)
g1 = 20  # 输入空间分割数/决定单个性状的基因数
e1 = 0.30  # 基础变异比率
times = 80  
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值