clear all;
clc;close all
% rand('state',0)
MaxDT=200;
warning off
global t vt
load S.dat -ascii
t=S(:,1);
vt=S(:,2);
options = gaoptimset('PlotFcns',{[]});
options = gaoptimset(options,'PopulationType', 'doubleVector'); % 'bitstring'
options = gaoptimset(options,'Display','final');
options = gaoptimset(options,'PopInitRange',[0.01 0.01;50 50]);
options = gaoptimset(options,'PopulationSize',40, ...
'CrossoverFraction',0.8, ...
'Generations',MaxDT, ...
'MutationFcn', {@mutationuniform, 0.2}, ...
'EliteCount',1, ...
'StallGenLimit',1000,'StallTimeLimit',1000);
dims=5;
tic
% run ga
[x,Fval,exitFlag,Output,population,scores] = ga(@displacement,dims,options);
tc=toc
lt=linspace(0.01,10,200);
f1=[];f2=[];f3=[];
% lv=x(1)./((1+x(2).*lt).^2);
% lv=polyval(x,lt);
f1=x(1)./((1+x(2).*lt).^2);
f2=-(x(3).*(lt.^2)+x(4).*lt)./(lt+x(5));
f3=1-exp(f2);
lv=f1.*f3;
%------最后给出计算结果
disp('*************************************************************')
disp('迭代次数为:')
MaxDT
disp('函数的全局最优位置为:')
x
[out]=displacement(x);
disp('最后得到的优化极值为:')
Result=Fval % or Result=out
figure();plot(t,vt,'b*',lt,lv,'r-')
%------算法结束--------------------------------------
disp('*************************************************************')