深度学习经典算法 | 遗传算法详解

简介: 深度学习经典算法 | 遗传算法详解

遗传算法生物学基础


在一定的时间内,有一群兔子,其中一些比另外一些兔子跑得快,而且更聪明,这些兔子被狐狸吃掉的可能性比较小,因此它们中的多数就存活下来并繁殖更多的兔子。当然,一些跑得慢而愚蠢的兔子也会存活下来,只是因为它们比较侥幸,这些存活的兔子群开始生育。生育的结果是兔子遗传材质的充分融合:一些跑得慢的兔子生出了跑得快的兔子,一些跑得快的兔子生出跑得更快的,一些聪明的兔子生出了愚蠢的兔子,等等。在最顶层,自然界不时地变异一些兔子的基因材质。所产生的小兔子平均来说要比原始的群体更快更聪明,因为从狐狸口中生存下来的父代多数是跑得更快、更聪明的兔子。同样,狐狸也经历相似的过程,否则兔子可能跑得太快又太聪明以致狐狸根本抓不到了。

兔子的生存哲学就是以自然选择学说为核心的现代生物进化理论,其基本观点是:种群是生物进化的基本单位,生物进化的实质是种群基因频率的改变。基因突变和基因重组、自然选择及隔离是物种形成过程的三个基本环节,通过它们的综合作用,种群产生分化,最终导致新物种的形成。在这个过程中,基因突变和基因重组产生生物进化的原材料.自然选择使种群的基因频率定向改变并决定生物进化的方向,隔离是新物种形成的必要条件。

新物种形成的途径和方式有两种:渐变式和爆发式。渐变式主要通过变异的逐渐积累而成亚种,再由亚种形成一个物种或多个新种。遗传算法杂交了渐变式和爆发式两种思想。

遗传算法的实现步骤


GA由解编码、个体适应度评估和遗传算法三大模块构成,而遗传算法又包括染色体复制、交叉、变异甚至倒位等。改良的遗传算法和融合新型技术的遗传算法都是SGA的变异形式。在遗传算法中,定义种群或群体为所有编码后的染色体集合,表征每个个体的是其相应的染色体。

1、编码


image.png

2、解码


image.png

遗传算法的编码和解码在宏观上可以对应生物的基因型和表现型,在微观上可以对DNA的转录和翻译两个过程。

3、交配


image.png

4、突变


“突变运算”是使用基本位进行基因突变。为了避免在算法迭代后期出现种群过早收敛,对于二进制的基因码组成的个体种群,实行基因码的小几率翻转,对于二进制编码即0变为1,而1变为0。例如,将染色体S=110$01101第3位上的0变为1,即S=11001101→11101101=S'.S'可以被看做是原染色体S的子代染色体。

5、倒位


除了交配和突变之外,对于复杂的问题可能需要用到“倒位”,其对应的运算亦被称为“倒位运算”。倒位是指一个染色体某区段正常排列顺序发生180°的颠倒, 造成染色体内的DNA序列重新排列,它包括臂内倒位和臂间倒位。倒位纯合体不影响个体的生活力,只是改变了染色体上的相邻基因位置,从而某些表现型发生位置效应,同时也改变了与相邻基因的交换值。倒位杂合体则不然,其生育力降低。染色体上的区段可能一次又一次发生倒位·且通过自交出现不同的倒位纯合体,致使它们与其原来的物种不能交配,形成生殖隔离,结果产生新族群或变种。

倒位运算是与倒位概念相似的运算规则。例如.染色体S'就是S经过倒位运算以后得到的染色体基因编码,其中倒位的部分即S中标记下画粗的部分。

S=1001011011101110011010101001→=1001011001011001110111101001

6、个体适应度


自然界中能够适应环境的生物有更多的机会存活下来,这种筛选机制类似下图所示象:在由正六边形搭建的三角形区域的顶部投掷一些光滑的木块,这些木块经由白色的缝隙坠落底部,显然落在底部中间的木块要比落在两端的木块多,因为木块有更多的路径坠落在底部的中间区域,所以有更大的几率落在中间。落在各个区域的几率对应遗传算法中各条染色体被遗传到下一代的几率,其坠落的位置对应自变量取值。遗传算法依照与个体适应度成正比的几率决定当前种群中各个个体遗传到下一代群体中的机会。个体适应度大的个体更容易被遗传到下一代。通常,求目标函数最大值的问题可以直图5-2正六边形筛选机制接把目标函数作为检测个体适应度大小的函数。

