题目:一种新的离散粒子群优化算法

中文摘要

粒子群优化算法在许多优化问题上表现得非常好。粒子群优化算法的缺点之一是假设算法中的变量为连续变量。本文提出一个新的粒子群优化算法,能够优化离散变量。这个新算法被称为整数和分类粒子群优化算法,该算法融合了分布估计算法的思想,即粒子代表概率分布而不是解的值,并且PSO更新修改了概率分布。本文描述了该算法,并将其性能与其他离散PSO算法进行了比较。实验表明,该算法比其他离散PSO算法要好 。

中文引言

离散优化问题,如贝叶斯网络中的特征选择或推理,是一组重要且具有挑战性的问题。这些问题不同于连续问题,因为每个变量的状态是有限个。在整数问题的例子中,变量被限制为一组整数值。对于此类问题,相邻值之间存在一种关系。一般而言,整数中存在一种隐式排序:差异较大的整数被认为是相距较远的整数。

      虽然整数问题是离散问题的子集,但也有其他类型的问题。例如,在贝叶斯推理中,目标是找到一个能很好解释一组观察结果的状态集。在这里,相邻状态之间可能不存在直接关系或梯度。例如,假设状态集是悲伤、恐惧、愤怒、喜悦和厌恶的情绪。虽然在优化过程中这些状态可以用整数表示,但这种编码的值之间没有真正的有序关系。我们把这类问题称为分类优化问题。

      注意:这里的顺序关系就是数学中的大小关系。

      粒子群优化是一种相对简单的搜索算法,适用于各种各样的优化问题。然而,原始PSO算法无法处理离散问题,如上述问题,因为其速度更新需要连续的解值。目前,虽然离散的定义在应用程序和算法之间有很大差异, 但是PSO算法的几个变体允许离散值。本文正式给出离散问题的定义,并针对这问题提出了一种新的粒子群优化算法,称为整数和分类粒子群优化算法(ICPSO)。然后将ICPSO与文献中提出的其他离散PSO变体进行比较。

      ICPSO算法的目标是保持对连续PSO的扩展尽可能简单,并保留大部分原始语义,同时解决其他离散PSO算法的一些潜在缺陷。为了实现这一点,我们改变粒子位置的表示形式,以便粒子的每个属性都是其可能值的分布,而不是值本身。这类似于分布估计算法(EDA),其中使用一组拟合个体生成分布向量,然后生成拟合解。ICPSO与EDAs的不同之处在于,该算法具有多个分布向量,这些分布向量使用PSO更新公式进行更新。

      对于ICPSO,评价粒子变为从这些分布中抽取候选解并计算其适应度的任务。ICPSO还允许使用原始PSO更新公式,避免了可能解值的隐式排序相关的问题。另外,每当产生一个全局最优样本时,ICPSO会修改全局最优解和局部最优解的分布。这使得分布偏向于产生的最优样本,同时仍然允许搜索空间的探索。

传统PSO算法

--后续补充

