数学建模–机器学习之遗传算法(MATLAB)【求具体函数最大值问题】

数学建模–ML之遗传算法(MATLAB)【求具体函数最大值问题】

         前言:博主为MATLAB初学者,本文作为博主学习笔记,如有错误之处还望指正,不胜感激!

有如下问题:函数为f(x)=9sin(5x)+8cos(4x),x∈[0,15],求其最大值。

方法提纲

  1. 初始化群体
  2. 评价群体
  3. 优胜劣汰,趋向最优

程序设计及步骤

1)初始化

创建函数文件initpop.m,功能是初始化群体。

在这里插入图片描述
2)计算目标函数值

先将初始群体的二进制编码转换为十进制数,再计算目标函数值。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3)计算群体中个体的适应度

为实现优胜劣汰,我们计算其适应度。

.在这里插入图片描述
遗传算法包括三个遗传算子:选择、交叉、变异。我们依次进行:

4)选择复制

在这里插入图片描述
5)交叉

在这里插入图片描述
6)变异

在这里插入图片描述
7)找出群体中适应度最大者

在这里插入图片描述
8)主程序

在这里插入图片描述
最后得到结果如图:

在这里插入图片描述

遗传算法参数:

群体大小----------20~100
进化代数----------100~500
交叉概率----------0.4~0.99
变异概率----------0.0001~0.1

参考文献:MATLAB数学建模 李昕○编著


版权声明:本文为qq_46351045原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。