?? c68.m
字號:
function [ObjVal,t,x] = objdopi(Chrom,sswitch);
% Chrom-當代種群的染色體
% sswitch-選擇變量
% 目標函數(shù)維數(shù)
Dim = 20;
TSTART = 0;
TEND = 1;
STEPSIMU = min(0.1,abs((TEND-TSTART)/(Dim-1)));
TIMEVEC = linspace(TSTART,TEND,Dim)';
%初始條件
XINIT = [ 0; -1];
% 終止條件
XEND = [ 0; 0];
%控制權值
XENDWEIGHT = 12 * [1; 1];
UWEIGHT = [0.5];
% 計算種群參數(shù)
[Nind,Nvar] = size(Chrom);
if Nind == 0
if sswitch == 2
ObjVal = ['Double Integrator (sim)-' int2str(Dim)];
elseif sswitch == 3
ObjVal = 2;
else
% 變量的邊界
ObjVal1 = [-15; 15];
ObjVal = rep(ObjVal1,[1 Dim]);
end
elseif Nvar == Dim
ObjVal = zeros(Nind,1);
for indrun = 1:Nind
steuerung = [TIMEVEC [Chrom(indrun,:)]'];
[t x] = rk23('simdopi1',[TSTART TEND],[],[1e-3;STEPSIMU;STEPSIMU],steuerung);
ObjVal(indrun) = sum(XENDWEIGHT .* abs( x(size(x,1),:)' - XEND )) + ...
(UWEIGHT / (Dim-1) * trapz(Chrom(indrun,:).^2));
end
else
error('size of matrix Chrom is not correct for function evaluation');
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -