Genetic Algorithm | 遗传算法 - 介绍

遗传算法是一种受到生物进化启发的全局优化技术,由John Holland提出。它通过选择、交叉和变异操作来寻找问题的最优解。算法从初始代开始,通过适应函数评估个体的适应性。选择过程基于适应度,交叉和变异确保种群多样性。主要的编码方式包括二进制、排列和值编码。遗传算法适用于解决非凸包误差函数的问题,避免陷入局部最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遗传算法

对于非凸包误差函数而言,使用梯度下降法可能会卡在局部最优解上
如果需要找到全局最优解,那么需要搜索所有空间

例如使用 进化算法

img

遗传算法介绍

遗传算法被认为是基因算法的一种,由 John Holland 提出,基于达尔文“适者生存”理论

使用 选择交叉变异 找到最优解


工作原理

开始时定义 初始代,包含有几个解决方案。每个解决方案称之为个体,每个个体编码为由一组基因表示的染色体。

i

编码后的 适应性 由一个因问题而异的 适应函数 来计算出,适应性越大越好。

  • 生存
  • 交配
  • 变异
流程

数据表示

使用矢量表示一个实例的一串特征

选择

从这些个体中挑选下一代的父母,适应性越大,越可能被挑选为父母。

交叉

被选择的父母进行交配,产生后代。

变异

由于后代可能带有父母基因中的不良基因,需要对基因进行一个小的改造,产生多样性。


GA 算法工作流程图


染色体编码

染色体编码主要有三种方式:

  • 二进制编码
    用一组二进制数表示,每位控制一个基因
  • 排列编码
    用一组数字表示,每个数字表示一个基因
  • 值编码
    使用真实值

关于…

选择

选择前一代最好的个体进行交叉,选择方法有:

  • 基于适应值比例的选择/轮盘赌选择法
    每个个体成为父母的比例直接取决于适应值
    (每个个体按照比例划分一个区间,每次随机生成一个区间内的随机值,选择落在区间内的个体为父母)

交叉

  • uniform crossover 均匀交叉
    单个后代从父母的每个基因上随机取点
  • one point crossover 单点交叉
    两个父母的染色体上定义一个点,两个后代中的第一个取第一个父母位于点右边的,以及第二个父母位于点左边的基因,第二个后代取剩下的基因。
one point crossover

变异

与设置交叉率一样,使用一个变异率控制是否变异。
如果产生随机值大于变异率,则变异。

变异基因数可以有多个,可以统一变异,或者随机变异。
(二进制序列变异只要翻转数字即可)


之后会加上一个实现的实例

本篇为文章的翻译和解释
原文地址:
Genetic Algorithm: Part 1 -Intuition

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值