【优化求解】基于matlab引力搜索算法的函数优化分析【含Matlab源码 218期】

一、简介

万有引力搜索算法(Gravitational Search Algorithm,GSA)是由伊朗克曼大学的Esmat Rashedi等人于2009年所提出的一种新的启发式优化算法,其源于对物理学中的万有引力进行模拟产生的群体智能优化算法。万有引力搜索算法GSA的原理是通过将搜索粒子看作一组在空间运行的物体,物体间通过万有引力相互作用吸引,物体的运行遵循动力学的规律。适度值较大的粒子其惯性质量越大,因此万有引力会促使物体们朝着质量最大的物体移动,从而逐渐逼近求出优化问题的最优解。万有引力搜索算法GSA具有较强的全局搜索能力与收敛速度。随着GSA理论研究的进展,其应用也越来越广泛,逐渐引起国内外学者的关注。但是万有引力搜索算法GSA与其他全局算法一样,存在易陷入局部解,解精度不商等问题,有很多待改进之处。本章将着重向广大编程爱好者介绍最基本的万有引力算法,各编程科研人员可以基于本章算法加以改进并应用到实际案例中。
在这里插入图片描述
1 惯性质量计算
在这里插入图片描述
2 引力计算
在这里插入图片描述
3 位置更新
在这里插入图片描述
4 参数分析
在这里插入图片描述
5 万有引力算法实现流程
在这里插入图片描述

二、源代码

% 万有引力搜索算法
clc,clear,close all
warning off
feature jit off
 N=50;           % 粒子数量(智能个体)
 max_it=1000;    % 最大迭代次数
 ElitistCheck=1; % ElitistCheck: 算法执行次数选择
 Rpower=1;       % Rpower: 'R'的次方
 min_flag=1;     % 1: 求函数最小值,0:求函数最大值
 F_index=1;      % 带求解函数选择
 [Fbest,Lbest,BestChart,MeanChart]=GSA(F_index,N,max_it,ElitistCheck,min_flag,Rpower);
 %  输出:
% Fbest: 最优适应度值.
% Lbest: 最优解向量
% BestChart: 适应度变化值.
% MeanChart: 平均适应度变化值
 Fbest,  % 最优适应度值
 Lbest,  % 最优解
%% 绘制适应度曲线
figure('color',[1,1,1])
plot(BestChart,'linewidth',2),
xlabel('\fontsize{12}\bf Iteration');ylabel('\fontsize{12}\bf 最优适应度值');
legend('\fontsize{10}\bf GSA',1);
grid on
% 万有引力搜索算法
function [Fbest,Lbest,BestChart,MeanChart]=GSA(F_index,N,max_it,ElitistCheck,min_flag,Rpower)
%V:   速度
%a:   加速度
%M:   质量.  Ma=Mp=Mi=M;
%dim: 待求解未知量维数
%N:   智能粒子个数
%X:   种群个体位置. dim-by-N matrix.
%R:   种群之间的距离
%[low-up]: 取值范围
%Rnorm:  范数
%Rpower: Power of R 
Rnorm=2;  % 2阶范数,即欧氏距离
% 获取待求解目标方程的未知数个体以及取值范围
[low,up,dim]=test_functions_range(F_index); 
% 随机的初始化个体
X=initialization(dim,N,up,low); 
% 适应度值数组初始化
BestChart=[];
MeanChart=[];
V=zeros(N,dim); % 速度初始化
for iteration=1:max_it  % 迭代开始
%     iteration
    
    % 检查x个体是否在取值范围内
    X=space_bound(X,up,low); 
    % 计算适应度值
    fitness=evaluateF(X,F_index); 
    
    if min_flag==1
        [best best_X]=min(fitness); %minimization.
    else
        [best best_X]=max(fitness); %maximization.
    end        
    
    if iteration==1
       Fbest=best;Lbest=X(best_X,:);
    end
    if min_flag==1
      if best<Fbest  % 极小值求解
       Fbest=best;Lbest=X(best_X,:);
      end
    else 
      if best>Fbest  % 极大值求解
       Fbest=best;Lbest=X(best_X,:);
      end

三、运行结果

在这里插入图片描述
在这里插入图片描述

四、备注

完整代码或者代写添加QQ1564658423
往期回顾>>>>>>
【优化求解】基于matlab粒子群优化灰狼算法【含Matlab源码 006期】
【优化求解】基于matlab多目标灰狼优化算法MOGWO 【含Matlab源码 007期】
【优化求解】基于matlab粒子群算法的充电站最优布局【含Matlab源码 012期】
【优化求解】基于matlab遗传算法的多旅行商问题【含Matlab源码 016期】
【优化求解】基于matlab遗传算法求最短路径【含Matlab源码 023期】
【优化求解】基于matlab遗传和模拟退火的三维装箱问题【含Matlab源码 031期】
【优化求解】基于matlab遗传算法求解车辆发车间隔优化问题【含Matlab源码 132期】
【优化求解】磷虾群算法【含matlab源码 133期】
【优化求解】差分进化算法【含Matlab源码 134期】
【优化求解】基于matlab约束优化之惩罚函数法【含Matlab源码 163期】
【优化求解】基于matlab改进灰狼算法求解重油热解模型【含Matlab源码 164期】
【优化求解】基于matlab蚁群算法配电网故障定位【含Matlab源码 165期】
【优化求解】基于matalb遗传算法求解岛屿物资补给优化问题【含Matlab源码 172期】
【优化求解】冠状病毒群体免疫优化算法(CHIO)【含Matlab源码 186期】
【优化求解】金鹰优化求解算法(GEO)【含Matlab源码 187期】
【多目标优化求解】基于matlab金鹰算法(MOGEO)的多目标优化求解【含Matlab源码 188期】
【优化求解】基于matlab GUI界面之BP神经网络优化求解【含Matlab源码 208期】
【优化求解】基于matlab GUI界面之遗传算法优化求解【含Matlab源码 209期】
【优化求解】 基于matlab免疫算法的数值逼近优化分析【含Matlab源码 211期】
【优化求解】 基于matlab启发式算法的函数优化分析【含Matlab源码 212期】
【优化求解】基于matalb改进的遗传算法(GA+IGA)的城市交通信号优化【含Matlab源码 213期】
【优化求解】基于matalb改进的遗传算法GA的城市交通信号优化【含Matlab源码 214期】

【优化求解】基于matalb改进的遗传算法IGA的城市交通信号优化【含Matlab源码 215期】
【优化求解】基于matlab罚函数的粒子群算法的函数寻优【含Matlab源码 216期】
【优化求解】基于matlab细菌觅食算法的函数优化分析【含Matlab源码 217期】

猜你喜欢

转载自blog.csdn.net/TIQCmatlab/article/details/113642950
今日推荐