目录
1 帝企鹅算法
2 旅行商问题(TSP)
3 运行结果
4 Matlab代码及文章
5 参考文献
6 写在最后
1 帝企鹅算法
帝企鹅优化算法(emperor penguin optimizer,EPO)是Gaurav 等提出的一种新型群智能优化算法,其思想是模拟帝企鹅群体冬天拥挤在一起取暖的行为进行寻优。Baliarsingh 等进一步将EPO算法用于求解多目标优化问题。Kumar 等将EPO算法用于处理图像分割问题。Jia等通过结合多项式变异、levy飞行及热交换操作策略改进帝企鹅优化算法。
由上述可知,帝企鹅算法已经被应用于优化工程设计、图像分割、特征选择以及资源调度等复杂问题,且具有较优的性能。但是到目前为止该算法尚未被应用TSP问题中。因此,本文采用一种新的算法解决老的问题。
2 旅行商问题(TSP)
旅行商问题被定义为一个推销员在所有城市的旅行﹐以最低的成本回到最初的城市.TSP问题的计算规模随着城市节点的增多呈指数增大,能否以合理的成本找到理想解决方案是非常重要的.该问题由一组N个城市节点组成,任意两个城市节点之间的间距已知.推销员从一个节点开始,每个节点经过且经过一次(起始节点除外)使总移动距离最小的方式返回到起始节点.TSP问题可以用图形G=(V,E)表示,其中V={1,2,…,N}是城市节点的集合,E是边的集合.
每个边都有一个表示距离的值,该距离表示与其关联的各城市之间的距离.推销员旅行到N个
城市(或节点)时,他只去每个城市一次,并以最短的旅行距离结束.令
为第j个城市与第i个城市之间
的距离.TSP问题可以化为如下模型:
3 运行结果
4 Matlab代码及文章
本文仅展现主函数代码,全部代码及详细文章见:
%% 帝企鹅算法:TSP问题
% AFO TSP problems
%% 数量固定
% TSP issues with different starting points and a fixed number of travellers
%% 这是使用原始算法的直接求解结果,添加专用于本问题的更新方式可以进一步提高精度
% This is the direct result of using the original algorithm,
% adding some specific update methods to this problem can further improve the accuracy
clc;
clear;
close all;
warning off
%% 固定随机数种子
noRNG=1;
rng('default')
rng(noRNG)
%% 载入数据
data.maxTraveler=3; %旅行商数量
data.numCity=30; %城市数量
%% 随机生成城市
data.xyCity=rand(data.numCity,2);
for i=1:data.numCity
for j=1:data.numCity
data.D(i,j)=norm(data.xyCity(i,:)-data.xyCity(j,:));
end
end
%%
option.dim=data.numCity;
lb=0;
ub=1;
option.lb=lb;
option.ub=ub;
if length(option.lb)==1
option.lb=ones(1,option.dim)*option.lb;
option.ub=ones(1,option.dim)*option.ub;
end
option.fobj=@aimFcn_1;
%option.fobj0=option.fobj;
option.showIter=0;
%% 算法参数设置 Parameters
% 基本参数
option.numAgent=200; %种群个体数 size of population
option.maxIteration=100; %最大迭代次数 maximum number of interation
% 帝企鹅算法
option.v_lb=-(option.ub-option.lb)/4;
option.v_ub=(option.ub-option.lb)/4;
option.w2=0.5; %weight of Moving strategy III
option.w4=1;%weight of Moving strategy III
option.w5=1;%weight of Moving strategy III
option.pe=0.01; % rate to judge Premature convergence
option.gap0=ceil(sqrt(option.maxIteration*2))+1;
option.gapMin=5; % min gap
option.dec=2; % dec of gap
option.L=10; % Catastrophe
str_legend=[{'AFO1'},{'AFO2'}];
%% Initialize population individuals (common to control experiment algorithm)
x=ones(option.numAgent,option.dim);
y=ones(option.numAgent,1);
for i=1:option.numAgent
x(i,:)=rand(size(option.lb)).*(option.ub-option.lb)+option.lb;
y(i)=option.fobj(x(i,:),option,data);
end
%% 使用算法求解
% Based on the same population, solve the selected functions by using different algorithms
bestX=x;
rng(noRNG)
tic
[bestY(1,:),bestX(1,:),recording(1)]=AFO1(x,y,option,data);
tt(1,1)=toc;
rng(noRNG)
tic
[bestY(2,:),bestX(2,:),recording(2)]=AFO2(x,y,option,data);
tt(1,2)=toc;
%%
figure
hold on
for i=1:length(recording)
plot((recording(i).bestFit),'LineWidth',2)
end
legend(str_legend)
title('fitness curve')
%% 输出结果
str='AFO1'
[~,result1]=option.fobj(bestX(1,:),option,data);
drawPc(result1,option,data,str)
str='AFO2'
[~,result2]=option.fobj(bestX(2,:),option,data);
drawPc(result2,option,data,str)
5 参考文献
[1]王芬,杨媛.基于猎人猎物优化算法求解TSP问题[J].宁夏师范学院学报,2022,43(07):59-63+71.
[2]崔轲轲. 基于帝企鹅优化算法的投资组合选择问题研究[D].北方民族大学,2022.DOI:10.27754/d.cnki.gbfmz.2022.000007.
6 写在最后
部分理论文献应用网络文献,如有侵权请联系删除。