首页 理论教育 实用数学方法:MATLAB遗传算法

实用数学方法:MATLAB遗传算法

时间:2023-11-17 理论教育 版权反馈
【摘要】:3)使用其他函数和求解器遗传算法与直接搜索工具箱和MATLAB优化工具箱是紧密结合在一起的。通过结合不同的算法,可以充分地发挥MATLAB和工具箱的功能以提高求解的质量。

实用数学方法:MATLAB遗传算法

1. 遗传算法与直接搜索概述

MATLAB中遗传算法与直接搜索(Cenetic Algorithm and Direct Search,GADS)工具箱是一系列函数的集合,它们扩展了优化工具和MATLAB数值计算环境。遗传算法与直接搜索工具箱包含了要使用遗传算法和直接搜索算法来求解优化问题的一些例程。这些算法使我们能够求解那些标准优化工具箱范围之外的各种优化问题。所有工具箱函数都是MATLAB的M文件,这些文件由实现特定优化算法的MATLAB语句构成。

使用语句

TYPE function_name就可以看到这些函数的MATLAB代码。可以通过编写自己的M文件来实现并扩展遗传算法和直接搜索工具箱的性能,也可以将该工具箱与MATLAB的其他工具箱或Simulink结合使用来求解优化问题。

工具箱函数可以通过图形界面或MATLAB命令行来访问,它们是用MATLAB语言编写的,对用户开放,因此可以查看算法、修改源代码或生成用户函数。

遗传算法与直接搜索工具箱有助于求解那些不易用传统方法解决的问题,譬如旅行商问题等。

遗传算法与直接搜索工具箱有一个精心设计的图形用户界面,便于直观、快速地求解最优化问题。

1)功能特点

遗传算法与直接搜索工具箱的功能特点有:

(1)图形用户界面和命令行函数可用来快速地描述问题,设置算法选项以及监控过程。

(2)具有多个选项的遗传算法工具可用于问题创建、适应度计算、选择、交叉和变异。

(3)直接搜索工具实现了一种模式搜索方法,其选项可用于定义网格尺寸、表决方法和搜索方法。

(4)遗传算法与直接搜索工具箱函数可与MATLAB的优化工具箱或其他的MATLAB程序结合使用。

(5)支持自动的M代码生成。

2)图形用户界面和命令行函数

遗传算法工具函数可以通过命令行和图形用户界面来使用遗传算法。直接搜索工具函数也可以通过命令行和图形用户界面来进行访问。图形用户界面可用来快速地定义问题,设置算法选项,对优化问题进行详细定义。

遗传算法和直接搜索工具箱同时提供了用于优化管理、性能监控及终止准则定义的工具,同时还提供了大量的标准算法选项。

在优化运行的过程中,可以通过修改选项来细化最优解,更新性能结果。用户也可以提供自己的算法选项来定制工具箱。

3)使用其他函数和求解器

遗传算法与直接搜索工具箱和MATLAB优化工具箱是紧密结合在一起的。用户可以用遗传算法或直接搜索算法来寻找最佳起始点,然后利用优化工具箱或MATLAB程序来进一步寻找最优解。通过结合不同的算法,可以充分地发挥MATLAB和工具箱的功能以提高求解的质量。对于某些特定问题,使用这种方法还可以得到全局(最优)解。

4)显示、监控和输出结果

遗传算法与直接搜索工具箱还包括一系列绘图函数,用来可视化优化结果。这些可视化功能直观地显示了优化的过程,并且允许在执行过程中进行修改。

使用输出函数可以将结果写入文件,产生用户自己的终止准则,也可以写入用户自己的图形界面来运行工具箱求解器。除此之外,还可以将问题的算法选项导出,以便日后再将它们导入图形界面中。

2. 使用遗传算法工具初步

1)遗传算法使用规则

遗传算法是一种基于自然选择生物进化过程来求解的方法。在每一步中,遗传算法随机地从当前种群中选择若干个个体作为父辈,并且使用它们产生下一代的子种群。

在连续若干代之后,种群朝着优化解的方向进化。可以用遗传算法来求解各种不适宜用标准算法求解的优化问题,包括目标函数不连续、不可微、随机或高度非线性的问题。(www.xing528.com)

遗传算法在每一步使用下列三类规则从当前种群来创建下一代:

(1)选择规则(Selection Rules):选择对下一代种群有贡献的个体(称为父辈)。

(2)交叉规则(Crossover Rules):将两个父辈结合起来构成下一代的子辈种群。

(3)变异规则(Mutation Rules):施加随机变化给父辈个体来构成子辈。

(4)遗传算法与标准优化算法主要在两个方面有所不同,对比情况归纳于表2.3.1中。

表2.3.1 遗传算法与标准优化算法比较

2)遗传算法使用方式

遗传算法工具有两种使用方式:以命令行方式调用遗传算法函数ga或通过图形用户界面使用遗传算法工具。

(1)在命令行使用遗传算法,可以用下列语法调用遗传算法函数ga:

其中:@fitnessfun是目标函数句柄;nvars是目标函数中独立变量的个数;options是一个含遗传算法选项参数的数据结构;其他函数的含义与非线性规划fmincon中的参数相同。函数返回值x为最终值到达的点,这里x为行向量,fval为目标函数的最终值。例1 求下列规划问题的解:

解 (1)编写适应度函数(文件名为ycfunl .m):

(3)编写主函数:

遗传算法函数的运行结果每一次都是不一样的,要运行多次,找一个最好的结果。

(2)通过GUI使用遗传算法。

遗传算法工具有一个用户图形界面GUI,该界面下可以使用遗传算法而不必以命令行方式工作。遗传算法的用户图形界面集成在优化工具箱里,打开遗传算法用户图形界面,可输入以下命令:

optimtool

使用遗传算法用户图形界面解法,首先必须输入下列信息:

① Fitness function(适应度函数)—— 欲求最小的目标函数。输入适应度函数的形式为@fitness,其中,fitnessfun.m是计算适应度函数的M函数;符号@产生一个对于函数fitnessfun的函数句柄。

② Number of varidbles(变量个数)—— 适应度函数输入向量的长度

其他参数的含义就不一一介绍了,与优化工具的用户图形界面解法中的参数一样。如果某个参数的值为空,则可以输入空矩阵,或者什么都不输入。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