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

文章目录

  • 禁忌搜索算法
    • 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]
  基于禁忌算法求解出的结果如下所示:
抱歉无法处理您这个问题哦,您可以换个问题抱歉无法处理您这个问题哦,您可以换个问题
  总的来说,禁忌搜索的结果还是比较不错的,相关的应用过程与代码详情请见下一篇文章。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Mac软件]HitPaw Video Converter 功能强大的视频格式转换编辑软件激活版

软件介绍&#xff1a; 以令人难以置信的速度将无损视频和音乐转换为1000多种格式&#xff1a;MP4、MOV、AVI、VOB、MKV等。不仅适用于普通编解码器&#xff0c;也适用于高级VP9、ProRes和Opus编码器。这解决了您不支持格式的所有问题&#xff0c;并允许您在任何平台和设备上播…

美颜SDK是什么?集成第三方美颜SDK的步骤

第三方美颜SDK提供了实时美颜效果。本文将深入探讨集成第三方美颜SDK的步骤&#xff0c;助您在应用中实现引人注目的美颜功能。 第一步&#xff1a;选择适合的第三方美颜SDK 在开始之前&#xff0c;务必仔细选择一个适合您应用需求的第三方美颜SDK。不同的SDK可能具有不同的特…

顺序查找、折半查找、分块查找

概念 查找表&#xff0c;分为静态查找表和动态查找表。 顺序查找 效率分析&#xff1a; 优化 折半查找 折半查找&#xff0c;又称“二分查找”仅适用于有序的顺序表。 ⭐&#xff0c;因为顺序表可以随机访问&#xff0c;链表不可以 效率分析 折半查找判定树的构造 如果&…

ubuntu安装tomcat并配置前端项目

1.1查找 # 先更新 sudo apt update # 查找 apt search jdk1.2安装 sudo apt install openjdk-8-jdk1.3验证 java -version 2.安装tomcat 下载链接&#xff1a;Apache Tomcat - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgi下载这个&…

linux远程桌面管理工具(xrdp)、向日葵

Windows远程桌面 linux远程桌面 使用向日葵远程桌面&#xff08;手机端同理&#xff09; Windows远程桌面 微软自带Remote Desktop Connection Manager &#xff08;RDCMan&#xff09;远程控制管理软件介绍 远程桌面连接管理器 v2.93 linux远程桌面 Windows远程桌面Ubunt…

Unity中C#使用协程控制Shader材质变化

文章目录 前言一、协程是什么二、在Unity中使用协程1、我们在 Start 中测试一下协程的执行顺序2、我们实现一个点击按钮实现角色受击效果 三、协程中的动画过渡1、首先&#xff0c;在协程内实现中毒并且消散的效果2、在 OnGUI 内&#xff0c;给一个新按钮使用刚刚定义的协程 四…

洛谷P1044 [NOIP2003 普及组] 栈 递归方法

目录 核心&#xff1a; 问题转化&#xff1a; 状态转化&#xff1a;&#xff08;你得先读懂题&#xff0c;理解我们要干什么&#xff09; 对应不同情况下的状态转化&#xff1a;&#xff08;比如栈空就不能出栈&#xff0c;&#xff0c;&#xff09; AC代码&#xff1a; 题…

智能优化算法应用:基于未来搜索算法无线传感器网络(WSN)覆盖优化 - 附代码

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

C# - Opencv应用(3) 之矩阵Mat使用[图像截取粘贴、ROI操作、位运算、数学计算]

C# - Opencv应用&#xff08;3&#xff09; 之矩阵Mat使用[图像截取粘贴、ROI操作、位运算、数学计算] 图像读取&#xff0c;大小、截取、位运算图像ROI操作&#xff1a;粘贴赋值、滤波图像数学计算部分结果如下&#xff1a; 1.图像读取&#xff0c;大小、截取、位运算 //图…

锂电池包膜机通过设备管理系统做好预测性维护的作用

