启发式算法-模拟退火算法
模拟退火算法是一种基于概率的启发式优化算法,用于解决大规模组合优化问题,其灵感来源于金属退火过程中的物理现象。其基本原理是从一个初始解开始,然后在当前解的邻域内随机生成一个新解,如果新解的目标函数值优于当前解,那么就将新解作为当前解,如果新解的目标函数值比当前解差,那么以一定的概率选择新解,这个概率随着算法的进行而逐渐降低,类似于退火过程中温度逐渐降低,物质逐渐趋于稳定状态,通过这种方式算法可以在一定程度上避免陷入局部最优解,搜索到全局最优解。
算法流程
旅行商问题
有 10 个城市A、B、C、D、E…J,旅行商需要从一个城市出发,遍历所有城市且每个城市只经过一次,最后回到起始城市,要求找到最短的旅行路线,城市距离矩阵如下,最优路线 H->I->E->A->G->B->D->F->C->J->H
模拟退火代码
public class SATSP {// 城市数量private static final int NUM_CITIES = 10;// 初始温度private static final double INITIAL_TEMPERATURE = 1000;// 冷却率private static final double COOLING_RATE = 0.99;// 终止温度private static final double FINAL_TEMPERATURE = 0.1;// 城市距离矩阵private static int[][] distanceMatrix;public static void main(String[] args) {// 初始化距离矩阵initializeDistanceMatrix();// 初始化路线List<Integer> currentRoute = generateInitialRoute();// 计算当前路线的距离double currentDistance = calculateDistance(currentRoute);// 初始温度double temperature = INITIAL_TEMPERATURE;// 记录最优路线List<Integer> bestRoute = new ArrayList<>(currentRoute);double bestDistance = currentDistance;// 模拟退火过程while (temperature > FINAL_TEMPERATURE) {// 生成新的邻域路线List<Integer> newRoute = getNeighborRoute(currentRoute);// 计算新路线的距离double newDistance = calculateDistance(newRoute);// 计算距离差double deltaDistance = newDistance - currentDistance;// 如果新路线更优或者满足概率条件,则接受新路线if (deltaDistance < 0 || Math.exp(-deltaDistance / temperature) > Math.random()) {currentRoute = newRoute;currentDistance = newDistance;}// 如果新路线是目前最优的,更新最优路线if (currentDistance < bestDistance) {bestRoute = new ArrayList<>(currentRoute);bestDistance = currentDistance;}// 降温temperature *= COOLING_RATE;}// 输出具体路线String routeString = convertRouteToLetters(bestRoute);System.out.println("最优路线: " + routeString);System.out.println("最短距离: " + bestDistance);}// 初始化距离矩阵private static void initializeDistanceMatrix() {distanceMatrix = new int[NUM_CITIES][NUM_CITIES];Random random = new Random();for (int i = 0; i < NUM_CITIES; i++) {for (int j = 0; j < NUM_CITIES; j++) {if (i == j) {distanceMatrix[i][j] = 0;} else {// 随机生成城市之间的整数距离distanceMatrix[i][j] = random.nextInt(100);distanceMatrix[j][i] = distanceMatrix[i][j];}}}// 距离矩阵System.out.println("城市距离矩阵:");System.out.print(" ");for (int i = 0; i < NUM_CITIES; i++) {System.out.print((char) ('A' + i) + " ");}System.out.println();for (int i = 0; i < NUM_CITIES; i++) {System.out.print((char) ('A' + i) + " ");for (int j = 0; j < NUM_CITIES; j++) {System.out.printf("%2d ", distanceMatrix[i][j]);}System.out.println();}}// 生成初始路线private static List<Integer> generateInitialRoute() {List<Integer> route = new ArrayList<>();for (int i = 0; i < NUM_CITIES; i++) {route.add(i);}// 生成初始路线Collections.shuffle(route);return route;}// 计算路线的总距离private static double calculateDistance(List<Integer> route) {double distance = 0;for (int i = 0; i < route.size() - 1; i++) {int from = route.get(i);int to = route.get(i + 1);distance += distanceMatrix[from][to];}// 回到起点distance += distanceMatrix[route.get(route.size() - 1)][route.get(0)];return distance;}// 生成邻域路线private static List<Integer> getNeighborRoute(List<Integer> route) {List<Integer> newRoute = new ArrayList<>(route);Random random = new Random();int index1 = random.nextInt(NUM_CITIES);int index2 = random.nextInt(NUM_CITIES);// 交换两个城市的位置Collections.swap(newRoute, index1, index2);return newRoute;}private static String convertRouteToLetters(List<Integer> route) {StringBuilder sb = new StringBuilder();for (int i = 0; i < route.size(); i++) {char city = (char) ('A' + route.get(i));sb.append(city);if (i < route.size() - 1) {sb.append("->");}}// 回到起点char startCity = (char) ('A' + route.get(0));sb.append("->").append(startCity);return sb.toString();}
}
相关文章:
启发式算法-模拟退火算法
模拟退火算法是一种基于概率的启发式优化算法,用于解决大规模组合优化问题,其灵感来源于金属退火过程中的物理现象。其基本原理是从一个初始解开始,然后在当前解的邻域内随机生成一个新解,如果新解的目标函数值优于当前解…...
机器视觉框架源码——解读3(常用的资源和样式)
这是关于框架解读的第三篇文章,将结合理论和框架代码进行讲解。 WPF中的各类工件元素,都可以设置其样式,如: 字体(FontFamily) 字体大小(FontSize) 背景颜色(Backgroud) 字体颜色(Foreground) 边距(Margin) 水平位置(HorizontalAlignment) 垂直位置(VerticalAlignment) 而样…...
勒索病毒肆虐时代:数据库加密存储的实践指南
在2025年第一季度,全球勒索攻击损失突破150亿美元,某跨国制造企业因数据库未加密被勒索3000枚比特币,某省级医保系统遭攻击导致参保人信息泄露……当医疗数据、金融资产、知识产权成为黑客的提款机,数据库加密已从技术选项升级为生…...
next中的server comonent中如何共享session
在 Next.js 的服务器组件(Server Components)里共享会话(session),可以借助第三方库(如 next-auth 或 express-session 结合自定义 API 路由)来实现,下面为你详细介绍这两种常见的实…...
Desfire Ev1\Ev2\Ev3卡DES\3K3DES\AES加解密读写VB.Net示例源码
本示例使用发卡器:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1bSxJTb6&ftt&id917152255720 Public Class Form1Public Declare Function pcdbeep Lib "OUR_MIFARE.dll" (ByVal xms As Integer) As BytePublic Declare Fu…...
商业实战将归巢网内容构建为本地RAG模型的完整指南01-优雅草卓伊凡
商业实战将归巢网内容构建为本地RAG模型的完整指南01-优雅草卓伊凡 今天卓伊凡收到了老客户归巢网关于对本地RAG模型建立的咨询,这点也让卓伊凡得深入研究下,毕竟老客户肯定不是说着玩的,主要最终实现目的是建立模型开始使用AI智能问答。 一…...
langchain4j整合springboot
环境介绍 JDK17Spring Boot: 3.0.2 创建springboot工程 IDEA新建一个springboot项目,使用Spring lnitializr快速构建。 选择Spring Boot: 3.0.2以及Spring Web依赖 添加maven依赖 创建完springboot项目之后,在pom中添加关键依赖 <properties&g…...
在线时间戳转换工具
给大家推荐一个在线时间戳转换工具 点击跳转-鸽鸽在线工具 这个工具除了时间戳转换,到首页还能选择使用很多其他小工具,欢迎使用...
Codeforces Round 1023 (Div. 2) (A-D)
每周至少五篇博客:(1/5) A. LRC and VIP 题意 您有一个大小 n n n 的数组 a a a - a 1 , a 2 , … a n a_1, a_2, \ldots a_n a1,a2,…an 。 您需要将 n n n 元素分为 2 2 2 序列 B B B 和 C C C ,以满足以下条件: 每个元素…...
[Survey]Remote Sensing Temporal Vision-Language Models: A Comprehensive Survey
BaseInfo TitleRemote Sensing Temporal Vision-Language Models: A Comprehensive SurveyAdresshttps://arxiv.org/abs/2412.02573Journal/Time2024 arxivAuthor北航 上海AI LabCodehttps://github.com/Chen-Yang-Liu/Awesome-RS-Temporal-VLM 1. Introduction 传统遥感局限…...
Linux56 YUM源配置
epel未启动 显示系统未通过注册 配置YUM仓库 本地YUM仓库 1.备份 tar -zcf repo.tar.gz *.repo 2.挂载 mount -o ro /dev/sr0 /mnt 3.开机自启 chmod x /etc/rc.local echo ‘mount -o ro /dec/sr0 /mnt’ /etc/rc.local 4.编写本地YUM仓库 local.repo [local] namelocal yum …...
mysql 如何查询数据库链接日志
1,查看是否开启日志 SHOW GLOBAL VARIABLES LIKE general_log; -- 查看是否开启通用查询日志(包括连接记录) 1.1,假如没开启,可以临时开启,做测试;服务重启,配置失效…...
Element-Plus-X开源程序是Vue3 + Element-Plus 开箱即用的企业级AI组件库前端的解决方案
一、软件介绍 文末提供程序和源码下载 Element-Plus-X开源程序是Vue3 Element-Plus 开箱即用的企业级AI组件库前端的解决方案。 二、核心特性 ✨ 企业级 AI 组件:内置聊天机器人、语音交互等场景化组件🚀 零配置集成:基于 Element-Plus …...
基于DevSecOps敏捷框架的数字供应链安全应解决方案
基于DevSecOps敏捷框架的数字供应链安全应解决方案是以“AI智能代码疫苗技术”深度赋能原创专利级“多模态SCADevSecOpsSBOM情报预警”的第四代DevSecOps数字供应链安全管理体系,在DevSecOps敏捷安全体系建设、数字供应链安全审查、开源供应链安全治理和云原生安全体系建设四大…...
2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛初赛-wp
- -考试当场没做出来 后面做的 misc ❯ cd misc ❯ ls num.docx num.zip ❯ unzip num.docx Archive: num.docxinflating: [Content_Types].xmlinflating: _rels/.relsinflating: word/document.xmlinflating: word/_rels/document.xml.relsextracting: word/media/image1.jp…...
2、实验室测控系统 - /自动化与控制组件/lab-monitoring-system
76个工业组件库示例汇总 实验室测控系统开发组件 这是一个专为实验室设备数据采集与分析设计的可视化测控系统组件。采用工业风格界面设计,提供了丰富的动态数据展示与分析功能,可应用于各类实验室环境中的设备监控和数据处理。 功能特点 多设备管理…...
Blender插件机制设计与Python实现
Blender插件机制设计与Python实现 Blender的插件机制是其强大扩展性的核心,允许开发者通过Python创建自定义功能。下面我将详细介绍Blender插件系统的设计原理,并提供一个完整的示例。 Blender插件系统设计原理 模块化架构:Blender将插件作…...
自定义一个 Spring Boot Starter -笔记
SpringBoot Starter的介绍参考: Spring Boot Starter简介-笔记-CSDN博客。这里介绍如何自定义一个springBoot Starter。 1. 项目结构 创建一个 Maven 项目,结构如下: custom-spring-boot-starter-demo/ ├── custom-hello-jdk/ # jdk模…...
【Part 2安卓原生360°VR播放器开发实战】第三节|实现VR视频播放与时间轴同步控制
《VR 360全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360全景视频制作与优化,以及高分辨率视频性能优化等实战技巧。 📝 希望通过这个专栏&am…...
读 书 说
好久没有坐下来手敲打字去输出或者记录分享一些比较正式的事情。 今天节后综合征,虽然我已经加了两天班了,但是还是不想加班便准点下班了。 今天来聊聊看书。 为什么会看书?最开始正如我之前提到过,人脉资源不多,也不…...
DOCX转PDF怎么操作最简单?快速将DOCX转换为专业PDF文档
在日常办公或学习中,我们经常需要将 Word 文档(.docx格式)转换为 PDF 文件。这不仅有助于保持文档格式的一致性,还能确保接收者无需特定软件即可查看文件内容。本文将详细介绍几种常见的方法来实现从 DOCX 到 PDF 的转换ÿ…...
免费轻量化办公pdf修改软件 一键格式转换基础修改到高级加密
各位办公软件小能手们!今天咱来聊聊一款超厉害的 PDF 编辑软件——PDFXEdit。你知道吗,这软件就像个 PDF 处理的超级魔法师,能全方位搞定 PDF 文档。下面我就给大家详细说说它的那些功能和适用场景。 首先是基础编辑功能。这软件在文本与图像…...
【HFP】蓝牙语音通信高级功能解析:快速拨号与呼叫等待协议实现
在蓝牙语音通信系统中,除了基础的通话建立与控制流程,高级功能如快速拨号(内存拨号、最后号码重拨)和呼叫等待通知的实现,直接影响着用户体验的便捷性与系统的实用性。这些功能依赖于蓝牙协议中特定的 AT 命令交互、状…...
CVE-2025-24813:Apache Tomcat RCE 漏洞分析
CVE-2025-24813 是 Apache Tomcat 中的一个严重远程代码执行 (RCE) 漏洞,源于路径等效缺陷,允许攻击者绕过安全约束并远程执行任意代码。 CYFIRMA 的研究发现了一些活跃的漏洞利用,一些 PoC 漏洞在地下论坛上流传。攻击者利用基于 HTTP PUT 的任意文件上传、NTFS 连接漏洞利…...
神经网络之训练的艺术:反向传播与常见问题解决之道
神经网络训练的艺术:反向传播与常见问题解决之道 摘要 神经网络是现代机器学习的核心工具之一,而反向传播则是其训练过程中不可或缺的算法。本文深入探讨了反向传播的工作原理以及在训练过程中常见的问题,如梯度消失、梯度爆炸、死 ReLU 单…...
小土堆pytorch--transform
torchvision中的transform torchvision中的transform1. transforms的使用1.1 transforms的结构及用法理论1.2 相应代码1.3 对上述代码的解释 2. 常见的transforms2.1 python 的call函数2.2 ToTensor的使用2.3 Normalize的使用2.4 Resize的使用2.5 Compose的使用2.6 RandomCrop的…...
【Django】REST 常用类
ModelSerializer serializers.ModelSerializer 是 Django REST framework(DRF)里的一个强大工具,它能极大简化序列化和反序列化 Django 模型实例的流程。下面从多个方面详细介绍它: 1. 基本概念 序列化是把 Django 模型实例转化…...
PyTorch常用命令详解:助力深度学习开发
📌 友情提示: 本文内容由银河易创AI(https://ai.eaigx.com)创作平台的gpt-4-turbo模型生成,旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证,建议读者通过官方文档或实践进一步确认其准…...
第二章 Logback的架构(二)
Logger, Appenders 和 Layouts Appenders 和 Layouts 基于日志记录器选择性地启用或禁用日志记录请求只是其中的一部分功能。Logback允许将日志记录请求输出到多个目标。在Logback术语中,输出目标被称为Appender。 目前,已经存在适用于控制台、文件、远…...
【大数据】服务器上部署Apache Paimon
1. 环境准备 在开始部署之前,请确保服务器满足以下基本要求: 操作系统: 推荐使用 Linux(如 Ubuntu、CentOS)。 Java 环境: Paimon 依赖 Java,推荐安装 JDK 8 或更高版本。 Flink 环境: Paimon 是基于 Apache Flink 的…...
【IP101】图像处理进阶:从直方图均衡化到伽马变换,全面掌握图像增强技术
🌟 图像增强魔法指南 🎨 在图像处理的世界里,增强就像是给图片化妆,让它展现出最佳的状态。让我们一起来探索这些神奇的增强术吧! 📚 目录 基础概念 - 图像增强的"美容院"直方图均衡化 - 光线的…...
【Azure Redis 缓存】关于Azure Cache for Redis 服务在传输和存储键值对(Key/Value)的加密问题
问题描述 Azure Cache for Redis 服务在传输和存储数据时是如何加密呢? 问题回答 一:关于Azure cache for Redis服务在数据传输过程中是如何加密的? 为了确保在Azure cache for Redis和客户端应用程序之间传输的数据安全,需要启用…...
Cursor 被封解决方案
一、注册一个无限邮箱 没事点点广告,让网站活久一点(✪ω✪) 2925邮箱-无限邮2925无限邮箱支持多种客户端收发邮件且数据安全加密多端同步。只需要注册一个账号,就能生成无限多个2925子邮箱账号,同时利用一邮多用功能对多个子邮箱邮件进行集…...
spring上传文件添加水印
1、实现 MultipartFile package com.pojo.common.core.domain;import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream;import org.springframework.lang.Nullable; import org.springframework.util.Assert; im…...
CSS分栏布局
分栏布局将区域划分为若干垂直的栏,子元素放置到栏中,填满一个后再填充下一个。如果设置了 column-count 栏数量或 column-width 栏宽度,元素就成为分栏容器。需要注意, column-width 实际上是最小栏宽度。浏览器使用这个值计算栏…...
通过 ModernBERT 实现零样本分类的性能提升
文本分类 是机器学习中最基础的任务之一,拥有悠久的研究历史和深远的实用价值。更重要的是,它是许多实际项目中不可或缺的组成部分,从搜索引擎到生物医学研究都离不开它。文本分类方法被广泛应用于科学论文分类、用户工单分类、社交媒体情感分…...
【AI】Ubuntu 22.04 4060Ti 16G vllm-api部署Qwen3-8B-FP8
下载模型 # 非常重要,否则容易不兼容报错 pip install modelscope -U cd /data/ai/models modelscope download --model Qwen/Qwen3-8B-FP8 --local_dir ./Qwen3-8B-FP8 安装vllm 创建虚拟环境 mkdir vllm cd vllm/ python -m venv venv ource venv/bin/activat…...
QML ProgressBar控件详解
在 QML 中,ProgressBar 是一个常用的进度条控件,用于显示任务的完成进度。以下是 ProgressBar 的详细用法,包括基本用法、自定义样式、动态绑定数据等。 1. 基本用法 1.1 最简单的 ProgressBar import QtQuick.Controls 2.15ProgressBar {w…...
STM32教程:串口USART通讯协议原理及分析(基于STM32F103C8T6最小系统板标准库开发)*详细教程*
前言: 本文主要介绍了单片机的通讯协议和STM32的串口USART通讯的原理及分析。 通信的目的 将一个设备的数据传送到另一个设备,扩展硬件系统。 通信协议 指定通信的规则,通信双方按照协议规则进行数据收发。 STM32常见通讯协议 各通讯特点 USART: TX(发送)、RX(接…...
EDA文件
不同的EDA软件使用不同的文件扩展名和格式,以下是主流工具对应的文件类型: EDA软件文件扩展名说明Altium Designer.PcbDocAltium专属格式,需用原软件打开,可导出为Gerber或STEP文件用于生产。KiCad.kicad_pcbKiCad项目文件&#…...
【C/C++】构造函数与析构函数
📘 C 构造函数与析构函数详解笔记 🧠 为什么需要构造函数与析构函数? 在 C 中,对象创建和销毁过程如果仅靠手动赋值和清理非常容易出错。为此,语言提供了构造函数和析构函数: 构造函数:用于在…...
在Unity AR应用中实现摄像头切换功能
本教程将详细讲解如何在Unity AR Foundation项目中实现前后摄像头切换功能,并提供完整的代码解析。我们将使用AR Foundation的核心组件和简单的UI交互来实现这一功能。 第一部分:环境准备 1.1 所需组件 Unity 2019.4或更高版本 AR Foundation 4.0+ ARCore XR Plugin(Andro…...
Pycharm(十九)深度学习
一、深度学习概述 1.1 什么是深度学习 深度学习是机器学习中的一种特殊方法,它使用称为神经网络的复杂结构,特别是“深层”的神经网络,来学习和做出预测。深度学习特别适合处理大规模和高维度的数据,如图像、声音和文本。深度学习、机器学习和人工智能之间的关系如下图所…...
状态模式 VS 策略模式
在软件开发的世界里,设计模式如同工匠手中的精良工具,能帮助开发者打造出结构清晰、易于维护和扩展的软件系统。状态模式和策略模式便是其中两个常用却容易让人混淆的设计模式。接下来,我们会详细剖析它们的区别、适用场景,并给出…...
如何在 Ubuntu 24.04 本地安装 DeepSeek ?
在本地 Ubuntu 系统上安装 DeepSeek 可以让您在本地使用高级 AI 功能,从而消除对云服务的依赖需求。 What is DeepSeek? DeepSeek 是一个先进的开源人工智能模型,专为自然语言理解和生成而设计。它提供了类似ChatGPT的强大功能。 Prerequisites: A …...
云计算训练营笔记day02(Linux、计算机网络、进制)
Linux 是一个操作系统 Linux版本 RedHat Rocky Linux CentOS7 Linux Ubuntu Linux Debian Linux Deepin Linux 登录用户 管理员 root a 普通用户 nsd a 打开终端 放大: ctrl shift 缩小: ctrl - 命令行提示符 [rootlocalhost ~]# ~ 家目录 /root 当前登录的用户…...
数据库实验10 函数存储
数据库实验10 一、实验目的 掌握函数和存储过程的定义方法,包括标量函数、表值函数、存储过程的语法结构。理解函数和存储过程的作用及原理,区分标量函数与表值函数的应用场景,掌握存储过程的参数传递、逻辑控制和错误处理机制。能够熟练运…...
SQL Server执行安装python环境
安装注意事项 启用python脚本支持 sp_configure external scripts enabled, 1; RECONFIGURE; 安装后接受 Python EULA协议 接受python授权 setup.exe /qs /ACTIONInstall /FEATURESSQL_INST_MR /INSTANCENAME您的实例名 /IACCEPTROPENLICENSETERMS1 /IACCEPTPYTHONLICENSETE…...
ActiveMQ 安全机制与企业级实践(二)
四、企业级实践案例分析 4.1 案例背景介绍 某大型电商企业拥有复杂的分布式系统,涵盖订单管理、库存管理、物流配送、用户服务等多个核心业务模块。在业务快速发展过程中,系统间的通信量呈爆发式增长,为了实现系统的高效解耦和异步通信&…...
ActiveMQ 安全机制与企业级实践(一)
一、引言 在当今数字化时代,企业级应用的架构愈发复杂,各个系统之间的通信和协作变得至关重要。消息队列作为一种高效的异步通信机制,在企业级应用集成中扮演着关键角色。ActiveMQ 作为一款广泛使用的开源消息中间件,以其丰富的功…...