当前位置: 首页 > news >正文

遗传算法求解旅行商问题分析

目录

一、问题分析

二、实现步骤

1)初始化种群

2)计算适应度

 3)选择操作

4)交叉操作

5)变异操作

三、求解结果

四、总结 


本文通过一个经典的旅行商问题,详细阐述在实际问题中如何运用遗传算法来进行分析求解。

一、问题分析

       旅行商问题抽象为数学描述为,在平面内有有限个点,寻找一条路径穿过所有点,使路径长度最短。这个问题描述很简单,其实想要求解也很简单,因为途径所有点的路径数量是有限的,我们可以采用穷举法计算每一条路径的距离值,然后得到最短路径。但是采用穷举法的可行性不高,当我们要途径几十个点时,所有路径的总数是n!,这是一个非常庞大的数字,穷举已经不现实。因此我们选择采用其他智能优化算法来求解该问题。

       那么应该如何选择计算方法呢?从上面的分析中我们已经知道,这是一个求解最优解问题,我们还知道这个问题的解是有限范围的,因此我们可以选择遗传算法来求解。下面我们将沿着遗传算法经典步骤,逐步详细说明如何用遗传算法来求解旅行商问题。

二、实现步骤

1)初始化种群

       在初始化种群前,我们首先应考虑如何根据实际问题来设计个体和种群。在旅行商问题中,个体也就是解表征的是一组城市的排列结果,这个解不是单个的数值,而是一个组合。如果我们将每个城市依次编号,那么这个解就是一个N维的向量,向量元素为1到N之间的整数,其中N为城市总数。这个向量非常类似于一个群体中的个体,它已经由基因(城市编号)组成。因此我们可以直接使用这个向量作为群体的个体。初始化群体的代码如下。

       我们定义种群个体数量为100,最大迭代代数为1000,初始种群的大小就是一个100×31(n_cities)的矩阵,n_cities表示个体的基因数,也是城市数量。第一个for循环完成了初始种群的赋值。

    % 遗传算法参数population_size = 100;    % 种群大小max_generations = 1000;    % 最大迭代次数crossover_rate = 0.8;      % 交叉概率mutation_rate = 0.1;       % 变异概率tournament_size = 5;       % 锦标赛选择大小elite_num = 2;             % 精英保留数目% 初始化种群population = zeros(population_size, n_cities);for i = 1:population_sizepopulation(i,:) = randperm(n_cities);end

2)计算适应度

       在旅行商问题中,我们的目标值只有一个,就是路径的距离最短。在得到一个种群之后,我们可以直接计算出种群中每个个体,即每种路径的距离值。显然,距离值越小,适应度越大。因此,可以使用距离的导数来表征个体适应度的大小。具体实现代码如下。distances为已经计算好的两两城市之间的距离,此处直接提出相加即可。

        % 计算适应度fitness = zeros(population_size, 1);for i = 1:population_sizefitness(i) = 1 / calculate_total_distance(population(i,:), distances);end
% 计算路径总长度
function total_dist = calculate_total_distance(path, distances)n = length(path);total_dist = 0;for i = 1:n-1total_dist = total_dist + distances(path(i), path(i+1));endtotal_dist = total_dist + distances(path(end), path(1));
end

 3)选择操作

       此处采用锦标赛法选择需要继承的父代。该方法的思想是随机从种群中抽取部分个体,然后将这部分个体中适应度最高的个体传递给下一代。此处直接选择两个父代的个体,以便直接进行后续的交叉和变异操作。

% 锦标赛选择父代
parent1 = tournament_selection(population, fitness, tournament_size);
parent2 = tournament_selection(population, fitness, tournament_size);
% 锦标赛选择
function selected = tournament_selection(population, fitness, tournament_size)candidates = randperm(size(population,1), tournament_size);[~, idx] = max(fitness(candidates));selected = population(candidates(idx), :);
end

4)交叉操作

        直接对选出的两个父代个体执行交叉操作。此处采用的交叉方法为顺序交叉法,其算法思想如下图所示。首先随机得到一个交叉区域,将个体P1中该区域的元素赋给新个体child1的对应区域位置,然后将P2以交叉区域后边界分为前后两段,并将前后两段互换位置得到一个新的片段,当然这个片段中删除了交叉区域中已经存在的元素,然后再将这个片段分别赋给child1的两端,不要覆盖交叉区域。这样就得到了交叉后的第一个新个体,然后交换P1和P2角色,执行上述操作,得到child2第二个个体,这样交叉操作就完成了。

