数学建模–ML之遗传算法(MATLAB)【求具体函数最大值问题】
前言:博主为MATLAB初学者,本文作为博主学习笔记,如有错误之处还望指正,不胜感激!
有如下问题:函数为f(x)=9sin(5x)+8cos(4x),x∈[0,15],求其最大值。
方法提纲
初始化群体评价群体优胜劣汰,趋向最优
程序设计及步骤
1)初始化
创建函数文件initpop.m,功能是初始化群体。
2)计算目标函数值
先将初始群体的二进制编码转换为十进制数,再计算目标函数值。
3)计算群体中个体的适应度
为实现优胜劣汰,我们计算其适应度。
. 遗传算法包括三个遗传算子:选择、交叉、变异。我们依次进行:
4)选择复制
5)交叉
6)变异
7)找出群体中适应度最大者
8)主程序
最后得到结果如图:
遗传算法参数:
群体大小----------20~100 进化代数----------100~500 交叉概率----------0.4~0.99 变异概率----------0.0001~0.1
参考文献:MATLAB数学建模 李昕○编著
不知道为什么不能设成转载,其实文章是学习了参考文献中书籍所做的笔记,若有不当之处还望指正,谢谢。