| 遗传算法求函数最大值 |
|
| 作者:佚名 文章来源:本站原创 点击数: 更新时间:2006-6-20 |
|
|
遗传算法求函数最大值
%举一实例 利用遗传算法计算下列函数的最大值 % f(x)=x+10*sin(5x)+7*cos(4x) x属于[0,9] %编写目标函数 function [sol, eval] =gaDemo1Eeval(sol,options) x=sol(1); eval = x + 10*sin(5*x)+7*cos(4*x);
%参数说明 %eval:个体的适应度; %sol:当前个体,n+1个元素的行向量。
%遗传算法求最大值 clc fplot('x + 10*sin(5*x)+7*cos(4*x)',[0 9]) % 生成初始种群,大小为10 initPop=initializega(10,[0 9],'gademo1eeval1'); plot (initPop(:,1),initPop(:,2),'b*') % 调用遗传函数 % 1次遗传迭代 [x endPop] = ga([0 9],'gademo1eeval1',[],initPop,[1e-5... 1 1],'maxGenTerm',1,'normGeomSelect',[0.08],['arithXover'], ... [20], 'nonUnifMutation',[2 1 3]);
plot (endPop(:,1),endPop(:,2),'bo') % 25次遗传迭代 [x endPop bpop trace] = ga([0 9],'gademo1eeval1',[],initPop, [1e-6 1 1],'maxGenTerm',25, 'normGeomSelect',[0.08], ['arithXover'],[2],'nonUnifMutation',[2 25 3]);
plot (endPop(:,1),endPop(:,2),'y*') figure(2) plot(trace(:,1),trace(:,3),'y-') hold on plot(trace(:,1),trace(:,2),'r-') xlabel('Generation'); ylabel('Fittness'); legend('解的变化','种群平均值的变化');
|