一、简介

基于范围选择的进化多目标优化PESA-II

摘要:这篇文章对进化多目标优化算法提出了一个新的选择技术—目标空间中的选择单元是一个超立方体。在这项技术中,与给每个个体分配一个选择适应度不同的是,适应度值被分配给被当前至少一个接近帕累托前沿的个体占据的当前目标空间中的超立方体。然后从这块空间中随机选择个体作为结果。

第二部分简要介绍现代进化多目标算法中的选择方案以及基于区域选择的概念。第三部分算法测试;第五部分描述结果,第六部分得出结论。

图1将会解释在当前多目标进化算法中的主要选择方案。对于在目标空间中假定的两个目标问题,我们在图中画出了许多点,想象目标是沿着两个轴线的最小化问题。目标空间被分割成许多正方形,通常情况下我们的超立方体是在高维问题中的。在PAES和PESA中,算法都被分割成目标空间中的一小部分到超长方体。

在PESA中超立方体的相关占据信息被用作选择方案。一个持续只包含非支配解的存档,作为算法的当前接近帕累托前沿,只从存档中选择。每个个体的选择适应度仅仅只是其它解的数量(个体占据相同的超立方体),被叫做压缩因子。然后用二项锦标赛选择方法朝压缩因子小的方向选择父代双亲。

在PAES中,选择是不同的事情,PAES相当于是一个局部搜索方法。在任何时候都只有一个当前解,因此它常常被选作突变的父代。然而,当变体和当前解都是非支配的时候,就得决定将谁看作新的当前解(在下一次的迭代中直接被选择的父代)了。我们指出提出的目的,PESA利用了超立方体占据。

SPEA中的选择方法是通过强度帕累托方案产生的。这是一种给基于当前种群中个体的数量的个体分配选择适应度的方法。在SPEA中有两个种群一个内部一个外部。外部种群仅包含非支配个体,内部种群包括通过遗传算子产生的最后的子代,可能包含被外部种群中支配的个体。图一可能代表在一次运行中的组合种群。点X是非支配的,因此是在外部种群里边,它支配了外部种群中的两个个体(成员)。对非支配个体的强度测量仅仅是它包含的内部种群中的个体数目。而内部种群成员的强度测量是通过包含它们的外部种群中的个体强度和推导出的。图1中Y可能比X有一个更好的选择强度。

NSGA-II使用了比其它方案表现良好的不同选择方案,既高效又表现良好。通过朝高隔离值靠近的。图1中Y比A的隔离值高。

基于区域的选择提供了一个可选择的,前面的目标是更直接地完成。基于范围的选择:选择单元是一个超立方体而不是一个个体。选择适应度是通过超长方体推导出的,选择任意的标准选择方法,用遗传算子选择的最终结果个体是从超立方体中随机选择的。例如图1中,超立方体区域C要比B有更好的选择适应度。

下面简要分析下为什么基于区域的选择要比基于个体的选择要好。假设我们采用二进制锦标赛来根据选择适应度选择个体。无论这些选择适应度是否是基于个体的还是基于超立方体的。首先要考虑的特殊案例是占据当前靠近帕累托前沿近似值的超长方体只有两个,其中一个超立方体被9个个体占据,另一个被一个个体占据。那么这个一个个体就是我们认为最被隔离的那一个。在基于个体选择的方案中,使用二进制锦标赛选择,那我们最好的个体(也就是最被隔离的那个)被选择的概率是1-(9/10)^2=0.19.那么我们选择过度拥挤的那9个个体的概率就是0.81.这似乎没有朝产生低拥挤区域提供合适的高偏移。然而,在基于区域的选择中,被选择的单元是两个被占据的超立方体。那么最不被占据的区域被选择的概率是1-(1/2) ^ 2=0.75,那么选择更拥挤个体的概率就是0.25.由此可见,基于个体选择的方案我们更可能选择不被隔离的个体,而基于区域的选择方案我们更可能选择被隔离的个体。

那么更一般地,我们仍然关注选择一个最被隔离的个体的相关概率,然后继续使用二进制锦标赛的选择方案。假设帕累托前沿的近似值有b个被占据的超立方体,在第i个超立方体中有ni个个体,所有被占据的超立方体的个体总数为P。不失一般性,假设现在一个超立方体j有最大的bi,另一个超立方体有最小的ni,最不拥挤和最拥挤的超立方体中的个体数分别是l和m。

当使用基于个体的选择时,从最不拥挤的超立方体中选择一个个体的概率是1-((P-l)/P)^2.同理,最拥挤的超立方体中的个体被选中的概率是(m/P) ^2

