首页 > 编程语言 >灰狼优化算法(MOGWO)

灰狼优化算法(MOGWO)

时间:2024-03-21 13:00:59浏览次数:26  
标签:end 灰狼 算法 paper MOGWO Position GreyWolves Eq Archive

灰狼优化算法(MOGWO)

摘要

  1. 固定大小的外部档案用来保存帕累托优化解
  2. 在多目标搜索空间中,这个档案被用来定义狼群社会等级和捕猎行为
  3. 这个算法在10个多目标测试集进行测试,并与MOEA/D和MOPSO进行对比

引言

  1. 将多个目标集成一个单一的目标

两个缺点:一个均匀分布的权重不能保证生成一组均匀分布的帕累托优化解集;由于不能使用负权重,且所有权重之和必须为常数,该方法无法找帕累托最优前沿的非凸区域。

  1. MOPSO的收敛速度非常快,在多目标优化中容易出现假帕累托最优前沿过早终止的问题

GWO

该算法是模拟灰狼的社会领导关系和捕猎技术,为了模拟灰狼在狩猎过程中的包围行为,除了社会领导外,提出了一下方程:

t表示当前代数,A和C是向量系数,Xp表示猎物位置,X表示一只灰狼的位置,A和C的计算公式:

a是在迭代过程中从2线性减到0,r1和r2是[0,1]中的随机数,alpha、beta、gamma是前三个最优解。

A的随机值大于1或小于-1,保证了狼群和猎物的偏离,C有助于GWO在优化过程中表现出更随机的行为,有利于规避局部最优。当A的绝对值大于1时,狼群偏离猎物,当A的绝对值小于1时,狼群向猎物收敛。

MOGWO

MOGWO比起GWO多了两个新增部分:

  1. 一个档案用于存储所得帕累托最优解集和进行非支配排序
  2. 选择策略,用于选择alpha、beta、gamma作为领导。

MOGWO的伪代码如下:

MOGWO算法的收敛性是有保证的,因为它利用了相同的数学模型来搜索最优解。事实证明,GWO要求搜索智能体在优化的初期突然改变位置,在优化的后期逐渐改变位置。MOGWO算法继承了GWO的所有特征,这意味着搜索智能体以相同的方式探索和开发搜索空间。主要的区别是,MOGWO围绕一组存档个体进行搜索(即使存档没有变化,也可能不同),而GWO只保存和改进三个最好的解。

MOGWO部分源代码如下,需要完整代码请联系我(免费)。

%% 清理空间

clear all

clc

close all

%% MOGWO算法参数

drawing_flag = 1;

% 测试函数及其细节确定

TestProblem='UF1';

nVar=10;

fobj = cec09(TestProblem);

xrange = xboundary(TestProblem, nVar);

lb=xrange(:,1)';

ub=xrange(:,2)';

VarSize=[1 nVar];

% 迭代次数、种群数量、存档数量

GreyWolves_num=100;

MaxIt=200; % Maximum Number of Iterations

Archive_size=100; % Repository Size

% 网格机制的参数

alpha=0.1; % Grid Inflation Parameter

nGrid=10; % Number of Grids per each Dimension

beta=4; % Leader Selection Pressure Parameter

gamma=2;

%% 种群初始化

GreyWolves=CreateEmptyParticle(GreyWolves_num);

for i=1:GreyWolves_num

​ GreyWolves(i).Velocity=0;%灰狼的初始速度为0

​ GreyWolves(i).Position=zeros(1,nVar);%灰狼的初始位置也为0

​ for j=1:nVar

​ GreyWolves(i).Position(1,j)=unifrnd(lb(j),ub(j),1);%灰狼的位置

​ end

