多任务进化优化算法(三)利用显式自编码器的进化多任务、基于生物群落共生的进化多任务优化简介

摘要

多任务进化优化目前是进化计算社区一个非常热门的方向。其旨在同时优化多个任务,通过利用任务之间的潜在相似性以改善每个优化问题的收敛性能。除了之前介绍的MFEA和MFEAII这两个单种群的方法以外,本文介绍两个性能非常好的多种群多任务优化方法。他们是利用显式自编码器的进化多任务优化方法和基于生物群落共生的进化多任务优化方法。

1.基于生物群落共生的进化多任务优化方法(SBGA)

SBGA是解决多任务优化(MTO)问题的新范式,它利用生物群落(SBO)中的共生关系来跨任务传递有用的信息,其被发表于2019年的AAAI(CCF A类会议)上。如果一个物种对其他物种有正面/没有正面/负面的影响,就说这个物种对其他物种是有益/中立/有害的。根据有益、中性和有害两种物种之间的关系,将SBO分为六大类型,如表一所示。
在这里插入图片描述

SBO可以合理地模拟进化多任务优化(EMTO)中的信息传递。不同任务的种群构成多个物种,任务间的信息传递可以看作是共生关系。对应于SBO,从个体c到任务F, SBGA中有益、中立、有害的含义定义如下:
1)有益的(Beneficial):如果个体c的适应度值排在任务F的前B * N,则表示c对任务F有利(记为c 有益于(符号懒得打了,看公式吧)F),其中N为种群规模,B为有利因子。
2)有害的(Harmful):如果个体c的适应度值排在任务F的最底层H * N,则表示c对任务F是有害的(记为c有害于(符号懒得打了,看公式吧)F),其中N为种群大小,H为有害因素。
3)中性(Neutral):如果c对任务F既无益又无害,则称c对任务F是中性的(用c约等于F表示)。
在这里插入图片描述

根据上述SBO关系和类型,如表一所示,SBGA中个体c的六种任务之间的关系(共生关系)如表二所示。在SBGA中,任何两个任务ij的共生度是通过计算满足这些条件的次数来计算的:
在这里插入图片描述
通过评估任务间的共生程度,隐式测量了知识转移的正向、中性和负向效应。
在这里插入图片描述
算法1给出了SBGA的主要框架,包括3个主要部分:1)配对任务间的个体替换策略;2)任务间的配对评估度量共生关系;3)基于SBO的知识转移频率和数量的动态调整策略。在SBGA中,每个任务都被分配一个进化求解器,然后不同求解器中的种群之间的相互作用受到了SBO的启发。后代之间的共生程度决定了每个循环中不同任务之间的信息传递率。每个任务被赋予一个基于共生关系的辅助任务(见算法1,第12行),当前任务的子代的一部分 S i S_{i} Si 被替换为辅助任务的子代的数量(见算法1,第16行)。环境选择后,估计任务间的共生程度(见算法1,第23行),然后通过以下公式自适应更新传输速率(见算法1,第29行):
在这里插入图片描述
很容易知道,具有积极效应的转移( M i j M_{ij} Mij, O i j O_{ij} Oij, O i j O_{ij} Oij)的数量越大,转移率 R i j R_{ij} Rij就越大。通常采用成对任务间的个体替换策略来估计共生关系,而SBO提供了一种自适应的知识转移估计方法。SBGA的更多细节可以在[1]中找到。
SBGA的部分主要代码的MATLAB实现代码如下:

function data_SBGA = SBGA(proC,disC,proM,disM,selection_process,Task, Ben, Harm)
    % 本程序主要实现了SBGA、优化函数为最小化函数、最大化函数需要转化为最小化函数
    % Input:  proC,disC,proM,disM二进制交叉和多项式变异概率和参数(可调),
    %         selection_process可供选择:elitist、roulette wheel、Tournament,
    %         Task测试任务
    %         Ben:Beneficial factor, Harm:Harmful factor
    % Output: data_SBGA(运行时间、每代最好值、最好个体索引、总评价次数)
    global N gen select maxfes
    tic
    %% 0.记录最优解的矩阵
    EvBestFitness = zeros(gen+1,Task.M);          %每代最好的适应度值
    EvBestFitness_evn = zeros(Task.M,1);          %每次评价完的最好适应度值
    TotalEvaluations_evn = zeros(10,Task.M);      %每隔(10000*Task.M)记录一次所有任务上的最好适应度值
    Evaluations=zeros(Task.M,1);                  %每个任务上的个体评价次数
    bestSolution = zeros(Task
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值