基于意外流行的自适应模因算法求解分布式柔性作业车间调度问题——付源代码和论文

news2024/11/25 0:31:38

实在是太忙了,终于闲下来更新一下CSDN来介绍自己的工作
《Surprisingly Popular-Based Adaptive Memetic Algorithm for Energy-Efficient Distributed Flexible Job Shop Scheduling》发表在IEEE Transactions on Cybernetics上。
原文链接-可下载
Matlab代码
IEEE原文引用链接

背景

16年发表在Nature上的一篇letter,作者讲述了,如何通过数据采集,bayes概率公式,对人群中的决策进行修正,发现调查问卷中真正正确的答案,并给出了修正算法名为Surprisingly Popular Algorithm.
在这里插入图片描述
大致过程如下图所示,美国的宾夕法尼亚是费城最大的城市,所以多数人以为宾州是费城的省会,但其实费城的省会是哈里斯伯格。这是因为群体的人都是凭借主观意识和经验在做决策,而非客观的专家知识。正如你小时候没学过地理知识,以为深圳是广东最发达的城市就误以为深圳是广东的省会,但其实广州才是广东省会。这样的案例使得作者Prelec做出了市场调研,并发现了这一个规律。
在这里插入图片描述
种群规律:如果将种群中每部分个体,让他们对一个决策给出自己的答案,对,错,弃权,并统计他们的比例R,让他们对自己的答案给出一个预估流行度E。则通过贝叶斯概率公式矫正,以每个答案的比例,乘以其在种群中的真实比例算出每个答案真正的流行度。例如yes的真正流行度如下,被修正为88.2而No的概率被修正为11.8,说明知道正确答案的人也认为,这是个冷知识,没学过的人肯定不知道。那么将预估流行度E和真正流行度P做一个比值,得到意外流行度SPD=E/D。结果发现意外流行度大于1的答案就是正确答案。

为了验证这个观点,作者又做了另一个城市的调研,发现规律一致。则说明,种群中无知的人会盲目乐观,认为别人肯定也是这么认为的,而有专家知识的人,确实是少数,即真理掌握在少数人手里。

有一些人用SPA去预测NBA,NFL季后赛冠军,结果都说对了,说明这是个很强的算法,这些论文被发表在IJCAI,Machine Learning等顶会顶刊上。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
吉林大学的wuxuan 应用SPA对PSO的交叉算子选择进行了改进,PSO的选择交叉算子往往选择距离相近的来进化,但受制于种群空间拓扑关系,欧氏距离最近的不一定是最近最好的。所以采用SPA对统计概率进行修正,最终找到了真正最近而不密集的交叉个体,取得了最好的结果,胜过了所有CEC的冠军PSO算法。
在这里插入图片描述
在这里插入图片描述
wuxuan通过这篇工作也是获得 了吉林大学优秀硕士毕业论文

动机

受wuxuan的启发,我在想,如何将这类技术应用到离散优化例如分布式柔性作业车间调度问题中?使得算法也具备决策修正的能力。是不是在做决策的时候也会出现经验主义而使得决策错误延缓进化呢?

想到的最直接的方法:在车间调度问题,会设计多个算子进行搜索,但不同的算子不同时期表现的优劣不同,那么就会有很多自适应的方法,其中有基于历史经验的方法,例如JADE。那么由于历史经验受前50多代的影响,对于近代一些真正有效的算子不能及时的分配计算资源。所以SPA就可以通过调查统计近代所有算子的成功率和预估成功率,来及时对算子的资源分配进行修正

算法

大致过程如图所示,首先算子依据历史经验来分配资源,其次,统计每个子种群算子的成功率,并累计进去和历史成功率做一个总和(相当于贝叶斯概率修正),而本轮的分配概率即上一轮的历史成功率,那么即为预估的成功率,那么将预估成功率和当前成功率做比值,得到意外流行度,发现,意外流行度大于1的算子近期很有效,应该分配更多的资源。
在这里插入图片描述
在这里插入图片描述

