【优化调度】基于matlab帝国企鹅算法求解多扇区航空调度问题【含Matlab源码 1929期】

举报
海神之光 发表于 2022/07/08 00:32:34 2022/07/08
【摘要】 一、帝企鹅算法简介 目前,关于帝企鹅算法在国内外研究较少,在中对该算法进行了分析,并且与常见的粒子群算法、萤火虫算法进行了对比分析. 帝企鹅从事各种活动,如狩猎、群体觅食,是群居性动物.每当恶劣的气候来...

一、帝企鹅算法简介

目前,关于帝企鹅算法在国内外研究较少,在中对该算法进行了分析,并且与常见的粒子群算法、萤火虫算法进行了对比分析. 帝企鹅从事各种活动,如狩猎、群体觅食,是群居性动物.每当恶劣的气候来临,它们会挤在一起防风御寒.帝企鹅在南极极端冬季期间主要以集群的方式互相取暖来度过−40 ℃ 的冬季. 为了保证每只企鹅都能取暖,因此每只企鹅都在平等地做出贡献,同时它们的社交行为极为团结以及分工明确. 集群的行为可归纳如下.
1 确定集群边界范围 
设定在帝企鹅蜷缩取暖的过程中所选择的位置范围在多边形的网格范围内,帝企鹅在聚集的过程中至少与两只以上的帝企鹅相邻,邻居的选择是随机的;而在帝企鹅集群过程中范围的边界是不规则的多边形,因此用围绕住帝企鹅集群的风的梯度来表示整体集群的边界,在此定义风速 和其梯度 、 ,集群边界 ,可表示为
γ = ∆α, (8) µ = α+iβ. (9) W

2 计算集群层次周围的温度 
南极严酷的外界环境使得帝企鹅在迁徙过程中面对寒冷天气会采取集群取暖来保持温度. 若当前聚集半径 d>0.5 时,其温度 W=0;当 d<0.5 时,其温度 W=1. 温度梯度曲线可以描述为
在这里插入图片描述
其中, 为最大迭代次数,x 为当前迭代次数,温度的表达式
在这里插入图片描述
3 计算帝企鹅间的距离 
在集群范围内帝企鹅间的距离表示为该个体与集群中心帝企鹅的距离,集群距离公式如下:
在这里插入图片描述
其中, 代表帝企鹅距中心距离; x 表示当前迭代数; 和 用于帝企鹅体积设置的影响向量因子,
避免个体间的冲突; 为 x 轮最优解;表示当前帝企鹅的位置向量; 定义帝企鹅的主体社会地位,负责区别最优个体与普通个体. 向量和 计算如下:
在这里插入图片描述
其中 , 是移动步长参数,这里 的值设置为 2.5, 通过比较与最优的差异来定义多边形网格精度,而 是一个随机函数. 函数计算如下:
在这里插入图片描述
其中,ξ 和 φ是控制参数,其值分别在(2,3)(1.5,2)的范围内能得出更好的结果.

4 帝企鹅位置更新 帝企鹅集群中的个体通过向集群中心帝企鹅 Q 的方向移动更新位置信息,其位置更新如下:
Oep(x+1) = Obest(x)−ΓLep, (17)
其中,Oep(x+1)代表皇帝企鹅的下一个更新位置.在迭代过程中,一旦移动者重新定位,帝企鹅的上述参数将被重新计算.

二、部分源代码

clc;
clear;
close all;
warning off
%% 固定随机数种子
noRNG=1;
rng('default')
rng(noRNG)
%% 载入数据
%load point
load Route_num
load Route_type
load Area
Point=xlsread('Point.xls');
data.flight=xlsread('0308多扇区预计过点时间表.xlsx');
data.flight(:,3)=data.flight(:,3)*24*3600;
data.vehicle=xlsread('机型相关数据.xls');
%data.vehicle(:,[2,3])=data.vehicle(:,[2,3])*1000/3600;
data.Point=Point;
data.Route_num=Route_num;
data.Route_type=Route_type;
data.Aera_1=Aera_1;
data.Aera_2=Aera_2;
data.Aera_3=Aera_3;
data.num_flight=length(data.flight(:,1));
data.num_node=length(Point(:,1));
data.num_Route=length(data.Route_num);
%% 画图
figure
hold on
plot(Point(:,2),Point(:,3),'o','LineWidth',2,...
                     'MarkerEdgeColor','k',...
                     'MarkerFaceColor','g',...
                     'MarkerSize',10)
for i=1:length(Route_num)
    path=Route_num{i}(3:end);
    plot(Point(path,2),Point(path,3),'LineWidth',2)
end


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

三、运行结果

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

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]唐菁敏,曲文博,苏慧慧,郑锦文.一种基于帝企鹅差分算法的WSN覆盖优化[J].云南大学学报(自然科学版). 2021,43(01)

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

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/125648695

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。