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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM