一、例题:求解固定区间里目标函数的最大值
问题:maxf(x)=200*exp(-0.05x)*sinx
-2≤x≤2
clear all;
clc;
options=gaoptimset('generations',400,'StallGenLimit',300,'PlotFcns',@gaplotbestf)
[x1,f]=ga(@fun,1,options) %1是指目标函数的自变量个数
y1=200*exp(-0.05*x1)*sin(x1);
t=-2:0.0001:2
y=200*exp(-0.05*t).*sin(t)
figure(2)
plot(t,y)
text(x1,y1,'o','color','b');
text(x1,y1,['(',num2str(x1),',',num2str(y1),')'],'color','r');
%目标函数
function f=fun(x)
if (x<-2|x>2)
f=100
else
f=-200*exp(-0.05*x)*sin(x);
end
end
结果如下:
当然可以改变plotfcns的参数,画出其他的图片如下
clear all;
clc;
options=gaoptimset('generations',400,'StallGenLimit',300,'PlotFcns',...
{@gaplotbestf,@gaplotbestindiv,@gaplotexpectation,@gaplotstopping})
[x1,f]=ga(@fun,1,options) %1是指目标函数的自变量个数
y1=200*exp(-0.05*x1)*sin(x1);
t=-2:0.0001:2
y=200*exp(-0.05*t).*sin(t)
figure(2)
plot(t,y)
text(x1,y1,'o','color','b');
text(x1,y1,['(',num2str(x1),',',num2str(y1),')'],'color','r');
%目标函数
function f=fun(x)
if (x<-2|x>2)
f=100
else
f=-200*exp(-0.05*x)*sin(x);
end
end
最后找找到的最大值点: