Robust taboo search for the quadratic assignment problem-二次分配问题的鲁棒禁忌搜索

news2024/11/16 21:30:45

文章目录

  • 摘要
  • 关键字
  • 结论
  • 研究背景
    • 1. Introduction
  • 常用基础理论知识
    • 2. The quadratic assignment problem
    • 3. Taboo search
      • 3.1. Moves
      • 3.2 Taboo list
      • 3.3. Aspiration function
      • 3.4. Taboo list size
      • 4. Random problems
      • 5. Parallel taboo search
  • 研究内容、成果
    • 7. Conclusion
  • 潜在研究点
  • 文献链接

摘要

目的:为了提高禁忌搜索的速度,提出了两种并行化方法,并显示了它们对于与问题规模成正比的处理器数量的效率。还提出了一种生成随机问题的简单方法

优势:更少的复杂性和更少的参数。

关键字

组合优化;禁忌搜索;并行算法;二次分配问题;效率

结论

研究背景

1. Introduction

二次分配问题 (QAP) 非常困难,以至于 Steinberg在 1961 年提出的尺寸为 36 的实例尚未得到解决。

本文的目标是为 QA​​P 提出一种更稳健的 TS 形式,它具有最少的参数数量,并且非常容易实现,能够获得与先前找到的最佳解决方案相当的解决方案,而无需多次传递和更改参数值。

常用基础理论知识

2. The quadratic assignment problem

可以自然地用 QAP 表达的问题的示例包括:

  • 芯片中逻辑模块的放置,使得连接的总长度最小化;
  • 在大型医院中心分配医疗服务。

3. Taboo search

TS的主要思想可以简单概括如下。第一个要素是定义一个邻域,或者一组可以应用于给定解决方案以产生新解决方案的移动。在所有邻近的解决方案中,TS 寻求一个具有最佳启发式评估的解决方案。在最简单的情况下,这样的评估决定了最能改善目标函数的移动的选择。如果没有改进的移动(表明一种局部最优),TS 选择一个对目标函数降级最少的移动。为了避免回到刚刚访问的局部最优,现在必须禁止反向移动。这是通过将这一举动(或更准确地说是该举动的特征)存储在通常像循环列表一样管理并称为禁忌列表的数据结构中来完成的。该列表包含许多定义禁止(禁忌)动作的元素;参数s称为禁忌列表大小。然而,禁忌清单可能会禁止某些相关或有趣的举措,例如那些导致比迄今为止发现的最佳解决方案更好的解决方案的举措。因此,引入了一个愿望标准,如果禁忌动作被认为是有趣的,则允许选择禁忌动作。 TS 的完整版本包含附加元素,但我们将展示如何单独使用这些基本概念来构建 QAP 的有效实现。

3.1. Moves

非常适合此问题的自然移动类型包括交换两个单元,以便每个单元占据另一个单元先前占据的位置。从放置 开始,通过排列单元 r 和 s 获得相邻放置 7r:

如果矩阵是对称的并且具有零对角线(就像“经典”示例的情况一样),则移动的值,写作:

如果矩阵不对称和/或没有零对角线,则表达式(仍可在 O(N) 中计算)会稍微复杂一些。 [3]。


对动作质量的快速评估是提高搜索效率的重要因素。该评估可能与 Fiechter [7] 的旅行推销员应用程序或 Taillard [19] 的流水车间排序中一样精确,或者与 Taillard [20] 的作业车间调度中一样近似。此外,这些动作必须具有与所考虑的问题相关的良好特性。对于 QAP 来说,采用将单元 r 插入到排列 q) 中与单元 s 相邻的移动是不合适的,因为这会改变排列中 r 和 s 之间每个单元的位置 - 一场真正的灾难!

3.2 Taboo list

我们现在必须定义禁忌列表元素的类型。 Skorin-Kapov [16] 提出禁止交换在前 s 次迭代期间交换过的两个单元。形式上,禁忌列表由不能交换的单元对 (i, j) 组成。列表的禁止可以用整数的二维数组来实现,其中元素(i,j)标识未来迭代的值,在未来迭代中这两个单元可以再次彼此交换。这样一来,检验一个动作是否禁忌,只需要一次比较即可。在恒定时间内评估禁忌条件非常重要,以便在与其大小成比例的时间内评估邻域,从而避免搜索复杂性的增长。

在他的文凭项目中,Rogger 尝试了多种类型的禁忌列表,我们选择了如果列表的大小 s 改变则证明最方便的一种,因为我们采用了以下规则:改变此参数的值(Glover [11] 描述了一般设置中此类列表的优点)。具体来说,我们的禁忌列表构建如下:对于每个单位和位置,记录该单位占据该位置的最新迭代。如果移动将两个互换的单位分配到它们在最近迭代中占据的位置,则该移动是禁忌。这种类型的列表提供的结果与在给定“最佳”大小时使用 Skorin-Kapov 提出的类型获得的结果相当,但对参数 s 不太敏感。

