禁忌搜索算法原理步骤、matlab实现算例及相关代码
一、原理步骤
参考:禁忌搜索算法(Tabu Search)的基本原理与算法流程总结_Chauncy__xu的博客-CSDN博客_禁忌搜索算法
注意其中存在两个对象:
禁忌对象:禁忌表中被禁的那些变化元素
禁忌长度:禁忌的步数,决定禁忌表的长度
二、算例,以tsp问题为例,数据随机生成
代码:
clc
clear
p=rand(10,2)*10;
plot(p(:,1),p(:,2),'ok')
title('生成点')
save p p
三、禁忌搜索算法matlab代码及效果
迭代过程: 路线结果:
代码:子函数点赞收藏关注后私聊获得,码字不易感谢支持!
clc
clear
close all
p=[8.14723686393179,1.57613081677548;9.05791937075619,9.70592781760616;1.26986816293506,9.57166948242946;9.13375856139019,4.85375648722841;6.32359246225410,8.00280468888800;0.975404049994095,1.41886338627215;2.78498218867048,4.21761282626275;5.46881519204984,9.15735525189067;9.57506835434298,7.92207329559554;9.64888535199277,9.59492426392903];
%% 初始化
popus=randperm(size(p,1));
%% 禁忌搜索
max_ge=50;%搜索步数
J_ch=[];%禁忌表
J_T=[];
T=5;%禁忌长度
Pf=inf;
for gen=1:max_genum=50;pop=cell(1,num);%选出候选集for i=1:numpop{i}=Randk(popus);endf=fit(pop,p);for i=1:numfor j=1:size(J_ch,2)if sum(abs(J_ch{j}-pop{i}))==0f(i)=inf;breakendendend[~,index]=min(f);%将禁忌长度-1if ~isempty(J_T)J_T=J_T-1;ch=find(J_T==0);J_T(ch)=[];J_ch(ch)=[];end%将其加入禁忌表J_ch=[J_ch,pop(index(1))];J_T=[J_T,T];Pop{gen}=pop{index(1)};Pf(gen)=min([min(f),Pf]);popus=pop{index(1)};
end
[~,index]=min(Pf);
popus=Pop{index(1)};
figure(1)
plot(1:size(Pf,2),Pf,'-k')
title('迭代过程')
xlabel('X')
ylabel('Y')
figure(2)
plot(p(:,1),p(:,2),'ok')
hold on
plot([p(popus(1),1) p(popus(end),1)],[p(popus(1),2) p(popus(end),2)],'-b')
hold on
for i=1:size(popus,2)-1plot([p(popus(i),1) p(popus(i+1),1)],[p(popus(i),2) p(popus(i+1),2)],'-b')
hold on
end
title('路线图')
禁忌搜索算法原理步骤、matlab实现算例及相关代码相关推荐
- 有限元悬臂梁matlab,悬臂梁MATLAB有限元算例注释.doc
悬臂梁MATLAB有限元算例注释 用有限元法对悬臂梁分析的算例 算例: 如下图所示的悬臂梁,受均布载荷q=1N/mm2作用.E=2.1×105N/mm2, μ=0.3厚度h=10mm.现用有限元法分析 ...
- 详解 Benders 分解与一个算例的 python 代码
听说过 benders 分解几年了,在生产管理.路径规划与选址问题中经常应用,一直没有细看,最近论文里面也见到,还是有必要了解一下它的基本思想与用法的. 目录 1. 基本思想 2. 线性规划模型与对偶 ...
- matlab 简单算例,(简单算例)基于Matlab的电力系统潮流编程计算.pdf
(简单算例)基于Matlab的电力系统潮流编程计算 基于Matlab的电力系统潮流编程计算 口黄扬威吴喜春郭志峰张斯翔 (三峡大学电气与新能源学院湖北·宜昌443002) 摘要:通过介绍电力系统的实际 ...
- 动态规划原理介绍(附7个算例,有代码讲解)
动态规划思想 动态规划(Dynamicprogramming)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法. 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗 ...
- HMM算例 python 有代码
原理 原理文字来源于 https://www.cnblogs.com/lcj1105/p/4936103.html 隐马尔可夫(HMM). 还是用最经典的例子,掷骰子.假设我手里有三个不同的骰子.第一 ...
- sc-fde matlab,MATLAB-HF-SCFDE 这是毕业相关代码,关于SC-FDE系统在HF下的运用,有一些信道估计和频域均衡算法。 256万源代码下载- www.pudn.com...
文件名称: MATLAB-HF-SCFDE下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 2388 KB 上传时间: 2015-07-18 下载次数: 12 ...
- isight参数优化理论与实例详解_【iSight】iSIGHT Matlab简单算例
导读:面向应用工程师的商业软件咨询.自研软件定制开发服务的仿真公众号,点击关注进入菜单,查看更多精彩内容. 1. 确定问题,优化变量,计算方法和优化目标 优化变量为矩形的长和宽,优化目标为矩 ...
- 牛顿-拉夫逊法 原理讲解以及python算例实现
文章目录 一.基本原理 二.原理深入讲解 1 .切线是曲线的线性逼近 2. 牛顿-拉夫逊法 3 .牛顿-拉夫逊法是否总是收敛(总是可以求得足够近似的根)? 三.pythons实例 总结 一.基本原理 ...
- matlab simulink 算例,MATLAB/Simulink官方文档
[实例简介]Simulink是MATLAB中的一种可视化仿真工具, 是一种基于MATLAB的框图设计环境,是实现动态系统建模.仿真和分析的一个软件包,被广泛应用于线性系统.非线性系统.数字控制及数字信 ...
- 【优化布局】matlab基于禁忌搜索算法求解基站选址问题代码
1 简介 物流配送中心选址问题在物流网络规划中占有非常重要的地位,选址的合理与否直接关系到配送中心未来的发展.针对企业选址的一般要求,以配送中心总成本最小为目标,构造了一种物流配送中心选址模型.该模型 ...
最新文章
- SpringMVC中重定向
- 计算机的诊断策略服务怎么打开,win7系统使用诊断策略服务提示“未运行”怎么解决...
- 技术人员是如何分析游戏环境的? 《影之诗》牌组趋势分析
- 在线rss阅读聚合器lilina-0.7安装笔记
- java sqlserver 死锁_sqlserver数据库发生死锁处理
- LearnETutorial 中文系列教程【翻译完成】
- Cocos2dx---------------------添加Admob广告
- 单片机p2.0引脚c语言,单片机p2.0?
- Google 推出移动版任务管理工具 Google Tasks
- Java程序设计教程(第3版)雍俊海 全书例程-1
- mysql触发器更新前触发_mysql触发器实例:更新前触发
- 坐标转换工具类:84坐标系,火星坐标系,与百度坐标系之间的互相转换
- 最高效的XML解析方式-----Simple 简化 XML 解析
- 从全班同学的成绩中找出最高成绩(遍历一位数组)
- 四.Protobuf3 缺省值
- android图片分割点击,Android中图片切割成多个图片的实现方法
- C# dataGridView中插入excel表格
- 【地平线开发板 模型转换】将pytorch生成的onnx模型转换成.bin模型
- 《花花刑警》“型警造型”全身名牌
- mac 版 Goland 使用教程一