% 交叉
if rand < crossover_rate[child1, child2] = ox_crossover(parent1, parent2);
elsechild1 = parent1;child2 = parent2;
end
% 顺序交叉 (OX)
function [child1, child2] = ox_crossover(parent1, parent2)n = length(parent1);points = sort(randperm(n, 2));start = points(1);end_ = points(2);% 子代1segment1 = parent1(start:end_);remaining = [];for i = [end_+1:n, 1:end_]city = parent2(i);if ~ismember(city, segment1)remaining = [remaining, city];endendchild1 = zeros(1, n);child1(start:end_) = segment1;child1([1:start-1, end_+1:n]) = remaining(1:n - (end_ - start + 1));  % 子代2segment2 = parent2(start:end_);remaining = [];for i = [end_+1:n, 1:end_]city = parent1(i);if ~ismember(city, segment2)remaining = [remaining, city];endendchild2 = zeros(1, n);child2(start:end_) = segment2;child2([1:start-1, end_+1:n]) = remaining(1:n - (end_ - start + 1));
end

5)变异操作

       此处变异使用简单的交换操作,即交换个体中任意两个位置的元素。具体实现代码如下,首先随机产生一个随机数,判断是否满足可变异概率,然后在随机生成两个位置,将这两个位置的元素进行交换即可。

% 变异
child1 = mutate(child1, mutation_rate);
child2 = mutate(child2, mutation_rate);
% 变异(交换)
function mutated = mutate(individual, mutation_rate)mutated = individual;if rand < mutation_raten = length(individual);pos = randperm(n, 2);mutated(pos(1)) = individual(pos(2));mutated(pos(2)) = individual(pos(1));end
end

三、求解结果

程序完整实现代码在这里。最终求解结果如下图所示,得到的最优距离为15598。

四、总结 

       通过遗传算法求解旅行商问题流程可知,遗传算法的各项具体操作实现方法不是固定不变的,需要根据实际问题分析处理。即使使用本文提供的实际程序计算,每次迭代计算得到的结果也是不一样的。旅行商问题本质上是一个排列问题,且越接近最优解时,解相邻元素的排列顺序越接近。根据这一特性,我们在进行交叉、变异产生新个体时就需要设计合适的算法实现,减小对排列顺序大幅度调整的概率。因此,我们以非常小的概率控制变异发生,在交叉过程中使用分段交叉,尽量保持相邻元素的排列顺序。总之,在遗传算法产生新的子代群体过程中,我们应尽量避免产生大量与上一代差异较大的个体,当然也尽可能保留少量差异大的个体,使种群始终向最优解方向缓慢进化,避免算法不收敛或陷入局部最优解中。

相关文章:

遗传算法求解旅行商问题分析

目录 一、问题分析 二、实现步骤 1&#xff09;初始化种群 2&#xff09;计算适应度 3&#xff09;选择操作 4&#xff09;交叉操作 5&#xff09;变异操作 三、求解结果 四、总结 本文通过一个经典的旅行商问题&#xff0c;详细阐述在实际问题中如何运用遗传算法来进…...

【Hadoop】伪分布式安装

【Hadoop】伪分布式安装 什么是 Hadoop 伪分布式安装&#xff1f; Hadoop 伪分布式安装&#xff08;Pseudo-Distributed Mode&#xff09; 是一种在单台机器上模拟分布式集群环境的部署方式。它是介于 本地模式&#xff08;Local Mode&#xff09; 和 完全分布式模式&#xf…...

微服务概述

什么是微服务 微服务是一个架构方案,属于分布式架构的一种。 微服务提倡将模块以独立服务的方式独立管理,整个项目依靠多个小型的服务(单独进程)同时运作来支撑,单个服务只关注自己的业务实现并且有专业的团队进行开发。服务之间使用轻量的协议进行消息传送,并且对于单个…...

【网工】华为配置基础篇①

目录 ■华为设备登录配置 ■VLAN与VLANIF地址配置 ■DHCP配置命令 ■ACL访问控制列表配置 ■NAT地址转换配置 ■华为设备登录配置 <AR> system-view //进入系统模式 [AR]sysname Huawei //设备命名为Huawei [Huawei] telnet server enable //开启设备telnet功…...

React19源码系列之 Diff算法

在之前文章中root.render执行的过程&#xff0c;beginWork函数是渲染过程的核心&#xff0c;其针对不同类型的fiber进行不同的更新处理&#xff0c;在FunctionComponent&#xff08;函数组件&#xff09;中&#xff0c;会针对新旧fiber进行对比处理生成新fiber。因此此次就详细…...

