智能优化算法(二):禁忌搜索算法

news2024/11/17 10:57:41

文章目录

  • 禁忌搜索算法
    • 1.禁忌搜索算法预备知识
      • 1.1 预备知识1---解空间
      • 1.2.预备知识2---邻域
    • 2.禁忌搜索算法实现过程
      • 2.1.禁忌搜索算法思想
      • 2.2.禁忌搜索构成要素
        • 2.2.1.搜索结果表达
        • 2.2.2.邻域移动策略
        • 2.2.3.禁忌表引入
        • 2.2.4.禁忌搜索选择策略
        • 2.2.5.禁忌搜索渴望水平
        • 2.2.6.禁忌搜索停止准则
      • 2.3.禁忌搜索伪代码
        • 2.3.1.定义禁忌搜索
        • 2.3.2.初始化与迭代过程
    • 3.禁忌搜索算法应用

禁忌搜索算法

1.禁忌搜索算法预备知识

1.1 预备知识1—解空间

  对于一个组合优化问题来说,解空间定义为:任一可能(可行)解可以访问的搜索空间。
  举个例子:对于n个城市的旅行商问题来说,一个解可以用自然数序列{1,2,…,n}的某种排列来表达,于是解空间则是由该自然数序列的所有排列组合构成。
  假如有是基于四个城市的Tsp问题,那么{1,2,3,4}、{2,3,1,4}都是该问题的TSP的解。

1.2.预备知识2—邻域

  令S表示组合优化问题的一个解,则其邻域N(S)可以定义为:S执行一次邻域移动可以访问的所有解的集合。
  举例:对于4个城市的旅行商问题来说,采用上述的基于排列的解表达方法,邻域移动定义为 2-opt,即对S中2个元素进行对换S=(1,2,3,4),则领域N(S)={(2,1,3,4), (3,2,1,4), (4,2,3,1), (1,3,2,4),(1,4,3,2), (1,2,4,3)}

2.禁忌搜索算法实现过程

2.1.禁忌搜索算法思想

  人类在选择过程中具有记忆功能,比如走迷宫时,当发现有可能又回到某个地点的时候总会有意识地避开先前选择的方向而选择其他的可能性,这样就可以确定性的避开迂回搜索,所以禁忌搜索的一个比较重要的思想就是能够通过接受劣解来逃离局优,这样就不容易陷入局部最优的困境。

2.2.禁忌搜索构成要素

2.2.1.搜索结果表达

  ① 采用恰当的数据结构来表示问题的解。
  ② 初始解的产生:随机产生或者采用启发式方法产生一个初始解。
  ③ 适值函数的构造:往往直接将目标函数作为适值函数。

2.2.2.邻域移动策略

  ① 组合优化问题中邻域移动可以定义为某种排列置换
  ② 邻域移动定义是灵活的,目的是便于搜索
   ∙ \bullet 局部搜索:当前解附近区域搜索
   ∙ \bullet 全局搜索:远离当前解区域搜索

2.2.3.禁忌表引入

  禁忌表(T表)的引入就是为了防止搜索出现循环,如果出现循环算法可能就陷入了一定的"困境",根据TS算法的核心思想,宁可选择劣解也不进入循环或局部最优的情况。
  禁忌表(T)的使用规则如下所示:
  ① 将移动作为禁忌对象
  ② 表的长度称为Tabu-Size,可以用来控制局域搜索和广域搜索。
  ③ 表是动态更新的:把最新的解记入,最老的解从表中释放(解禁)。

2.2.4.禁忌搜索选择策略

  选择策略需要满足以下两个要求:
  ① 当前解S每一步总是移动到邻域N(S)中未被禁忌的最优。
  ② 为了保证算法具有跳出局优的能力。

2.2.5.禁忌搜索渴望水平

  渴望水平就是破禁的临界值,如果当前的解达到(大于/小于看题目要求)当前渴望水平,则当前的邻域移动不受T表的限制,主要是为了实现的破禁的目的。
  ① 若被禁忌的邻域移动会使当前解达到超出渴望水平的要求,则这种邻域移动将不受T表限制
  ② 渴望水平一般选取为历史上所能达到的最优函数值,其主要目的是为了破禁。

2.2.6.禁忌搜索停止准则

  任何优化方法都有自己的停止准则,一般来说就涉及以下三种情况:
  ① 设定最大迭代次数(最大迭代次数之后不再迭代)
  ② 得到满意解(获得最优解之后停止)
  ③ 若干次迭代未获得更好的解(在一定迭代次数内最优解的值没有变化则选择停止)

2.3.禁忌搜索伪代码

2.3.1.定义禁忌搜索

  %%参数定义
   S : S{:} S:当前解
   S ∗ S^* S: 当前最优解
   f ∗ f^* f: 当前最优函数值
   N ( S )  ⁣ : S N(S)\colon S N(S):S的邻域
   N ~ ( S )  ⁣ : N ( S ) \widetilde{N}(S)\colon N(S) N (S):N(S)的可行子集 (未被禁忌以及突破渴望水平的邻域解)
   T : T{:} T: 禁忌表

