WOF-MMOPSO-RDG-2020 阅读笔记_a random dynamic grou** based weight optimization -程序员宅基地

技术标签: 大规模多目标进化优化算法  人工智能  

A random dynamic grouping based weight optimization framework for large-scale multi-objective optimization problems

Liu R , Liu J , Li Y , et al. A random dynamic grouping based weight optimization framework for large-scale multi-objective optimization problems[J]. Swarm and Evolutionary Computation, 2020, 55:100684.

摘要

针对大规模问题,提出了一种具有随机动态分组的加权优化框架。

权重优化框架采用了一个问题转换方案,在该方案中选择权重来代替决策变量,以降低搜索空间的维数。采用随机动态分组,自适应地确定每个分组的大小。采用多目标多搜索策略粒子群优化算法(MMOPSO)对原始变量和权重变量进行优化。

1、算法

所提出的算法,它使用一个带有随机动态分组的加权优化框架,并使用 MMOPSO 作为优化器,称为 WOF-MMOPSO-RDG。在算法1中,我们给出了WOF-MMOPSO-RDG的主要步骤,并予以说明:

  1. 我们利用随机动态分组(RDG)策略建立一个分组大小池,每个分组大小都有自己的概率,这是轮盘赌选择的基础;
  2. 利用 MMOPSO 算法对初始种群进行优化,只需进行很少的函数评估(function evaluations),然后选取若干个解。对于每一个选取的解,我们将其分成若干组,每组通过变换函数分配一个权值向量(weight vector),并使用 MMOPSO 对这些权值变量(vector variables)进行优化;
  3. 优化后将最优权值应用于原种群得到加权种群,消除重复解,并对父种群和加权种群的并解(union solution)进行非支配排序;
  4. 在除第一次迭代外的每个周期中,我们通过 C-metric 计算并改变每个组大小的可能性,并重新选择组大小;
  5. 当循环条件满足时,MMOPSO 对种群进行优化以保持种群多样性,直到剩余的函数评估(function evaluations)被使用为止。

1.1. 加权优化框架

这些方法本质上是通过同时改变很大一部分决策变量来降低问题的维数,它们的变化程度是相同的,这是通过所谓的变换函数来实现的。转换函数可以将每个权重值分配给一组决策变量。权重向量的数量与组的数量相同,然后通过单独的优化步骤更新它们。

n 维的决策变量 ( x 1 , . . . , x n ) \left( x_1,...,x_n \right) (x1,...,xn) 被分离成 r r r 个分组,一个新的权重变量被分配到每个组,称为 w j , j = 1 , . . . , r w_j, j=1,...,r wj,j=1,...,r。决策变量 x i x_i xi 的值和相应的权重变量的值 w j w_j wj 通过一个转换函数而得到,被用来评估优化问题,而不是原始决策变量 x i x_i xi。因此,新的权重变量 w = ( w 1 , . . , w r ) w=(w_1,..,w_r) w=(w1,..,wr) 可以被用来优化独立问题。

伪码见算法2:

WOF 在框架中应用已有的元启发式算法,通过将 n n n 个变量简化为 r r r 个变量,算法可以在更小的空间内进行更高效的搜索。因为不能保证最优解中包含一个小的搜索空间,优化权重 w w w 替代优化原有的决策变量。对于剩余的函数评估,将对原始决策变量进行优化,得到更多样化的解集,如算法1第8步所示。

1.1.1 分组机制

为了将 n n n 维决策变量分成 r r r 组,我们需要使用分组策略,通常将这些相互作用强的变量放在同一组中(在不可分的优化问题中)。这里简要说明文中使用的不同分组方法。尽管前三种方法非常简单且不使用目标函数的任何信息,但差分分组(DG)包含了一种基于问题分析的智能机制。我们将使用 DG 方法进行比较,尽管它是为单目标优化而开发的。

  1. 线性分组:就是将所有的 n n n 个变量按自然顺序排列,然后将前 n / r n/r n/r 个变量按照固定的组大小 r r r 分成第一组,以此类推;
  2. 随机分组:即把整个变量分成固定的 r r r 组,每组变量随机分配(CCGDE3就是这个分组方式,现在看来效果比较差);
  3. 顺序分组:在将所有变量按绝对值排序,然后按固定的分组大小 r r r 分配到不同的分组中,即将第一个 n / r n/r n/r 个变量放入第一个分组中,以此类推;
  4. 差分分组:DG 用于基于 CC 的单目标优化,目的是在优化前检测变量的相互作用。通过 DG 机制自动设置组数和组大小。简单来说,就是比较其他变量(other variables) x h ( h = 1 , . . . , n ) x_h(h=1,...,n) xh(h=1,...,n) 改变前后的差值(给了一个扰动后)。当 x i x_i xi 的值改变时, f ( x ) f(x) f(x) 的值不变,而与另一个变量 x h x_h xh 的值无关,所以变量 x i x_i xi x h x_h xh 没有相互作用,所以可以将它们划分为不同的组。否则,这意味着它们是相互作用的,将被分配到同一组。其中有两个缺点:1)差分分组占用了大量的计算资源,使得算法开销较大;2)该机制是为单目标优化建立的。PS:关于这里的判断相互作用的详细分析,可以见我之前发的博文FII,其中的数学原理大差不离;2017年,在2014年提出的DG的基础上出现了改进的算法-DG2。

这四种分组机制在每次迭代中需要不同的计算成本。在整个过程中,线性分组不会发生变化,所以每次迭代都不需要重新计算。DG是在优化开始前预先计算的,所以不需要重新计算,这和线性分组是一样的。