226544b268674369a90535e06f65f0e8.png

7、复制


image.png

程序设计流程


a147204f1ae6c5658e293b535af18765.png

matlab GA工具箱求解多约束非线性规划问题


举例如下所示:

f530f49b5d8323a59dd952b6f5892c28.png

matlab实现


主函数:

%主程序:本程序采用遗传算法接力进化,
%将上次进化结束后得到的最终种群作为下次输入的初始种群
clc;
close all;
clear all;
%进化的代数
T=100;
optionsOrigin=gaoptimset('Generations',T/2);
[x,fval,reason,output,finnal_pop]=ga(@ch14_2f,2,optionsOrigin);
%进行第二次接力进化
options1=gaoptimset('Generations',T/2,'InitialPopulation',finnal_pop,...
    'PlotFcns',@gaplotbestf);
[x,fval,reason,output,finnal_pop]=ga(@ch14_2f,2,options1);
Bestx=x
BestFval=fval

子函数

%子函数:适应度函数同时也是目标函数,函数存储名称为ch14_2f.m
function f=ch14_2f(x)
g1=1.5+x(1)*x(2)-x(1)-x(2);
g2=-x(1)*x(2);
if(g1>0|g2>10)
    f=100;
else
    f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
end

输出:


d395eadc1d86af5b420d589f3b2f7da9.jpg

相关文章
|
8月前
|
数据采集 边缘计算 算法
遗传算法+多目标规划算法+自适应神经模糊系统(Matlab代码实现)
遗传算法+多目标规划算法+自适应神经模糊系统(Matlab代码实现)
190 4
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
1330 55
|
8月前
|
负载均衡 算法 调度
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
323 11
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
688 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
8月前
|
算法 安全 机器人
【路径规划】基于遗传算法结合粒子群算法求解机器人在复杂不同类型下的路径规划研究(Matlab代码实现)
【路径规划】基于遗传算法结合粒子群算法求解机器人在复杂不同类型下的路径规划研究(Matlab代码实现)
220 4
|
8月前
|
机器学习/深度学习 边缘计算 并行计算
【无人机三维路径规划】基于遗传算法GA结合粒子群算法PSO无人机复杂环境避障三维路径规划(含GA和PSO对比)研究(Matlab代码代码实现)
【无人机三维路径规划】基于遗传算法GA结合粒子群算法PSO无人机复杂环境避障三维路径规划(含GA和PSO对比)研究(Matlab代码代码实现)
647 2
|
8月前
|
机器学习/深度学习 算法 安全
【优化充电】基于多种改进遗传算法(变异遗传算法、精英遗传算法、原始遗传算法)求解电动汽车有序充电优化问题比较研究(Matlab代码实现)
【优化充电】基于多种改进遗传算法(变异遗传算法、精英遗传算法、原始遗传算法)求解电动汽车有序充电优化问题比较研究(Matlab代码实现)
190 2
|
9月前
|
机器学习/深度学习 算法 调度
基于遗传算法GA算法优化BP神经网络(Python代码实现)
基于遗传算法GA算法优化BP神经网络(Python代码实现)
551 0
|
9月前
|
机器学习/深度学习 数据采集 算法
【遗传算法(GA)和模拟退火(SA)对翼型升阻比进行优化】基于神经网络和无导数算法的翼型优化(Matlab代码实现)
【遗传算法(GA)和模拟退火(SA)对翼型升阻比进行优化】基于神经网络和无导数算法的翼型优化(Matlab代码实现)
253 0
|
机器学习/深度学习 存储 算法
基于MobileNet深度学习网络的活体人脸识别检测算法matlab仿真
本内容主要介绍一种基于MobileNet深度学习网络的活体人脸识别检测技术及MQAM调制类型识别方法。完整程序运行效果无水印,需使用Matlab2022a版本。核心代码包含详细中文注释与操作视频。理论概述中提到,传统人脸识别易受非活体攻击影响,而MobileNet通过轻量化的深度可分离卷积结构,在保证准确性的同时提升检测效率。活体人脸与非活体在纹理和光照上存在显著差异,MobileNet可有效提取人脸高级特征,为无线通信领域提供先进的调制类型识别方案。