SDC可伸缩的高维约束基准和算法
可伸缩的高维约束基准和算法
在过去二十年里,进化约束多目标优化受到了广泛的关注和研究,并且已经提出了一些基准测试约束多目标进化算法(CMOEAs)。特别地,约束函数与目标函数值有紧密的联系,这使得约束特征太单调并且与真实世界的问题不同。因此,之前的CMOEAs不能特别好的解决现实问题,这些问题涉及多态或者非线性特征的决策空间约束。因此,我将介绍一个新的基准框架和设计一个合适的可伸缩的高维决策空间约束的新测试函数。具体来说,不同的高维约束函数和变量之间的复杂联系与现实特征都有紧密联系。在这个框架里,提供了许多的参数接口,以便用户可以比较容易地调整参数获得不同的函数,并且可以测试算法的性能。现已存在不同类型的CMOEAs被用来测试已经提出的测试函数,但是结果很容易陷入局部可行区域。因此我也会介绍一个基于多任务CMOEA去更好的处理这些问题,这个算法有一个新的搜索算法去提高种群的搜索能力。
SDC基准
SDC(Scalable High-Dimensional Constraint)有以下特征:
- 在决策空间中构造约束,以便建立单峰或多峰约束;
- 可伸缩变量与距离函数相关,这可以使约束困难可调节;
- 可伸缩变量与距离函数相关,这可以使收敛性困难得到调节;
- 设置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框架里的一些重要观点:
- 统一的搜索空间:可以看出 xsc 与 xthc 和 xud 都有关系,因此,最优解 xsc,* 应当同时满足 d2== 0 和 g2 == 0。然而,d2 和 g2 可能有不同的搜索范围。为了使不同范围的形状函数、约束函数和距离函数能在SDC 框架中使用,需要定义一个统一的搜索空间。每一个变量有一个固定的范围 [0 , 1]。当计算任何形状、约束和距离函数,首先将变量从统一搜索空间映射到真正的搜索范围。除此之外,变量联动和转化操作都在统一搜索空间实现。
- 高维约束函数和距离函数的难度分离控制:现已存在的形状函数和高维度约束函数,它们都有一个固定的维度,例如,a1 和 a2 是固定的。因此对一个D维向量, a3是固定的。当 a3,1 增加,a3是固定的,g2 的难度将会增加,而 d2 将不会改变。同样的,当a3,1 固定,a3 增加时,g2 的难度将不会改变,而d2 的难度将会增加。因此,高维度约束函数和距离函数的难度可以控制。
- 高维度约束的可伸缩难度:因为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算法
- 动态辅助任务分配:
- 算法中引入了辅助任务,为每个主任务分配一个动态变化的辅助任务。
- 辅助任务的目的是帮助共享和传递有价值的信息,以提高整体优化性能。
- 多目标优化:
- 该算法专注于同时处理多个目标函数,以便获得一组帕累托最优解。
- 通过维护帕累托最优解集合来实现多目标优化的目标。
- 演化多任务学习:
- 算法利用演化多任务学习的方法,通过任务间的知识共享来提高收敛速度和全局搜索能力。
- 任务之间的交叉和突变促进信息传递,有助于优化过程中各任务之间的协作。
- 约束处理:
- 对于受约束的多目标优化问题,算法设计了有效的约束处理策略。
- 这可能涉及罚函数、约束处理技术等方法,以确保生成的解满足所有的约束条件。
- 动态性与自适应性:
- 该算法具有一定的动态性和自适应性,可以根据优化过程中的需求和变化来调整任务分配和资源分配策略。
- 动态地适应不同的优化场景,并根据需要灵活调整算法参数。
通过结合多目标优化、动态任务分配和演化多任务学习等技术,这种算法能够有效解决受约束的多目标优化问题,并在复杂的优化环境中取得良好的性能表现。
以下是算法伪代码:


