📄 example5_37.m
字号:
function [ObjVal,t,x] = objdopi(Chrom,sswitch);
% Chrom-当代种群的染色体
% sswitch-选择变量
% 目标函数维数
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];
% 计算种群参数
[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 + -