|
<>在遗传算法很经典的一个例题中求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9 </P>
<><FONT size=3>当执行到</FONT> initPop=initializega(10,[0 9],'test');%生成初始种群,大小为10时,为什么MATLAB不认识initializega函数呢?</P>
<>程序如下:</P>
<P > %编写目标函数 <p></p></P>
<P > function[sol,eval]=fitness(sol,options) <p></p></P>
<P > x=sol(1); <p></p></P>
<P > eval=x+10*sin(5*x)+7*cos(4*x); <p></p></P>
<P > %把上述函数存储为test.m文件并放在工作目录下 <p></p></P>
<P > <p></p></P>
<P > initPop=initializega(10,[0 9],'test');%生成初始种群,大小为10 <p></p></P>
<P > [x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',... <p></p></P>
<P > [0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]); %25次遗传迭代 <p></p></P>
<P> </P> |
|