【优化求解】基于matlab改进的灰狼算法求解重油热解优化模型【含Matlab源码 164期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、灰狼算法简介

Grey Wolf Optimizer是Seyedali Mirjalili受大灰狼捕食策略的启发,于2014年提出的一种元启发式算法,主要模拟了搜索猎物、包围猎物和攻击猎物,源代码关注公众号后,回复"灰狼"或"GWO"获取。

启发
灰狼属于犬科动物,是食物链顶端的顶级掠食者,它们大多喜欢群居生活,每个种群平均5~12不等。特别有趣的是,它们有非常严格的社会等级,如下图所示。
在这里插入图片描述
图1 灰狼分层

领头狼(领导者)是一公一母,称为alphas(个人理解,之所以这么叫,是因为alpha是希腊字幕中的第一个,用来表示最前面的)。alpha狼主要负责决策狩猎、睡觉地点、起床时间等等,然后再将决策下达至整个种群,如果狼群垂下尾巴说明它们都认可。然而种群中也会存在民主行为,alpha狼也会听从种群中的其他狼。有趣的是,alpha狼不一定是最强壮的成员,但在管理团队方面是最好的。这说明一个狼群的组织和纪律远比它的力量重要。

第二层是beta。deta狼是从属狼,可公可母,用于辅助alpha狼制定决策或其他种群活动。当其中一只alpha狼去世或变老时,它就是alpha狼的最佳替补。beta狼应该遵从alpha狼,但也会命令其他低级别的狼,因而起到承上启下的作用。

最底层的是omega狼。它们扮演了"替罪羊"的角色(好惨),必须屈服于其他领头狼,进食时也是排在最后。看起来omega狼在狼群中并不是一个重要的个体,但是一旦失去omega狼,整个狼群就会面临内部争斗和问题。

如果一头狼既不是alpha,beta,也不是omega,就称为从属狼或delta狼。delta狼必须听从于alpha和beta狼,但会支配omega狼。侦察狼、守卫狼、老狼、捕食狼和看管狼都是这一类。侦察狼负责监视领地的边界,一旦有危险就向狼群发出警告;守卫狼保护和保证狼群的安全;老狼是从alpha或beta退下来的经验丰富的狼;捕食狼帮助alpha和beta捕猎并为狼群提供食物;看管狼负责照顾狼群中的老弱病残。

除此之外,群体狩猎是灰狼的另一个有趣的社会行为,主要包括以下几个阶段:

跟踪、追逐和接近猎物;
追捕、包围和骚扰猎物,直到它停止移动;
向猎物发起攻击。
在这里插入图片描述
图2 灰狼捕食行为:(A)追逐、接近和跟踪猎物。(B-D)追捕、骚扰和包围猎物。(E)静止状态与攻击

数学模型和算法
首先给出社会等级、跟踪、包围和攻击猎物的数学模型,然后再提供完整的GWO算法。

社会等级
为了在设计GWO时对狼的社会等级进行数学建模,认为最合适的解是alpha(α \alphaα),那么第二和第三最优解分别表示为beta(β \betaβ)和delta(δ \deltaδ),而剩余其他解都假定为omega(ω \omegaω)。在GWO中,通过α \alphaα、β \betaβ和δ \deltaδ来导引捕食(优化),ω \omegaω听从于这三种狼。

包围捕食
灰狼在捕食时会将猎物包围,使用下式进行表达这种行为:

D ⃗ = ∣ C ⃗ ⋅ X p → ( t ) − X ⃗ ( t ) ∣ (1) \vec{D}=|\vec{C} \cdot \overrightarrow{X_{p}}(t)-\vec{X}(t)|\tag{1}D=∣C⋅Xp​​(t)−X(t)∣(1)

X ⃗ ( t + 1 ) = X p → ( t ) − A ⃗ ⋅ D ⃗ (2) \vec{X}(t+1)=\overrightarrow{X_{p}}(t)-\vec{A} \cdot \vec{D}\tag{2}X(t+1)=Xp​​(t)−A⋅D(2)