3.3. Aspiration function

对于每个问题,我们都使用经典的愿望函数,如果它导致的解决方案比迄今为止找到的最佳解决方案更好,则允许选择禁忌举措。然而,对于某些问题的最著名的解决方案并不总是能够通过这种最小的实现来获得,即仅使用一种类型的移动、一个禁忌列表和微不足道的愿望功能。仔细检查实现表现较差的问题(特别是 Elshafei [6] 提出的问题),揭示了概念上的错误:这些问题有一个非常特殊的流矩阵,其中包含大量空值或非常小的值和一些非常小的值。高流量。如果搜索在某个时刻未能在局部最优处找到高流量的单元,那么 TS 将以较小的成本执行移动,因为关键单元的第一次交换将大大增加目标函数的值。

我们提出的克服这一困难的技巧非常简单:对于流量或成本非常异构的问题,如果交易所将两个单元放置在不同位置,则移动将通过愿望标准并被选择,解决方案质量完全是从属衡量标准它们在最后 t 次迭代中没有占用。从概念上讲,该函数可以被视为一个长期的多元化过程,每当某些单位成功满足标准时,该函数就会被激活以禁止无法满足其条件的移动。

3.4. Taboo list size

禁忌清单大小的选择至关重要;如果它的值太小,搜索过程中可能会发生循环,而如果它的值太大,有吸引力的移动可能会被禁止,导致探索较低质量的解决方案,产生大量的迭代来找到所需的解决方案。

然而,认为循环现象总是作为小禁忌列表大小的函数出现的想法是错误的,因为我们观察到,对于 Nugent 等人的大小 15 的问题。 [13],禁忌列表大小设置为 s = 30 的循环,对于 26 到 29 之间的大小没有观察到这种循环。为了克服与搜索最佳禁忌列表大小相关的问题,我们提出以下技巧:我们建议在搜索过程中随机更改该值,而不是在整个搜索过程中将大小 s 固定为恒定值。实际上,s 将在 Smin 和 Smax = Smin + A 之间选择,并且经常更改,例如每 2’Smax x 迭代(以便有一定的概率以 s = Smax 执行某些迭代)。

在图 1 中,我们感兴趣的是必须赋予 Smin 的实用值和 A 来解决(最优)N = 15 的 Nugent 问题。当我们从独立的初始解开始并使用少于 10000 次迭代成功找到最优解 30 次时,我们在图中用黑色方块绘制。必须注意的是,当 Smin 和 A 设置为“最佳”值时,允许的迭代次数大约是解决该问题所需的平均迭代次数的 20 倍。

在图 1 中,我们首先注意到随机禁忌列表大小 (A > 0) 的引入使得搜索更加可靠。其次,Smin 和 A 的实际取值范围非常广泛。

事实上,对于大多数问题,我们使用 Smin = [0.9 N] 和 Smax = [1.1 N] 找到了迄今为​​止已知的最佳解决方案。然而,对于小问题(N <= 15)和非正则矩阵问题(Elshafei,Steinberg)或大问题(Skorin-Kapov,Krarup),使用稍大的禁忌列表大小有时可以更快地找到这些解决方案,其中使用第二个愿望功能时,禁忌列表的大小必须减少,大约30%。第二个愿望函数的参数 t 很大程度上取决于问题。对于最不规则的问题(Elshafei),t 设置为 400,对于较大的问题,它设置为 3000 到 10000 之间。

在图 2 中,我们感兴趣的是寻找次优解决方案的平均迭代次数,这是斯坦伯格问题的第一个实例。因此,我们尝试“解决”这个问题 30 次,从独立的初始解决方案开始,最多允许 500000 次迭代。这是针对 3 个 A 值(0、5 和 10)和 7 个 Smin 值(0、5 … 30)完成的。

当禁忌列表大小固定(A = 0)时,充分选择它很重要:对于我们的示例,我们观察到大小小于 10 的循环,而最佳大小约为 20,并且平均迭代次数增加对于大小为 30 的情况,大约为 50%。但是随机性的引入(A = 5 或 A = 10)使得能够以更可靠的方式找到搜索的解(Smin 的良好值的间隔更大)并且与固定大小相比,需要更少的迭代次数 (- 30%)。

4. Random problems

文献中发表的问题有一个主要缺点:复制和使用数据可能很困难,因为矩阵记录在大量表格中,有时以不可读的方式打印。因此,我们提出了一种自动生成问题的简单方法;这些问题通常比已发布的问题更难解决(使用我们的 TS),因为可以常规验证次优解决方案的最大问题的大小为 35 到 40,而我们很可能已经最优地解决了 Steinberg 的问题( N = 36)和斯科林卡波夫(N = 42 至 N = 64)。在我们的生成过程中,距离和流量矩阵的系数是整数,在0到99(包含)之间随机均匀生成。随机数生成器,在 Bratley 等人的书中进行了分析。 [1],基于递归公式:

