基于遗传算法求函数最小值
一、遗传算法概述
遗传算法( genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法是把问题参数编码为染色体,再利用迭代的方式进行选择、交又以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。
在遗传算法中,染色体对应的是数据或数组,通常是由一维的串结构数据来表示,串上各个位置对应基因的取值。基因组成的串就是染色体,或者称为基因型个体(individuals)。一定数量的个体组成了群体(population)。群体中个体的数目称为群体大小(population size)也称为群体规模。而各个个体对环境的适应程度叫做适应度(fitness)。
二、遗传算法基本步骤:
1) 编码
GA在进行搜索之前先将解空间的解数据表示成遗传空间的基因型串结构数据,这些串结构数据的不同组合便构成了不同的点。
2) 初始群体的生成
随机产生N个初始串结构数据,每个串结构数据称为一个个体,N个个体构成了一个群体。GA以这N个串结构数据作为初始点开始进化。
3) 适应度评估
适应度表明个体或解的优劣性。不同的问题,适应性函数的定义方式也不同。
4) 选择
选择的目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一代繁殖子孙。遗传算法通过选择过程体现这一思想,进行选择的原则是适应性强的个体为下一代贡献一个或多个后代的概率大。选择体现了达尔文的适者生存原则。
5) 交叉
交叉操作是遗传算法中最主要的遗传操作。通过交叉操作可以得到新一代个体,新个体组合了其父辈个体的特性。交叉体现了信息交换的思想。
6) 变异
变异首先在群体中随机选择一个个体,对于选中的个体以一定的概率随机地改变串结构数据中某个串的值。同生物界一样,GA中变异发生的概率很低,通常取值很小。
三、谢菲尔德遗传算法工具箱
谢菲尔德(Sheffield)遗传算法工具箱是英国谢菲尔德大学开发的遗传算法工具箱。该工具箱是用MATLAB高级语言编写的,对问题使用M文件编写,可以看见算法的源代码,与此匹配的是先进的 MATLAB数据分析、可视化工具、特殊目的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。该工具箱为遗传算法研究者和初次实验遗传算法的用户提供了广泛多样的实用函数。
工具箱添加
用户可以通过网络下载Sheffield工具箱,(可在文末进行下载)
(1) 将工具箱文件夹复制到本地计算机中的工具箱目录下路径为 matlabroot\ toolbox其中 matlabroot为 MATLAB的安装根目录。
(2) 将工具箱所在的文件夹添加到 MATLAB的搜索路径中;如下所示
(3) 查看工具箱是否安装成功。
使用函数ver查看gatbx工具箱的名字、发行版本、发行字符串及发行日期,如果返回均为空,则说明安装未成功;如果返回了相应的参数,则表明工具箱安装成功,该工具箱就可以使:
v=ver('gatbx')
四、实例演示
利用遗传算法寻找以下函数的最小值:
思路
-
将自变量在给定范围内进行编码,得到种群编码;
-
按照所选择的适应度函数并通过遗传算法中的选择、交叉和变异对个体进行筛选和进化,使适应度值大的个体被保留,小的个体被淘汰,新的群体继承了上一代的信息,又优于上一代,这样反复循环,直至满足条件,最后留下来的个体集中分布在最优解周围,筛选出其中最优的个体作为问题的解。
上图为目标函数图,图中○是每一代的最优解; ☆是优化20代后的种群分布,从图中可以看出,○和 ☆ 大部分都集中在一个点,该点即为最优解。
最优解:可知当X=1.1491,最小值Y=-0.8699
上图表示种群优化20代的进化图。
资源获取
相关资源可从如下链接进行下载
利用遗传算法求函数最小值-实例验证
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理