当m高于l时,选择拥挤区域的个体的可能性就较高了,看起来不太合理。

相比之下,基于区域的选择方式相应的比率就是2b-1.当超过1个被占据的超长方体时,一般不会小于1,至少是3.也就是说选择不拥挤区域的概率高。

当锦标赛的规模很大时,收敛非常快,而且种群间的个体分布非常平坦,在这种情况下基于个体的选择方式在选择最不拥挤的区域选择个体的可能性就比较小了。

二、代码

%
%clc;
clear;
close all;%% Problem DefinitionCostFunction = @(x) ZDT(x);nVar = 3;             % Number of Decision VariablesVarSize = [nVar 1];   % Decision Variables Matrix SizeVarMin = 0;           % Decision Varibales Lower Bound
VarMax = 1;           % Decision Varibales Upper BoundnObj = numel(CostFunction(unifrnd(VarMin, VarMax, VarSize)));   % Number of Objectives%% PESA-II SettingsMaxIt = 100;      % Maximum Number of IterationsnPop = 50;        % Population SizenArchive = 50;    % Archive SizenGrid = 7;        % Number of Grids per DimensionInflationFactor = 0.1;    % Grid Inflationbeta_deletion = 1;
beta_selection = 2;pCrossover = 0.5;
nCrossover = round(pCrossover*nPop/2)*2;pMutation = 1-pCrossover;
nMutation = nPop-nCrossover;crossover_params.gamma = 0.15;
crossover_params.VarMin = VarMin;
crossover_params.VarMax = VarMax;mutation_params.h = 0.3;
mutation_params.VarMin = VarMin;
mutation_params.VarMax = VarMax;%% Initializationempty_individual.Position = [];
empty_individual.Cost = [];
empty_individual.IsDominated = [];
empty_individual.GridIndex = [];pop = repmat(empty_individual, nPop, 1);for i = 1:nPoppop(i).Position = unifrnd(VarMin, VarMax, VarSize);pop(i).Cost = CostFunction(pop(i).Position);
endarchive = [];%% Main Loopfor it = 1:MaxItpop = DetermineDomination(pop);ndpop = pop(~[pop.IsDominated]);archive = [archivendpop]; %#okarchive = DetermineDomination(archive);archive = archive(~[archive.IsDominated]);[archive, grid] = CreateGrid(archive, nGrid, InflationFactor);if numel(archive)>nArchiveE = numel(archive)-nArchive;archive = TruncatePopulation(archive, grid, E, beta_deletion);[archive, grid] = CreateGrid(archive, nGrid, InflationFactor);endPF = archive;figure(1);PlotCosts(PF);pause(0.01);disp(['Iteration ' num2str(it) ': Number of PF Members = ' num2str(numel(PF))]);if it >= MaxItbreak;end% Crossoverpopc = repmat(empty_individual, nCrossover/2, 2);for c = 1:nCrossover/2p1 = SelectFromPopulation(archive, grid, beta_selection);p2 = SelectFromPopulation(archive, grid, beta_selection);[popc(c, 1).Position, popc(c, 2).Position] = Crossover(p1.Position, ...p2.Position, ...crossover_params);popc(c, 1).Cost = CostFunction(popc(c, 1).Position);popc(c, 2).Cost = CostFunction(popc(c, 2).Position);endpopc = popc(:);% Mutationpopm = repmat(empty_individual, nMutation, 1);for m = 1:nMutationp = SelectFromPopulation(archive, grid, beta_selection);popm(m).Position = Mutate(p.Position, mutation_params);popm(m).Cost = CostFunction(popm(m).Position);endpop = [popcpopm];end%% Resultsdisp(' ');PFC = [PF.Cost];
for j = 1:size(PFC, 1)disp(['Objective #' num2str(j) ':']);disp(['      Min = ' num2str(min(PFC(j, :)))]);disp(['      Max = ' num2str(max(PFC(j, :)))]);disp(['    Range = ' num2str(max(PFC(j, :))-min(PFC(j, :)))]);disp(['    St.D. = ' num2str(std(PFC(j, :)))]);disp(['     Mean = ' num2str(mean(PFC(j, :)))]);disp(' ');end