华为2024年报:鸿蒙生态正在取得历史性突破

华为于2025年03月31日发布2024年年度报告。报告显示&#xff0c;华为经营结果符合预期&#xff0c;实现全球销售收入 8,621 亿元人民币&#xff0c;净利润 626 亿元人民币。2024 年研发投入达到 1,797 亿元人民币&#xff0c;约占全年收入的 20.8%&#xff0c;近十年累计投入的…...

如何在Firefox火狐浏览器里-安装梦精灵AI提示词管理工具

第一步&#xff1a;进入《梦精灵跨平台AI提示词管理工具》官网 梦精灵 跨平台AI提示词管理助手 - 官网梦精灵是一款专为AI用户打造的跨平台提示词管理插件&#xff0c;支持一键收藏、快速复制、智能分类等功能&#xff0c;适用于即梦、豆包、Kimi、DeepSeek等多个AI平台&…...

【鸿蒙开发】性能优化

语言层面的优化 使用明确的数据类型&#xff0c;避免使用模糊的数据类型&#xff0c;例如ESObject。 使用AOT模式 AOT就是提前编译&#xff0c;将字节码提前编译成机器码&#xff0c;这样可以充分优化&#xff0c;从而加快执行速度。 未启用AOT时&#xff0c;一边运行一边进…...

Makefile与CMake

一、Makefile 核心内容 1. Makefile 基础结构与工作原理 三要素&#xff1a; 目标&#xff08;Target&#xff09;&#xff1a;要生成的文件或执行的操作&#xff08;如可执行文件、清理操作&#xff09;。依赖&#xff08;Dependency&#xff09;&#xff1a;生成目标所需的…...

P8803 [蓝桥杯 2022 国 B] 费用报销

P8803 [蓝桥杯 2022 国 B] 费用报销 - 洛谷 题目描述 小明在出差结束后返回了公司所在的城市&#xff0c;在填写差旅报销申请时&#xff0c;粗心的小明发现自己弄丢了出差过程中的票据。 为了弥补小明的损失&#xff0c;公司同意小明用别的票据进行报销&#xff0c;但是公司财…...

11 web 自动化之 DDT 数据驱动详解

文章目录 一、DDT 数据驱动介绍二、实战 一、DDT 数据驱动介绍 数据驱动&#xff1a; 现在主流的设计模式之一&#xff08;以数据驱动测试&#xff09; 结合 unittest 框架如何实现数据驱动&#xff1f; ddt 模块实现 数据驱动的意义&#xff1a; 通过不同的数据对同一脚本实现…...

15:00开始面试,15:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到4月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

深入理解浏览器渲染引擎:底层机制与性能优化实战

现代浏览器背后是一个庞大而复杂的系统工程&#xff0c;渲染引擎作为核心模块之一&#xff0c;承担着从解析 HTML/CSS 到最终绘制页面的关键职责。本文将从底层机制出发&#xff0c;系统梳理渲染引擎&#xff08;如 Blink&#xff09;工作原理、V8 与渲染流程的协作方式&#x…...

【LeetCode 热题 100】56. 合并区间 —— 一文弄懂排序+遍历经典解法(附Python代码)

📌 题目链接 LeetCode 56. 合并区间 📖 一、引言:区间合并,刷题路上的绊脚石? 区间类问题是算法面试中常见的经典题型,尤其是“合并区间”问题,考察你对排序、区间重叠判断及边界处理的理解和编码能力。 很多同学在面对这题时,容易卡在: 什么时候两个区间算重叠?…...

使用Mathematica绘制Clifford奇异吸引子

Clifford Attractors 是一种由微分方程 生成的混沌吸引子&#xff0c;参数a,b,c,d不同会产生不同的分形图案。这类吸引子属于迭代函数系统&#xff0c;通过不断迭代参数方程来生成复杂的图形。其数学基础可能与 Clifford 代数或高维函数理论相关&#xff0c;例如 Clifford 代数…...

各个历史版本mysql/tomcat/Redis/Jdk/Apache下载地址

mysql 各版本下载地址&#xff1a; https://downloads.mysql.com/archives/community/ **************************************************************** tomcat 各版本下载地址&#xff1a; https://archive.apache.org/dist/tomcat/ ********************************…...

全面解析机器学习与深度学习中的模型权重文件格式与应用场景

