基于Matlab遗传算法优化工具箱的应用*

2014-07-31 20:42刘国春赵武云
机械研究与应用 2014年2期
关键词:工具箱遗传算法函数

刘国春,费 强,赵武云,戴 飞

(1.酒泉奥凯种子机械股份有限公司, 甘肃 酒泉 735000; 2.甘肃农业大学, 甘肃 兰州 730070)

基于Matlab遗传算法优化工具箱的应用*

刘国春1,费 强2,赵武云2,戴 飞2

(1.酒泉奥凯种子机械股份有限公司, 甘肃 酒泉 735000; 2.甘肃农业大学, 甘肃 兰州 730070)

主要介绍了Matlab遗传算法优化工具箱的特点和功用。根据其在函数求解优化的作用,结合非线性函数问题的优化实例进行函数求解,利用Matlab神经网络工具箱对求解结果进行验证,说明了遗传算法工具箱相比其它编程工具大大简化了编程工作, 优化结果更加准确。

遗传算法;Matlab;优化;神经网络

0 引 言

遗传算法在应用过程中必须要编制大量的程序进行优化计算, 因而对不同的专业人员应用该方法带来不便。Matlab语言是一种高效率的用于科学工程计算的高级语言, 它的语法规则简单,更贴近人的思维方式,通俗易懂,简便易学[1]。尤其是Matlab软件有着丰富的各种专业的工具箱供各专业应用。其中,较有名的工具有英国Sheffield 大学Peter Fleming教授等开发的遗传算法工具箱;另一个是美国北Carolina州立大学ChistopherHouck 等开发的工具箱GAOT[2]。此外,在Matlab中提供了一个遗传算法与直接搜索工具箱(gads),可用命令行调用或用图形用户界面(GUI)进行使用,也可添加自己编制的函数进一步增加功能[3]。 Matlab添加了对约束条件的处理,只需编制相应的约束函数的M文件即可,使其应用功能进一步增强。因此基于Matlab的遗传算法工具箱的推出,可以为不同的专业领域解决问题提供更加方便和简洁的操作。

1 遗传算法

1.1 遗传算法原理

遗传算法是由美国Michigan大学的John Holland教授在20世纪60年代提出的,它是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法[4-5]。理论基础来源于生物的自然选择理论和基因遗传学原理。它是将问题域的可行解看作是群体的/染色体0, 将其置于问题的/环境0中, 根据适者生存的原则, 从中选择出适应环境的/染色体0进行复制, 即再生, 通过交叉、变异两种基因操作产生出新一代更适合环境的/染色体0群,这样一代代不断改进, 最后收敛到一个最适合环境的个体上,求得问题的最佳解。遗传算法提供了一种求解复杂系统优化问题的模式,它不依赖于问题的具体领域,对问题的求解种类有很强的鲁棒性, 现已几乎渗透到从工程到社会科学的诸多领域, 广泛用于函数优化、组合优化、生产调度、机器学习、自动控制、图像处理和人工生命等领域[6]。

1.2 遗传算法的特点

(1) 不是从一个点开始搜索最优解,而是从一个种群开始进行并行搜索,搜索轨道有多条,具有良好的并行性,因而可有效地防止搜索过程收敛于局部最优解, 更利于搜索到全局最优解。

(2) 遗传算法只需利用目标函数的取值信息,无需梯度等高价信息和其它信息,对问题的依赖性小,因而适用于大规模、非线性函数优化及无解析表达式的目标函数的优化, 有较广的应用性。

(3) 遗传算法的择优机制是一种软决策, 加上其良好的并行性, 使它具有良好的全局优化性能和稳健性。

(4) 遗传算法采用概率搜索技术, 是一种不确定性的搜索方法,不同于传统的确定性的搜索方法, 更有利于得到最优解[7]。

1.3 遗传算法在函数优化中的应用

函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。对于一些非线性、多模型、多目标的函数优化问题,用其它优化方法较难求解,而遗传算法可方便的得到较好的结果。

2 遗传算法工具箱(GA Toolbox)[8-10]

Matlab遗传算法工具箱(GAOT)实现遗传算法的步骤和其他编程语言实现遗传算法的流程一样,也需解决编码方式、初始群体的建立、选择算子、交叉算子、变异算子、评价函数及终止标准等问题,遗传算法工具箱GAOT包括了许多实用的函数, 这些函数按照功能可分为以下几类:主界面函数、选择函数、演化函数、其它的一些终止函数、二进制表示函数、演示程序等等.Matlab的遗传算法工具箱核心函数GAOT V5其主程序ga.m提供了遗传算法工具箱与外部的接口。在Matlab环境下,执行ga.m并设定相应的参数,就可完成优化GAOT通过编写GA.m基本操作的M文件和主程序的M文件来实现和改进GA.m。他首先对优化问题进行分析,建立优化数学模型,定义适应函数(对于约束优化问题,还需确定约束条件,给出约束函数)。然后利用文件编辑器将这些函数写入到能返回函数值的M文件中,这样就把函数表达式写入Matlab系统中。最后在命令窗口执行M文件,就可得到优化解。