​ GreyWolves(i).Cost=fobj(GreyWolves(i).Position')';

​ GreyWolves(i).Best.Position=GreyWolves(i).Position;

​ GreyWolves(i).Best.Cost=GreyWolves(i).Cost;

end

% 确定支配关系

GreyWolves=DetermineDomination(GreyWolves);

% 非支配解存档

Archive=GetNonDominatedParticles(GreyWolves);

% 网格机制

Archive_costs=GetCosts(Archive); % 存档种群的适应度

G=CreateHypercubes(Archive_costs,nGrid,alpha);

for i=1:numel(Archive)

​ [Archive(i).GridIndex Archive(i).GridSubIndex]=GetGridIndex(Archive(i),G);

end

%% 迭代

for it=1:MaxIt

​ a=2-it*((2)/MaxIt);

​ for i=1:GreyWolves_num

​ clear rep2

​ clear rep3

​ % 选头狼

​ % Choose the alpha, beta, and delta grey wolves

​ Delta=SelectLeader(Archive,beta);

​ Beta=SelectLeader(Archive,beta);

​ Alpha=SelectLeader(Archive,beta);

​ % If there are less than three solutions in the least crowded

​ % hypercube, the second least crowded hypercube is also found

​ % to choose other leaders from.

​ if size(Archive,1)>1

​ counter=0;

​ for newi=1:size(Archive,1)

​ if sum(Delta.Position=Archive(newi).Position)=0

​ counter=counter+1;

​ rep2(counter,1)=Archive(newi);

​ end

​ end

​ Beta=SelectLeader(rep2,beta);

​ end

​ % This scenario is the same if the second least crowded hypercube

​ % has one solution, so the delta leader should be chosen from the

​ % third least crowded hypercube.

​ if size(Archive,1)>2

​ counter=0;

​ for newi=1:size(rep2,1)

​ if sum(Beta.Position=rep2(newi).Position)=0

​ counter=counter+1;

​ rep3(counter,1)=rep2(newi);

​ end

​ end

​ Alpha=SelectLeader(rep3,beta);

​ end

​ % 同GWO一样

​ % Eq.(3.4) in the paper

​ c=2.*rand(1, nVar);

​ % Eq.(3.1) in the paper

​ D=abs(c.*Delta.Position-GreyWolves(i).Position);

​ % Eq.(3.3) in the paper

​ A=2.a.rand(1, nVar)-a;

​ % Eq.(3.8) in the paper

​ X1=Delta.Position-A.*abs(D);

​ % Eq.(3.4) in the paper

​ c=2.*rand(1, nVar);

​ % Eq.(3.1) in the paper

​ D=abs(c.*Beta.Position-GreyWolves(i).Position);

​ % Eq.(3.3) in the paper

​ A=2.a.rand()-a;

​ % Eq.(3.9) in the paper

​ X2=Beta.Position-A.*abs(D);

​ % Eq.(3.4) in the paper

​ c=2.*rand(1, nVar);

​ % Eq.(3.1) in the paper

​ D=abs(c.*Alpha.Position-GreyWolves(i).Position);

​ % Eq.(3.3) in the paper

​ A=2.a.rand()-a;

​ % Eq.(3.10) in the paper

​ X3=Alpha.Position-A.*abs(D);

​ % Eq.(3.11) in the paper

​ GreyWolves(i).Position=(X1+X2+X3)./3;

​ % Boundary checking

​ GreyWolves(i).Position=min(max(GreyWolves(i).Position,lb),ub);

​ GreyWolves(i).Cost=fobj(GreyWolves(i).Position')';

​ end

​ % 支配关系、存档、网格更新

​ GreyWolves=DetermineDomination(GreyWolves);

​ non_dominated_wolves=GetNonDominatedParticles(GreyWolves);

​ Archive=[Archive

​ non_dominated_wolves];

​ Archive=DetermineDomination(Archive);

​ Archive=GetNonDominatedParticles(Archive);

​ for i=1:numel(Archive)

​ [Archive(i).GridIndex Archive(i).GridSubIndex]=GetGridIndex(Archive(i),G);

​ end

​ if numel(Archive)>Archive_size

​ EXTRA=numel(Archive)-Archive_size;

​ Archive=DeleteFromRep(Archive,EXTRA,gamma);

​ Archive_costs=GetCosts(Archive);

​ G=CreateHypercubes(Archive_costs,nGrid,alpha);

​ end

​ disp(['In iteration ' num2str(it) ': Number of solutions in the archive = ' num2str(numel(Archive))]);

​ save results

​ % Results

​ costs=GetCosts(GreyWolves);

​ Archive_costs=GetCosts(Archive);

​ hold off

​ plot(costs(1,:),costs(2,:),'k.');

​ hold on

​ plot(Archive_costs(1,:),Archive_costs(2,:),'rd');

​ legend('Grey wolves','Non-dominated solutions');

​ drawnow

end

标签:end,灰狼,算法,paper,MOGWO,Position,GreyWolves,Eq,Archive
From: https://www.cnblogs.com/cxj666/p/18087132

相关文章

  • 蓝牙HFP协议推荐的语音丢包补偿算法浮点实现的定点化
    最近在做蓝牙的宽带语音通话。相对于蓝牙窄带语音,主要变化是把采样率从8k变到16k,以及编解码器从CVSD变成mSBC(modifiedSBC,改进的SBC)等。蓝牙语音通话相关的HFP(HandFreeProfile)强烈建议在宽带语音通话时要用上语音丢包补偿(packetlostconcealment,PLC)算法来保证丢包时的语音质量,......
  • TSINGSEE青犀智慧充电桩消防安全烟雾火焰AI算法识别预警方案
    一、方案背景随着AI人工智能、大数据、云计算等技术快速发展与落地,视频智能分析技术在智慧充电桩场景中的应用也越来越广泛。这种技术能够为充电桩站点提供全方位的监控和管理,提高运营效率,保障充电站设备的安全和稳定运行。通过TSINGSEE青犀&触角云新能源汽车智慧充电桩综合管理......
  • 军事演习算法
    题目描述军事演习中分为红蓝两方,我方为蓝方。地图简化为n行m列的二维矩阵形式,红方基地在地图中使用#表示,蓝方基地在地图中使用*表示,中立区域使用.表示。下图为地图示例:.........###.......................###.......................###....****.....................
  • 如何理解递归算法?
     首先说说递归思想,我认为可以从以下三点进行把握:将大问题分解为有限个子问题;每个子问题的求解方式相同;存在已知的最小子问题,作为“归”的条件。 一句话解释:递归思想是将大问题分解为数个求解方式相同的子问题,且该问题具有已知的最小子问题。 另外,递归是分为两个......
  • 【数据结构和算法初阶(C语言)】二叉树的顺序结构--堆的实现/堆排序/topk问题详解---二
     目录 ​编辑1.二叉树的顺序结构及实现1.1二叉树的顺序结构2堆的概念及结构3堆的实现3.1堆的代码定义3.2堆插入数据3.3打印堆数据3.4堆的数据的删除3.5获取根部数据3.6判断堆是否为空3.7堆的销毁 4.建堆以及堆排序 4.1堆排序---是一种选择排序4.2升......
  • 最短路径算法
    原文链接:https://blog.csdn.net/xiaoxi_hahaha/article/details/110257368已知起始结点,求最短路径的问题。适合使用Dijkstra算法。迪杰斯特拉算法是由荷兰计算机科学家在1956年发现的算法,此算法使用类似广度优先搜索的方法解决了带权图的单源最短路径问题。它是一个贪心算法。全......
  • 代码学习第24天----回溯算法
    随想录日记part24time:time:time:2024.03.10主......
  • 归并排序算法 java实现
    publicstaticvoidmain(String[]args){int[]arr={9,5,7,3,1,6,8,4,2};mergeSort(arr,0,arr.length-1);}/***归并排序*注意:归并的拆分数组和合并数组是从左到右依次进行的,网上很多文章都是错误的*并不是左右一起拆分,网上很多文章都是这样的......
  • 基于深度学习的人员指纹身份识别算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a  3.算法理论概述      指纹识别技术是一种生物特征识别技术,它通过分析人类手指末端皮肤表面的纹路特征来进行身份认证。深度学习是机器学习的一个分支,特别适用于处理大规模高维数据,并在图像识别、语......
  • 算法-购物车问题
    算法-购物车问题问题描述终于发了年终奖准备去网上购物,如何能在有限的预算内,得到最大的收益呢。如果只到这里的话,其实就是一个背包问题,可以参考链接。然鹅还有其他条件:可以购买的物品分为两类:主物品可以单独购买,附件物品只能在已经购买了主物品的情况下购买。例如,要购买......