GWO算法模仿了自然界中灰狼的领导阶层和狩猎机制。采用阿尔法、贝塔、德尔塔和欧米加四种灰狼来模拟领导阶层。此外,还实现了狩猎、搜索、包围和攻击三个主要步骤来执行优化。
这是论文的源代码:S. Mirjalili, S. M. Mirjalili, A. Lewis,灰狼优化器,工程软件进展,第69卷,2014年3月,第46-61页,ISSN 0965-9978,http://dx.doi.org/10.1016/j.advengsoft.2013.12.007。
更多资料请浏览:http://www.alimirjalili.com/GWO.html
你可以在这里找到灰太狼优化工具箱://www.tianjin-qmedu.com/matlabcentral/fileexchange/47258-grey-wolf-optimizer-toolbox
其他有关提交:https://au.mathworks.com/matlabcentral/fileexchange/49772-grey-wolf-optimizer-for-training-multi-layer-perceptrons
我在这方面有一些相关的课程。你可透过以下连结报名,可获95%折扣:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
“优化问题与算法:如何理解、制定和解决优化问题”课程:
https://www.udemy.com/optimisation/?couponCode=MATHWORKSREF
“遗传算法导论:理论与应用”课程
https://www.udemy.com/geneticalgorithm/?couponCode=MATHWORKSREF
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Seyedali Mirjalili (2020)。灰太狼优化器(GWO)(//www.tianjin-qmedu.com/matlabcentral/fileexchange/44974-grey-wol-optimizer -gwo), MATLAB中央文件交换。检索。
1.6 | 链接补充道: |
|
1.6.0.0 | 输入错误 |
|
1.6.0.0 | 描述中增加了一个链接 |
|
1.5.0.0 | 该提交现在在R2014b中作为工具箱文件可用。 |
|
1.4.0.0 | 错误修复 |
|
1.3.0.0 | 这篇论文已包含在提交的论文中。 |
|
1.2.0.0 | 添加了到GWO工具箱的链接。 |
|
1.1.0.0 | 边界检查的问题已经解决,源文件已经更新。 |
Surbhi拉伊(查看配置文件)
阮Thieu(查看配置文件)
看看我的github,我用Python (Numpy)实现了这个算法,以获得更好的性能。
https://github.com/thieunguyen5991/metaheuristics
abrha hiluf(查看配置文件)
嘿,亲爱的,我如何使用GWO进行微电网优化,如果你可以发送的源代码比你的支持万博1manbetx
朱文昊切(查看配置文件)
shrivastava aayush(查看配置文件)
如何在这个程序中加入约束
Ratheesh P M(查看配置文件)
你好先生,
我们可以将GWO应用到图像融合(频率dmain)中吗?如果可以,如何进行裁剪?
7 z(查看配置文件)
你好,先生
为什么每次运行程序时Best_pos的结果都不一样?期待您的回复!
7 z(查看配置文件)
你好,先生
为什么每次运行程序时Best_pos的结果都不一样?期待您的回复!
穆罕默德·安萨里(查看配置文件)
清除所有
clc
SearchAgents_no = 20;搜索代理的数量
func_name =“DG1”;可以从F1到F23的测试函数的名称(本文表1、2、3)
Max_iteration = 100;最大迭代次数
%所选基准函数的负载详细信息
[磅,乌兰巴托,昏暗,fobj] = Get_Functions_details (“DG1”);
[Best_score, Best_pos GWO_cg_curve] =拥有(SearchAgents_no Max_iteration,磅,乌兰巴托,昏暗,fobj);
图('Position',[500500660 290])
%画搜索空间
次要情节(1、2、1);
% func_plot (func_name);
标题(“参数空间”)
包含(x_1);
ylabel (x_2);
zlabel([func_name,'(x_1, x_2)'])
%
绘制目标空间
%次要情节(1、2、2);
% semilogy (GWO_cg_curve,“颜色”,“r”)
%标题(“客观空间”)
%包含(“迭代”);
% ylabel(“目前获得的最好成绩”);
%轴紧
%网格
%框
%的传说(“拥有”)
显示(['The best solution by GWO is: ', num2str(Best_pos)];
显示([' GWO找到的目标函数的最佳最优值为:',num2str(Best_score,'%10.9e\n')];
这是第47行有人能告诉我吗
穆罕默德·安萨里(查看配置文件)
你好,
我在ieee -14,33 & 69总线系统工作,我想申请GWO,谁能告诉我如何将GWO值放入matlab
阿布古普塔(查看配置文件)
查看混合GWO和PSO代码https://in.mathworks.com/matlabcentral/fileexchange/68776-hybrid-gwopso-optimization获得更好的性能
Taief阿拉(查看配置文件)
你好先生,
我想用GWo来选择支持向量机分类器的最佳RBF (sigma,c)参数。
但是我不知道如何修改代码来解决我的问题。
请问,你能给我一些提示或者代码吗?
我的问候。
V S R PAVAN KUMAR NEELI报道(查看配置文件)
你好,所有人
我已经将GWO技术应用到LFC问题中。
我发现这个错误
???下标索引必须是实正整数或逻辑数。
错误在==> GWO在50
健身= fobj(职位(我,:));
谁能解决我的错误,使它对我有帮助
玛丽亚tamoor(查看配置文件)
我使用GWO,但我想添加一个常量,即所有变量的和sgould为1…我不知道如何在GWO中实现约束?
Chiemela维克多Amaechi(查看配置文件)
你好,Seyedali,你能把GWO应用到海上结构优化上吗?如果是这样,你如何定制它?
Immad夏姆斯(查看配置文件)
亲爱的GWO主matlab文件不带fobj。那是什么?是“F1”还是“F2”?
eric githua(查看配置文件)
eric githua(查看配置文件)
Ekhlad Altaii(查看配置文件)
你好
我想要灰狼算法的代码,请用MATLAB语言写。
Kamalova阿宾娜(查看配置文件)
赛义德·阿里·(查看配置文件)
先生,如何输入目标函数
默罕默德·阿布eita(查看配置文件)
在GWO中如何计算猎物的x_p ?以及x_p在GWO中的作用。
Ajay Bhardwaj(查看配置文件)
你好seyedali先生,谢谢你的代码,我想加入等式约束,例如,如果需求pd= 100mw,发电量应该是100mw,你能提供这个问题的解决方案吗?谢谢先生,我会等待你的回复。
Ajay Bhardwaj(查看配置文件)
华莱士刘(查看配置文件)
enas malkawi(查看配置文件)
你好,先生,这个GWO可以解决经济调度问题吗?有没有matlab的代码?
南希SIDHU(查看配置文件)
你好,先生,首先,祝贺你!因为这个很棒的技术。一个问题:当我在代码中使用目标函数时。全局最佳得分不随迭代而改变。对于eg,如果我进行了100次迭代,那么第一次迭代的值,在迭代和最后一次迭代之间保持不变。先生有什么建议吗?
marwa马文(查看配置文件)
嗨,先生
源代码还没有更新
请尽快给我
dalia elkashef(查看配置文件)
嗨。先生
我想问一下关于GWO-EPD的代码?
哈菲兹(查看配置文件)
你好,先生,这个GWO能解决经济负荷调度问题吗?
Seyedali Mirjalili(查看配置文件)
嗨,Amr赫森,
感谢您能发现这个问题。你是对的。每次更新,我们都要更新。我会考虑这一点,并尽快更新文件。
Amr哈桑(查看配置文件)
嗨,谢谢你的代码。好工作Beta_score =健身;%更新测试Delta_score =健身;%更新δ
只有一个问题。如果我错了,请纠正我。更新的时候,和位置和得分
(引用)
健身= fobj(职位(我,:));%Amr: best_tour =在tsp中计算行程长度
%更新,和
如果健身< Alpha_score
Alpha_score =健身;%更新α
Alpha_pos =位置(我:);
结束
如果fitness>Alpha_score && fitness
Beta_pos =位置(我:);
结束
如果fitness>Alpha_score && fitness>Beta_score && fitness
Delta_pos =位置(我:);
结束
(/报价)
这没有正确更新Beta和Delta。考虑一下这个场景:
例如,在第三次迭代之后,alpha_score=1000, Beta_score=1200, Delta_score=1500
如果第4次迭代的适应度为800,那么alpha_score将被更新,beta_score将保持1200,而delta_score应该保持1000
提出了修正,
(引用)Delta_score = Beta_score;Delta_score =健身;%更新δ
健身= fobj(职位(我,:));%Amr: best_tour =在tsp中计算行程长度
%更新,和
如果健身< Alpha_score
Beta_score = Alpha_score;
Beta_pos = Alpha_pos;
Alpha_score =健身;%更新α
Alpha_pos =位置(我:);
结束
如果fitness>Alpha_score && fitness
Delta_pos = Beta_pos;
Beta_score =健身;%更新测试
Beta_pos =位置(我:);
结束
如果fitness>Alpha_score && fitness>Beta_score && fitness
Delta_pos =位置(我:);
结束
(/报价)
伊曼(查看配置文件)
还Biguri(查看配置文件)
一种基于灰狼行为的heuritic算法。哇。哇。
Seyedali Mirjalili(查看配置文件)
嗨Dalia,
这个问题源于你的F5函数。
o=(100*(x(2:dim)-(x(1:dim-1).^2) .^2+(1-x(1:dim-1) .^2)返回一个向量,每个搜索代理应该有一个适应度值。
F5函数的表达式前面有一个和,表达式如下:
o =总和(100 * (x(2:昏暗的)——(x (1: dim-1)。^ 2)) ^ 2 + (x (1: dim-1) 1) ^ 2);
一般来说,每个搜索代理应该只分配一个适应度值。
改变你的F5函数,使它为每个输入向量返回一个单独的值,给它一个尝试,让我知道。
阿里
dalia elkashef(查看配置文件)
我试着解这个方程
函数o = F5(x)
昏暗的=大小(x, 2);
o = (100 * (x(2:昏暗的)——(x (1: dim-1)。^ 2)) ^ 2 + (1 - x (1: dim-1)) ^ 2);
结束
例“F5”
fobj = @F5;
磅= - [-1.5,2];
乌兰巴托= (2,2);
昏暗的= 2;
给我错误
||和&&操作符的操作数必须可转换为逻辑标量值。
GWO中的错误(第51行)
如果fitness>Alpha_score && fitness
main错误(第45行)
[Best_score, Best_pos GWO_cg_curve] =拥有(SearchAgents_no Max_iteration,磅,乌兰巴托,昏暗,fobj);
请帮助我
Seyedali Mirjalili(查看配置文件)
丹尼尔,
您是对的,一些搜索代理在最后一次迭代中可能会超出搜索空间的边界,并且不再有机会返回到搜索空间。我将位置边界检查移动到第二个for循环的末尾(在更新位置之后)。我也相应地更新了源文件。
谢谢,如果还有其他问题请告诉我。
丹尼尔(查看配置文件)
当您进入第一次运行的循环时,您的数据在apriori界限内(因为它是刚刚生成的)。当您执行_last_循环迭代时,可能会有一些搜索代理不在界限内,所以当您查看最终位置时,可能会发现不正确的数据。
当我尝试使用带有整型值的搜索代理时,我发现了这个问题:我的界限是1..10,但是在最后一次循环迭代之后,我得到了一些带有0的代理。也许对于真正的价值来说,它就不那么重要了。
Seyedali Mirjalili(查看配置文件)
嗨,丹尼尔,
谢谢你的赞美和评论。我认为当前的代码能够正确工作,因为当您想要计算它们的“适合度”时,返回超出边界的搜索代理是很重要的。我同意你的看法,我们可以在第二次for循环的末尾或在firs for循环的顶部更新位置。然而,这里的重要问题是,应该在更新适配性之前进行边界检查。我希望这些是有意义的。再次感谢你们对此事的警惕和指出。
问候,
阿里
丹尼尔(查看配置文件)
嗨。伟大的优化器。谢谢你!
我发现了一个问题:我们需要在for循环的底部“返回超出搜索边界的粒子”,而不是在顶部。