背景介绍
GA(Genetic Algorithm):是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向,是一种通过模拟自然进化过程搜索最优解的方法。
初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。
核心思想
1. 随机产生一些初始种群
2. 根据适应度对种群采用某种方式进行自然选择
3. 对选择剩余的种群进行遗传操作,产生新的种群
4. 回到步骤2,直到满足某个终止条件
5. 此时剩余的是适应度较好的种群,比较可得该算法的最优解
算法流程
代码实战
代码中所用测试函数可以查看相关文档,测试函数(Test Function)
GA_main.m
1 | clear;clc;close all; |
f.m
1 | function res=f(x) |
实验结果
$$f(x)=x \cdot \sin(\sqrt{\lvert x \rvert}) \ , \ x \in [-500,500]$$
$$理论值:f(x)_{min}=f(-420.96874592006)=-418.982887272434$$
$$所求值:f(x)_{min}=f(-420.975929624477)=-418.982880761435$$
性能比较
- 优点:
- 从群体出发,具有并行性
- 可用于求解复杂的非线性优化问题
- 使用概率机制进行迭代,具有随机性
- 具有可扩展性,容易与其他算法结合
- 缺点:
- 受到参数影响较大
- 可能产生早熟收敛问题
- 对问题编码表示较为困难
- 算法对初始种群的选择有一定的依赖性
- 搜索速度比较慢,要得到较精确的解需要较多的训练时间