5. Parallel taboo search

研究内容、成果

7. Conclusion

我们在本文中表明,使用基于 TS 的过程并先验地固定其参数,可以找到非常好的 QAP 解决方案。特别是,如果允许 N2 迭代并且禁忌列表大小在问题大小的 10% 范围内随机变化,则有可能获得高质量的解决方案,这更多地取决于问题的类型而不是问题的大小,对于 N >= 20。

我们的 TS 的实现除了简单之外,还将 QAP 的早期 TS 实现的计算复杂度降低了 N 倍,并且通过以下方式可以将复杂度再次降低 N 倍:使用与 N 成比例的处理器数量。结果表明,使用基本 TS(一个禁忌列表和琐碎的愿望函数)对于大多数大小不超过 30 的问题效果很好。对于更大的问题,使用另一个提出了愿望函数 - 添加一个新参数,但不改变算法的复杂性(工作和内存要求) - 并且一些大小高达 64 的问题可能无法得到最佳解决。然而,我们认为寻找更大问题的次优解决方案必须通过另一个过程来完成,例如使用更复杂的 TS 概念(目标分析或更复杂的长期记忆)。最后,给出了一种生成随机问题的可靠方法,这大大减少了获取随机问题实例所需的工作。

潜在研究点

文献链接

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

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

相关文章

RabbitMQ之MQ的可靠性

文章目录 前言一、数据持久化交换机持久化队列持久化消息持久化 二、LazyQueue控制台配置Lazy模式代码配置Lazy模式更新已有队列为lazy模式 总结 前言 消息到达MQ以后&#xff0c;如果MQ不能及时保存&#xff0c;也会导致消息丢失&#xff0c;所以MQ的可靠性也非常重要。 一、…

Vatee万腾的科技探险:vatee数字化力量的前瞻征途

在Vatee万腾的科技探险中&#xff0c;我们领略到了一场数字化力量的前瞻征途&#xff0c;这是一次引领未来的创新之旅。Vatee万腾以其独特的科技理念和数字化力量&#xff0c;开启了一次引领行业的前瞻性征途&#xff0c;为数字化未来描绘出了崭新的篇章。 Vatee万腾的数字化力…

荆涛《春节回家》:歌声中的年味与乡愁

荆涛《春节回家》&#xff1a;歌声中的年味与乡愁春节&#xff0c;对于每一个中国人来说&#xff0c;都是一年中最为重要的时刻。它不仅仅是一个节日&#xff0c;更是团圆、乡愁、回忆与希望的象征。歌手荆涛的歌曲《春节回家》恰恰捕捉到了这些情感&#xff0c;用音乐为人们绘…

【AI认证笔记】NO.2人工智能的发展

目录 一、人工智能的发展里程碑 二、当前人工智能的发展特点 1.人工智能进入高速发展阶段 2.人工智能元年 三、人工智能高速发展的三大引擎 1.算法突破 2.算力飞跃 3.数据井喷 四、AI的机遇 五、AI人才的缺口 六、行业AI 人工智能算法&#xff0c;万物互联&#xff…

十大排序算法中的插入排序和希尔排序

文章目录 &#x1f412;个人主页&#x1f3c5;算法思维框架&#x1f4d6;前言&#xff1a; &#x1f380;插入排序 时间复杂度O(n^2)&#x1f387;1. 算法步骤思想&#x1f387;2.动画实现&#x1f387; 3.代码实现 &#x1f380;希尔排序 时间复杂度O(n*logn~n^2)希尔排序的设…

人工智能Keras图像分类器(CNN卷积神经网络的图片识别篇)

上期文章我们分享了人工智能Keras图像分类器(CNN卷积神经网络的图片识别的训练模型),本期我们使用预训练模型对图片进行识别:Keras CNN卷积神经网络模型训练 导入第三方库 from keras.preprocessing.image import img_to_array from keras.models import load_model impor…

用Java写一个飞翔的小鸟

目录 在 App包创建以下类 GameApp类 main包 Barrier 类 Bird 类 Cloud 类 GameBackGround 类 GameBarrierLayer 类 GameFrame 类 GameTime 类 util包 Constant 类 GameUtil 类 游戏运行结果如下&#xff1a; 碰到柱子就结束游戏 在 App包创建以下类 GameApp类 p…

matlab使用plot画图坐标轴上的导数速度一点和加速度两点如何显示

一、背景 在使用matlab中的plot函数画图时&#xff0c;有时需要在坐标轴上显示一个点的导数项&#xff0c;如横坐标是时间&#xff0c;纵坐标是速度&#xff0c;也就是位置的导数 y ˙ \dot y y˙​&#xff0c;如下图所示&#xff0c;这在matlab如何操作呢&#xff1f; 二…

