遗传算法-智能鸟群

简介: 遗传算法-智能鸟群

遗传算法概论

遗传算法借用了达尔文自然选择的思想,即在一个群体中,适应性更高的个体,会更有可能将自己的基因(特性)遗传下去。下面是自然选择中的一些关键概念:


群体

群体为自然选择提供了丰富的基因库,保证了个体的多样性,群体越大越容易产生更具适应性的个体。


基因型和表现型

我们看到的个体的外貌和行为等外在表现是由内部的基因决定的。基因型即为决定个体表现的内部数据,表现型为个体的外观和行为。比如数字125,即可以表示个体的颜色,也可以表示个体的高度。数字125即为个体的基因型,颜色、高度等为个体的表现型。 在设计遗传算法时,要着重设计个体的基因型和表现型。


遗传、突变和选择

遗传、突变和选择是达尔文进化论中的3个基本法则。遗传保证了子代能够继承父代的特性。突变保证了个体的多样性,如果没有突变子代和父代会永远保持一致,新的特性就永远不会出现,种群也不会进化。选择保证了群体向更具适应性的方向进化,使群体中某些个体能够繁殖而另一些个体却没有机会或有很少的机会繁殖。这就是通常说的“适者生存”。在遗传算法中,在每一代都会计算个体的适应性,适应性高的个体的基因会在下一代遗传下去,适应性低的个体的基因会被淘汰。


智能鸟群的实现

小鸟的基因型和表现型

为了使小鸟不断飞行,在小鸟的生命周期的每一时刻都会为小鸟赋予一个推力,通过推力改变小鸟的加速度,进而影响到小鸟的速度和位置。在小鸟的整个生命周期中(假设为200帧),可以把每一帧上的推力所组成的数组作为小鸟的基因型。小鸟在一系列的推力作用下所形成的飞行路线,为小鸟的表现型。可以用DNA类来定义小鸟的基因,其中推力用一个二维向量来定义。

image.png

1.小鸟的基因如何影响小鸟的飞行路线

在小鸟的类中,我们定义了一个applyForce方法,会根据生命周期的不同时刻将DNA上对应的推力应用在小鸟身上,从而使小鸟的位置发生改变。下面例子中我们使用egret画了一个三角形代表小鸟。代码如下:

edd5f1b0eab8406b932523543008f8c1.png

小鸟的适应性

在小鸟的生命周期结束时,我们通过判断小鸟离目标点的距离来判断小鸟的适应性,离目标点越近的小鸟适应性越高,否则适应性越低。可以通过小鸟离目标点的距离的倒数的平方作为小鸟的适应度。计算小鸟的适应度函数如下(在Bird类中定义):

image.png

选择:选择适应度更高的小鸟

我们定义一个Population类来管理所有的小鸟以及负责小鸟的选择和遗传。在Population类中定义了一个population数组来存储所有的小鸟,另外定义了一个matingPool数组作为交配池,我们根据小鸟适应性的强弱来将其放入交配池中,适应性越强的小鸟放入交配池中的数量越多,否则就越少。最后我们从交配池中随机的选择小鸟进行交配遗传,这样就保证了适应性强的小鸟选到的概率就越大。Population类中的选择函数如下:

image.png

上面的方法,先计算所有小鸟的适应度之和,最后计算每个小鸟的适应度在所有小鸟的适应度中所占比例,然后将这个比例换算为相应的个数存入交配池。可以把这种选择方法想象成一个轮盘,某个个体的适应度所占的比例约大,它被选中的概率就越高。

image.png

突变:增加基因的丰富性

为了增加基因的丰富性,从而产生适应性更强的个体,我们需要在每一代使小鸟的基因有一定的几率产生突变,我们在小鸟的DNA类中加入突变函数:

image.png

并且为Bird类添加mutate接口

image.png

繁殖:产生新的DNA

在DNA类中,添加crossover方法,它接受另一个DNA实例,通过交叉组合生成新的DNA:

image.png

在上面方法中,在生命周期的每一帧中随机选择双亲对应节点的数据作为子代的基因。下面为Bird类添加繁殖的方法:

image.png

群体的繁殖

接下来在Population中添加reproduction方法,用来产生下一代。在reproduction方法中,我们从交配池中随机的选择两个小鸟作为双亲,产生新的小鸟,并使小鸟发生突变,最后把新产生的小鸟加入数组population中。

image.png

总结和优化

总结

通过上面的示例,我们可以总结出使用遗传算法时的几个关键步骤:

  1. 定义个体的基因型和表现型,基因型发生改变表现型也会随之变化。
  2. 计算群体中每个个体的适应性;
  3. 选择适应性更高的个体作为下一代的双亲(可以通过交配池实现);
  4. 通过双亲繁殖下一代,产生的下一代会发生基因突变;
  5. 返回2进行下下一代的繁殖;


优化

上例中,小鸟在进行多代繁殖后,最终会沿直线朝目标飞去。为了体现遗产算法的强大,可以在小鸟和目标之间加入障碍物,当小鸟碰到障碍物时会停止,并且碰到障碍物的小鸟的适应性会急速下降。可以看看经过几代的进化后聪明的小鸟会如何绕过障碍物到达目标点。


