matlab length_【重点】最优化计算与matlab实现(20)——遗传算法
参考资料
《精通MATLAB最优化计算(第二版)》
编程工具
Matlab 2019a
目录
石中居士:最优化计算与Matlab实现——目录zhuanlan.zhihu.com
遗传算法
遗传算法(也称为遗传优化算法)本质上是一种进化算法,它在很多领域都有广泛的应用,例如生产调度问题、自动控制、机器人学、图像处理和机器学习等。
遗传算法基于自然选择的生物进化,是一种模仿生物进化过程的随机方法。遗传算法是从代表问题可能潜在解集的一个种群开始,而一个种群则由经过基因编码的一定数目的个体组成,每个个体实际上是带有染色体特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体形状的外部表现。
在一开始需要实现从表现型到基因型的映射,即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码。初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解。
在每一代,根据问题域中个体的适应度大小挑选个体,并借助于遗传学的遗传算子进行组合交又和变异,产生出代表新的解集的种群。
这个过程将导致种群像自然进化一样,后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。
遗传算法包括三个基本操作:选择、交叉和变异,这些基本操作又有许多不同的方法。
1.选择
选择的含义为确定重组或交叉个体,以及被选个体将产生多少个子代个体。选择的标准一般是按照适应度来进行的,适应度的计算有以下两种方法:
(1)按比例的适应度计算;
(2)基于排序的适应度计算。
适应度计算之后是实际的选择,按照适应度进行父代个体的选择,可以挑选以下的算法:
(1)轮盘赌选择;
(2)随机遍历抽样;
(3)局部选择;
(4)截断选择;
(5)锦标赛选择。
2.交叉
交叉是结合来自父代交配种群中的信息,产生新的个体。依据个体编码表示方法的不同,可以有以下的算法:
(1)实值重组
- 离散重组
- 中间重组
- 线性重组
- 扩展线性重组
(2)二进制交叉
- 单点交叉
- 多点交叉
- 均匀交叉
- 洗牌交叉
- 缩小代理交叉
3.变异
交叉之后子代经历的变异,实际上是子代基因按小概率扰动产生的变化。依据个体编码表示方法的不同,可以有以下的算法:
(1)实值变异;
(2)二进制变异。
基本遗传算法
- 原理
下面给出的基本遗传算法程序用来求函数的最大值,它采用如下参数:
(1)用二进制编码来离散自变量,码长根据离散精度来确定,例如自变量的变化区间为
(2)交叉方法采用单点交叉,例如对于下面的两个个体:
如果切点在第4位,则通过交叉后,两个个体分别变为:
(3)变异是根据变异概率反转子代某个位的值,例如将0变成1,一般变异概率为很小的数,在0到0.05之间。
(4)选择策略采用轮盘赌策略,令
从选择概率的计算公式可以看出,个体的适应值越大,其选择概率越大,因此如果将目标函数作为适应函数,则此遗传算法是求目标函数的最大值。
- 算法步骤
基本遗传算法的基本步骤如下:
【1】随机产生初始种群,个体数目一定、每个个体表示为染色体的基因编码;
【2】用轮盘赌策略确定个体的适应度,并判断是否符合优化准则,若符合,输出最佳个体及其代表的最优解,并结束计算,否则转向【3】;
【3】依据适应度选择再生个体,适应度高的个体被选中的概率高,适应度低的个体可能被淘汰;
【4】按照一定的交叉概率和交叉方法、生成新的个体;
【5】按照一定的变异概率和变异方法,生成新的个体;
【6】由交叉和变异产生新一代的种群,返回到【2】。
- Matlab代码与试算
用基本遗传算法求下面函数的最大值
个体数目取50,最大进化代数取100,离散精度取0.01,杂交概率取0.9,变异概率取0.04。
fitness.m
function
test.m
[
Genetic_Algorithm.m
function
命令行窗口
x_optimization =9.824175824175825f_optimization =4.099067140322543e+03
函数图像
遗传算法求得的结果的精度一方面与离散精度有关,另一方面与个体数目有关,离散精度决定了遗传算法能得到的最大精度,个体数目越大,求得的结果精度越有可能达到离散精度。
由于遗传算法本身的特点,每次用同样的参数也可能求出差别比较大的结果,因此遗传算法主要用来估计极值点的大致位置。
目录
石中居士:最优化计算与Matlab实现——目录zhuanlan.zhihu.com
matlab length_【重点】最优化计算与matlab实现(20)——遗传算法相关推荐
- matlab求二元函数极值算法_最优化计算与matlab实现(3)——进退法
参考资料 <精通MATLAB最优化计算(第二版)> 数值实现 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录zhuanlan.zhihu.com 进退法 ...
- matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...
参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录zhuanlan.zhihu.com 权重改进 ...
- c++分治法求最大最小值实现_最优化计算与matlab实现(12)——非线性最小二乘优化问题——G-N法...
参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录zhuanlan.zhihu.com 非线性最 ...
- matlab nan变成0_最优化计算与matlab实现(17)——粒子群优化算法——带压缩因子的粒子群算法...
参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录zhuanlan.zhihu.com 带压缩因 ...
- matlab编程与最优化设计应用,MATLAB编程与最优化设计应用
MATLAB编程与最优化设计应用 出版时间:2013年08月 定 价:59.00 I S B N :9787121210525 所属分类: 计算机•网络  计算机•网络 > ...
- MATLAB牛拉法计算潮流,matlab潮流计算
<matlab潮流计算>由会员分享,可在线阅读,更多相关<matlab潮流计算(14页珍藏版)>请在装配图网上搜索. 1.附录1使用牛顿拉夫逊法进行潮流计算的Matlab程序代 ...
- Matlab编写一个脚本计算e,Matlab编程基础I脚本.PPT
Matlab编程基础I脚本 数学软件 Matlab 本讲主要内容 Matlab 编程 M 文件 M 文件 编程示例 编程示例 本讲主要内容 关系运算 关系运算举例 逻辑运算 逻辑运算 逻辑运算 一些测 ...
- 补偿matlab,Type-III 补偿参数计算的 matlab 脚本
在 voltage mode 的 DC-DC 中,由于功率级中的电感和电容会在环路中引入一对极点,从而会导致环路相位的裕度的问题.为保持环路的稳定,通常的方法是在环路中加上 Type-III 补偿. ...
- matlab第八章概率计算ppt,Matlab来解决概率统计学ppt
PPT内容 这是一个关于Matlab来解决概率统计学ppt,主要介绍将利用Matlab来解决概率统计学中的概率分布.数字特征.参数估计以及假设检验等问题.欢迎点击下载哦. 本章将利用Matlab来解决 ...
最新文章
- powerDesign设计随笔
- 瞄准医疗数据安全四大风险 东软DBA如何绝地阻击
- requests模块的入门使用
- P4309 [TJOI2013]最长上升子序列 平衡树 + dp
- Acwing 1084. 数字游戏 II
- 安装phpssdb扩展:
- 现代软件工程系列 创新靠学分
- 历史上的今天:首条海底光缆开通;VeriSign 收购 Network Solutions;计算机图形学先驱诞生...
- 打开outlook2010里面的链接显示 “由于本机的限制,该操作已被取消。请与系统管理员联系。”解决方法...
- 数据科学包9-pandas高级内容之数据IO
- jvisualvm安装插件出现网络问题
- 局域网传文件_秒杀QQ微信,这3个神器传输文件快10倍
- 欧拉回路和Hanmilton回路
- 多重影分身之术!快来领取属于自己的个人智能助手!
- 群晖Synology DS918+使用笔记-基础篇
- 致COSCon’20最可爱的人们~
- UA OPTI570 量子力学16 含时的哈密顿量与时间演化算符
- Apple Watch如何重新配对
- scrapy rule follow的理解和应用
- Java多人视频通信(不定时更新)
热门文章
- 预约直播!抢CSDN纪念卫衣:开源是在为爱发电?
- 支持百万级TPS,Kafka是怎么做到的?
- 专访华为杨海松:立足合作伙伴价值,构建健康HarmonyOS生态
- 一转眼,距 2021 竟然就不到 65 天了,你准备好了么?
- 全面拥抱云原生应用研发的拐点已经到来
- 员工一言不合就离职怎么办?用 Python 写了个员工流失预测模型
- 登 GitHub 趋势榜首德国疫情追踪 App 号称可保疫情隐私数据无忧,你信吗?
- “我在小公司混,有没有资格去知名技术大会上做分享?”
- 库克:苹果从没有垄断;微信搜索升级;微软发布首款支持 Linux 的 Office 应用 | 极客头条...
- C、C++ 不得宠,微软正开发新的编程语言!