- 积分
- 0
- 注册时间
- 2002-9-3
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2004-3-2 10:03:47
|
显示全部楼层
来自 湖南长沙
回复: 回复: 回复: 【分享】matlab遗传算法工具箱函数及实例讲解
xht wrote:
[quote]addoil wrote:
【注意】matlab工具箱函数必须放在工作目录下
【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9
【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交叉概率为0.95,变异概率为0.08
【程序清单】
%编写目标函数
function[sol,eval]=fitness(sol,options)
x=sol(1);
eval=x+10*sin(5*x)+7*cos(4*x);
%把上述函数存储为fitness.m文件并放在工作目录下
initPop=initializega(10,[0 9],'fitness');%生成初始种群,大小为10
[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',...
[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遗传迭代
运算借过为:x =
7.8562 24.8553(当x为7.8562时,f(x)取最大值24.8553)
注:遗传算法一般用来取得近似最优解,而不是最优解。另外遗传算法的收敛性跟其初始值有关,大家运行上面的命令所得到的借过可能跟我的借过不同或是差别很大。但多执行几次上面的命令(随即取不同的初始群体)一定可以得到近似最优解。
请教addoil:
(1)这里面编写目标函数那3句为什么要另外存成一个文件?这3句与下面的程序存成一个文件不可以吗?
(2)目标函数中参数sol的含义是什么?为什么在函数定义行“=”的两边都有这个sol参数,如何理解?
谢谢! [/quote]
sol是当前个体,若你的求解空间是n维,则sol是n+1个元素的行向量。一般通过sol来编目标函数,sol(i)就是第i个自变量。第n+1个元素好像就是优化的目标吧。 |
|