2.3.2.初始化与迭代过程

   %%初始化
  产生(或构造)一个初始解 S 0 S_{0} S0; 令 S ← S 0 , f ∗ ← f ( S 0 ) , S ∗ ← S 0 , T ← ∅ ; S\gets S_0,\quad f^*\gets f(S_0),\quad S^*\gets S_0,\quad T\gets\emptyset; SS0,ff(S0),SS0,T;

  %%送代过程
  While 停止条件不被满足 do
  令 S ← a r g m i n S ′ ∈ N ~ ( S ) [ f ( S ′ ) ] ; S\gets\mathrm{argmin}_{S^{\prime}\in\widetilde{N}(S)}[f(S^{\prime})]; SargminSN (S)[f(S)];
  若 f ( S ) < f ∗ f(S)<f^* f(S)<f,则令 f ∗ ← f ( S ) , S ∗ ← S ; f^*\gets f(S),S^*\gets S; ff(S),SS;
  更新禁忌表 T ; T; T;
  Endwhile.

3.禁忌搜索算法应用

  先给定全国31个省会城市的坐标,请你基于禁忌搜索方法方法求解遍历31个省会坐标的最短路径长度,并且给出搜索的过程图片,设矩阵C是31行2列的矩阵,其中每行包含一个省会城市坐标,矩阵C如下所示:

  C = [1304 2312; 3639 1315; 4177 2244; 3712 1399; 3488 1535; 3326 1556;3238 1229; 4196 1044; 4312 790; 4386 570; 3007 1970; 2562 1756;2788 1491; 2381 1676; 1332 695; 3715 1678; 3918 2179; 4061 2370;3780 2212; 3676 2578; 4029 2838; 4263 2931; 3429 1908; 3507 2376;3394 2643; 3439 3201; 2935 3240; 3140 3550; 2545 2357; 2778 2826;2370 2975]
  基于禁忌算法求解出的结果如下所示:
抱歉无法处理您这个问题哦,您可以换个问题抱歉无法处理您这个问题哦,您可以换个问题
  总的来说,禁忌搜索的结果还是比较不错的,相关的应用过程与代码详情请见下一篇文章。

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

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

相关文章

UEC++ 探索虚幻5笔记 day11

虚幻5.2.1探索 项目目录探索 C工程一定不能是中文路径&#xff0c;中文项目名&#xff0c;最好全部不要用中文&#xff0c;蓝图项目可以是中文浅浅创建一个空项目&#xff0c;讲解一下之前UE4没有讲解的项目目录文件的分布组成 .vs&#xff1a;文件夹一般是项目编译缓存文件夹…

Deployment脚本部署Tomcat集群:外部访问、负载均衡、文件共享及集群配置调整

文章目录 前置知识一、Deployment脚本部署Tomcat集群二、外部访问Tomcat集群三、利用Rinted对外提供Service负载均衡支持1、创建服务2、端口转发工具Rinetd3、定义jsp文件查看转发到哪个节点 四、部署配置挂载点五、基于NFS实现集群文件共享1、master2、node3、验证 六、集群配…

ESP32-Web-Server编程-通过 Web 下载文本

ESP32-Web-Server编程-通过 Web 下载文本 概述 当你希望通过网页导出设备的数据时&#xff0c;可以在 ESP32 上部署一个简单的文件 Web 服务器。 需求及功能解析 本节演示如何在 ESP32 上部署一个最简单的 Web 服务器&#xff0c;来接收浏览器或者 wget 指令请求文件数据。…

Course2-Week2-神经网络的训练方法

Course2-Week2-神经网络的训练方法 文章目录 Course2-Week2-神经网络的训练方法1. 神经网络的编译和训练1.1 TensorFlow实现1.2 损失函数和代价函数的数学公式 2. 其他的激活函数2.1 Sigmoid激活函数的替代方案2.2 如何选择激活函数2.3 为什么需要激活函数 3. 多分类问题和Soft…

时间序列数据压缩算法简述

本文简单介绍了时间序列压缩任务的来源&#xff0c;压缩算法的分类&#xff0c;并对常见压缩算法的优缺点进行了简介&#xff0c;爱码士们快来一探究竟呀&#xff01; 引言 时间序列数据是在许多应用程序和领域中生成的一种基本数据类型&#xff0c;例如金融、医疗保健、交通和…

智能优化算法应用:基于阿基米德优化算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于阿基米德优化算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于阿基米德优化算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.阿基米德优化算法4.实验参数设定5.算…

4.grid_sample理解与使用

pytorch中的grid_sample 文章目录 pytorch中的grid_samplegrid_samplegrid_sample函数原型实例 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; grid_sample 直译为网格采样&#xff0c;给定一个mask patch&#xff0c;根据在目标图像上的…

抖音集团面试挂在2面,复盘后,决定二战.....

先说下我基本情况&#xff0c;本科不是计算机专业&#xff0c;现在是学通信&#xff0c;然后做图像处理&#xff0c;可能面试官看我不是科班出身没有问太多计算机相关的问题&#xff0c;因为第一次找工作&#xff0c;字节的游戏专场又是最早开始的&#xff0c;就投递了&#xf…