基于单片机的肺活量检测系统(论文+源码)

1.系统设计 在基于单片机的肺活量检测系统中&#xff0c;在硬件上整个系统通过利用主控制器STC89C52单片机来实现对整个系统进行控制的功能&#xff0c;通过采用LCD1602实现实时液晶显示数据的功能&#xff0c;通过肺活量传感器XGZP6847ADC0832实现监测肺活量的工作&#xff0…

【从浅识到熟知Linux】基本指令之date和cal

&#x1f388;归属专栏&#xff1a;从浅学到熟知Linux &#x1f697;个人主页&#xff1a;Jammingpro &#x1f41f;每日一句&#xff1a;一篇又一篇&#xff0c;学写越上头。好像真的上头了~~ 文章前言&#xff1a;本文介绍date和cal指令用法并给出示例和截图。 文章目录 date…

医学检验科LIS系统源码 样本采集、检验、分析

LIS把检验、检疫、放免、细菌微生物及科研使用的各类分析仪器&#xff0c;通过计算机联网&#xff0c;实现各类仪器数据结果的实时自动接收、自动控制及综合分析&#xff1b;系统可与条码设备配套使用&#xff0c;自动生成条码&#xff0c;减少实验室信息传递中人为因素导致的误…

中通单号查询,中通快递物流查询,将途经指定城市的单号筛选出来

批量查询中通快递单号的物流信息&#xff0c;并将途经指定城市的单号筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 中通快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;第一次使用的朋友记得先注册&#x…

【LeetCode:1457. 二叉树中的伪回文路径 | 二叉树 + DFS +回文数】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【unity实战】实现一个放置3d物品建造装修系统(附项目源码)

文章目录 最终效果前言绘制开始场景素材开始放置旋转物体扩展优化1. 绘制地图边界&#xff0c;确保放置物品在指定区域内工作2. 让模型所占面积大小更加准确3. 隐藏白色瓦片指示区域 最终效果其他源码参考完结 最终效果 前言 其实3d物品建造装修系统之前就已经做过了&#xff…

论文阅读——DDeP(cvpr2023)

分割标签耗时且贵&#xff0c;所以常常使用预训练提高分割模型标签有效性&#xff0c;反正就是&#xff0c;需要一个预训练分割模型。典型的分割模型encoder部分通过分类任务预训练&#xff0c;decoder部分参数随机初始化。作者认为这个方法次优&#xff0c;尤其标签比较少的情…

代码随想录算法训练营第四十四天|57. 爬楼梯、322.零钱兑换、279. 完全平方数

KamaCoder 57. 爬楼梯 题目链接&#xff1a;题目页面 (kamacoder.com) 这道题使用完全背包来实现&#xff0c;我们首先考虑的是总的楼梯数&#xff0c;因此dp数组大小为n 1 &#xff0c;其意义是&#xff0c;在n阶时有多少种方法爬到楼顶&#xff0c;因此&#xff0c;当前n状…

【腾讯云云上实验室-向量数据库】用向量数据库——实现高效文本检索功能

文章目录 前言Tencent Cloud VectorDB 简介Tencent Cloud VectorDB 使用实战申请腾讯云向量数据库腾讯云向量数据库使用步骤腾讯云向量数据库实现文本检索 结论和建议 前言 想必各位开发者一定使用过关系型数据库MySQL去存储我们的项目的数据&#xff0c;也有部分人使用过非关…

【spring(五)】SpringMvc总结 SSM整合流程

目录 一、SpringMVC简介&#xff1a; 二、SpringMVC快速入门&#xff1a; 三、SpringMVC bean的管理&#xff1a;⭐ ①配置bean ②扫描bean 四、SpringMVC配置类&#xff1a;⭐ 五、SpringMVC 请求与响应 六、SpringMVC REST风格 七、SSM整合 异常处理&#xff1a; 八、…

Windows核心编程 进程遍历与文件加密

目录 进程的遍历 CreateToolhelp32Snapshot Process32First Process32Next 文件加密 使用openssl库进行DES加密 进程的遍历 什么是快照&#xff1a;虚拟中的快照&#xff1a; 我们在分析病毒&#xff0c;分析木马的时候&#xff0c;不能在真机分析&#xff0c;在虚拟机中…

【多线程】-- 02 线程创建之实现Runnable初识多线程并发问题

多线程 2 线程创建 2.2 实现Runnable接口 【学习提示】查看JDK帮助文档 定义MyRunnable类实现Runnable接口实现run()方法&#xff0c;编写线程执行体创建线程对象&#xff0c;调用start()方法启动线程 package com.duo.demo01;//创建线程方式二&#xff1a;实现Runnable接…