zt3ff3n 发表于 2022-1-23 18:00

遗传算法-matlab实现

近日,在完成数学建模期末考试的过程中,使用到了启发式优化算法,做一下记录。本人是初入研究生的一位科研小白,希望通过此次分享加深自己对优化算法的理解,同时作为我发表的第一篇文章。
启发式算法中最为代表的是遗传算法,该算法是一种模拟达尔文的自然选择学说的数学优化算法,它使用计算机模拟生物的进化过程,借鉴了生物进化优胜劣汰的自然选择机理,采用基因重组,基因突变的遗传机制,属于一种全局优化算法。
采用遗传算法目标优化的过程采用遗传算法进行对最优目标的一种搜索,利用遗传算法的遗传与变异过程,跳出局部域,减少出现局部最优解的几率,进行全局的搜索,获取目标的全局最优解。
计算的开始,将实际问题的变量进行编码形成染色体,随机产生一定数目的个体,即种群,并计算每个个体的适应度值,然后通过种植体哦阿健判断该初始解是否是最优解,若是则停止运算,输出结果。若不是则通过遗传算子产生新一代的种群,回到计算群体中每个个体 的适应度值部分,然后转到终止条件判断。这一过程循环执行,直到满足优化准则,产生问题的最优解。



简单遗传算法基本过程

遗传算的过程
1.初始参数设置
算法的初始化阶段,需要对遗传算法的参数进行设置。一般需要设置的参数有种群数量,交叉概率,变异概率,进化代数。
种群规模:在算法模型中生成的个体的数量,种群数目太少,不能够提供足够的采样点,种群规模太大,会增加运算量,延长收敛时间。一般种群规模设置为20~100之间。
交叉概率:交叉是使得种群变化的一个重要手段,出现变化才有可能获取更优解,交叉概率太大,容易使得高适应度的个体被破坏掉,交叉概率过低,不足以产生新的个体。一般的交叉概率设置为0.5~1.
变异概率:变异实施的种群发生变化的另一种手段,变异概率太小,不足以产生新的基因,回事寻优搜索停滞不前,一般的变异概率取0.001~0.1
进化代数:一般取100~1000代。
2.染色体编码
染色体编码是将具体问题数学化的关键步骤,由问题空间向编码空间的映射称作编码。常用的编码方式有两种:二进制编码和浮点数编码
3.适应度函数
适应度函数是根据问题实际,转化到模型的相应数据,是用来衡量个体的优劣,度亮个体适应度的函数。适应度函数值越大的个体越好,反之,适应度函数值越小的个体越差。

以下是matlab代码:










其中编码和适应度函数需要具体问题具体分析,如果想获取m文件代码,可以私信,共同学习交流。
页: [1]
查看完整版本: 遗传算法-matlab实现