问题
让你求解一个非线性规划问题的最优解
\[y=200\times \exp(-0.05x)\times \sin(x)\\ s.t. \ -2<x<2 \]
GA
遗传算法,(Genetic Algorithm,GA)是模拟生物进化论中自然选择和遗传学机理的生物进化过程中的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。
它是智能计算技术之一。
matlab求解
%使用matlab遗传算法工具箱进行计算
%参考《智能计算方法及其应用》国防工业出版社
clc;
close all;
clear all;
options= optimoptions('ga','PlotFcn',{@ gaplotbestf, @ gaplotbestindiv, @gaplotexpectation ...
, @ gaplotstopping});
[x,fval,exitflag,output] =ga(@fitnessfun,1,[],[],[],[],[],[],[],options);
%x是最优值
%fval是最优值适应度
%exitflag是算法结束标志
%output是输出参数
%fitnessfun是适应度函数
%nvars是变量的个数
function f =fitnessfun(x)
if x<-2 | x>2
f=150;
else
f=-200*exp(-0.05*x)*sin(x);
end
end
每次运行的结果不一定一样,截图里的结果显示是在x=1.523时y取得最大值
mma求解
参考
《智能计算方法及其应用》国防工业出版社
matlab的ga工具箱的文档 https://ww2.mathworks.cn/help/gads/ga.html?searchHighlight=ga&s_tid=srchtitle