点击蓝字 关注我们
小拓君的建模快学课开课啦!
今天给大家讲的是:
巧用Matlab遗传算法求解最优化问题(1)
好好做笔记啦~
遗传算法
模拟达尔文进化论的自然选择和遗产学机理的生物进化构成的计算模型,一种不断选择优良个体的算法。通俗理解就是用类生物的办法对数学模型逐代择优。
关于遗传算法的通俗解释,小拓君推荐知乎文章一篇:
https://www.zhihu.com/question/23293449
此文中的第一篇和第二篇,第一篇偏向于就理解,很详细的解释了遗传算法的大概原理。而第二篇偏向理论,更加清楚的阐述了遗传算法的程序实现,两篇结合,基本可以实现遗传算法在求解最优中的应用。
在常见的Matlab版本中,都内嵌有优化工具箱(GA工具箱),其中就有遗传算法的计算功能,交互式操作界面极大简化了遗传算法的使用流程。小拓君在这里就以一个简要的例子说明该工具箱的具体用法,让同学们能够方便快速的求解目标函数的最优化问题。
要使用遗传算法,首先得按照自己的建模需求建立自适应度函数。在这里,可以是数学模型目标函数的变形,在Matlab中,遗传算法所求的都是最小值,因此只要将目标函数转化为求最小值函数即可,下面假设自适应度函数已经建立完成如下:
function z=fu(x)
z=x+10*sin(5*x)+7*cos(3*x);
我们将其保存为fu.m文件,如图所示
接着在命令行中输入optimtool打开优化工具箱
接着在Solver中选择ga遗传算法
最后设置如下
Bounds:求解边界(即求解变量X的范围)为-10到10
Number of variable:求解的变量个数
Plot functions :设置画图选项
点击 Start 进行运算,得到逼近的求解结果为-23.79,求解完成,同时得到适应度函数值与遗传代数的图像:
至于用遗传算法求多个变量最优的方法嘛,其实原理完全一样,这就留到下一次遗传算法课再讲啦~
近期预告:数模算法,获奖经验,国赛与美赛的比较,最新版office,lingo等等,敬请关注!
-END-