作者henry7448 (P=MC)
看板MATLAB
标题[问题]ga工具箱中fitness function写法
时间Thu Feb 7 22:44:05 2013
以下是我写的fitness function 但是我实际利用matlab 内建ga 工具箱运作时
却一直跑出error 我想请问我这函数 是否有那里写错 语法或逻辑??
利用ga工具箱最终结果应会跑出b(1),b(2),b(3)最佳解出来 谢谢
function rp = store(b)
global x;
global y;
global xlag;
global t;
global trim_;
trim_=.05;
k=1;
load aniexc.mat;
dat=aniexc;
n=length(dat(:,1));
y=dat(2+k:n,:)-dat(1+k:n-1,:);
t=length(y(:,1));
xlag=dat(1+k:n-1,:);
j=1;
while j<=k
x=[ones(t,1),dat(2+k-j:n-j,:)-dat(1+k-j:n-1-j,:)];
j=j+1;
end;
xx=inv(x'*x);
u=y-x*xx*(x'*y);
w=xlag*[1;-b(1);-b(2)];
z=[w,x];
d1=(w<=b(3));
n1=sum(d1)';
if min([n1;t-n1])/t>trim_
zj=[(z.*(d1*ones(1,length(z(1,:))))),w];
zzj=zj-x*xx*(x'*zj);
warning off;
lastwarn(' ');
bz=(u'/zzj')';
[mw,idw] = lastwarn;
lastwarn(' ');
warning on;
if (1-mw==' ');
bz=pinv(zzj'*zzj)*(zzj'*u);
end;
end;
rp = (t/2)*log(det((u-zzj*bz)'*(u-zzj*bz)/t));
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.41.125.103
1F:→ H45:错误讯息? 呼叫方的程式码? b变数在哪? aniexc.mat存了什麽? 02/10 22:39
2F:→ henry7448:b变数是b(1)b(2)b(3)这是ga toolbox自己会产生值出来 02/11 07:59
3F:→ henry7448:然後aniexc.mat 里面是240*3 矩阵资料 02/11 08:00
4F:→ henry7448:错误讯息是 02/11 08:03
5F:→ henry7448:Undefined function or method 'store' for input 02/11 08:03
6F:→ henry7448:arguments of type 'double' 02/11 08:03
7F:→ henry7448:我是使用optimazation 中genetic algorithm 02/11 08:08
8F:→ henry7448:会不会是因为这工具箱不能设这样的函数 02/11 08:11
9F:→ henry7448:还有一个错误是显示Output argument "rp" (and maybe ot 02/11 10:01
10F:→ henry7448:not assigned during call to "C:\Users\henry chen\Des 02/11 10:02
11F:→ H45:呼叫方程式码出错,你应po出有呼叫ga函式的程式码 02/12 19:51
12F:→ henry7448:可是我这是使用ga工具箱 02/14 23:24
13F:→ henry7448:我呼叫函数的方式 就是在他要求的空格键入@store 02/14 23:26
14F:→ H45:可能是路径没设到store.m的资料夹。假设你的store.m在"C:\abc" 02/15 23:10
15F:→ H45:先执行 cd "C:\abc" 然後再开启 ga 工具箱 02/15 23:11
16F:→ henry7448:谢谢 我试出来了 02/16 09:21
17F:→ henry7448:似乎是我没设rp起始值 rp=0 02/16 09:26