可伸缩的高维约束基准和算法

​ 在过去二十年里,进化约束多目标优化受到了广泛的关注和研究,并且已经提出了一些基准测试约束多目标进化算法(CMOEAs)。特别地,约束函数与目标函数值有紧密的联系,这使得约束特征太单调并且与真实世界的问题不同。因此,之前的CMOEAs不能特别好的解决现实问题,这些问题涉及多态或者非线性特征的决策空间约束。因此,我将介绍一个新的基准框架和设计一个合适的可伸缩的高维决策空间约束的新测试函数。具体来说,不同的高维约束函数和变量之间的复杂联系与现实特征都有紧密联系。在这个框架里,提供了许多的参数接口,以便用户可以比较容易地调整参数获得不同的函数,并且可以测试算法的性能。现已存在不同类型的CMOEAs被用来测试已经提出的测试函数,但是结果很容易陷入局部可行区域。因此我也会介绍一个基于多任务CMOEA去更好的处理这些问题,这个算法有一个新的搜索算法去提高种群的搜索能力。

SDC基准

​ SDC(Scalable High-Dimensional Constraint)有以下特征:

  1. 在决策空间中构造约束,以便建立单峰或多峰约束;
  2. 可伸缩变量与距离函数相关,这可以使约束困难可调节;
  3. 可伸缩变量与距离函数相关,这可以使收敛性困难得到调节;
  4. 设置CPF(Constraint Pareto Front)和UPF(unconstraint Pareto Front)之间的重叠度来测试算法局部调整种群分布的能力

SDC框架

如图所示,SDC框架可以定义不同的层次和把变量分成不同的组。

Objective level:在这个层次里,变量被分为两部分,形状函数变量和距离函数变量。形状函数变量用于形状函数,这可以控制UPS(unconstraint Pareto Solution)与UPF(unconstraint Pareto Front)的形状和位置。距离函数变量用于距离函数,以便增加收敛难度。

Variable linkage level:为了强制变量联动使距离函数的最优解旋转,距离函数变量通常与形状函数变量中的第一个变量相关联。因此,我们把距离函数变量分为两部分,并且只有后一部分是强制变量联动。

Constraint level:在这个层里,变量 x1s,…,xa1s 被改写为 x1lc,…,xa1lc,因为它们被用来构造低维度约束变量(LCV)。LCV是用在低维度约束函数中,它可以控制CPS的位置和形状。除此之外,为了提高约束的复杂性,引入了高维度约束,并且与高维度约束相关的变量 x1hc,…,xa2hc(HCV(high-dimension constraint variable))。可伸缩HCV x1sc,…,xa3,1sc(SHCV(Scalable HCV))可通过转化操作变为THCV(transformed HCV)。

​ 基于以上定义,可以生成以下测试函数公式:

d1是CEC2006的约束问题,d2是距离函数,g1和g2分别代表低维度约束和高维度约束。

​ SDC框架里的一些重要观点:

  1. 统一的搜索空间:可以看出 xsc 与 xthc 和 xud 都有关系,因此,最优解 xsc,* 应当同时满足 d2== 0 和 g2 == 0。然而,d2 和 g2 可能有不同的搜索范围。为了使不同范围的形状函数、约束函数和距离函数能在SDC 框架中使用,需要定义一个统一的搜索空间。每一个变量有一个固定的范围 [0 , 1]。当计算任何形状、约束和距离函数,首先将变量从统一搜索空间映射到真正的搜索范围。除此之外,变量联动和转化操作都在统一搜索空间实现。
  2. 高维约束函数和距离函数的难度分离控制:现已存在的形状函数和高维度约束函数,它们都有一个固定的维度,例如,a1 和 a2 是固定的。因此对一个D维向量, a3是固定的。当 a3,1 增加,a3是固定的,g2 的难度将会增加,而 d2 将不会改变。同样的,当a3,1 固定,a3 增加时,g2 的难度将不会改变,而d2 的难度将会增加。因此,高维度约束函数和距离函数的难度可以控制。
  3. 高维度约束的可伸缩难度:因为CEC2006 函数不可伸缩,它的难度直接调整。为了使它可伸缩,我们使用SHCV 和HCV 获得 THCV,如下图所示。

