当前位置:首页 > 实验三
实验三 应用遗传算法求解优化问题
(2学时)
一、实习目的和意义
使学生在基本掌握遗传算法理论的情况下,不需要复杂的编程通过使用遗传算法与直接搜索工具箱,就可以很方便地采用遗传算法解决优化问题,处理传统的优化技术难以解决的问题,包括哪些难以定义或不便于进行数学建模的问题。可以解决目标函数较复杂的问题,比如目标函数不连续或具有高度非线性、随机性以及目标函数不可微的情况。
二、实习内容及步骤
1、基本掌握遗传算法理论知识、了解适应度的概念及适应度函数的编写、了解遗传算法中个参数的作用。
(1)遗传算法理论知识
遗传算法的基本运算过程如下: a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。
b)个体评价:计算群体P(t)中各个个体的适应度。
c)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。
d)交叉运算;将交叉算子作用于群体。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。遗传算法中起核心作用的就是交叉算子。
e)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。
群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t 1)。
f)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。 (2)适应度的概念:
是表示某一个体对环境的适应能力,也表示该个体繁殖后代的能力。即在某种环境条件下,某已知基因型的个体将其基因传递到其后代基因库中的相对能力是衡量个体存
1
活和生殖机会的尺度。适合度越大,存活和生殖机会越高。遗传算法的适应度函数也叫评价函数,是用来判断群体中的个体的优劣程度的指标,它是根据所求问题的目标函数来进行评估的。 (3)编写适应度函数
适应度函数的设计主要满足以下条件: a)单值、连续、非负、最大化 b) 合理、一致性 c)计算量小 d)通用性强。
在具体应用中,适应度函数的设计要结合求解问题本身的要求而定。适应度函数设计直接影响到遗传算法的性能 (4)MATLAB 工具箱的使用
编写好适应度函数、保存为M文件后,就可以使用MATLAB的遗传算法工具箱了。用两种途径使用遗传算法:命令行方式、图形化界面方式。 命令行方式共有四个函数: 函数名 ga 作用 使用举例 使用遗传算法找到适应度函数X=ga((@f_exl,1); 的最小值 gaoptimget 取得遗传算法参数结构的参数Val= gaoptimget (options,’Generations’); 值 gaoptimset 创建遗传算法参数结构体,或修Option=gaoptimset; 改参数 gatool 打开遗传算法图形界面窗口 gatool 图形化界面方式下使用工具箱是比较简单方便的,每个参数栏、选项栏、显示栏都有英文名称,只要能看懂这些英文名称,可以很容易修改参数。 2、遗传算法编程求解优化问题
利用MATLAB遗传算法工具箱的函数命令编写实现多峰函数的优化: Max f(X),s>t.15≤x≤25 f(x)=x+10sin(5x)+7cos(4x) (1)编写适应度函数为:
2
文件名f_exp1.m,文件内容 Function z= f_exp1(x) Z= x+10sin(5x)+7cos(4x);
Z=-Z %因为目标函数是最大化问题所以取反 (2)调用遗传算法函数求解:
Options=gaoptimset(‘MutationFcn’,@mutationadaptfeasible); %设置参数 [x fval]=ga(@f_exl,1,[],[],[],[],15,25,[],options) %遗传算法 得到的优化结果: X=3120.4328,fval=-37.4216
3、图形用户界面下应用遗传算法求解优化问题
利用MATLAB遗传算法工具箱的图形用户界面求解多变量优化问题: Max f(X),s>t.-3≤x≤3, -3≤y≤3
f(x,y)=3(1-x)2e-x2-(y+1)2 -10(1/5x-x3-y5)e-x2-y2-1/3 e-(x+1)2-y2 (1)编写适应度函数为: 文件名f_exp2.m,文件内容 Function z= f_exp2(x)
Z= 3*(1-x(1)).∧2.*exp(-(x(1).∧2)-(x(2)+1).∧2)... -10*( x(1)/5-x(1). ∧3- x(2).∧5).*exp(-x(1).∧2-x(2).∧2)...
-1/3 *exp(-(x(1)+1).∧2-x(2).∧2 ) ; %注意程序中使用两个变量的格式 Z=-Z %因为目标函数是最大化问题所以取反 (2)在图形用户界面窗口下运行遗传算法函数:先在MATLAB的命令窗口中输入命令:gatool,回车后即可进入遗传算法图形用户界面窗口。输入适应度函数名:@f_exp2、设置变量个数为2,其他使用默认参数。按Start按钮,即可运行遗传算法。很快得到运行结果,函数最大值为: f(-0.00948,1.58628)=8.10582
(3)修改遗传算法的参数,查看优化结果的变化。
4、参考源代码,运行源代码程序中的遗传算法程序ga_main.m和粒群优化算法程序PSO_opt.m,读懂源程序。
3
三、实习总结
1、完成内容2-4,并附上附上他们的运行结果截图;
2、简答什么是遗传算法,什么是粒群优化算法并简述他们的区别; 3、实习总结。
4
共分享92篇相关文档