模拟退火算法及实例解析

2023-05-16

模拟退火算法及MATLAB实例

       同遗传算法一样,模拟退火算法也是现代优化算法的一种。他对于解决组合优化问题,如TSP,JSP等问题效果较好。关于模拟退火算法的详细介绍,可以参考这里模拟退火算法。
       还是拿我先前在遗传算法中举的那个例子来说,这里给出用模拟退火算法来解决的代码以及详细注释:

%模拟退火算法
%%  该部分同遗传算法
clc, clear
sj0=load('sj.txt');    %加载100个目标的数据,数据按照表格中的位置保存在纯文本文件sj.txt中
x=sj0(:,[1:2:8]);x=x(:); %取经度
y=sj0(:,[2:2:8]);y=y(:); %取纬度
sj=[x y]; d1=[70,40];    %表示每个目标以及出发点的坐标
sj=[d1;sj;d1]; sj=sj*pi/180; %角度化成弧度
d=zeros(102);                %距离矩阵d初始化

for i=1:101       %计算相邻两点的距离(距离是弧线)
   for j=i+1:102
       d(i,j)=6370*acos(cos(sj(i,1)-sj(j,1))*cos(sj(i,2))*cos(sj(j,2))+sin(sj(i,2))*sin(sj(j,2))); 
   end
end

d=d+d';   %距离矩阵
path=[];long=inf;           %巡航路径及长度初始化
rand('state',sum(clock));   %初始化随机数发生器
%%
for j=1:1000  %求较好的初始解
    path0=[1 1+randperm(100),102]; temp=0;
    for i=1:101
        temp=temp+d(path0(i),path0(i+1));
    end
    if temp<long
        path=path0; long=temp;
    end
end
e=0.1^30;L=20000;at=0.999;T=1;
for k=1:L  %退火过程
c=2+floor(100*rand(1,2));  %产生新解
c=sort(c); c1=c(1);c2=c(2);
  %计算代价函数值的增量
df=d(path(c1-1),path(c2))+d(path(c1),path(c2+1))-d(path(c1-1),path(c1))-d(path(c2),path(c2+1));
  if df<0 %接受准则
  path=[path(1:c1-1),path(c2:-1:c1),path(c2+1:102)]; long=long+df;
  elseif exp(-df/T)>rand
  path=[path(1:c1-1),path(c2:-1:c1),path(c2+1:102)]; long=long+df;
  end
  T=T*at;
   if T<e
       break;
   end
end
path, long % 输出巡航路径及路径长度
xx=sj(path,1);yy=sj(path,2);
plot(xx,yy,'-*', 'MarkerEdgeColor','g') %画出巡航路径

结果:


path =

  1281    95    35    93    36    43    52    46    59    83    87    74    30    20    42    15    40    60     9     5    54    55    44    38    98    50    80    51

  2956100   101    99    21    56    96     6    89    37    12    53    75    33    73    13    32    24    49    61    28    25    68     7    71    22    81    58    23

  578490    66    34    29    26    63    62    86     8    39    78    47    57    88    16    91    41     4    76    69    11    64    70    19    94    65    85    77

  8510279    31    97    18    84    10    27    14    72    48    82    92     2    67    45     3    17   102


long =

   4.4830e+04

