学习数学建模常见算法–遗传算法.
首先,确定一下学习路线和学习资料(按照这个路线,入门非常容易,主要是人家文章写得好!):
- 视频:https://www.bilibili.com/video/av11893597?from=search&seid=7014684773398800271
主要讲绪论知识和基本理论以及简单的例程,不涉及编程。
适合:完全不懂遗传算法的同学可作为先验知识。 - 课件:链接:https://pan.baidu.com/s/1HER9V64ninS2k0imiEEoKA 提取码:zzp8
非常通俗的讲解,适合看完视频后再看这个课件,讲解有一定算法思想。有一个实验,但是是使用c语言编写。后边我会用matlab代码进行重写。 - matlab遗传算法实验:遗传算法解决最优解问题
这篇文章非常通俗易懂,有前面的基础知识后非常容易看懂,写的也很有意思,看着就是笔者已经将这个算法吃透了。
我复现了笔者的实验,实验结果很好,这里就不再贴图(实际是做完忘记截图了…)。
本文例题可以使用蚁群算法解决:蚁群算法
1、根据笔者的实验自己做了上边提到的课件中的题目:关于香蕉函数(Rosenbrock函数)的最大值求解问题。
思路:
-
1、编码与解码:分别使用十位二进制数表示x1,x2,那么种群中的每个个体就是20位二进制数。(编码方式参见上边提到的课件)
二进制数转化为十进制数算法:
表现在这道题目就是:Umin = -2.048,Umax = 2.048 ,λ = 10,bi是十位二进制中的每一个值(仅有0 、1);
所以 x 1 = U m i n + ( ∑ i = λ 1 b i ∗ 2 i − 1 ) U m a x − U m i n 2 λ − 1 x_{1}=Umin + (\sum_{i=\lambda }^{1}b_{i}\ast 2^{i-1})\frac{Umax-Umin}{2^{\lambda } - 1} x1=Umin+(i=λ∑1bi∗2i−1)2