📄 ga_f614.m
字号:
function PI=GA_f614(x)
global MIN_offset MUL_factor Emin MDL r_deg Init_P Init_V
global V11 V12 V21 V22 W11 W12 b11 b21 c11 FT Mode
% Fitness function evaluation of Example 6.1-4
% PenChen Chou, 7-29-2001
Init_P=rand*180;
Init_V=0;
if Mode==0
r_deg=rand*180;
if r_deg<20, r_deg=20; end;
if abs(r_deg-Init_P)<10, r_deg=Init_P+10; end;
else
r_deg=180;
end
V11=GA_round4dp(x(1));
V12=GA_round4dp(x(2));
V21=GA_round4dp(x(3));
V22=GA_round4dp(x(4));
b11=GA_round4dp(x(5));
b21=GA_round4dp(x(6));
W11=GA_round4dp(x(7));
W12=GA_round4dp(x(8));
c11=GA_round4dp(x(9));
% Get Y
[t, X, Y]=sim(MDL,[0:0.05:FT]);
I=find(t>1 & t<4);
error=100*abs(Y(:,1)); err1=100*abs(Y(:,4));
error=error(I); err1=err1(I);
ERR=10*(180*sum(error)/r_deg+sum(err1));
if Mode==1
I=find(t>5.7);
error=100*abs(Y(:,1)); err1=100*abs(Y(:,4));
error=error(I); err1=err1(I);
ERR=ERR+1*(180*sum(error)/r_deg+sum(err1));
end;
% Penalize the ripple on time [9.4, 12].
I=find(t>9.4 & t<12);
ERR=ERR+1000*sum(abs(Y(I,1)));
PI=ERR;
attached_part;
%if MIN_offset>0
% PI=MIN_offset-PI;
% if PI<0, PI=10; end;
%end;
if Emin>ERR
Emin=ERR; fprintf('\nERR=%f',ERR);
%save ex614_data V11 V12 V21 V22 W11 W12 b11 b21 c11 ERR
%pause(2)
else
fprintf('>');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -