作者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