>> 

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模拟退火算法及实例解析 的相关文章

  • Linux三剑客(grep、awk、sed)

    Linux三剑客 xff08 grep awk sed xff09 grep xff08 文本过滤工具 xff09 A 10显示匹配字符串后面10行内容 n显示匹配字符串在匹配文件中的行号 w整个字符串匹配 c显示匹配个数 C 10显示匹配
  • 查询Linux内核中的结构体/函数定义

    查询Linux内核中的结构体 函数定义 下载 安装Ctags 下载ctags源码https ctags sourceforge net 解压tar zxvf ctags 5 8 tar gz配置 configure编译make安装sudo
  • 新广告法违规词、敏感词在线检测工具

    新广告法的上线实行 xff0c 限制了很多的违规词 xff0c 敏感词的使用 xff0c 极限用语的处罚由原来的退一赔三变更为罚款二十万元起 如何确定广告中是否存在有敏感词呢 小龙经过多方努力 xff0c 终于开发出了新广告法违规词 敏感词
  • Linux应用学习——GDB调试

    GDB调试学习记录 常用操作 以client c为例 span class token macro property span class token directive hash span span class token directi
  • Linux学习笔记

    Linux学习笔记 Linux驱动 GPIO GIC中断 Cortex A7中断管理器GIC IIC设备框架 SPI设备框架 MISC驱动框架 Input设备框架 Platform设备框架 USB设备 Linux应用开发 Shell 快乐的
  • Cortex-A7中断控制器GIC

    Cortex A7中断控制器GIC 中断号 芯片内部的中断都会引起IRQ InterruptGIC将所有的中断源 最多1020个中断ID 分为三类 SPI SharedPeripheralInterrupt 共享中断 xff0c 外部中断都
  • Linux应用学习——多进程

    进程 当一个进程正常终止时可以通过int atexit void function void 注册进程终止处理函数 PART1 进程相关概念 进程是一个动态的过程 xff0c 而非一个静态的文件 xff0c 是程序的一次运行过程 xff0c
  • Linux应用学习——多线程

    多线程 PART1 线程相关概念 线程时参与系统调度的最小单位 被包含在进程之中 xff0c 是进程中的实际运行单位 一个进程可以创建多个线程 xff0c 多个线程实现并发运行 xff0c 每个线程执行不同的任务 线程时最基本的运行单位 x
  • Linux编程小工具

    编程小技巧 1 函数 结构体查询 需求背景 xff1a 安装了ctag安装使用ctag可以通过vim t 34 i2c client 34 来查询i2c client结构体的信息 不方便的地方 xff1a 需要进入指定的目录下才行 Git
  • Linux应用学习_网络开发

    Linux应用学习 网络开发 1 TCP套接字编程 1 1 套接字 1 1 1 通用套接字sockaddr span class token keyword struct span span class token class name s
  • Linux应用学习——高级I/O复用

    高级I O 阻塞I O 阻塞 xff0c 进入休眠状态 xff0c 让出CPU的使用权 xff0c 等待阻塞的条件为真普通文件一定是以非阻塞的方式进行I O操作文件默认是通过阻塞式操作的 fd span class token operat
  • 《从0到1大话操作系统》--(2)纸质内存中的数据结构

    你一定听过那句著名的等式 xff1a 程序 61 数据结构 43 算法 你可能不相信 xff0c 一个叫尼古拉斯 沃斯 xff08 Niklaus Wirth xff09 的瑞士计算机科学家 xff0c 凭这句话 xff0c 获得了图灵奖
  • 《从0到1大话操作系统》--(1)万物起源:编码

    古希腊毕达哥拉斯学派的世界观人为世界的本质是数 在计算机的世界中 xff0c 所有的一切也确实是数 万物起源 xff1a 编码 1 万物皆可编码2 ASCII编码3 互不兼容4 Unicode编码 1 万物皆可编码 曾经有一位懵懂的少年 x
  • 【安全】如何关闭Windows系统的137, 139, 445端口?

    4月14日晚 xff0c 一个叫Shadow Brokers的黑客组织泄露了一大波Windows的远程漏洞利用工具 xff0c 事件细节可以参照运维派前面的文章 Windows血崩 xff0c 一波大规模 0day 攻击泄漏 恩威科技 am
  • Linux中断、系统调用处理流程与进程切换

    1 中断与系统调用的过程 1 程序控制流 正常程序的控制流只有next xff08 执行下一条指令 xff09 和goto xff08 跳转到另一条指令执行 xff09 除了正常控制流之外 xff0c 还有异常控制流 xff0c 广义上异常
  • 开篇叙事

    开篇叙事 我为什么会在这儿我的主题我的经历 我为什么会在这儿 作为我第一次踏足CSDN xff0c 当然 xff0c 我说的是在CSDN上写博客 xff0c 我在CSDN上阅读博客已经有很长一段时间了 xff0c 这里有非常多的非常棒的博主
  • Redhat(红帽) Linux软件包管理rpm概述

    1 软件包管理的内涵 习惯了Windows上安装软件的方式 下载安装包 xff0c 双击运行 xff0c 点击几次下一步后 xff0c 软件就安装完了 我也是常年使用Windows xff0c 习惯了Windows的方式 xff0c 却从来
  • FreeRTOS(一):裸机系统与多任务系统

    裸机系统与多任务系统 3 1裸机系统3 1 1轮询系统3 1 2前后台系统 3 2多任务系统总结 3 1裸机系统 裸机 xff1a 英文名是Bare machine Bare metal xff0c 指没有配置操作系统和其他软件的电子计算机
  • FreeRTOS(二):数据结构—列表与列表项

    数据结构 列表与列表项 4 列表与列表项4 1链表4 1 1单向链表4 1 2双向链表4 1 3链表与数组的对比 4 2FreeRTOS中链表的实现4 2 1实现链表节点1 定义链表节点数据结构2 链表节点初始化 4 2 2实现链表根节点1