其中t tt表示当前迭代次数,A ⃗ \vec{A}A和C ⃗ \vec{C}C为系数向量,X p → \overrightarrow{X_{p}}Xp​​是猎物的位置向量,X ⃗ \vec{X}X是灰狼的位置向量。

向量A ⃗ \vec{A}A和C ⃗ \vec{C}C的计算如下:
A ⃗ = 2 a ⃗ ⋅ r ⃗ 1 − a ⃗ (3) \vec{A}=2 \vec{a} \cdot \vec{r}_{1}-\vec{a}\tag{3}A=2a⋅r1​−a(3)

C ⃗ = 2 ⋅ r 2 → (4) \vec{C}=2 \cdot \overrightarrow{r_{2}}\tag{4}C=2⋅r2​​(4)

其中a ⃗ \vec{a}a的各个分量在迭代过程中线性地从2减少到0,r ⃗ 1 \vec{r}{1}r1​和r 2 → \overrightarrow{r{2}}r2​​为[0,1]之间的随机向量。

为了清楚地反映等式(1)和(2)的效果,图3(a)中显示了二维的位置向量以及可能的邻域,可以看出,灰狼的位置( X , Y ) (X,Y)(X,Y)可以根据猎物的位置( X ∗ , Y ∗ ) (X*,Y)(X∗,Y∗)进行更新,通过调整A ⃗ \vec{A}A和C ⃗ \vec{C}C的值,可以在最优代理周围到达相对于当前位置的不同地方。例如,当A ⃗ = ( 0 , 1 ) \vec{A}=(0,1)A=(0,1)和C ⃗ = ( 1 , 1 ) \vec{C}=(1,1)C=(1,1)时,灰狼的新位置为( X ∗ − X , Y ∗ ) (X*-X,Y)(X∗−X,Y∗)。三维空间中也是类似。注意,此处的两张图仅仅展示了A ⃗ = ( 0 , 1 ) \vec{A}=(0,1)A=(0,1)和C ⃗ = ( 1 , 1 ) \vec{C}=(1,1)C=(1,1)这一种情况,当随机向量r 1 r_1r1​和r 2 r_2r2​取不同的值时,灰狼可以到达任意两点之间的位置。同时还注意到,A AA的取值不同还会决定灰狼靠近还是远离猎物,后面再详细说明。
在这里插入图片描述
图3 2D和3D位置向量及其可能的下一位置

狩猎
灰狼能够识别猎物的位置并包围它们,狩猎通常是是由alpha狼领导的,beta和和delta狼偶尔也会参与狩猎。然而,在一个抽象的搜索空间中,我们不知道最佳(猎物)的位置。为了在数学上模拟灰狼的狩猎行为,我们假设alpha(最佳候选解)、beta和delta狼对猎物的潜在位置有更好的了解。因此,我们保存到目前为止获得的前三个最佳解,并迫使其他搜索代理(包括omegas)根据最佳搜索代理的位置更新其位置。对此,提出以下公式:

D α → = ∣ C ⃗ 1 ⋅ X α → − X ⃗ ∣ , D β → = ∣ C ⃗ 2 ⋅ X β → − X ⃗ ∣ , D δ → = ∣ C 3 → ⋅ X δ → − X ⃗ ∣ (5) \overrightarrow{D_{\alpha}}=\left|\vec{C}{1} \cdot \overrightarrow{X{\alpha}}-\vec{X}\right|, \overrightarrow{D_{\beta}}=\left|\vec{C}{2} \cdot \overrightarrow{X{\beta}}-\vec{X}\right|, \overrightarrow{D_{\delta}}=|\overrightarrow{C_{3}} \cdot \overrightarrow{X_{\delta}}-\vec{X}|\tag{5}Dα​​=∣∣∣​C1​⋅Xα​​−X∣∣∣​,Dβ​​=∣∣∣​C2​⋅Xβ​​−X∣∣∣​,Dδ​​=∣C3​​⋅Xδ​​−X∣(5)

