【智能优化算法-热交换法算】基于热交换优化算法求解多目标优化问题附matlab代码

简介: 【智能优化算法-热交换法算】基于热交换优化算法求解多目标优化问题附matlab代码

 1 内容介绍

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

image.gif编辑

image.gif编辑

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 运行结果

image.gif编辑

4 参考文献

[1]杨明昊, 李云龙. 基于热交换优化算法的多阈值图像分割方法[J]. 科技创新与生产力, 2019(5):3.

[2]李云龙, 杨明昊. 基于莱维飞行的热交换优化算法[J]. 科技创新与生产力, 2019(6):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


相关文章
|
2月前
|
存储 传感器 分布式计算
针对大尺度L1范数优化问题的MATLAB工具箱推荐与实现
针对大尺度L1范数优化问题的MATLAB工具箱推荐与实现
|
2月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
113 0
|
2月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
144 8
|
2月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
142 8
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
212 0
|
2月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
|
2月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
108 0
|
2月前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
|
2月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
158 8
|
2月前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
155 12

热门文章

最新文章