概述 随着机器学习和人工智能技术的飞速发展&#xff0c;高效且安全地存储、共享和部署训练有素的模型的方法变得越来越重要。模型权重文件格式在这个过程中发挥着关键作用。这些格式不仅保存了模型的学习参数&#xff0c;还能够实现可复现性&#xff0c;并且便于在各种不同环…...

鸿蒙OSUniApp 实现的地图定位与导航功能#三方框架 #Uniapp

UniApp 实现的地图定位与导航功能 随着移动互联网的发展&#xff0c;地图定位与导航功能已成为众多应用的标配。本文将详细介绍如何在 UniApp 框架下实现地图定位与导航功能&#xff0c;并探讨如何适配鸿蒙系统&#xff0c;助力开发者打造更加流畅的地图体验。 前言 最近在做一…...

【HarmonyOS 5】鸿蒙星闪NearLink详解

【HarmonyOS 5】鸿蒙星闪NearLink详解 一、前言 鸿蒙星闪NearLink Kit 是 HarmonyOS 提供的短距离通信服务&#xff0c;支持星闪设备间的连接、数据交互。例如&#xff0c;手机可作为中心设备与外围设备&#xff08;如鼠标、手写笔、智能家电、车钥匙等&#xff09;通过星闪进…...

Java并发编程面试题总结

目录 线程有哪几种状态?状态如何流转? 创建线程的方式? 多线程有什么应用? 线程池的好处? 线程池的七个参数? 为什么不推荐使用jdk的Executors创建线程池? 线程池的执行流程? 任务拒绝策略有哪些&#xff0c;怎么选择? 线程池的核心线程数和最大线程数怎么设定…...

LAMP项目部署实战

一、LAMP部署前期准备 1.1 关闭防火墙 # systemctl stop firewalld # systemctl disable firewalld 1.2 关闭SELinux SELinux(Security-EnhancedLinux)是美国国家安全局&#xff08;NSA&#xff09;对于强制访问控制的实现&#xff0c;是Linux历史上最杰出的新安全子系统。 …...

Dify与n8n全面对比指南:AI应用开发与工作流自动化平台选择【2025最新】

Dify与n8n全面对比指南&#xff1a;AI应用开发与工作流自动化平台选择【2025最新】 随着AI技术与自动化工具的迅速发展&#xff0c;开发者和企业面临着多种平台选择。Dify和n8n作为两个备受关注的自动化平台&#xff0c;分别专注于不同领域&#xff1a;Dify主要面向AI应用开发&…...

VBA_NZ系列工具NZ10:VBA压缩与解压工具

我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到数据库&#xff0c;到字典&#xff0c;到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑&#xff0c;这么多知识点该如何组织…...

EFT不过整改思路与调试经验

EFT是如何影响EUT的&#xff1a; EFT试验是为了验证电气和电子设备对诸如来自切换瞬态过程(切断感性负载、继电器触点弹跳等)的各种类型瞬变骚扰的抗扰度。EFT干扰是在电路中感性负载断开时产生的&#xff0c;它的特点是干扰信号不是单个脉而是一连串的脉冲群。EFT 干扰可以在…...

2.安卓逆向2-adb指令

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取码&#xff1…...

VSCode CMake工作流

Foreword 之前看到CMake有这么多选项&#xff0c;感觉不简单&#xff0c;还是看下别人在这里设计了多少东西 CMake 整体来说CMake遵循这样一套结构 操作-操作预设&#xff08;如果有的话&#xff09;-操作目标&#xff08;如果有的话&#xff09;比如 Configure-Configure…...

【上位机——WPF】App.xml和Application类简介

App.xml和Application类简介 概述App.xamlApp.xaml.cs 入门代码App.xamlMainWindow.xml Application生命周期窗体的声明周期 概述 xaml类型的文件包含两部分&#xff0c;一部分以.xaml扩展名结尾的前端代码&#xff0c;另一部分以.xaml.cs结尾的后端代码&#xff0c;通常我们也…...

MySQL 8.0 OCP 1Z0-908 101-110题