形状函数(shape functions)

​ 形状函数( h(xs)) 的作用是控制UPF的位置和形状。除此之外,当约束 g1(xlc) 增加时,可以控制CPF的位置和形状。因此,我们可以控制CPF 和 UPF 的关系来检验算法局部调整种群分布的能力。这里有两种调整函数,其中一个的公式如下:

参数 b 可以控制可行区域的位置,不同的值可以使得可行域旋转。另一个调整函数的公式如下:

参数b 可以控制UPF 和 CPF 之间的重叠度,不同的值可以改变可行区域。

高维度约束函数

​ 选择高维度约束函数一会重要的问题是接近现实问题的实质。CEC2006 函数集可以满足真实的约束多目标优化问题,除此之外,CEC2006 函数提高了优化可行目标值。

转换函数

​ 为了保证优化解得到存在,xthc 的范围应该在[0 , 1]。上图中的xt 代表参与转换操作的变量集,这里设计了两种转换函数:

距离函数

​ 如图所示,提供了五个距离函数。

​ 除此之外,变量的联系函数在决策空间不同位置中被用来改变最优解,这里也有两种函数:

在公式中,这里设置了一个参数(DTC)来控制 [DCT * xd,2]中的xd,2变量参与变量的联系。

IMCMO算法

  1. 动态辅助任务分配

    • 算法中引入了辅助任务,为每个主任务分配一个动态变化的辅助任务。
    • 辅助任务的目的是帮助共享和传递有价值的信息,以提高整体优化性能。
  2. 多目标优化
    • 该算法专注于同时处理多个目标函数,以便获得一组帕累托最优解。
    • 通过维护帕累托最优解集合来实现多目标优化的目标。
  3. 演化多任务学习
    • 算法利用演化多任务学习的方法,通过任务间的知识共享来提高收敛速度和全局搜索能力。
    • 任务之间的交叉和突变促进信息传递,有助于优化过程中各任务之间的协作。
  4. 约束处理
    • 对于受约束的多目标优化问题,算法设计了有效的约束处理策略。
    • 这可能涉及罚函数、约束处理技术等方法,以确保生成的解满足所有的约束条件。
  5. 动态性与自适应性
    • 该算法具有一定的动态性和自适应性,可以根据优化过程中的需求和变化来调整任务分配和资源分配策略。
    • 动态地适应不同的优化场景,并根据需要灵活调整算法参数。

通过结合多目标优化、动态任务分配和演化多任务学习等技术,这种算法能够有效解决受约束的多目标优化问题,并在复杂的优化环境中取得良好的性能表现。

以下是算法伪代码:



SDC可伸缩的高维约束基准和算法的更多相关文章

  1. SDC(6)–I/O约束

    应理解为仅限于内部的约束.即从输入Pin到寄存器D口,以及从寄存器Q口到输出Pin. 例如: 约束如下: 注意set_output_delay的计算

  2. 光流算法:灰度恒常约束,LK算法,HS算法

    关于如何提高计算精度和增加搜索范围,见:http://www.cnblogs.com/dzyBK/p/4982420.html

  3. 各类聚类(clustering)算法初探

    1. 聚类简介 0x1:聚类是什么? 聚类是一种运用广泛的探索性数据分析技术,人们对数据产生的第一直觉往往是通过对数据进行有意义的分组.很自然,首先要弄清楚聚类是什么? 直观上讲,聚类是将对象进行分组 ...

  4. RRT路径规划算法

    传统的路径规划算法有人工势场法.模糊规则法.遗传算法.神经网络.模拟退火算法.蚁群优化算法等.但这些方法都需要在一个确定的空间内对障碍物进行建模,计算复杂度与机器人自由度呈指数关系,不适合解决多自由度 ...

  5. <算法笔记>关于快速排序的算法优化排序(顺便给百度百科纠个错)

    快速排序是排序算法之中的基本中的基本,虽然越来越多的接口函数将快速排序“完美的封装了起来”,比如C++中的qsort或者<algorithm>中的sort(与stable_sort相对应) ...

  6. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  7. [Evolutionary Algorithm] 进化算法简介

    进化算法,也被成为是演化算法(evolutionary algorithms,简称EAs),它不是一个具体的算法,而是一个“算法簇”.进化算法的产生的灵感借鉴了大自然中生物的进化操作,它一般包括基因编 ...

  8. Lasso回归算法: 坐标轴下降法与最小角回归法小结

    前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归.但是对 ...

  9. Quartus中添加时序约束

    1.sdc文件也是要添加到Quartus 软件中,这样在执行Read SDC File命令时才能读到相应的文件. 2.在TimeQuest打开的条件下,重新编译工程之后要Update Timing N ...

  10. 机器学习算法总结(三)——集成学习(Adaboost、RandomForest)

    1.集成学习概述 集成学习算法可以说是现在最火爆的机器学习算法,参加过Kaggle比赛的同学应该都领略过集成算法的强大.集成算法本身不是一个单独的机器学习算法,而是通过将基于其他的机器学习算法构建多个 ...

随机推荐

  1. 【分布式】load balance 02-consistent hash algorithm 一致性哈希算法原理详解

    负载均衡系列专题 01-负载均衡基础知识 02-一致性 hash 原理 03-一致性哈希算法 java 实现 04-负载均衡算法 java 实现 概念 一致哈希是一种特殊的哈希算法. 在使用一致哈希算 ...

  2. 【Unity3D】异步Socket通讯

    1 前言 ​ 同步 Socket 通讯 中的 Accept.Connect.Receive 等方法会阻塞当前线程,当前线程必须等待这些方法执行完,才会继续往下执行,用户需要另开线程执行这些耗时方法,否 ...

  3. lsattr命令

    lsattr命令 lsattr命令用于显示文件的属性. 语法 lsattr [-RVadlv] [file | folder] 参数 -a: 显示所有文件和目录,包括以.为名称开头字符的额外内建,即现 ...

  4. k8s-dashboard、helm

    目录 dashboard 安装dashboard 1. 创建SA 2. 集群角色绑定 3. 创建secret 4. 查看token helm 安装helm 1. 下载tar包 2. 解压 3. 配置环 ...

  5. Vue实现简单计算器功能

    知识点: v-model双向绑定 v-on事件绑定 实现效果 源码 <!DOCTYPE html> <html lang="en"> <head> ...

  6. 从 vs 的 rc 文件中获取版本号

    更新项目版本号时,需要与 rc 文件的 version 同步,比较方便的方法是直接从 rc 文件中获取版本号,并应用到程序中 // 删除日志检查 bool GetVersion() { // get ...

  7. 图书管理系统---基于form组件和modelform改造添加和编辑

    添加 基于form组件改造 步骤1 1.为了区分自己写的form类和视图逻辑,所以工作中需要区分开来,那么就可以在应用下创建一个叫utils的文件夹,专门存放我们写的form类,py文件名随便起 2. ...

  8. portainer docker可视化工具

    下载可视化工具 docker pull portainer/portainer 启动portainer --restart=always 只要挂掉了 就自动重启 docker run -d -p 80 ...

  9. MySQL和Redis基本安装和配置

    MySQL 下载和安装 mysql官网下载:https://dev.mysql.com/downloads/mysql/ 下载后将目录下的bin路径加入到环境变量中 在安装目录下创建 my.ini 配 ...

  10. Java 可变个数形参的方法

    1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...