实验结果

根据Mk测试集,设置了20个不同的分布式FJSP的问题,消融结果统计后,对HV,GD,Spread指标统计均值,并进行了Friedman秩和检验
通过对比SPAVNS和VNS可以发现,各项指标的排名有所提升。说明SPA的修正起到了一定的作用。

不足:设计的SPA算法还是没有设计到精髓,还有更多可以和进化计算结合的场景,等待后人开发。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/766109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pdf能转成ppt格式吗?这几个方法你试过了吗

作为办公人士,掌握不同文件格式之间的转换技能是必不可少的。每当毕业季来临,我都会收到许多刚刚步入职场的小伙伴们的求助,寻找PDF转PPT的方法。所以,我总结了以下三种方法,希望能帮助大家解决这个一直以来困扰着许多…

RabbitMQ死信交换机、TTL及延迟队列

一,死信交换机 1,什么是死信交换机 了解死信交换机之前我们先来了解一下什么是死信,当一个队列满足下面的三种情况的时候我们一般称为死信(dead letter): 消费者使用basic.reject或 basic.nack声明消费失…

深入 Linux 进程

问题 进程参数 和 环境变量 对于进程意味着什么? 进程参数和环境变量的意义 一般情况下,子进程的创建是为了解决某个子问题 子进程解决问题需要父进程的 "数据输入" (进程参数 & 环境变量) 设计原则: 子进程启动时必然用到…

SpringCloud学习路线(1)—— 从头开始的微服务

一、服务架构的历史 现有的服务框架: 单体架构 概念: 将业务所有功能集中在一个项目中开发,打包部署优点: 架构简单,部署成本低缺陷: 耦合度高 分布式架构 概念: 根据业务功能对系统进行拆分&a…

前端两种实现轮播图方式

今天研究两种简单实现轮播图功能的方式。 目录 Layui实现轮播图 码云下载 提取静态文件 示例 注意 参数说明 改为轮播图 增加图片资源文件 轮播栏目修改 改为上下切换 切换事件 脚本中绑定改变事件 控制器查看 Swiper实现轮播图 下载swiper 下载到本地 加载sw…

【数据结构】_3.List接口实现类ArrayList与线性表

目录 1.List接口 1.1 List接口的集合关系网络 1.2 List的使用 2. ArrayList与顺序表 2.1 线性表 2.2 顺序表 2.3 ArrayList 2.3.1 ArrayList的集合关系网络 2.3.2 ArrayList的使用 2.3.2.1 ArrayList的构造方法 2.3.2.2 ArrayList的扩容机制逻辑示图如下&#xff1…

企业如何通过CRM提高客户转化?

现如今,企业想要给潜在客户留下深刻的印象,那么就需要一系列的措施和手段。通过CRM管理系统让潜在客户信任企业,更好地进行客户培育,从而提高潜在客户转化。下面来说说,企业提高潜在客户转化的7个做法。 1、永远不要让…

input模糊搜索

input模糊搜索 getList() {let dicthis.queryParameters()let val this.queryParams["userName"]if (null ! val && ! val) {dic["userName"]*val*;}listPamsArchiveSearch(dic).then(response > {this.nameinfo response.data;});},主要问…

Spring Batch之读数据库——JdbcCursorItemReader之使用框架提供的BeanPropertyRowMapper(三十六)

一、BeanPropertyRowMapper介绍 参考我的另一篇博客: Spring Batch之读数据库——JdbcCursorItemReader(三十五)_人……杰的博客-CSDN博客 二、项目实例 1.项目框架 2.代码实现 BatchMain.java: package com.xj.demo27;import org.spri…

Echarts环形饼状图设置内外边框

