声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1621|回复: 0

[人工智能] 请高手指点一下这段遗传算法程序

[复制链接]
发表于 2008-7-15 20:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
这是书上的一个例子,但是我运行总是报错,请高手指点一下,谢啦!


用遗传算法计算下列函数的最大值:
f(x)=x+10*sin(5x)+7*cos(4x)   (0<x<9)


function[pop]=initializega(num,bounds,eevalFN)

function[x,endpop,bpop,traceinfo]=ga(bounds,evalFN,evalOps,startpop,opts,termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)

function[sol,eval]=gademo1eeval1(sol,options) //目标函数
x=sol(1);
eval=x+10*sin(5*x)+7*cos(4*x);

clc
fplot('x+10*sin(5*x)+7*cos(4*x)',[0 9])
initpop=initializega(10,[0 9],'gademo1eeval1');
plot(initpop(:,1),initpop(:,2),'b*')
[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')
[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('genetation');
ylabel('fittness');
legend;
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 10:43 , Processed in 0.054886 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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