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