上班快一个月了,最近再写echarts的项目,亚历山大啊 记录一下饼状图设置内外边框的代码 series: [{name: 项目分数,type: pie,radius: [50%, 70%],avoidLabelOverlap: false,labelLine: {show: true},data: [{value: 335, name: 970分以上},{value: 310…

python用playwright自动化测试程序打包exe

playwright自动化测试代码写好后,打包为exe运行在目标PC上可能出现错误。 原因: 1、运行的PC没有响应的浏览器。 2、playwright没有打包到代码中。 所以本例用AutoPytoExe为例来制作exe程序解决问题。 1、安装: 2、安装完成之后,…

CUDA并行归约算法(二)

CUDA并行归约算法&#xff08;二&#xff09; 文章目录 CUDA并行归约算法&#xff08;二&#xff09;前情回顾线程束分化内存组织Reference>>>>> 欢迎关注公众号【三戒纪元】 <<<<< 前情回顾 首先看下上节设计的核函数&#xff0c;如何进行并行…

基于FPGA的视频接口之HDMI1.4(以下)编码

简介 为什么要特别说明HDMI的版本,是因为HDMI的版本众多,代表的HDMI速度同样不同,当前版本在HDMI2.1速度达到48Gbps,可以传输4K及以上图像,但我们当前还停留在1080P@60部分,且使用的芯片和硬件结构有很大差别,故将HDMI分为两个部分说明1080@60以下分辨率和4K以上分辨率(…

docker运行redis容器

参考文章 Redis从入门到精通&#xff08;4&#xff09;&#xff1a;docker运行redis容器详解 问题及总结 docker 命令 拉取镜像&#xff1a;docker pull redis 或者 docker pull redis:bullseye&#xff1b;查看镜像&#xff1a;docker image ls&#xff1b;直接运行 redis…

Flask SQLAlchemy_Serializer ORM模型序列化

在前后端分离项目中&#xff0c;经常需要把ORM模型转化为字典&#xff0c;再将字典转化为JSON格式的字符串。在遇到sqlalchemy_serializer之前&#xff0c;我都是通过类似Java中的反射原理&#xff0c;获取当前ORM模型的所有字段&#xff0c;然后写一个to_dict方法来将字段以及…

Golang假共享(false sharing)详解

多核处理器(SMP)系统中, 每一个处理器都有一个本地高速缓存。内存系统必须保证高速缓存的一致性。当不同处理器上的线程修改驻留再同一高速缓存中的变量时就会发生假共享(false sharing),结果导致高速缓存无效,并强制更新,进而影响系统性能。 什么是假共享(false sharin…

论文解读|VoxelNet:基于点云的3D物体检测的端到端学习

原创 | 文 BFT机器人 01 摘要 论文提出了表述了一个新的基于点云的3D检测方法&#xff0c;名为VoxelNet&#xff0c;该方法是一个端到端可训练的深度学习架构&#xff0c;利用了稀疏点云的结构特性&#xff0c;直接在稀疏的3D点上进行操作&#xff0c;并通过高效的并行处理体素…

Stable Diffusion - ChatGPT4 与 Stable Diffusion 结合提供无限创意构图

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131782672 ChatGPT 和 StableDiffusion 结合使用的优势&#xff1a; 高效率&#xff1a;ChatGPT 可以在很短的时间内完成复杂的语言任务&#xf…

Kotlin基础(六) 枚举类和扩展

前言 本文主要讲解kotlin枚举类和扩展 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 枚举类 1.1.1 枚举类的基本用法 Kotlin中的枚举类&#xff08;enum class&#xff09;用于定义一组具有预定义值的常量。它们在许多情况下都很有用&#xff0c;例如表示一组…

介绍性能压力测试的重要性

在当今数字化时代&#xff0c;软件和应用程序的性能对于用户体验和业务成功至关重要。为了确保系统在面临高负载和压力时能够正常运行&#xff0c;性能压力测试成为一项不可或缺的活动。本文将介绍性能压力测试的重要性。 性能压力测试是一种通过模拟实际场景中的负荷和用户访问…