GEE——利用多源遥感数据和SVM方法进行不同时期(多时相)遥感影像的分类

简介: 本教程主要的目的是实现多起遥感影像的分类,这里使用两景应先给,融合了多波段影像,其次还包含去除水域和根据NDSI指数去除雪的部分。我们分别利用不同时期的影像进行分析分别分类,这里利用的是提取样本点,然后进行SVM分布。 数据集 这里我们使用的数据集: NASA…

ODN光纤链路全程衰减如何计算

在FTTH等宽带光纤接入工程设计中&#xff0c;需根据应用系统的相应波长计算ODN光纤链路的全程衰减&#xff0c;一方面验证是否满足系统的光功率预算指标要求&#xff0c;另一方面作为工程验收的参考指标。 1 计算方法 ODN光纤链路的全程衰减是指从OLT至ONU的光纤链路中&#xf…

Learning Normal Dynamics in Videos with Meta Prototype Network 论文阅读

文章信息&#xff1a;发表在cvpr2021 原文链接&#xff1a; Learning Normal Dynamics in Videos with Meta Prototype Network 摘要1.介绍2.相关工作3.方法3.1. Dynamic Prototype Unit3.2. 视频异常检测的目标函数3.3. 少样本视频异常检测中的元学习 4.实验5.总结代码复现&a…

C#网络编程UDP程序设计(UdpClient类)

目录 一、UdpClient类 二、示例 1.源码 &#xff08;1&#xff09;Client &#xff08;2&#xff09;Server 2.生成 &#xff08;1&#xff09;先启动服务器&#xff0c;发送广播信息 &#xff08;2&#xff09;再开启客户端接听 UDP是user datagram protocol的简称&a…

Star 10.4k!推荐一款国产跨平台、轻量级的文本编辑器,内置代码对比功能

notepad 相信大家从学习这一行就开始用了&#xff0c;它是开发者/互联网行业的上班族使用率最高的一款轻量级文本编辑器。但是它只能在Windows上进行使用&#xff0c;而且正常来说是收费的&#xff08;虽然用的是pj的&#xff09;。 对于想在MacOS、Linux上想使用&#xff0c;…

EM32DX-C2【C#】

1说明&#xff1a; 分布式io&#xff0c;CAN总线&#xff0c;C#上位机二次开发&#xff08;usb转CAN模块&#xff09; 2DI&#xff1a; 公共端是&#xff1a; 0V【GND】 X0~X15&#xff1a;自带24v 寄存器地址&#xff1a;0x6100-01 6100H DI输入寄存器 16-bit &#x…

鸿蒙系统扫盲(四):鸿蒙使用的是微内核?

我们常说&#xff0c;看一个系统是不是自研&#xff0c;就看它的内核&#xff0c;常见的内核分为&#xff1a;宏内核和微内核&#xff0c;当然还有两者结合体&#xff0c;他们到底有什么区别&#xff1f; 1.白话宏内核和微内核 有一天&#xff0c;你结婚了&#xff0c;你和你…

安全测试之推荐工具(一)

文章目录 一、前言二、Web安全&#xff08;一&#xff09;AppScan&#xff08;推荐&#xff09;&#xff08;二&#xff09;AWVS&#xff08;推荐&#xff09;&#xff08;三&#xff09;Burp Suite&#xff08;推荐&#xff09;&#xff08;四&#xff09;OWASP ZAP 三、主机安…

电子取证--windows下的volatility分析与讲解

1.volatility的安装 提示&#xff1a;我用的是2.6版本&#xff08;windows&#xff09;&#xff0c;如果直接下载的出现问题&#xff0c;用迅雷就可以解决 下载地址&#xff1a;Volatility 2.volatility的使用 1.进入终端&#xff0c;查看镜像的系统信息&#xff1a; volati…

[ROS2] --- ROS diff ROS2

1 ROS存在的问题 一旦Ros Master主节点挂掉后&#xff0c;就会造成整个系统通信的异常,通信基于TCP实现&#xff0c;实时性差、系统开销大对Python3支持不友好&#xff0c;需要重新编译消息机制不兼容没有加密机制、安全性不高 2 ROS and ROS2架构对比 ROS和ROS2架构如下图所…

实体、协议、服务和服务访问点

目录 一、概念 二、相邻两层之间的关系 三、面向连接服务的特点 四、无连接服务的特点 五、著名的协议举例 一、概念 实体&#xff08;entity&#xff09;表示任何可发送或接收信息的硬件或软件进程。同机器上同一层的实体叫做对等实体&#xff08;peer entity&#xff0…

如何创建maven项目的多模块项目

Maven多模块项目是指一个Maven项目中包含多个子模块&#xff0c;每个子模块又是一个独立的Maven项目&#xff0c;但它们之间可以存在依赖关系。Maven多模块项目可以方便地管理多个子模块的依赖和构建过程&#xff0c;同时也可以提高项目的可维护性和可扩展性。创建maven项目的父…