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
相关推荐
多米Domi0112 小时前
0x3f第33天复习 (16;45-18:00)
数据结构·python·算法·leetcode·链表
罗湖老棍子3 小时前
【例4-11】最短网络(agrinet)(信息学奥赛一本通- P1350)
算法·图论·kruskal·prim
方圆工作室3 小时前
【C语言图形学】用*号绘制完美圆的三种算法详解与实现【AI】
c语言·开发语言·算法
Lips6113 小时前
2026.1.16力扣刷题
数据结构·算法·leetcode
kylezhao20194 小时前
C# 文件的输入与输出(I/O)详解
java·算法·c#
CodeByV4 小时前
【算法题】堆
算法
pythonpapaxia4 小时前
基于Matlab的车牌识别完整教程:从图像预处理到字符识别实战解析
图像处理·其他·计算机视觉·matlab
kaikaile19954 小时前
A星算法避开障碍物寻找最优路径(MATLAB实现)
数据结构·算法·matlab
民乐团扒谱机4 小时前
【微实验】数模美赛备赛:多目标优化求解实战(MATLAB实现,以流水车间调度为例)
开发语言·数学建模·matlab·甘特图·遗传算法·多目标优化·优化模型
今天_也很困5 小时前
LeetCode 热题100-15.三数之和
数据结构·算法·leetcode