SDC可伸缩的高维约束基准和算法的更多相关文章
- SDC(6)–I/O约束
应理解为仅限于内部的约束.即从输入Pin到寄存器D口,以及从寄存器Q口到输出Pin. 例如: 约束如下: 注意set_output_delay的计算
- 光流算法:灰度恒常约束,LK算法,HS算法
关于如何提高计算精度和增加搜索范围,见:http://www.cnblogs.com/dzyBK/p/4982420.html
- 各类聚类(clustering)算法初探
1. 聚类简介 0x1:聚类是什么? 聚类是一种运用广泛的探索性数据分析技术,人们对数据产生的第一直觉往往是通过对数据进行有意义的分组.很自然,首先要弄清楚聚类是什么? 直观上讲,聚类是将对象进行分组 ...
- RRT路径规划算法
传统的路径规划算法有人工势场法.模糊规则法.遗传算法.神经网络.模拟退火算法.蚁群优化算法等.但这些方法都需要在一个确定的空间内对障碍物进行建模,计算复杂度与机器人自由度呈指数关系,不适合解决多自由度 ...
- <算法笔记>关于快速排序的算法优化排序(顺便给百度百科纠个错)
快速排序是排序算法之中的基本中的基本,虽然越来越多的接口函数将快速排序“完美的封装了起来”,比如C++中的qsort或者<algorithm>中的sort(与stable_sort相对应) ...
- 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法
若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...
- [Evolutionary Algorithm] 进化算法简介
进化算法,也被成为是演化算法(evolutionary algorithms,简称EAs),它不是一个具体的算法,而是一个“算法簇”.进化算法的产生的灵感借鉴了大自然中生物的进化操作,它一般包括基因编 ...
- Lasso回归算法: 坐标轴下降法与最小角回归法小结
前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归.但是对 ...
- Quartus中添加时序约束
1.sdc文件也是要添加到Quartus 软件中,这样在执行Read SDC File命令时才能读到相应的文件. 2.在TimeQuest打开的条件下,重新编译工程之后要Update Timing N ...
- 机器学习算法总结(三)——集成学习(Adaboost、RandomForest)
1.集成学习概述 集成学习算法可以说是现在最火爆的机器学习算法,参加过Kaggle比赛的同学应该都领略过集成算法的强大.集成算法本身不是一个单独的机器学习算法,而是通过将基于其他的机器学习算法构建多个 ...
随机推荐
- 【Unity3D】激光灯、碰撞特效
1 需求描述 本文将模拟激光灯(或碰撞)特效,详细需求如下: 从鼠标位置发射屏幕射线,检测是否与物体发生碰撞 当与物体发生碰撞时,在物体表面覆盖一层激光灯(或碰撞)特效 本文代码见→激光灯.碰 ...
- 【Unity3D】Renderer Feature简介
1 3D 项目迁移到 URP 项目后出现的问题 3D 项目迁移至 URP 项目后,会出现很多渲染问题,如:材质显示异常.GL 渲染不显示.多 Pass 渲染异常.屏幕后处理异常等问题.下面将针对这 ...
- HTML前置知识
1.概念 HTML:超文本标记语言 (英语:Hypertext Markup Language,简称:HTML ) 创建网页的标准标记语言 后缀:html,htm(两者没有区别) html语法对大小写 ...
- Detours 的使用
Detours 是一个用于在 ARM, ARM64, X86, X64 和 IA64 机器上拦截二进制函数的库. Detours 最常用来拦截应用程序中的 win32 api 调用,比如添加调试工具. ...
- maven创建父子工程
目录 创建父工程 创建子工程 将项目编译为eclipse项目 将项目导入eclipse 修改依赖关系:service依赖dao,web依赖service JavaProject的pom.xml文件说明 ...
- 【Azure API 管理】API Management service (APIM) 如何实现禁止外网访问
问题描述 API Management service 设置禁止外网访问,请求通过外网(Internet)将无法解析到APIM的网关地址,只能通过APIM所集成的内网(Virtual Network) ...
- [Python] 子线程退出孙线程不退出
遇到了一个大坑! 如图,在子线程ThreadFunc退出之后,ThreadFunc2依旧在运行... 根本不会结束 但是官方文档中说明了,只要设置了daemon不为None 就能设置子线程是守护线程, ...
- 精贴总结 - 万字长文带你入门Istio
原文 - 万字长文带你入门Istio 一.个人看法 背景:以docker+k8s普及,支持快速部署,通过k8s允许统一管理 解决:1)设计分布式系统,导致开发难度提高:2)统一多语言的服务治理方案 目 ...
- matlab修改读取mat文件后的变量名
代码如下: %% str1=load('CH1.mat'); val_names = fieldnames(str1); % 获取结构体后那个未知的变量名 data1 = getfield(str1, ...
- nginx部署SSL证书后,使用域名访问报错-net::ERR_SSL_PROTOCOL_ERROR
一.问题由来 最近在做一个小程序的后台,自己去微信官网上查看了相关的规定,小程序正式发布时,要求比较严格,必须是使用https+域名访问,自己在 阿里云购买了一个域名,可是没有备案.SSL证书去阿里云 ...