随机推荐

  • Cordova技术初次学习

    文章目录 前言一 Cordova 是什么 xff1f 二 关于Cordova环境搭建前提要求 xff1a 1 利用npm 安装2 创建应用3 添加平台4 运行 三 结语 前言 这是一篇关于Cordova入门学习的记录文章 一 Cordova
  • 修改datax,Java获取mongo,Document转换成json,遇到的类型问题,用JsonWriterSettings解决

    java numberlong 解决方法 在修改datax插件的时候遇到了问题 问题 xff1a 我们存在mongo中带有数据类型 xff0c 如图 我们直接将Document转json会带上类型 且在mongo java driver的j
  • VirtualBox 主机ping不通虚拟机的解决办法

    visualBox的主机是ping不通虚拟机的 但是虚拟机能ping通主机 要先进行以下配置 第一个网卡为NAT Network 在网络配置中 xff0c 新建一个网卡2为桥接网卡 新建共享文件夹 国外一个老哥说的 xff0c 不新建共享文
  • 基于python实现相关模板匹配跟踪之SSDA算法

    基于python实现相关模板匹配跟踪之SSDA算法 1 单张图片匹配 1 1代码 1 2 效果 2 视频跟踪 2 1代码 2 2 效果 2 3 优化思路 3 参考链接 相关模板匹配跟踪和质心跟踪都是传统算法 相较于AI算法 具有极快的处理速
  • AGV小车经典算法设计及应用

    1 AGV小车的发展背景 在现代化工业的发展中 xff0c 提倡高效 xff0c 快速 xff0c 可靠 xff0c 提倡将人从简单的工作中解放出来 机器人逐渐替代了人出现在各个工作岗位上 机器人具有可编程 可协调作业和基于传感器控制等特点
  • 扒完社交网络关系才明白,《权力的游戏》凭什么是神作

    摘要 xff1a 凡人皆有一死 没错 xff0c 但那是 凡人 会数据的 xff0c 都不是凡人 DT君当你看冰火的时候 xff0c 你在看什么 xff1f 作为一个 冰与火之歌 的资深迷弟 xff0c 看到如今的冰火电视 Valar Mo
  • 数字IC设计入门(1)初识电路板和芯片

    本文为入门级同学和零电子基础同学准备 xff0c 有一定电子基础的请直接忽略 xff0c 芯片从本质上说还是电路 xff0c 因此有必要从电路板开始了解芯片工作过程 xff0c 下面将简单介绍一块电脑主机板 电路板已在我们生活中无处不在 x
  • 数电4_4——常见组合逻辑电路(3)数据选择器

    数据选择器 1 1 工作原理1 1 1 电路图1 1 2 写出逻辑表达式 1 1 3 对应真值表 1 2 应用1 2 1 用双四选一设计八选一1 2 2 用数据选择器设计组合逻辑电路1 2 2 1 用四选一实现1 2 2 2 用八选一实现1
  • 机器学习实战之科比数据集分析(随机森林寻最优值参数)

    文章目录 总体思路分为三部1 查看数据 xff0c 对数据进行清洗 xff0c 规约1 1 查看数据1 2 数据清洗 规约1 3 删除不相关的特征1 4 数据one hot处理 2 建立模型 xff0c 挑选出最优参数2 1 准备数据集 训
  • 一文读懂anchor-base和anchor-free

    1 从Faster RCNN看Anchor Faster RCNN相对于Fast RCNN的一个改进是引入了RPN网络 xff0c RPN用于区域推荐 xff0c 替换了此前的SS算法使得网络在整体上更加的CNN化 那么RPN是怎么进行区域
  • 用MATLAB提取字符串中的特定类别(数字等)

    如果一个字符串中包含多种格式的字符 xff0c 想把其中特定的一种提取出来 xff0c 有一个函数可以轻松解决 xff1a TF 61 isstrprop str category 确定输入文本中的字符是否为指定的类别 xff0c 如字母
  • 云计算基础与应用 第三章 云服务器

    以下为自己个人做的笔记 xff0c 不带有商业性质 xff0c 纯粹交流分享学习资料 xff0c 如有侵权 xff0c 请联系作者 xff0c 作者看到会第一时间删除 xff0c 如有侵权敬请见谅 文章目录 3 1 云服务器概述3 2 云服
  • 工作记录:NX系统烧录

    一 固件 BSP下载 https developer nvidia com embedded L4T r32 Release v4 2 t186ref release aarch64 Tegra Linux Sample Root File
  • YOLO v5获取目标的坐标位置,以及将crop融合到全黑背景中

    可能很多人不知道我这个标题后面这句话的含义 xff0c 因为这个场景可能很多地方压根用不到 xff0c 暂时不细说 我是上个月开始接触yolov5 v6 2版本做目标识别的 xff0c 也没有什么深度学习和pytorch的概念 xff0c
  • slam的简单操作以及原理

    slam的原理以及应用 1 新建工作文件夹 使用mkdir命令新建文件夹 slambook和ch1文件夹 xff0c 并利用cd命令进入ch1文件下 xff0c 截图如 2 编写helloslam小程序 使用vim命令创建helloslam
  • 遗传算法实例解析

    遗传算法实例及MATLAB程序解析 遗传算法Genetic Algorithms xff0c GA xff09 是一种基于自然选择原理和自然遗传机制的搜索 xff08 寻优 xff09 算法 xff0c 它是模拟自然界中的生命进化机制 xf
  • nginx 反向代理 获取客户端真实IP和域名以供日志分析

    场景 xff1a 客户网站或者移动APP在请求到达后端服务之前 xff0c 会经过层层代理的转发 典型的是CDN xff08 反向代理 43 Squid缓存 xff09 xff0c 如果是带有安全或者WAF功能的则结构要更为复杂些 一般的解
  • Linux服务器上安装配置VNC Server

    前言 项目需要在Linux上进行数据抽取的相关任务 xff0c 使用的是Kettle这一ETL工具 xff0c 但是服务器就一个主机 xff0c 这里对应Kettle的job和trans等相关配置就无法进行 xff0c 所以需要使用远程图形
  • 几种简单的插值方法与实例

    插值方法及MATLAB实例解析 插值 xff1a 已知有限个已知数据点 xff0c 求得的插值函数必须过这些点 xff0c 然后在这个范围内用插值函数求得未知数据点的值 拟合 xff1a 已知有限个已知数据点 xff0c 但拟合函数不用过每
  • 模拟退火算法及实例解析

    模拟退火算法及MATLAB实例 同遗传算法一样 xff0c 模拟退火算法也是现代优化算法的一种 他对于解决组合优化问题 xff0c 如TSP xff0c JSP等问题效果较好 关于模拟退火算法的详细介绍 xff0c 可以参考这里模拟退火算法