問題
讓你求解一個非線性規划問題的最優解
\[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