然而,当问题需要转换时,随机分组和有序分组每次都需要更新。前者是对 r r r

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/future12356/article/details/115667603

智能推荐

基于Spark的机器学习实践 (二) - 初识MLlib_mlib基于spark core-程序员宅基地

文章浏览阅读2k次。1 MLlib概述1.1 MLlib 介绍◆ 是基于Spark core的机器学习库,具有Spark的优点◆ 底层计算经过优化,比常规编码效率往往要高◆ 实现了多种机器学习算法,可以进行模型训练及预测1.2 Spark MLlib实现的算法◆ 逻辑回归 朴素贝叶斯 线性回归 SVM 决策树 LDA 矩阵分解1.3 Spark MLlib官方介绍1.3.1 搜索官方文档1.3..._mlib基于spark core

《剑指offer》——二叉树的下一个结点-程序员宅基地

文章浏览阅读401次。题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路: 分析二叉树的下一个节点,一共有以下情况: 1.二叉树为空,则返回空; 2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找到的叶子节点即为下一个节点; 3.节点不是根节点。如果该节点是其父节点的左孩子,则返

数字反转的列表实现方法(python)_python在函数内,将数字num转换为其相反顺序的数字列表。-程序员宅基地

文章浏览阅读1.3k次。做题心得_python在函数内,将数字num转换为其相反顺序的数字列表。

Java 之 FileReader FileInputStream InputStreamReader BufferedReader 作用与区-程序员宅基地

文章浏览阅读57次。ava.io下面有两个抽象类:InputStream和ReaderInputStream是表示字节输入流的所有类的超类Reader是用于读取字符流的抽象类InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。即用Reader读取出来的是char数组或者String,使用InputStream读取出来的是byte数组。弄清了两个超类的根本区别,再来看他们底下..._java bufferreader inputstream

linux 安装语言模型工具KenLm_kenlm依赖有哪些-程序员宅基地

文章浏览阅读450次。1、安装相关依赖包cmake、boost和bzip2,其中后两个需要root权限2、安装kenlmwget http://kheafield.com/code/kenlm.tar.gztar -zxvf kenlm.tar.gzcd kenlmmkdir buildcd buildcmake …make注:到make这一步时报错,需要修改C++编译器。在CMakeLists.txt头部添加以下命令:SET(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} _kenlm依赖有哪些

react native搭建私有热更新服务器_react native 热更新 私有-程序员宅基地

文章浏览阅读2.8k次。公司要求要有自己的私有热更新服务器,本人表示不擅长后台,只好去网上找相关的文章,与技术博客:本文简历在已经成功运行 微软 codepush热更新,并且了解codepush 相关指令的基础上。 参考文章-iOS参考文章-android简介code-push-server是一个开源项目,基于 nodejs + mysql 搭建自己的热更新服务器环境macOS Sierr_react native 热更新 私有

随便推点

java 更新list内的元素_list更新元素-程序员宅基地

文章浏览阅读1.5w次。/*** 更新list内的元素。* @param objlist* @param oldObj 旧对象* @param newObj 要更新的对象* @return*/public List updateElement(List objlist,Object oldObj,Object newObj){int position=objlist.indexOf(old_list更新元素

wamp2.1配置虚拟主机-程序员宅基地

文章浏览阅读71次。修改配置文件httpd.conf,并去掉#Include conf/extra/httpd-vhosts.conf前面的#修改apache/conf/extra/httpd-vhosts.conf<VirtualHost*:80>DocumentRoot"D:/wamp/www"ServerNamelocalhost<D..._wamp 2.2 虚拟映射

webstorm nodejs ESLint 简单配置-程序员宅基地

文章浏览阅读179次。ESLint 简介 官网http://eslint.org/ 在团队协作中,为避免低级 Bug、产出风格统一的代码,会预先制定编码规范。使用 Lint 工具和代码风格检测工具,则可以辅助编码规范执行,有效控制代码质量。 在以前的项目中,我们选择 JSHint 和 JSCS 结合使用,W..._webstorm 开启js-lint

linux下运行python与windows速度差别,Linux和Windows之间的numpy性能差异-程序员宅基地

文章浏览阅读663次。I am trying to run sklearn.decomposition.TruncatedSVD() on 2 different computers and understand the performance differences.computer 1 (Windows 7, physical computer)OS Name Microsoft Windows 7 Profess..._python 并行linux比windows慢

手机游戏里用什么方法寻路-程序员宅基地

文章浏览阅读1.3k次。作者:许伟东 文章来源:本站原创 点击数: 98 更新时间:2005-9-22寻路算法在游戏中大量应用,在PC游戏里,更是随处可见。就比如星际争霸,红警这些超爽游戏中,用鼠标随便点一个地方,部队就会绕过一些障碍,并以最短的路径到达目的地。那么在手机游戏中怎样达到这种效果呢?这正是本文要讨论的问题。这篇文章将首先讨论应该怎样实现,而不会给出具体代码。当然,在稍后的文章里,我

职业教育计算机专业宣传,对中等职业教育中计算机专业教育的思考-程序员宅基地

文章浏览阅读153次。王粟雨【摘要】现如今,社会经济、科学技术的发现越来越快,计算机技术也越来越普遍的被应用于生活的各个方面。人们的生活越来越依赖于计算机带来的便利,由此可见计算机技术已经成为了人们生活中必不可少的一部分。中职教育是专门进行职业技能教育的学校,开设的计算机专业,以提升学生初步应用计算机的水平,现阶段,应用计算机已成为新入职员工必须掌握的技能。本文主要论述了计算机专业在中职学校的教学现状,针对相关问题提出..._中职教育 博客