在现代工业生产中&#xff0c;包膜机在锂电产业链中处于电池制造环节&#xff0c;是锂电池生产线上的关键设备之一。然而&#xff0c;随着生产规模的扩大和工作环境的复杂化&#xff0c;锂电池包膜机也面临着常见故障和维护需求。为了更好地管理和维护锂电池包膜机&#xff0c;…

【IPv6】IPv6协议

一、IPv6数据报格式 这是与v4报头的对比 1.8bit的版本保留了&#xff0c;v4版本就是4&#xff0c;v6就是6。 2.v6去除了v4的首部长度字段&#xff0c;因为v6的首部长是固定的40字节。 3.服务类型&#xff08;Type of Service, ToS&#xff09;和通信类型&#xff08;Traffi…

2023全网最新-免杀方法大集结

目录 00. 概述 01. 简介 02. 静态免杀 1. 怎么找特征码 工具查找 手工查找 其他 2. 怎么免杀&#xff1f; 手工修改 非源码 工具免杀&#xff08;盲免杀&#xff09; 03. 行为动态免杀 行为拦截原理 如何进行行为免杀呢&#xff1f; 总结 注意/技巧 00. 概述 …

【C++】类和对象——const修饰成员函数和取地址操作符重载

在上篇博客中&#xff0c;我们已经对于日期类有了较为全面的实现&#xff0c;但是&#xff0c;还有一个问题&#xff0c;比如说&#xff0c;我给一个const修饰的日期类的对象 这个对象是不能调用我们上篇博客写的函数的&#xff0c;因为&d1是const Date*类型的&#xff…

12.2旋转,SPLAY树的各种操作(SPLAY与AVL是两种BST)

Splay树和AVL树是两种不同的自平衡二叉搜索树实现。 1. 平衡条件&#xff1a;AVL树通过维护每个节点的平衡因子&#xff08;左子树高度减去右子树高度&#xff09;来保持平衡&#xff0c;要求每个节点的平衡因子的绝对值不超过1。Splay树则通过经过每次操作后将最近访问的节点…

【隐私计算】VOLE (Vector Oblivious Linear Evaluation)学习笔记

近年来&#xff0c;VOLE&#xff08;向量不经意线性评估&#xff09;被用于构造各种高效安全多方计算协议&#xff0c;具有较低的通信复杂度。最近的CipherGPT则是基于VOLE对线性层进行计算。 1 VOLE总体设计 VOLE的功能如下&#xff0c;VOLE发送 Δ \Delta Δ和 b b b给send…

MySQL笔记-第03章_基本的SELECT语句

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第03章_基本的SELECT语句1. SQL概述1.1 SQL背景知识1.2 SQL语言排行榜1.3 SQL 分类 2. SQL语言的规则与规范2.1 基本规则2.2 SQL大小写规范 …

Linux系统安装Python3环境

1、默认情况下&#xff0c;Linux会自带安装Python&#xff0c;可以运行python --version命令查看&#xff0c;如图&#xff1a; 我们看到Linux中已经自带了Python2.7.5。再次运行python命令后就可以使用python命令窗口了&#xff08;CtrlD退出python命令窗口&#xff09;。 2…

MySQL笔记-第06章_多表查询

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第06章_多表查询1. 一个案例引发的多表连接1.1 案例说明1.2 笛卡尔积&#xff08;或交叉连接&#xff09;的理解1.3 案例分析与问题解决 2. …

详解原生Spring当中的事务

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

如何从T-N曲线判断电机选对了没有

我的知乎原文&#xff1a;https://zhuanlan.zhihu.com/p/670156320? 如果你是一个刚入行的电机工程师&#xff0c;刚刚参加了一个新产品的开发&#xff0c;在众多电机供应商中让你去挑选一款合适的电机&#xff0c;该从哪个角度去入手呢&#xff1f; 今天这篇文章就从T-N曲线…