一、理论基础
《MATLAB 智能算法案例分析之遗传算法工具箱》中,我们深入了解了谢菲尔德大学的 MATLAB 遗传算法工具箱。这一章节为我们后续学习和应用遗传算法奠定了坚实的基础。
(一)遗传算法概述
遗传算法(genetic algorithm,GA)是一种进化算法,它模拟了生物界中的 “物竞天择、适者生存” 的演化法则。在这个算法中,问题的参数被编码为染色体,染色体由基因组成,多个个体构成群体。
遗传算法的基本步骤包括:编码,即将解空间的解数据表示成遗传空间的基因型串结构数据;初始群体的生成,随机产生 N 个初始串结构数据作为群体的初始点开始进化;适应度评估,适应度表明个体或解的优劣性,不同问题有不同的适应性函数定义方式;选择,从当前群体中选出优良个体,使它们有机会繁殖子孙,体现了达尔文的适者生存原则;交叉,通过交叉操作得到新一代个体,组合了其父辈个体的特性,体现信息交换思想;变异,以一定概率随机地改变串结构数据中某个串的值,但发生概率通常较低。
(二)谢菲尔德遗传算法工具箱
- 工具箱简介
谢菲尔德遗传算法工具箱是由英国谢菲尔德大学开发的,它用 MATLAB 高级语言编写,对问题使用 M 文件编写,我们可以看到算法的源代码。该工具箱还与 MATLAB 的数据分析、可视化工具等相匹配,为遗传算法研究者和初次实验遗传算法的用户提供了广泛多样的实用函数。 - 工具箱添加
用户可以通过网络下载该工具箱,然后将其添加到本机的 MATLAB 环境中。添加步骤包括:将工具箱文件夹复制到本地计算机中的工具箱目录下(路径为 matlabroot\toolbox,其中 matlabroot 为 MATLAB 的安装根目录);将工具箱所在的文件夹添加到 MATLAB 的搜索路径中,有命令行方式(调用 addpath 命令)和图形用户界面方式(在 MATLAB 主窗口上选择 HOME→Set Path,然后单击相关按钮进行操作)两种方式;最后查看工具箱是否安装成功,可使用函数 ver 查看 gatbx 工具箱的相关信息。
二、案例背景
(一)问题描述
本案例给出了两个函数优化问题:
- 简单一元函数优化:利用遗传算法寻找函数的最小值。
- 多元函数优化:利用遗传算法寻找函数的最大值。
(二)解题思路及步
对于这两个问题,我们将自变量在给定范围内进行编码,得到种群编码。按照所选择的适应度函数并通过遗传算法中的选择、交叉和变异对个体进行筛选和进化,使适应度值大的个体被保留,小的个体被淘汰。新的群体继承了上一代的信息,又优于上一代,这样反复循环,直至满足条件,最后留下来的个体集中分布在最优解周围,筛选出其中最优的个体作为问题的解。
三、MATLAB 程序实现
(一)工具箱结构
遗传算法工具箱中的主要函数包括创建种群函数(如 crtbase、crtbp、crtrp 等)、适应度计算函数(如 ranking、scaling 等)、选择函数(如 reins、rws、select 等)、交叉算子函数(如 recint、recline、recombin 等)、变异算子函数(如 mut、mutate 等)以及子种群的支持函数(如 migrate)和实用函数(如 bs2rv、rep)。
(二)遗传算法常用函数
- 创建种群函数 ——crtbp
功能是创建任意离散随机种群。它有三种调用格式,可根据不同需求创建不同的种群。例如,可以创建一个种群大小为 5,个体长度为 10 的二进制随机种群,或者创建一个种群大小为 5,个体长度为 8,各位进制数不同的随机种群。 - 适应度计算函数 ——ranking
基于排序的适应度分配函数。它有三种调用格式,可根据不同的参数设置计算个体的适应度值。例如,对于具有 10 个个体的种群,可按照不同的规则估算适应度。 - 选择函数 ——select
从种群中选择个体的高级函数。它的调用格式中包含种群、个体适应度值以及一些可选参数,如代沟部分种群被复制的比例、子种群的数量等。通过不同的设置,可以从种群中选择出符合要求的个体。 - 交叉算子函数 ——recombin
完成种群中个体的重组。它的调用格式包含种群和一些可选参数,如交叉概率、子种群个数等。通过该函数可以对种群中的个体进行重组操作。 - 变异算子函数 ——mut
离散变异算子。对于二进制编码的种群或非二进制编码的种群,都可以使用该函数进行变异操作,将当前种群变异为新种群。 - 重插入函数 ——reins
重插入子代到种群。它的调用格式包含父代种群和子代种群以及一些可选参数,如用子代代替父代的方法、每个子种群中重插入的子代个体在整个子种群中个体的比率等。该函数可以完成插入子代到当前种群,并返回结果种群的操作。 - 实用函数 ——bs2rv
二进制到十进制的转换函数。它根据译码矩阵将二进制串矩阵转换为实值向量,返回十进制的矩阵。例如,先创建二进制种群表示在 [-1,10] 区间的一组简单变量,然后使用该函数将二进制串转换为实值表现型。 - 实用函数 ——rep
矩阵复制函数。它可以完成矩阵的复制操作,通过指定复制次数,可以返回复制后的矩阵。四、延伸阅读
遗传算法工具箱具有广泛的应用领域,它可以求解非线性、多模型、多目标等复杂系统优化问题,不依赖问题的具体领域,对问题的种类具有很强的鲁棒性。因此,它在函数优化、组合优化、生产调度、自动控制、机器人学、图像处理、人工生命、遗传编码和机器学习等方面都得到了广泛的应用。