3 应用实例

问题一:在x∈[-1,1]条件下对下列函数分别求最小值Fun1min ,Fun2min ,Fun3min,。

(1) 建立fun1.m ,fun2.m,fun3.m无约束函数文件,保存在我的文档/matlab文件夹下。

Fun1:function f=fun1(x)

f=-99.58+0.022*x(1)+0.030*x(2)+0.012*x(3)+0.0008*x(4)-0.021*x(1)^2-0.018*x(2)^2+0.080*x(3)^2-0.016*x(4)^2+0.004*x(1)*x(2)+0.0025*x(1)*x(3)+0.005*x(1)*x(4)-0.015*x(2)*x(3)-0.015*x(2)*x(4)-0.0025*x(3)*x(4);

Fun2:unction f=fun2(x)

f=4.30+0.18*x(1)+0.25*x(2)+0.032*x(3)+0.12*x(4)+0.16*x(1)^2+0.15*x(2)^2+1.1*x(3)^2+0.18*x(4)^2+0.087*x(1)*x(2)-0.038*x(1)*x(3)-0.06*x(1)*x(4)-0.23*x(2)*x(3)-0.077*x(2)*x(4)+0.07*x(3)*x(4);

Fun3:function f=fun3(x)

f=0.46+0.019*x(1)+0.029*x(2)+0.006*x(3)+0.011*x(4)+0.016*x(1)^2+0.018*x(2)^2+0.11*x(3)^2+0.016*x(4)^2+0.01*x(1)*x(2)+0.003*x(1)*x(3)-0.005*x(1)*x(4)-0.01*x(2)*x(3)-0.008*x(2)*x(4)+0.005*x(3)*x(4);

(2) 打开Matlab程序-点击框图左下角的start-点击toolboxes-点击Genetic Algorithm and direct search-点击Genetic Algorithm tool(gatool)。分别对上述三个无约束函数进行最优化求解,在工具箱中设置solver为ga-Genetic Algorithm ,fitness function指要求解的目标函数如@fun1设置变量数number of variables为4,区间为lower:[-1 -1 -1 -1] upper:[1 1 1 1],点击start开始运行,三个函数求解运行结果如图1~3所示。

(3) 运用Matlab神经网络工具箱对求解结果进行验证,打开Matlab程序-点击框图左下角的start-点击toolboxes-点击more-点击optimizationtool,分别对上述三个无约束函数进行最优化求解,在工具箱中设置solver为fmincon-constrained nonlinear minimization,Algorithm为active set,Objiective function指要求解的目标函数如@fun1,设置起点start point为[0 0 0 0],区间为lower:[-1 -1 -1 -1],upper:[1 1 1 1],点击start开始运行,三个函数求解运行结果如图4~6所示。

图1 Fun1 图2 Fun2

图3 Fun3 图4 Fun1的验证

图5 Fun2的验证 图6 Fun3的验证

(4) 两种算法结果分析

两种算法结果对照如表1所列。

表1 两种算法结果对照

问题二:对非线性不等式约束函数最优化求解。

已知:x∈[-1,1],Cx≤0

0.8fun1min≤fun1≤1.2fun1min

0.8fun2min≤fun2≤1.2fun2min

fun1-1.2fun1min≤0

-fun1+0.8fun1min≤0

fun2-1.2fun2min≤0

-fun2+0.8fun2min≤0

所以编写新的约束函数M文件myfun3_c.m:

function c=myfun3_c(x)

c=[-99.58+0.022*x(1)+0.030*x(2)+0.012*x(3)+0.0008*x(4)-0.021*x(1)^2-0.018*x(2)^2+0.080*x(3)^2-0.016*x(4)^2+0.004*x(1)*x(2)+0.0025*x(1)*x(3)+0.005*x(1)*x(4)-0.015*x(2)*x(3)-0.015*x(2)*x(4)-0.0025*x(3)*x(4)-119.65353;99.58-0.022*x(1)-0.030*x(2)-0.012*x(3)-0.0008*x(4)+0.021*x(1)^2+0.018*x(2)^2-0.080*x(3)^2+0.016*x(4)^2-0.004*x(1)*x(2)-0.0025*x(1)*x(3)-0.005*x(1)*x(4)+0.015*x(2)*x(3)+0.015*x(2)*x(4)+0.0025*x(3)*x(4)+79.75686;4.30+0.18*x(1)+0.25*x(2)+0.032*x(3)+0.12*x(4)+0.16*x(1)^2+0.15*x(2)^2+1.1*x(3)^2+0.18*x(4)^2+0.087*x(1)*x(2)-0.038*x(1)*x(3)-0.06*x(1)*x(4)-0.23*x(2)*x(3)-0.077*x(2)*x(4)+0.07*x(3)*x(4)-4.9;

-4.30-0.18*x(1)-0.25*x(2)-0.032*x(3)-0.12*x(4)-0.16*x(1)^2-0.15*x(2)^2-1.1*x(3)^2-0.18*x(4)^2-0.087*x(1)*x(2)+0.038*x(1)*x(3)+0.06*x(1)*x(4)+0.23*x(2)*x(3)+0.077*x(2)*x(4)-0.07*x(3)*x(4)+3];