目录
相关文章
|
11月前
|
机器学习/深度学习 传感器 编解码
路径规划算法:基于鸟群优化的路径规划算法- 附matlab代码
路径规划算法:基于鸟群优化的路径规划算法- 附matlab代码
|
存储 算法
秒懂算法 | 遗传算法-智能鸟群
本文通过使用遗传算法实现了一个智能鸟群。场景如下图,小鸟从屏幕右侧开始,越过障碍物最终到达屏幕左侧的目标点。
111 0
秒懂算法 | 遗传算法-智能鸟群
|
3天前
|
机器学习/深度学习 自然语言处理 算法
m基于深度学习的OFDM+QPSK链路信道估计和均衡算法误码率matlab仿真,对比LS,MMSE及LMMSE传统算法
**摘要:** 升级版MATLAB仿真对比了深度学习与LS、MMSE、LMMSE的OFDM信道估计算法,新增自动样本生成、复杂度分析及抗频偏性能评估。深度学习在无线通信中,尤其在OFDM的信道估计问题上展现潜力,解决了传统方法的局限。程序涉及信道估计器设计,深度学习模型通过学习导频信息估计信道响应,适应频域变化。核心代码展示了信号处理流程,包括编码、调制、信道模拟、降噪、信道估计和解调。
23 8
|
5天前
|
算法
基于GA遗传优化的混合发电系统优化配置算法matlab仿真
**摘要:** 该研究利用遗传算法(GA)对混合发电系统进行优化配置,旨在最小化风能、太阳能及电池储能的成本并提升系统性能。MATLAB 2022a用于实现这一算法。仿真结果展示了一系列图表,包括总成本随代数变化、最佳适应度随代数变化,以及不同数据的分布情况,如负荷、风速、太阳辐射、弃电、缺电和电池状态等。此外,代码示例展示了如何运用GA求解,并绘制了发电单元的功率输出和年变化。该系统原理基于GA的自然选择和遗传原理,通过染色体编码、初始种群生成、适应度函数、选择、交叉和变异操作来寻找最优容量配置,以平衡成本、效率和可靠性。
|
6天前
|
机器学习/深度学习 算法
基于鲸鱼优化的knn分类特征选择算法matlab仿真
**基于WOA的KNN特征选择算法摘要** 该研究提出了一种融合鲸鱼优化算法(WOA)与K近邻(KNN)分类器的特征选择方法,旨在提升KNN的分类精度。在MATLAB2022a中实现,WOA负责优化特征子集,通过模拟鲸鱼捕食行为的螺旋式和包围策略搜索最佳特征。KNN则用于评估特征子集的性能。算法流程包括WOA参数初始化、特征二进制编码、适应度函数定义(以分类准确率为基准)、WOA迭代搜索及最优解输出。该方法有效地结合了启发式搜索与机器学习,优化特征选择,提高分类性能。
|
1天前
|
机器学习/深度学习 存储 算法
基于SFLA算法的神经网络优化matlab仿真
**摘要:** 使用MATLAB2022a,基于SFLA算法优化神经网络,降低训练误差。程序创建12个神经元的前馈网络,训练后计算性能。SFLA算法寻找最优权重和偏置,更新网络并展示训练与测试集的预测效果,以及误差对比。SFLA融合蛙跳与遗传算法,通过迭代和局部全局搜索改善网络性能。通过调整算法参数和与其他优化算法结合,可进一步提升模型预测精度。
|
6天前
|
机器学习/深度学习 算法 数据可视化
基于BP神经网络的64QAM解调算法matlab性能仿真
**算法预览图省略** MATLAB 2022A版中,运用BP神经网络进行64QAM解调。64QAM通过6比特映射至64复数符号,提高数据速率。BP网络作为非线性解调器,学习失真信号到比特的映射,对抗信道噪声和多径效应。网络在处理非线性失真和复杂情况时展现高适应性和鲁棒性。核心代码部分未显示。
|
4天前
|
算法 计算机视觉
基于Chan-Vese算法的图像边缘提取matlab仿真
**算法预览展示了4幅图像,从边缘检测到最终分割,体现了在matlab2022a中应用的Chan-Vese水平集迭代过程。核心代码段用于更新水平集并显示迭代效果,最后生成分割结果及误差曲线。Chan-Vese模型(2001)是图像分割的经典方法,通过最小化能量函数自动检测平滑区域和清晰边界的图像分割,适用于复杂环境,广泛应用于医学影像和机器视觉。**
|
9天前
|
机器学习/深度学习 算法 数据可视化
m基于PSO-LSTM粒子群优化长短记忆网络的电力负荷数据预测算法matlab仿真
在MATLAB 2022a中,应用PSO优化的LSTM模型提升了电力负荷预测效果。优化前预测波动大,优化后预测更稳定。PSO借鉴群体智能,寻找LSTM超参数(如学习率、隐藏层大小)的最优组合,以最小化误差。LSTM通过门控机制处理序列数据。代码显示了模型训练、预测及误差可视化过程。经过优化,模型性能得到改善。
28 6
|
6天前
|
缓存 算法
基于机会网络编码(COPE)的卫星网络路由算法matlab仿真
**摘要:** 该程序实现了一个基于机会网络编码(COPE)的卫星网络路由算法,旨在提升无线网络的传输效率和吞吐量。在MATLAB2022a中测试,结果显示了不同数据流个数下的网络吞吐量。算法通过Dijkstra函数寻找路径,计算编码机会(Nab和Nx),并根据编码机会减少传输次数。当有编码机会时,中间节点执行编码和解码操作,优化传输路径。结果以图表形式展示,显示数据流与吞吐量的关系,并保存为`R0.mat`。COPE算法预测和利用编码机会,适应卫星网络的动态特性,提高数据传输的可靠性和效率。