【优化求解】基于PESA—II实现多目标优化求解matlab源码相关推荐

  1. 【PID优化】基于花朵授粉算法PID控制器优化设计含Matlab源码

    ​1 内容介绍 PID参数优化对PID控制性能起着决定性作用,针对PID参数寻优问题,提出运用一种花授粉算法(FPA).该算法启发于自然界中花粉的传播授粉过程,以三个PID参数组成每个花粉单元的位置坐 ...

  2. matlab三维路径规划,【路径规划】基于A星算法的三维路径规划matlab源码

    %% 该函数用于演示基于A_Star算法的三维路径规划算法 %% 清空环境 clc clear %% 数据初始化 %下载数据 starttime=cputime; load HeightData z ...

  3. 果蝇优化算法(Fruit Fly Optimization Algorithm,FOA)-Matlab源码

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 果蝇优化算法(Fruit Fly Optimization Algorithm,FOA) 启发 初始化 食物搜索 计算味道浓度判定值 适应度评估 确定 ...

  4. 【无人机】基于matlab蚁群算法求解含危险源的无人机路径规划【含Matlab源码 2059期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  5. 【路径规划】基于蚁群算法求解电动汽车充电站与换电站协调路径规划matlab源码含GUI

    1.蚁群算法(ant colony algorithm,ACA)起源和发展历程 Marco Dorigo等人在研究新型算法的过程中,发现蚁群在寻找食物时,通过分泌一种称为信息素的生物激素交流觅食信息从 ...

  6. 【无人机】基于matlab粒子群算法优化干扰受限下无人机群辅助网络【含Matlab源码 2245期】

    ⛄一.无人机简介 无人机的航迹规划是指在综合考虑无人机飞行油耗.威胁.飞行区域以及自身物理条件限制等因素的前提下, 为飞行器在飞行区域内规划出从初始点到目标点最优或者满意的飞行航迹, 其本质是一个多约 ...

  7. 【FNN回归预测】基于matlab粒子群优化前馈神经网络婚姻和离婚数据回归预测【含Matlab源码 2069期】

    一.粒子群优化前馈神经网络简介 1 前馈神经网络FNN 前馈神经网络FNN是解决非线性问题的很好模型,它通过梯度下降算法进行网络训练.FNN与时间序列法等传统方法相比,能够更好地来描述问题的非线性特性 ...

  8. 【图像配准】基于粒子群改进的sift图像配准matlab源码

    SIFT \ SIFT尺度不变特征转换,具有选择,尺度不变性.由David Lowe在1999年所发表,2004年完善总结. owe将SIFT算法分解为如下四步: \ 1. 尺度空间极值检测:搜索所有 ...

  9. 【配电网重构】基于粒子群算法实现配电网重构含Matlab源码

    1 简介 随着大规模,跨区域的配电网不断发展,对配电网运行的经济性和可靠性要求越来越高,在配电网发生大范围停电事故后,需要对配电网的拓扑结构进行重新组合,从而达到恢复供电的目的,这个重新组合配电网拓扑 ...

最新文章

  1. mysql merge union_MySQLMerge存储引擎
  2. python单词意思-python实现单词本功能
  3. 架构师速成6.6-知识的收集整理学习
  4. Android WebView 和 javaScript的互相调用(一)
  5. 直接获取submission结果
  6. ubuntu 硬盘使用情况
  7. python 示例_Python条件类| release()方法与示例
  8. 深入浅出看懂AlphaGo Zero - PaperWeekly 第51期
  9. mysql 命令限制_MySQL 命令总结
  10. Chrome去广告插件-Adblock Plus
  11. Scientific Reports|比较转录组分析揭示了杀菌剂氰烯菌酯对尖孢镰刀菌的抗性调控机制和杀菌活性
  12. 跟踪综述推荐:目标跟踪40年
  13. (连载0.2)加强版Python提取上市公司年报报告中财务报表
  14. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 7
  15. dalsa工业相机8k参数_dalsa线阵相机Linea系列2K4K8K
  16. 微信开发(3)微信支付
  17. 用友NC65产品portal新增按钮
  18. 方维分享社区系统——详解伪静态开启方法
  19. DHTML---HTML5
  20. 划重点!关于缓冲区溢出攻击,这份防范策略一定要收好!

热门文章

  1. 数据挖掘,你知道的大公司有哪些?独家揭秘:大数据公司挖掘数据价值的49个典型案例
  2. oracle数据库同步工具Dell,|SQL Maestro Oracle Data Sync(数据库同步工具)下载v16.4.0.6免费版 - 欧普软件下载...
  3. springboot毕设项目:童童摄影馆管理系统yyt8p(java+VUE+Mybatis+Maven+Mysql)
  4. PMOS管和NMOS管
  5. 百度局域网异常访问屏蔽策略破解方法
  6. 再见,我的念青五笔。
  7. 软考高项记忆小妙招—配置管理和变更管理
  8. OpenEuler华为欧拉系统安装教程及联网配置
  9. 基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割
  10. 2021世界人工智能大会:站在人工智能时代的门槛