数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 2646|回复: 2

[求助]遗传算法在matlab编程中的一个问题

[复制链接]
发表于 2004-8-17 03:03:18 | 显示全部楼层 |阅读模式
<>碰见一个题,请问红色部分程序代表的意义?是不是和遗传算法的工具箱的函数有关?</P>
<>【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0&lt;=x&lt;=9
【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交叉概率为0.95,变异概率为0.08
【程序清单】
    %编写目标函数
      function[sol,eval]=fitness(sol,options)
    <FONT face=幼圆 size=4>  </FONT><FONT color=#ee3d11><FONT face=黑体><FONT size=4>x=sol(1);</FONT>
</FONT></FONT>        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)</P>
发表于 2004-8-27 06:07:40 | 显示全部楼层
fitness(sol,options),你调用的时候已经用到了sol了,故sol(1)只是sol数组的第一个值而已。
发表于 2004-8-29 21:33:46 | 显示全部楼层
对啊!
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 20:33 , Processed in 0.050452 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表