1 内容介绍
热 交 换 优 化 (Thermal Exchange Optimization, TEO)算法是一种基于牛顿冷却定律的新型优化算 法,在该算法中,物体的热损失率与物体和其周围 环境的温度差成正比[6]。向周围环境传递热量的热 铁物体见图 1。

编辑

编辑
2 仿真代码
%__________________________________________________________________ %
% %
% %
% MOTEO: a novel multi-objective thermal exchange %
clc;
clear;
close all;
%% Problem Definition
CostFunction=@(x) ZDT1(x); % Cost Function
nVar=10; % Number of Decision Variables
VarSize=[1 nVar]; % Size of Decision Variables Matrix
VarMin=0; % Lower Bound of Variables
VarMax=1; % Upper Bound of Variables
% Number of Objective Functions
nObj=numel(CostFunction(unifrnd(VarMin,VarMax,VarSize)));
c1=1.1; % Personal Learning Coefficient
c2=c1*2; % Global Learning Coefficient
%% MOTEO Parameters
MaxIt=1000; % Maximum Number of Iterations
nPop=100; % Population Size
pCrossover=0.7; % Crossover Percentage
nCrossover=2*round(pCrossover*nPop/2); % Number of Parnets (Offsprings)
pMutation=0.4; % Mutation Percentage
nMutation=round(pMutation*nPop); % Number of Mutants
mu=0.02; % Mutation Rate
sigma=0.1*(VarMax-VarMin); % Mutation Step Size
%% MOTEO Initialization
empty_individual.Position=[];
empty_individual.Cost=[];
empty_individual.Rank=[];
empty_individual.DominationSet=[];
empty_individual.DominatedCount=[];
empty_individual.CrowdingDistance=[];
pop=repmat(empty_individual,nPop,1);
for i=1:nPop
pop(i).Position=unifrnd(VarMin,VarMax,VarSize);
pop(i).Cost=CostFunction(pop(i).Position);
end
% Non-Dominated Sorting
[pop, F]=NonDominatedSorting(pop);
% Calculate Crowding Distance
pop=CalcCrowdingDistance(pop,F);
% Sort Population
[pop, F]=SortPopulation(pop);
%% MOTEO Main Loop
for it=1:MaxIt
% Crossover
popc=repmat(empty_individual,nCrossover/2,2);
for k=1:nCrossover/2
i1=randi([1 nPop]);
p1=pop(i1);
i2=randi([1 nPop]);
p2=pop(i2);
MaxRank=max([pop.Rank]);
c=c1+c2*(MaxIt-it)/MaxIt;
ratio=it/MaxIt;
[popc(k,1), popc(k,2)]=Crossover(p1,p2,MaxRank,c,ratio);
popc(k,1).Position=max(min(popc(k,1).Position,VarMax),VarMin);
popc(k,2).Position=max(min(popc(k,2).Position,VarMax),VarMin);
popc(k,1).Cost=CostFunction(popc(k,1).Position);
popc(k,2).Cost=CostFunction(popc(k,2).Position);
end
popc=popc(:);
% Mutation
popm=repmat(empty_individual,nMutation,1);
for k=1:nMutation
i=randi([1 nPop]);
p=pop(i);
popm(k).Position=Mutate(p.Position,mu,sigma);
popm(k).Position=max(min(popm(k).Position,VarMax),VarMin);
popm(k).Cost=CostFunction(popm(k).Position);
end
% Merge
pop=[pop
popc
popm]; %#ok
% Non-Dominated Sorting
[pop, F]=NonDominatedSorting(pop);
% Calculate Crowding Distance
pop=CalcCrowdingDistance(pop,F);
% Sort Population
pop=SortPopulation(pop);
% Truncate
pop=pop(1:nPop);
% Non-Dominated Sorting
[pop, F]=NonDominatedSorting(pop);
% Calculate Crowding Distance
pop=CalcCrowdingDistance(pop,F);
% Sort Population
[pop, F]=SortPopulation(pop);
% Store F1
F1=pop(F{1});
% Show Iteration Information
disp(['Iteration ' num2str(it) ': Number of F1 Members = ' num2str(numel(F1))]);
% Plot F1 Costs
PlotCost(F1);
pause(0.01);
%
end
%% Results
3 运行结果

编辑
4 参考文献
[1]杨明昊, 李云龙. 基于热交换优化算法的多阈值图像分割方法[J]. 科技创新与生产力, 2019(5):3.
[2]李云龙, 杨明昊. 基于莱维飞行的热交换优化算法[J]. 科技创新与生产力, 2019(6):3.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。