求函数的最小值及对应的x1、x2、x3、x4和fun1,fun2的值。运用两种算法求解结果如图7、8和表2所示。

图7 遗传算法求解结果 图8 神经网络求解结果

算法函数 遗传算法工具箱求的结果神经网络工具箱求的结果myfun30.5872260.5872283Fun1-99.4800-99.48001Fun25.4791045.4792693

从问题一和问题二的结果对照表中,可得出两者算法的结果误差率小于0.1%,二者结果近似相等,说明遗传算法算出的结果真实可行。从两者算法的过程及图形上可得出遗传算法过程简单,效率更高,不用设置起点,算法更加全面,结果更加准确。

4 结 语

实例表明,基于 Matlab 的遗传算法优化工具箱提供了一个标准的、可扩展的、简单的算法,对于难以定义或不便于进行数学建模优化的问题, 该工具箱具有很好的适用性( 它不需要对目标函数的相关信息有所了解),同时有较快的收敛速度和较高的计算精度,使用者可避免繁重的编程工作,提高计算效率。

[1] 陈永春. Matlab M语言高级编程[M].北京:清华大学出版社,2004.

[2] 雷英杰,张善文.Matlab遗传算法工具箱及其应用[M].西安:西安电子科技大学出版社, 2005.

[3] 薛定宇,陈阳泉.高等应用数学问题的Matlab解法[M].北京:清华大学出版社,2004.

[4] 周琛琛.基于Matlab遗传算法工具箱的函数优化问题求解[J].现代计算机,2006(12): 84-86.

[5] 周正武,丁同梅,田毅红,等.Matlab 遗传算法优化工具箱(GAOT)的研究与应用[J].机械研究与应用,2006,6(19):69- 71.

[6] 张德丰.Matlab神经网络应用设计[M].北京:机械工业出版社,2009.

[7] 陆泽浩.基于遗传算法的人工智能优化研究[J].广西轻工业,2012(4):77-80.

[8] 许 波,余建平,彭志平,朱兴统,等.改进非支配排序遗传算法求解多目标Agent联盟[J].系统仿真学报,2012(9):1-5.

[9] 吕亭亭,马小平,陈 力,等.基于遗传算法优化的跳汰机排料系统YID控制仿真[J].工矿自动化,2013(1):67-70.

[10] 朱永强,鲁聪达.齿轮的遗传算法优化设计[J].机械研究与应用,2003,2(16):46-50.

Application of Genetic Algorithm Optimization Toolbox Based on Matlab

LIU Guo-chun1, FEI Qiang1, ZHAO Wu-yun1,DAI Fei2

(1.GansuJiuquanOKSeedMachineryCo.,Ltd,JiuquanGansu735000,China;2.GansuAgriculturalUniversity,LanzhouGansu730070,China)

The characteristics and functions of MATLAB genetic algorithm optimization toolbox is mainly introduced . According to its function for solving optimization effect, combined with the optimization of nonlinear functions function model, using the MATLAB neural network toolbox to solve were tested, the results shows that genetic algorithm toolbox compared to other programming tools greatly simplify the programming, the optimization results are more accurate.

genetic algorithm; Matlab; optimization; neural network

2014-02-24

“十二五”国家科技支撑计划项目“西北绿洲农牧循环技术集成与示范”(编号:2012BAD14B10)。

刘国春(1972- ),男,甘肃金塔人,工程师,硕士,主要从事种子加工技术方面研究工作。

赵武云(1966- ),男,甘肃兰州人,教授,硕导,主要从事农业工程技术与装备研究方面的工作。

TP301.6

A

1007-4414(2014)02-0071-03

猜你喜欢
工具箱遗传算法函数
二次函数
第3讲 “函数”复习精讲
二次函数
函数备考精讲
基于自适应遗传算法的CSAMT一维反演
基于MATLAB优化工具箱优化西洋参总皂苷提取工艺
一种基于遗传算法的聚类分析方法在DNA序列比较中的应用
基于遗传算法和LS-SVM的财务危机预测
Matlab曲线拟合工具箱在地基沉降预测模型中的应用
基于改进的遗传算法的模糊聚类算法