A New Discrete Particle Swarm Optimization Algorithm的更多相关文章

  1. 【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由E ...

  2. 粒子群优化算法(Particle Swarm Optimization)

    粒子群算法的思想源于对鸟/鱼群捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的,是一种基于Swarm Intelligence的优化方法.它没有遗传算法的"交 ...

  3. A novel multi-swarm particle swarm optimization with dynamic learning strategy(一种新颖的具有动态学习策略的多种群粒子群优化算法)

    1.核心 在每个子种群的粒子被划分为普通粒子(ordinary particles)和交流粒子(communication particles),在每次迭代过程中,不同的粒子执行不同的进化操作.普通粒 ...

  4. 粒子群算法 Particle Swarm Optimization, PSO(转贴收藏)

    粒子群算法(1)----粒子群算法简介 http://blog.csdn.net/niuyongjie/article/details/1569671 粒子群算法(2)----标准的粒子群算法 htt ...

  5. Jordan Lecture Note-8: The Sequential Minimal Optimization Algorithm (SMO).

    The Sequential Minimal Optimization Algorithm (SMO) 本文主要介绍用于解决SVM对偶模型的算法,它于1998年由John Platt在论文“Seque ...

  6. 从Random Walk谈到Bacterial foraging optimization algorithm(BFOA),再谈到Ramdom Walk Graph Segmentation图分割算法

    1. 从细菌的趋化性谈起 0x1:物质化学浓度梯度 类似于概率分布中概率密度的概念.在溶液中存在不同的浓度区域. 如放一颗糖在水盆里,糖慢慢溶于水,糖附近的水含糖量比远离糖的水含糖量要高,也就是糖附近 ...

  7. RaPC(rasterized polygon clipper): A discrete grid-based polygon clipping algorithm

    RaPC(rasterized polygon clipper)-A discrete grid-based polygon clipping algorithm This algorithm is ...

  8. A Modified Particle Swarm Optimizer

    A Modified Particle Swarm Optimizer 一种改进的粒子群优化算法   Yuhui Shi and Russell Eberhart 1998   摘要: 本文在原有的粒 ...

  9. Adam Optimization Algorithm

    曾经多次看到别人说起,在选择Optimizer的时候默认就选Adam.这样的建议其实比较尴尬,如果有一点科学精神的人,其实就会想问为什么,并搞懂这一切,这也是我开这个Optimizer系列的原因之一. ...

随机推荐

  1. C++getline()

    #include <iostream>#include <cstring>#include <string>using namespace std;int main ...

  2. 分析师机构发布中国低代码平台现状分析报告,华为云AppCube为数字化转型加码

    摘要:Forrester指出,中国企业数字化转型过程中,有58%的决策者正在采用低代码工具进行软件构建,另有16%的决策者计划采用低代码. 华为消息,知名研究与分析机构Forrester Resear ...

  3. 跟着老猫来搞GO-内建容器Map

    前期回顾 在上面的文章中,老猫和大家分享了GO语言中比较重要的两种数据结构,一种是数组,另外一种是基于数组的slice.本篇文章想要继续和大家分享剩下的容器以及字符字符串的处理. MAP map的定义 ...

  4. 入坑 OI 249561092 周年之际的一些感想

    2018.2.10~2021.2.10 又是一年的 2 月 10 日,今天的到来意味着我 OI 生涯的第三年已经结束,即将开启 OI 生涯的第四年了.回顾这三年以来自己由懵懂.无知慢慢变成熟的历程,感 ...

  5. Codeforces Round #717 (Div.2) 题解

    我 AK 的第二场(?)的 Div.2,还捡了个 rk4(虽然我 div2 only 的最高记录是 rk2)祭之( A 这题我竟然 WA 了两发,丢人( 直接贪心,对于 \(i=1,2,\cdots, ...

  6. IDEA 配置背景颜色(豆沙绿)

    1. 定义方案名字(my color) Ctrl + Shift + a --> Color Scheme // 快捷定位配置 // 路径:File --> Settings --> ...

  7. 【R绘图】R 基础(base )低级函数legend绘图?

    ggplot虽然好用,但base才是真正的瑞士军刀,什么都能用,各种自定义图形自由组合,出版级图片用base才是王道.但要达到随心所欲,需要熟练掌握. legend是比较重要的低级函数,有很多细节处理 ...

  8. 63. Binary Tree Level Order Traversal II

    Binary Tree Level Order Traversal II My Submissions QuestionEditorial Solution Total Accepted: 79742 ...

  9. pyquery解析库的介绍和使用

    ### pyquery的介绍和使用 ## 测试文本 text = ''' <html><head><title>there is money</title&g ...

  10. Demo04分解质因数

    package 习题集1;import java.util.Scanner;//将一个正整数分解质因数.例如输入90,打印出90=2*3*3*5public class Demo04 { public ...