Matlab之智能优化算法函数调用

1.句柄函数

句柄函数即我们要求的目标函数,以下三种算法的调用仅是求解最小值,若要求目标函数的最大值,可在返回结果中加负号。

Matlab 复制代码
function value = Get_Fitness(x,y)
    value= x^2 + y^2;
    % 若要求x^2 + y^2最大值可设value= -(x^2 + y^2);
end

句柄函数图像:

​​​​​​​

画图代码:

Matlab 复制代码
function Draw()
    % 定义自变量范围  
    x = linspace(-10, 10, 100); % x范围为-10到10,共100个点  
    y = linspace(-10, 10, 100); % y范围为-1到1,共100个点  
      
    % 创建网格  
    [X, Y] = meshgrid(x, y);  
      
    % 计算Z值  
    Z = X.^2+Y.^2;
      
    % 创建三维图形  
    surf(X, Y, Z);  
      
    % 添加标题和标签  
    title('Z = x^2 + y^2');  
    xlabel('X轴');  
    ylabel('Y轴');  
    zlabel('Z轴');
end

2.遗传算法

Matlab 复制代码
function GA()
% 配置项
options = optimoptions('ga','Display', 'off', 'PopulationSize', 50, 'StallGenLimit', 20,'PlotFcn', @gaplotbestf);

% 设置求适应度的的句柄函数(目标函数)
ObjectiveFunction = @(x) Get_Fitness(x(1), x(2));

% 为自变量设置解空间两个自变量的上下限分别是[-10,10],[-10,10]
LB=[-10,-10];
UB=[10,10];

% 调用遗传算法,因为自变量有两个所以维度为2
[x,fval]=ga(ObjectiveFunction,2,[],[],[],[],LB,UB,[],options);

% 打印最优解
fprintf('x(1)值最优解为: %f\nx(2)值最优解为:%f\n',x(1),x(2));
fprintf('最优适应度为: %f\n', fval);

end

3.粒子群算法

Matlab 复制代码
function PSO()
 
% 配置项
options = optimoptions('particleswarm','Display', 'off', 'SwarmSize', 20, 'MaxStallIterations',20);
 
% 设置求适应度的的句柄函数(目标函数)
ObjectiveFunction = @(x) Get_Fitness(x(1), x(2));
 
% 为自变量设置解空间两个自变量的上下限分别是[-10,10],[-10,10]
LB=[-10,-10];
UB=[10,10];
 
% 调用粒子群算法,因为自变量有两个所以维度为2
[x,fval] = particleswarm(ObjectiveFunction,2,LB,UB,options);
 
% 打印最优解
fprintf('x(1)值最优解为: %f\n x(2)值最优解为:%f\n',x(1),x(2));
fprintf('最优适应度为: %f\n', fval); 
 
end

4.模拟退火

Matlab 复制代码
function SA()
 
% 配置项
options = optimoptions('simulannealbnd','MaxStallIterations',1000000);
 
% 设置句柄函数(目标函数)
ObjectiveFunction = @(x) Get_Fitness(x(1), x(2));
 
% 为自变量设置初始值
x0=[5,5];
 
% 为自变量设置解空间两个自变量的上下限分别是[-10,-10],[-10,-10]
LB=[-10,-10];
UB=[10,10];
 
% 调用模拟退火算法
[x,fval] = simulannealbnd(ObjectiveFunction,x0,LB,UB,options);
 
% 打印最优解
fprintf('x(1)值最优解为: %f\n x(2)值最优解为:%f\n',x(1),x(2));
fprintf('最优适应度为: %f\n', fval); 
 
end
相关推荐
yugi9878386 分钟前
基于最大信息熵的粒子群优化算法图像分割(MATLAB实现)
开发语言·算法·matlab
计算机安禾16 分钟前
【数据结构与算法】第40篇:图论(四):最短路径——Dijkstra算法与Floyd算法
c语言·数据结构·算法·排序算法·哈希算法·图论·visual studio
SccTsAxR20 分钟前
算法进阶:贪心策略证明全攻略与二进制倍增思想深度解析
c++·经验分享·笔记·算法
2301_7926748626 分钟前
java学习day27(算法)
java·学习·算法
沅_Yuan28 分钟前
基于四开关Buck-Boost的Simulink仿真模型(免费下载)【MATLAB】
matlab·仿真·电力电子·simulink·四开关buck-boost
啦啦啦!38 分钟前
c++AI大模型接入SDK项目
开发语言·数据结构·c++·人工智能·算法
lcj251141 分钟前
【C语言】自定义类型1:结构体
c语言·开发语言·算法
jaysee-sjc43 分钟前
十七、Java 高级技术入门全解:JUnit、反射、注解、动态代理
java·开发语言·算法·junit·intellij-idea
yongui478341 小时前
MATLAB模糊控制的粒子群算法(Fuzzy-PSO)实现
数据结构·算法·matlab
sali-tec1 小时前
C# 基于OpenCv的视觉工作流-章49-人脸检测
图像处理·人工智能·opencv·算法·计算机视觉