Q101.which two queries are examples of successful SQL injection attacks? A.SELECT id, name FROM backup_before WHERE name‘; DROP TABLE injection; --’; B. SELECT id, name FROM user WHERE id23 oR id32 OR 11; C. SELECT id, name FROM user WHERE user.id (SEL…...

Linux/Centos7离线安装并配置MySQL 5.7

文章目录 前言1、安装包下载2、卸载MariaDB3、创建MySQL用户4、上传安装包5、创建数据目录和配置文件6、安装MySQL7、启动MySQL8、初始化MySQL9、退出验证新密码10、创建普通用户和库11、测试普通用户和库总结 前言 博主参考了一些大佬的文章&#xff0c;部分收费的就看不了了&…...

在Angular中使用Leaflet构建地图应用

Leaflet是一个用于创建地图的JavaScript库&#xff0c;它包含许多功能&#xff0c;并且非常适用于移动设备。 准备 nodejs: v20.15.0 npm: 10.7.0 angular: 19.2.10 创建一个地图应用工程 npx angular/cli new my-leaflet-app --stylecss --routingfalse --skip-tests提示 …...

GPU与NPU异构计算任务划分算法研究:基于强化学习的Transformer负载均衡实践

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;H卡级别算力&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生专属优惠。 引言 在边缘计算与AI推理场景中&#xff0c;GPU-NPU异构计算架构已成为突破算力瓶颈的关键技…...

iOS 抓包实战:从 Charles 到Sniffmaster 的日常工具对比与使用经验

iOS 抓包实战&#xff1a;从 Charles 到抓包大师 Sniffmaster 的日常工具对比与使用经验 抓包这件事&#xff0c;不是高级黑客才要做的。作为一名移动端开发&#xff0c;我几乎每天都要和网络请求打交道&#xff0c;尤其是 HTTPS 请求——加密、重定向、校验证书&#xff0c;各…...

【微服务】SpringBoot + Docker 实现微服务容器多节点负载均衡详解

目录 一、前言 二、前置准备 2.1 基本环境 2.2 准备一个springboot工程 2.2.1 准备几个测试接口 2.3 准备Dockerfile文件 2.4 打包上传到服务器 三、制作微服务镜像与运行服务镜像 3.1 拷贝Dockerfile文件到服务器 3.2 制作服务镜像 3.3 启动镜像服务 3.4 访问一下服…...

【Linux系统】从 C 语言文件操作到系统调用的核心原理

文章目录 前言lesson 15_基础IO一、共识原理二、回顾C语言接口2.1 文件的打开操作2.2 文件的读取与写入操作2.3 三个标准输入输出流 三、过渡到系统&#xff0c;认识文件系统调用3.1 open 系统调用1. 比特位标志位示例 3.2 write 系统调用1. 模拟实现 w 选项2. 模拟实现 a 选项…...

俄罗斯方块算法

俄罗斯方块是一款风靡全球 38 年的经典益智游戏&#xff0c;凭借其简单易学但难于精通的特点&#xff0c;成为游戏史上的不朽之作。 游戏界面与规则 游戏界面为 20 行10 列的可视区域。横向 X 轴区间为 [0&#xff0c;9]&#xff0c;共 10 列&#xff1b;纵向 Y 轴区间为 [0&a…...

Node.js 循环依赖问题详解:原理、案例与解决方案

文章目录 一、什么是循环依赖&#xff1f;二、循环依赖的典型表现三、解决方案四、如何检测循环依赖五、循环依赖的隐藏危害 一、什么是循环依赖&#xff1f; 当两个或者多个模块互相直接或者间接引用时&#xff0c;就会形成循环依赖。例如&#xff1a; A.js → 依赖 → B.js…...

Linux系统编程——vfork函数的使用方法以及与fork函数的区别

vfork() 是 Linux 系统编程中与 fork() 类似的系统调用&#xff0c;用于创建一个新的子进程。它们都能创建子进程&#xff0c;但在实现机制和使用场景上有明显区别。 以下是对 vfork() 的详细介绍&#xff0c;包括&#xff1a; 使用方法 注意事项 与 fork() 的联系与区别 使…...

.NET 无侵入自动化探针原理与主流实现详解

目录 引言 一、.NET 无侵入自动化探针的原理 1.1 CLR Profiling API 核心机制 示例代码 1.2 CLR Instrumentation 核心机制 示例代码 1.3 反射和动态代理 核心机制 示例代码 1.4 DiagnosticSource 核心机制 示例代码 二、主流实现与工具 2.1 AppDynamics 实现原…...

大数据:新能源汽车宇宙的未来曲率引擎

** 发布日期&#xff1a;2025-05-14** 关键词&#xff1a;大数据、新能源、机器学习、碳中和、CSDN爆款 1. 大数据科普&#xff1a;定义、特征与技术核心 1.1 什么是大数据&#xff1f; 大数据&#xff08;Big Data&#xff09;指规模巨大、类型多样、生成速度快且价值密度低…...

创建你的第一个MCP服务

创建你的第一个MCP服务 Model Context Protocol (MCP) 中国天气查询服务创建教程 什么是 Model Context Protocol (MCP) Model Context Protocol (MCP) 是一种开放标准协议&#xff0c;允许大型语言模型&#xff08;LLM&#xff09;如 Claude 与外部系统和数据源进行交互。通…...

说一说Node.js高性能开发中的I/O操作

众所周知&#xff0c;在软件开发的领域中&#xff0c;输入输出&#xff08;I/O&#xff09;操作是程序与外部世界交互的重要环节&#xff0c;比如从文件读取数据、向网络发送请求等。这段时间&#xff0c;也指导项目中一些项目的开发工作&#xff0c;发现在Node.js运用中&#…...

小白入门:GitHub 远程仓库使用全攻略

一、Git 核心概念 1. 三个工作区域 工作区&#xff08;Working Directory&#xff09;&#xff1a;实际编辑文件的地方。 暂存区&#xff08;Staging Area&#xff09;&#xff1a;准备提交的文件集合&#xff08;使用git add操作&#xff09;。 本地仓库&#xff08;Local…...

Protobuf3协议关键字详解与应用实例

一、核心语法与基础关键字 syntax 声明协议版本&#xff0c;必须为文件的第一行非空、非注释内容。 syntax "proto3"; // 显式指定proto3语法&#xff0c;否则编译器默认使用proto2message 定义消息类型&#xff0c;包含一组结构化字段。支持嵌套消息定义&#xff…...

阿克曼-幻宇机器人系列教程3- 机器人交互实践(Message)

上一篇文章介绍了如何通过topic操作命令实现与机器人的交互&#xff0c;本篇我们介绍如何通过Message&#xff08;即topic的下一级&#xff09;实现与机器人的交互。 和topic一样&#xff0c;首先在一个终端通过ssh命令登录机器人、启动机器人&#xff0c;然后打开另外一个终端…...

Leetcode刷题 | Day63_图论08_拓扑排序

一、学习任务 拓扑排序代码随想录 二、具体题目 1.拓扑排序117. 软件构建 【题目描述】 某个大型软件项目的构建系统拥有 N 个文件&#xff0c;文件编号从 0 到 N - 1&#xff0c;在这些文件中&#xff0c;某些文件依赖于其他文件的内容&#xff0c;这意味着如果文件 A 依…...

[Harmony]获取资源文件中.txt文件中的字符串

txt文件 src/main/resources/rawfile/userInfo.txt {"Code": 200,"Msg": "登录成功","RetData": {"Name": "shq","Phone": "18511111111","PostName": "按摩技师",&qu…...

matlab多项式

1. 多项式表示 多项式用行向量表示&#xff0c;按降幂排列系数。例如&#xff0c;多项式 3x22x1 表示为 [3 2 1]。 2. 创建多项式 直接输入系数&#xff1a;如 p [1 -3 3 -1] 表示 x3−3x23x−1。由根创建&#xff1a;使用 poly 函数。例如&#xff0c;根为 [1, 1, 1]&…...

手搓传染病模型(SEI - SEIAR )

在传染病防控的前沿研究中&#xff0c;构建精准的数学模型对于理解疾病传播机制、预测疫情走势以及制定有效干预策略至关重要。SEI - SEIAR 模型&#xff08;易感媒介 \(S_m\) - 潜伏媒介 \(E_m\) - 感染媒介 \(I_m\) - 易感人群 S - 潜伏人群 E - 有症状感染者 I - 无症状感染…...

Ubuntu 安装 Redis

1. 下载 redis 下载地址&#xff1a;https://github.com/redis/redis 2. 解压 redis 把下载的软件包&#xff0c;上传到服务器的 /usr/local 目录中&#xff0c;执行解压命令 tar -zxvf redis-8.0.1.tar.gz 3. 安装 redis 安装依赖 sudo apt-get updatesudo apt-get ins…...

【QGIS二次开发】地图显示与交互-03

系列目录&#xff1a; 【QGIS二次开发】地图显示与交互-01_qgis二次开发加载地图案例-CSDN博客 【QGIS二次开发】地图显示与交互-02_setlayerlabeling-CSDN博客 3. 地图符号与色表 3.1 矢量图层符号设置 任务要求&#xff1a;双击图层树节点&#xff0c;实现图层中图元的符…...