目錄
1.句柄函數(shù)
2.遺傳算法
3.粒子群算法
4.模擬退火
1.句柄函數(shù)
????????句柄函數(shù)即我們要求的目標(biāo)函數(shù),以下三種算法的調(diào)用僅是求解最小值,若要求目標(biāo)函數(shù)的最大值,可在返回結(jié)果中加負(fù)號(hào)。
function value = Get_Fitness(x,y)
value= x^2 + y^2;
% 若要求x^2 + y^2最大值可設(shè)value= -(x^2 + y^2);
end
句柄函數(shù)圖像:
????????????????? ? ???文章來源:http://www.zghlxwxcb.cn/news/detail-685334.html
畫圖代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-685334.html
function Draw()
% 定義自變量范圍
x = linspace(-10, 10, 100); % x范圍為-10到10,共100個(gè)點(diǎn)
y = linspace(-10, 10, 100); % y范圍為-1到1,共100個(gè)點(diǎn)
% 創(chuàng)建網(wǎng)格
[X, Y] = meshgrid(x, y);
% 計(jì)算Z值
Z = X.^2+Y.^2;
% 創(chuàng)建三維圖形
surf(X, Y, Z);
% 添加標(biāo)題和標(biāo)簽
title('Z = x^2 + y^2');
xlabel('X軸');
ylabel('Y軸');
zlabel('Z軸');
end
2.遺傳算法
function GA()
% 配置項(xiàng)
options = optimoptions('ga','Display', 'off', 'PopulationSize', 50, 'StallGenLimit', 20,'PlotFcn', @gaplotbestf);
% 設(shè)置求適應(yīng)度的的句柄函數(shù)(目標(biāo)函數(shù))
ObjectiveFunction = @(x) Get_Fitness(x(1), x(2));
% 為自變量設(shè)置解空間兩個(gè)自變量的上下限分別是[-10,10],[-10,10]
LB=[-10,-10];
UB=[10,10];
% 調(diào)用遺傳算法,因?yàn)樽宰兞坑袃蓚€(gè)所以維度為2
[x,fval]=ga(ObjectiveFunction,2,[],[],[],[],LB,UB,[],options);
% 打印最優(yōu)解
fprintf('x(1)值最優(yōu)解為: %f\nx(2)值最優(yōu)解為:%f\n',x(1),x(2));
fprintf('最優(yōu)適應(yīng)度為: %f\n', fval);
end
3.粒子群算法
function PSO()
% 配置項(xiàng)
options = optimoptions('particleswarm','Display', 'off', 'SwarmSize', 20, 'MaxStallIterations',20);
% 設(shè)置求適應(yīng)度的的句柄函數(shù)(目標(biāo)函數(shù))
ObjectiveFunction = @(x) Get_Fitness(x(1), x(2));
% 為自變量設(shè)置解空間兩個(gè)自變量的上下限分別是[-10,10],[-10,10]
LB=[-10,-10];
UB=[10,10];
% 調(diào)用粒子群算法,因?yàn)樽宰兞坑袃蓚€(gè)所以維度為2
[x,fval] = particleswarm(ObjectiveFunction,2,LB,UB,options);
% 打印最優(yōu)解
fprintf('x(1)值最優(yōu)解為: %f\n x(2)值最優(yōu)解為:%f\n',x(1),x(2));
fprintf('最優(yōu)適應(yīng)度為: %f\n', fval);
end
4.模擬退火
function SA()
% 配置項(xiàng)
options = optimoptions('simulannealbnd','MaxStallIterations',1000000);
% 設(shè)置句柄函數(shù)(目標(biāo)函數(shù))
ObjectiveFunction = @(x) Get_Fitness(x(1), x(2));
% 為自變量設(shè)置初始值
x0=[5,5];
% 為自變量設(shè)置解空間兩個(gè)自變量的上下限分別是[-10,-10],[-10,-10]
LB=[-10,-10];
UB=[10,10];
% 調(diào)用模擬退火算法
[x,fval] = simulannealbnd(ObjectiveFunction,x0,LB,UB,options);
% 打印最優(yōu)解
fprintf('x(1)值最優(yōu)解為: %f\n x(2)值最優(yōu)解為:%f\n',x(1),x(2));
fprintf('最優(yōu)適應(yīng)度為: %f\n', fval);
end
到了這里,關(guān)于Matlab之智能優(yōu)化算法函數(shù)調(diào)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!