X 1 → = X α → − A 1 → ⋅ ( D α → ) , X 2 → = X β → − A 2 → ⋅ ( D β → ) , X 3 → = X δ → − A 3 → ⋅ ( D δ → ) 6 ) (() \overrightarrow{X_{1}}=\overrightarrow{X_{\alpha}}-\overrightarrow{A_{1}} \cdot(\overrightarrow{D_{\alpha}}), \overrightarrow{X_{2}}=\overrightarrow{X_{\beta}}-\overrightarrow{A_{2}} \cdot(\overrightarrow{D_{\beta}}), \overrightarrow{X_{3}}=\overrightarrow{X_{\delta}}-\overrightarrow{A_{3}} \cdot(\overrightarrow{D_{\delta}})\tag(6)X1​​=Xα​​−A1​​⋅(Dα​​),X2​​=Xβ​​−A2​​⋅(Dβ​​),X3​​=Xδ​​−A3​​⋅(Dδ​​)6)(()

X ⃗ ( t + 1 ) = X 1 → + X 2 → + X 3 → 3 (7) \vec{X}(t+1)=\frac{\overrightarrow{X_{1}}+\overrightarrow{X_{2}}+\overrightarrow{X_{3}}}{3}\tag{7}X(t+1)=3X1​​+X2​​+X3​​​(7)

图4展示了2D空间中如何根据alpha,beta和delta进行代理位置的更新。可以看到,最终位置将是圆内的一个随机位置,该圆由alpha、beta和delta定义,换句话说,alpha、beta和delta狼对猎物的位置进行估计,而其他狼则再猎物周围随机更新它们的位置。
在这里插入图片描述
图4 GWO中的位置更新示意图

攻击猎物(利用)
正如上面提到的,当猎物停止移动时,灰狼就会攻击它来完成狩猎。为了对接近猎物进行建模,需要不断降低a ⃗ \vec aa的值,那么A ⃗ \vec AA的波动范围也会降低。当A ⃗ ∈ [ − 1 , 1 ] \vec A\in[-1,1]A∈[−1,1],搜索代理的下一位置可以是代理当前位置和猎物位置之间的任意位置。图5(a)表明当∣ A ∣ < 1 |A|<1∣A∣<1时,灰狼向猎物发起攻击。
在这里插入图片描述
图5 猎物攻击vs搜索猎物

搜索猎物(探索)
灰狼通常根据alpha、beta和delta狼的位置进行搜索,它们彼此分散寻找猎物,然后汇聚攻击猎物。为了数学上对分散建模,利用随机值大于1或小于-1的A ⃗ \vec AA迫使搜索代理偏离猎物,从而保证了探索。图5(b)表明当∣ A ∣ > 1 |A|>1∣A∣>1时,迫使灰狼离开猎物,希望能找到更合适的猎物。另一个支持GWO进行探索的因素是C ⃗ \vec CC,根据公式(4),C ⃗ \vec CC的取值范围为[ 0 , 2 ] [0,2][0,2],该分量为猎物提供随机权重,以随机强调(C>1)或弱化(C<1)
猎物在定义等式(1)中的距离时的作用。这有助于GWO在整个优化过程中表现出更随机的行为,有利于探索和避免局部最优。C CC并不是和A AA一样线性递减,特意要求C CC在任何时候都提供随机值,以便不仅在初始迭代中强调探索,而且在最终迭代中也强调探索。

C CC向量也可以被认为是在自然界中障碍物对接近猎物的影响,一般来说,自然中的障碍出现在狼的捕猎路径上,实际上阻碍了它们快速、方便地接近猎物。这就是向量C CC的作用。根据狼所处的位置,它可以随机地给猎物一个权重,从而让狼的捕食变得更加困难和遥远,反之亦然。

GWO算法
总之,搜索过程从在GWO算法中创建一个随机的灰狼种群(候选解)开始。在迭代过程中,alpha、beta和delta狼估计猎物可能的位置。每一个候选解更新它与猎物的距离。为了分别强调探索和利用,将参数a aa从2降低到0。当∣ A ⃗ ∣ > 1 |\vec A|>1∣A∣>1时,候选解有偏离猎物的倾向,当∣ A ⃗ ∣ < 1 |\vec A|<1∣A∣<1时,候选解收敛于猎物。最后,当满足结束条件时终止GWO算法。GWO的伪代码如下。

初始化灰狼种群X i ( i = 1 , 2 , . . . , n ) X_i(i=1,2,…,n)Xi​(i=1,2,…,n)

初始化a , A , C a,A,Ca,A,C

计算每个搜索代理的适应度值

X α = X_{\alpha}=Xα​=最优搜索代理

X β = X_{\beta}=Xβ​=第二优搜索代理

X δ = X_{\delta}=Xδ​=第三优搜索代理

while(t<最大迭代次数)

for 每个搜索代理

根据等式(7)更新当前代理的位置

end for

更新a , A , C a,A,Ca,A,C

计算所有搜索代理的适应度值

更新X α X_{\alpha}Xα​、X β X_{\beta}Xβ​、X δ X_{\delta}Xδ​

KaTeX parse error: Expected ‘EOF’, got ‘&’ at position 1: &̲emsp; t=t+…

end while

return X α X_{\alpha}Xα​

通过以下几点可以了解GWO在理论上是如何解决优化问题的:

所提出的社会等级有助于GWO在迭代过程中保存目前的最优解;
所提出的包围机制在解周围定义了一个圆形邻域,该邻域可以作为超球体扩展到更高维度;
随机参数A AA和C CC辅助候选解具有不同随机半径的超球体;
所提出的狩猎方法允许候选解确定猎物的可能位置;
a aa和A AA的适配保证了探索和利用;
参数a aa和A AA的自适应值使GWO在探索和利用之间实现平稳过渡;
随着A AA的下降,一半迭代致力于探索(∣ A ∣ ≥ 1 |A|≥1∣A∣≥1),另一半致力于利用(∣ A ∣ < 1 |A|<1∣A∣<1);
GWO只有两个主要参数需要调整(a aa和C CC)。

⛄二、部分源代码

%__________________________________________
clear all
clc
for t = 1:1
SearchAgents_no=30; % Number of search agents
Max_iteration=100; % Maximum numbef of iterations
% Load details of the selected benchmark function
% [lb,ub,dim,fobj]=Get_Functions_details(Function_name);
fobj = @heavyoilevaluate;
ub = [10,10,10,1500,4000,4500,5,5];
lb = [0,0,0,800,1500,1500,0,0];
dim = size(ub,2);
[Best_score,Best_pos,GWO_cg_curve]=GWO(SearchAgents_no,Max_iteration,ub,lb,dim,fobj);
display(['The best solution obtained by GWO is : ', num2str(Best_pos)]);
display(['Best value by GWO is : ', num2str(Best_score)]);
end
opt=heavyoilevaluate(Best_pos,20);
%重油热解模型 陶毕业论文第7章
function opt=heavyoilevaluate(input,select)

B=0;
Klp0=input(1);%范围(0,10)
Kwp0=input(2);%(0,10)
Kwlp0=input(3);%(0,10)
Elp=input(4);%(800,1500)
Ewp=input(5);%(1500,4000)
Ewlp=input(6);%(1500,4500)
nl=input(7);%(0,5)
nw=input(8);%(0,5)
if select == 20
T=[673,683,693,703,698,713,723,733,663,708,703,689,725,715,695,663,683,703,713,723];%自变量

X=[0.3122,0.3348,0.405,0.4034,0.2674,0.4514,0.51,0.574,0.1739,0.4719,0.3478, 0.3562,0.5918,0.4075,0.3355,0.1893,0.222,0.3927,0.3306,0.342];

XL0=[0.2034,0.2305,0.3041,0.3209,0.1638,0.3282,0.3555,0.3685,0.1064,0.3222,0.2346,0.2609,0.4101,0.2724,0.2369,0.1104,0.1447,0.3049,0.2426,0.2559];
end
if select == 56
T=[ 673
723
673
723
673
673
683
683
683
703
683
683
693
683
695
698
703
723
708
713
698
713
713
733
708
733
713
713
715
733
723
733
725
663
733
663
708
673
689
673
693
673
693
683
684
683
703
693
703
703
708
713
713
723
719
723];
X = [ 0.3122
0.4371
0.3138
0.3637
0.3879
0.2075
0.3348
0.3110
0.3384
0.3927
0.4684
0.2220
0.4050
0.2599
0.3355
0.2846
0.4034
0.3420
0.4266
0.3306
0.2674
0.2062
0.4514
0.4585
0.4534
0.4720
0.4552
0.4447
0.4075
0.3729
0.5100
0.4234
0.5918
0.1739
0.5740
0.1893
0.3637
0.2169
0.3562
0.1619
0.3397
0.0649
0.2381
0.2512
0.3031
0.1410
0.5436
0.2532
0.3478
0.3973
0.4719
0.4162
0.4232
0.4203
0.5367
0.3011];
XL0 = [
0.2034
0.2802
0.2136
0.2674
0.2806
0.1282
0.2305
0.2276
0.2497
0.3049
0.3693
0.1447
0.3041
0.1822
0.2369
0.2045
0.3209
0.2559
0.3107
0.2426
0.1638
0.1397
0.3326
0.2977
0.3260
0.3099
0.3282
0.3441
0.2724
0.2688
0.3555
0.3083
0.4101
0.1064
0.3685
0.1104
0.2449
0.1541
0.2609
0.1103
0.2482
0.0439
0.1483
0.1867
0.1976
0.0983
0.3831
0.1833
0.2346
0.3018
0.3222
0.3266
0.2945
0.3390
0.3354
0.2510]';
end
N = max(size(XL0));
for k=1:1:N
temp1=Klp0exp(-Elp/T(k))/nl(1-(1-X(k))^nl);
temp2=Kwp0Kwlp0exp(-(Ewp+Ewlp)/T(k))/(nw-Kwlp0exp(-Ewlp/T(k)));
temp3=(1-(1-X(k))^(Kwlp0
exp(-Ewlp/T(k))))/(Kwlp0exp(-Ewlp/T(k)));
temp4=((1-X(k))^nw-1)/nw;
XXL(k)=temp1+temp2
(temp3+temp4);%模型输出
B=B+abs(XL0(k)-XXL(k));%目标函数值

end
if size(input,1) <= 1
subplot(2,1,1)
t = 1:1:N;
plot(t,XL0,‘-k’,‘linewidth’,1.5);
hold on
plot(t,XXL,‘–b’,‘linewidth’,1.5);

hold off
xlabel(‘sample point’,‘fontsize’,9);
ylabel(‘output’,‘fontsize’,9);

legend(‘actual output’,‘estimate output’);
set(legend,‘fontname’,‘Times New Roman’)
set(legend,‘fontsize’,9)
subplot(2,1,2)
plot(t,XL0 -XXL,‘-.g’,‘linewidth’,1.5)
hold off
xlabel(‘sample point’,‘fontsize’,9);
ylabel(‘output’,‘fontsize’,9);
legend(‘output error’);
set(legend,‘fontname’,‘Times New Roman’)
set(legend,‘fontsize’,9)
data = [XL0’,XXL’]
end
opt=B;

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海神之光

有机会获得赠送范围1份代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值