|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
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; |
|