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

一、简介

基于范围选择的进化多目标优化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 Definition

CostFunction = @(x) ZDT(x);

nVar = 3;             % Number of Decision Variables

VarSize = [nVar 1];   % Decision Variables Matrix Size

VarMin = 0;           % Decision Varibales Lower Bound
VarMax = 1;           % Decision Varibales Upper Bound

nObj = numel(CostFunction(unifrnd(VarMin, VarMax, VarSize)));   % Number of Objectives


%% PESA-II Settings

MaxIt = 100;      % Maximum Number of Iterations

nPop = 50;        % Population Size

nArchive = 50;    % Archive Size

nGrid = 7;        % Number of Grids per Dimension

InflationFactor = 0.1;    % Grid Inflation

beta_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;


%% Initialization

empty_individual.Position = [];
empty_individual.Cost = [];
empty_individual.IsDominated = [];
empty_individual.GridIndex = [];

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

archive = [];

%% Main Loop

for it = 1:MaxIt
   
    pop = DetermineDomination(pop);
    
    ndpop = pop(~[pop.IsDominated]);
    
    archive = [archive
             ndpop]; %#ok
    
    archive = DetermineDomination(archive);
    
    archive = archive(~[archive.IsDominated]);

    [archive, grid] = CreateGrid(archive, nGrid, InflationFactor);
    
    if numel(archive)>nArchive
        E = numel(archive)-nArchive;
        archive = TruncatePopulation(archive, grid, E, beta_deletion);
        [archive, grid] = CreateGrid(archive, nGrid, InflationFactor);
    end
    
    PF = archive;
    
    figure(1);
    PlotCosts(PF);
    pause(0.01);
    
    disp(['Iteration ' num2str(it) ': Number of PF Members = ' num2str(numel(PF))]);
    
    if it >= MaxIt
        break;
    end
    
    % Crossover
    popc = repmat(empty_individual, nCrossover/2, 2);
    for c = 1:nCrossover/2
        
        p1 = 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);
        
    end
    popc = popc(:);
    
    % Mutation
    popm = repmat(empty_individual, nMutation, 1);
    for m = 1:nMutation
        
        p = SelectFromPopulation(archive, grid, beta_selection);
        
        popm(m).Position = Mutate(p.Position, mutation_params);
        
        popm(m).Cost = CostFunction(popm(m).Position);
        
    end
    
    pop = [popc
         popm];
         
end

%% Results

disp(' ');

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

 

🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁  关注我领取海量matlab电子书和数学建模资料

👇  私信完整代码和数据获取及论文数模仿真定制

1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度
2 机器学习和深度学习时序、回归、分类、聚类和降维

2.1 bp时序、回归预测和分类

2.2 ENS声神经网络时序、回归预测和分类

2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类

2.4 CNN/TCN卷积神经网络系列时序、回归预测和分类

2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类

2.7 ELMAN递归神经网络时序、回归\预测和分类

2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类

2.9 RBF径向基神经网络时序、回归预测和分类

2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻
4 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
5 通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信
6 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
7 电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化
8 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
9  雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天Matlab科研工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值