欢迎访问yhm138的博客园博客, 你可以通过 [RSS] 的方式持续关注博客更新

MyAvatar

yhm138

HelloWorld!

MATLAB遗传工具箱ga求函数在某区间最大值

问题

让你求解一个非线性规划问题的最优解

\[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

posted @ 2021-03-25 19:26  yhm138  阅读(1506)  评论(0编辑  收藏  举报