参考资料

《精通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)——遗传算法相关推荐

  1. matlab求二元函数极值算法_最优化计算与matlab实现(3)——进退法

    参考资料 <精通MATLAB最优化计算(第二版)> 数值实现 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 进退法 ...

  2. matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 权重改进 ...

  3. c++分治法求最大最小值实现_最优化计算与matlab实现(12)——非线性最小二乘优化问题——G-N法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 非线性最 ...

  4. matlab nan变成0_最优化计算与matlab实现(17)——粒子群优化算法——带压缩因子的粒子群算法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 带压缩因 ...

  5. matlab编程与最优化设计应用,MATLAB编程与最优化设计应用

    MATLAB编程与最优化设计应用 出版时间:2013年08月 定 价:59.00 I S B N :9787121210525 所属分类: 计算机•网络 &nbsp计算机•网络  >   ...

  6. MATLAB牛拉法计算潮流,matlab潮流计算

    <matlab潮流计算>由会员分享,可在线阅读,更多相关<matlab潮流计算(14页珍藏版)>请在装配图网上搜索. 1.附录1使用牛顿拉夫逊法进行潮流计算的Matlab程序代 ...

  7. Matlab编写一个脚本计算e,Matlab编程基础I脚本.PPT

    Matlab编程基础I脚本 数学软件 Matlab 本讲主要内容 Matlab 编程 M 文件 M 文件 编程示例 编程示例 本讲主要内容 关系运算 关系运算举例 逻辑运算 逻辑运算 逻辑运算 一些测 ...

  8. 补偿matlab,Type-III 补偿参数计算的 matlab 脚本

    在 voltage mode 的 DC-DC 中,由于功率级中的电感和电容会在环路中引入一对极点,从而会导致环路相位的裕度的问题.为保持环路的稳定,通常的方法是在环路中加上 Type-III 补偿. ...

  9. matlab第八章概率计算ppt,Matlab来解决概率统计学ppt

    PPT内容 这是一个关于Matlab来解决概率统计学ppt,主要介绍将利用Matlab来解决概率统计学中的概率分布.数字特征.参数估计以及假设检验等问题.欢迎点击下载哦. 本章将利用Matlab来解决 ...

最新文章

  1. powerDesign设计随笔
  2. 瞄准医疗数据安全四大风险 东软DBA如何绝地阻击
  3. requests模块的入门使用
  4. P4309 [TJOI2013]最长上升子序列 平衡树 + dp
  5. Acwing 1084. 数字游戏 II
  6. 安装phpssdb扩展:
  7. 现代软件工程系列 创新靠学分
  8. 历史上的今天:首条海底光缆开通;VeriSign 收购 Network Solutions;计算机图形学先驱诞生...
  9. 打开outlook2010里面的链接显示 “由于本机的限制,该操作已被取消。请与系统管理员联系。”解决方法...
  10. 数据科学包9-pandas高级内容之数据IO
  11. jvisualvm安装插件出现网络问题
  12. 局域网传文件_秒杀QQ微信,这3个神器传输文件快10倍
  13. 欧拉回路和Hanmilton回路
  14. 多重影分身之术!快来领取属于自己的个人智能助手!
  15. 群晖Synology DS918+使用笔记-基础篇
  16. 致COSCon’20最可爱的人们~
  17. UA OPTI570 量子力学16 含时的哈密顿量与时间演化算符
  18. Apple Watch如何重新配对
  19. scrapy rule follow的理解和应用
  20. Java多人视频通信(不定时更新)

热门文章

  1. 预约直播!抢CSDN纪念卫衣:开源是在为爱发电?
  2. 支持百万级TPS,Kafka是怎么做到的?
  3. 专访华为杨海松:立足合作伙伴价值,构建健康HarmonyOS生态
  4. 一转眼,距 2021 竟然就不到 65 天了,你准备好了么?
  5. 全面拥抱云原生应用研发的拐点已经到来
  6. 员工一言不合就离职怎么办?用 Python 写了个员工流失预测模型
  7. 登 GitHub 趋势榜首德国疫情追踪 App 号称可保疫情隐私数据无忧,你信吗?
  8. “我在小公司混,有没有资格去知名技术大会上做分享?”
  9. 库克:苹果从没有垄断;微信搜索升级;微软发布首款支持 Linux 的 Office 应用 | 极客头条...
  10. C、C++ 不得宠,微软正开发新的编程语言!