2024五一杯数学建模竞赛A题完整成品论文和代码分析:建立钢板切割的工艺路径动态规划、贪心与分层优化模型

2024五一杯数学建模竞赛A题:建立钢板切割的工艺路径动态规划、贪心与分层优化模型

2024五一数学建模A题完整代码和成品论文获取↓↓↓↓↓

https://www.yuque.com/u42168770/qv6z0d/gyoz9ou5upvkv6nx?singleDoc#

本文文章较长,建议先目录。经过不懈的奋战,目前我们已经完成了2024五一数学建模竞赛A题的40+页完整论文和代码,相关完整内容可见文末参考,

代码为A题全部问题的代码,论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解(问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解、问题4模型的建立和求解)、模型的评价等等

文章较长,建议可以先看目录,部分图片如下:

摘要

本文针对钢板切割的工艺路径优化问题,从实际工程背景出发,通过分析影响切割路径的各种因素,提出了一系列具有针对性和创新性的数学模型和优化算法,有效地解决了从简单到复杂的一系列钢板切割优化问题。

针对直线切割路径优化问题,本文将其抽象为图论中的最小权重哈密尔顿回路问题,建立了以切割线段为边、切割起点和交点为节点的图模型。在此基础上,设计了一种基于动态规划的精确算法,通过预处理和状态压缩技术,将算法复杂度降低。本文的创新点在于,充分利用了切割路径的几何特征,提出了一种高效实用的动态规划算法,为后续复杂切割路径优化奠定了基础。

在复杂曲线切割优化问题中,本文提出了一种曲线离散化与逼近的方法,通过等距采样将圆弧、椭圆等曲线转化为折线段,从而将复杂切割简化为直线切割。在此基础上,本文设计了一种基于贪心构造和2-opt局部搜索的切割路径优化启发式算法。该算法首先按照贪心策略生成初始解,然后通过局部邻域搜索对解进行迭代改进。本文的一个创新点是,针对复杂切割提出了高效的离散化与局部搜索相结合的策略,在保证求解质量的同时大幅提升了计算效率。(后面的摘要略,见完整版本)

问题重述

由于篇幅有限,对2024五一杯数学建模竞赛A题的问题重述略。下面直接开始问题分析:

问题分析

2024年五一数学建模A题的分析如下

首先,从整体上看,本题目以钢板切割路径优化为背景,提出了一系列具有实际工程意义和挑战性的子问题。这些子问题涉及到切割路径的几何拓扑、切割顺序约束、嵌套零件切割以及"过桥"连接等多个方面,覆盖了切割加工过程中的关键决策和影响因素。

接下来,我们对各个子问题进行逐一分析:

问题1分析

问题1要求在给定的简单切割布局下设计最优切割路径,使得空程总长度最小。这实际上是一个经典的图论问题,即在切割线段构成的无向图中寻找最短哈密顿路径或回路。尽管问题的概念和形式比较简单,但其计算复杂度却非常高,属于NP-hard问题。为了高效地求解这一问题,我们需要根据切割布局的特点和规模,选择适当的优化建模方法和求解算法,如整数规划、动态规划、启发式搜索等 。

问题2分析

问题2在问题1的基础上,引入了更复杂的切割布局,包括锯齿型外轮廓、圆形和椭圆形内轮廓等曲线切割元素。这些曲线切割元素增加了问题的几何复杂度,使得切割路径的拓扑结构和距离度量变得更加多样化和非线性。为了建模和求解这一问题,我们需要将曲线切割元素离散化和线性化,转化为由直线段组成的近似切割布局,然后在此基础上应用问题1的建模和求解方法。同时,我们还需要针对曲线切割元素的特点,设计合适的离散化方案和逼近策略,在保证逼近精度的同时,兼顾计算效率和优化性能。

问题3分析

问题3在问题2的基础上,进一步引入了内部嵌套零件的切割要求,即要求先切割内部的小矩形零件,再切割外部的椭圆轮廓。这实际上是一个具有优先级约束的组合优化问题,需要在切割路径优化的同时,考虑不同切割对象之间的先后顺序和依赖关系。为了建模和求解这一问题,我们可以采用分层优化的思想,将问题分解为两个子问题:内部零件的切割路径优化和外部轮廓的切割路径优化。这两个子问题可以用不同的优化模型和算法来处理,如TSP模型、最短路模型等,并通过迭代和反馈机制来协调它们之间的耦合和互斥关系。

问题4分析

问题4在问题3的基础上,进一步引入了"过桥"的概念,即在相邻的小矩形零件之间设置一定宽度的连接区域,以防止切割后零件掉落。"过桥"的引入不仅增加了切割路径优化的难度,还带来了新的决策变量和约束条件,即"过桥"的数量、位置和切割时机。为了建模和求解这一问题,我们可以将其转化为一个混合整数非线性规划问题,并采用分支定界、外逼近、罚函数等方法进行求解。同时,我们还可以考虑启发式算法,如遗传算法、模拟退火算法等,通过智能搜索和优化,在合理的时间内找到近似最优解。

模型假设

本文对2024五一数模A题问题1到问题4的模型建立与求解过程中,我们使用了以下几个主要的模型假设:

  1. 切割路径的几何抽象假设:我们假设切割路径可以抽象为图论中的哈密顿路径或哈密顿回路,即每个切割点或切割线段对应图中的一个节点,相邻切割点或切割线段之间的切割路径对应图中的一条边,从而将切割路径优化问题转化为在图上寻找最短哈密顿路径或回路的问题。

  2. 切割代价的距离度量假设:在计算切割路径的代价或长度时,我们通常假设切割点或切割线段之间的距离可以用某种几何距离度量来衡量,如欧氏距离、曼哈顿距离等,从而将切割路径长度表示为各边距离的加权求和。

  3. 切割顺序的线性化假设:(略)

  4. "过桥"的几何简化假设:(略)

  5. 切割路径的连续化假设:(略,完整见文末参考)

符号说明(部分)

以下是问题1到问题4的建模和求解过程中使用的主要符号及其说明,包括决策变量、参数、集合、函数等。这些符号在不同的问题和模型中可能有所不同,但都遵循了常用的数学规范和惯例。

模型的建立与求解(部分)

问题一模型的建立

首先,让我们来分析一下问题1的特点和求解思路。问题1给出了一个相对简单的下料切割布局N1,要求设计最优切割路径方案,使得空程总长度最小。这里的关键是如何合理地安排切割线的切割顺序,以避免不必要的空程。直观地看,我们希望切割路径尽可能地连续,减少起点到各个切割线之间的来回移动。同时,由于切割起点固定为布局的右下角点,我们还希望优先切割靠近起点的切割线,延迟切割远离起点的切割线。这样可以避免切割路径的"交叉",降低空程长度。

问题一最小权重哈密尔顿回路问题建模

基于以上分析,我们可以将问题1抽象为一个图论问题。具体地,我们将切割线看作图的边,切割线的交点和端点看作图的节点,那么整个切割布局就对应着一个无向图。在该图中,我们需要找到一条经过所有边且总权重最小的哈密尔顿回路,其中边的权重定义为两个节点之间的曼哈顿距离。这样,问题1就转化为了一个经典的图论优化问题——最小权重哈密尔顿回路问题。

接下来,我们来建立问题1的数学模型。设切割布局N1对应的无向图为 𝐺=(𝑉,𝐸) ,其中 𝑉 为节点集合, 𝐸 为边集合。对于任意两个节点 𝑖,𝑗∈𝑉 ,定义它们之间的权重 𝑤(𝑖,𝑗) 为:

𝑤(𝑖,𝑗)=|𝑥𝑖−𝑥𝑗|+|𝑦𝑖−𝑦𝑗|

其中 (𝑥𝑖,𝑦𝑖) 和 (𝑥𝑗,𝑦𝑗) 分别为节点 𝑖 和 𝑗 的坐标。

设 𝜋=(𝜋1,𝜋2,⋯,𝜋|𝑉|) 为 𝐺 上的一条哈密尔顿回路,其中 𝜋𝑖∈𝑉 表示回路上第 𝑖 个访问的节点。定义 𝜋 的总权重 𝑊(𝜋) 为:

𝑊(𝜋)=∑𝑖=1|𝑉|−1𝑤(𝜋𝑖,𝜋𝑖+1)+𝑤(𝜋|𝑉|,𝜋1)

那么,问题1的数学模型可以表述为:

min𝜋𝑊(𝜋)

𝑠.𝑡.𝜋 is a Hamilton cycle of 𝐺

起点𝜋1=起点(𝑥𝑠,𝑦𝑠)

其中 (𝑥𝑠,𝑦𝑠) 为指定的切割起点坐标。

问题一动态规划算法

现在,我们来设计求解上述模型的算法。考虑到布局N1中切割线数量较少,节点数也不多,我们可以考虑使用动态规划算法求解。动态规划算法的基本思想是,将问题划分为互相关联的若干子问题,并基于子问题的最优解,递推得到原问题的最优解。在本问题中,我们可以定义状态 𝑑𝑝[𝑆][𝑖] 表示:当前已经访问过的节点集合为 𝑆 ,当前位于节点 𝑖 ,再经过未访问节点并回到起点的最小权重。那么,状态转移方程可以写作:

𝑑𝑝[𝑆][𝑖]={min𝑗∉𝑆{𝑑𝑝[𝑆∪{𝑗}][𝑗]+𝑤(𝑖,𝑗)},𝑆≠𝑉∖{𝑠}𝑤(𝑖,𝑠),𝑆=𝑉∖{𝑠}

其中 𝑠 表示起点节点。

算法的时间复杂度为 𝑂(2|𝑉|⋅|𝑉|2) ,空间复杂度为 𝑂(2|𝑉|⋅|𝑉|) 。尽管复杂度较高,但对于节点数较少的情况,动态规划算法是一个很好的选择,能够保证得到最优解。

下面,给出动态规划算法的详细步骤:

  1. 预处理计算任意两个节点之间的权重 𝑤(𝑖,𝑗) ,存储在二维数组中。

  2. 初始化 𝑑𝑝 数组。对于任意的 𝑆 和 𝑖 ,若 𝑖∉𝑆 ,则 𝑑𝑝[𝑆][𝑖]=∞ ;若 𝑖=𝑠 ,则 𝑑𝑝[∅][𝑠]=0 。

  3. 枚举节点数 𝑘=1,2,⋯,|𝑉|−1 ,进行状态转移:

  1. 计算最优值: 𝑎𝑛𝑠=min𝑖≠𝑠{𝑑𝑝[𝑉∖{𝑠}][𝑖]+𝑤(𝑖,𝑠)}

  2. 回溯得到最优路径: 𝑆=𝑉∖{𝑠},𝑖=arg⁡min𝑖≠𝑠{𝑑𝑝[𝑉∖{𝑠}][𝑖]+𝑤(𝑖,𝑠)} 𝑝𝑎𝑡ℎ=[𝑖]

while |𝑆|>1 do

​ 𝑗=arg⁡min𝑗∉𝑆{𝑑𝑝[𝑆∖{𝑖}][𝑗]+𝑤(𝑗,𝑖)}

​ 𝑝𝑎𝑡ℎ.𝑎𝑝𝑝𝑒𝑛𝑑(𝑗)

​ 𝑆=𝑆∖{𝑖},𝑖=𝑗

end while

path.append(s)

3. 输出最小空程总长度 𝑎𝑛𝑠 和最优切割路径 𝑝𝑎𝑡ℎ 。(后略,见完整版)

问题一模型的matlab求解

以下是求解问题1的MATLAB代码(部分,完整可运行代码见文末参考):

% 动态规划算法求解
% dp(S,i)表示当前已经访问过的节点集合为S,当前位于节点i,再经过未访问节点并回到起点的最小权重
dp = inf(2^n, n); 
dp(1,1) = 0; % 初始状态for k = 1:n-1for S = 1:2^n-1if bitand(S, 1) == 0 % 保证起点不在S中for i = 1:nif bitand(S, 2^(i-1)) ~= 0 % 保证i在S中for j = 1:nif bitand(S, 2^(j-1)) == 0 % 保证j不在S中dp(S+2^(j-1),j) = min(dp(S+2^(j-1),j), dp(S,i)+W(i,j));endendendendendend
end% 找到最优值和最优路径
S = 2^n-2; % 除起点外所有节点的集合
[ans, i] = min(dp(S,:) + W(i,1));
path = i;
while S > 0for j = 1:nif bitand(S, 2^(j-1)) == 0 && dp(S,i) == dp(S+2^(j-1),j) + W(i,j)(略)break;endend
end% 可视化结果
figure;
plot(V(path([1 end]),1), V(path([1 end]),2), 'b-', 'LineWidth', 2); % 绘制回到起点的路径
xlabel('X坐标', 'FontSize', 12);
ylabel('Y坐标', 'FontSize', 12);
title('最优切割路径可视化', 'FontSize', 14);
saveas(gcf, 'optimal_path.png', 'png', 'Resolution', 300); % 保存图片,300dpi
hold off;

根据求解结果,我们可以得到最小空程总长度和最优切割路径。最优切割路径给出了一个节点的访问顺序,使得按照该顺序切割可以得到最小的空程。从可视化结果中,我们可以直观地看到最优切割路径是如何避免不必要的空程,尽可能地保持切割的连续性。

问题二模型的建立与求解

问题二组合优化问题模型的建立

问题2给出了一个复杂的下料切割布局N2,其特点是外边界切割成上下对称的锯齿状,内部切割出四个半径为3的圆形和一个椭圆形。与问题1相比,问题2的切割布局复杂程度明显提高,切割线不再是简单的直线段,而是包含了锯齿形、圆形和椭圆形等复杂曲线。这就要求我们在建模时,要能够精确描述这些复杂曲线,并合理地将它们离散化为一系列的切割点。同时,由于切割线数量和切割点数量的增加,问题的规模也相应增大,对算法的设计和实现提出了更高的要求。

面对如此复杂的切割布局,我们首先需要将其数学化,用精确的数学语言描述出来。对于锯齿形边界,我们可以利用布局N2中给出的参数信息,通过三角函数来刻画锯齿的形状。具体地,设锯齿的峰值点坐标为 (𝑥𝑖,𝑦𝑖) ,则相邻两个峰值点之间的锯齿可以参数化表示为:

{𝑥=𝑥𝑖+𝑥𝑖+1−𝑥𝑖𝑡0𝑡,0≤𝑡≤𝑡0𝑦=𝑦𝑖+𝑦𝑖+1−𝑦𝑖2(1−cos⁡(𝜋𝑡0𝑡)),0≤𝑡≤𝑡0

其中 𝑡0 为锯齿的周期,可以根据布局N2中的参数计算得到。

对于圆形和椭圆形,我们可以直接使用它们的标准方程。以圆形为例,设其圆心坐标为 (𝑥𝑐,𝑦𝑐) ,半径为 𝑟 ,则其方程为:

椭圆形的方程类似,这里不再赘述。

在得到了各个切割曲线的数学表示后,我们需要对它们进行离散化处理。一个简单的做法是,在每条曲线上等间距地取若干个采样点,然后用直线段依次连接这些采样点,从而将曲线近似为折线。当然,采样点的数量和间距是一个需要仔细权衡的问题。采样点数量越多,折线对曲线的逼近就越精确,但同时问题的规模也会越大。因此,我们需要在逼近精度和计算效率之间寻找一个合适的平衡点。

离散化处理完成后,问题2就转化为在一个由大量直线段组成的复杂布局上求解最优切割路径的问题。这本质上仍然是一个图论问题,与问题1类似,我们可以将直线段看作图的边,将直线段的端点和交点看作图的节点,从而将切割布局转化为一个无向图 。与问题1不同的是,图 中的边不再是等权的,每条边的权重需要根据其所对应的直线段的长度来计算。设边 所对应的直线段的端点坐标分别为 和 ,则其权重 可以计算为:

在构建了图模型 之后,问题2就可以形式化地描述为在 上求解最小权重哈密尔顿回路问题:

min∑𝑒∈𝐸𝑤(𝑒)𝑥𝑒s.t.∑𝑒∈𝛿(𝑣)𝑥𝑒=2,∀𝑣∈𝑉∑𝑒∈𝐸(𝑆)𝑥𝑒≤|𝑆|−1,∀𝑆⊂𝑉,𝑆≠∅𝑥𝑒∈{0,1},∀𝑒∈𝐸

(后略)

基于贪心构造和 2−𝑜𝑝𝑡 局部搜索的切割路径优化算法

上述模型是一个经典的组合优化问题,求解难度很大。对于小规模的问题,可以使用混合整数规划(MIP)等精确算法求解。但对于大规模问题,求解MIP模型的计算成本将变得非常高昂。因此,我们需要考虑设计高效的启发式或近似算法。

一种可行的思路是利用切割布局的几何特征,设计针对性的构造式算法和局部搜索算法。具体地,我们可以从切割起点出发,根据某种贪心策略,如优先选择与当前点最近的未切割线段,逐步构造出一条切割路径。当然,这样得到的切割路径通常不是最优的,因此我们还需要在此基础上进行局部搜索,寻找可以改进的机会。一种常用的局部搜索策略是 𝑘−𝑜𝑝𝑡 交换,即每次选择路径上的 𝑘 条边,尝试用另外的 𝑘 条边替换,看是否可以减小总权重。 𝑘 的取值通常为2或3,以平衡搜索的深度和广度。

(详细模型算法建立略,见完整版)

基于贪心构造和 2−𝑜𝑝𝑡 局部搜索的切割路径优化求解步骤

以下是基于贪心构造和2-opt局部搜索的切割路径优化算法的主要步骤:

  1. 输入切割布局N2的参数信息,包括锯齿边界的峰值点坐标、圆形的圆心坐标和半径、椭圆形的中心坐标和长短轴半径等。

  2. 根据输入参数,计算出锯齿边界、圆形和椭圆形的数学表达式。对于锯齿边界,可以使用三角函数进行参数化表示;对于圆形和椭圆形,可以直接使用它们的标准方程。

  3. 对每条切割曲线进行等间距离散化。具体地,可以先计算出曲线的总长度,然后根据预设的采样间距,确定采样点的数量和位置。对于直线段,可以直接对端点坐标进行线性插值;对于圆弧和椭圆弧,可以将弧长参数化,然后对参数进行等间距采样。

  4. 根据离散化得到的切割点的坐标,计算出任意两个切割点之间的欧几里得距离,形成一个距离矩阵D。D是一个对称矩阵,其中 𝐷(𝑖,𝑗) 表示第 𝑖 个切割点和第 𝑗 个切割点之间的距离。

  5. 从指定的起点 𝑣0 出发,初始化一条空的切割路径 𝑃 。

  6. 从起点 𝑣0 开始,重复以下步骤,直到所有切割点都被访问:

(a) 在所有未访问的切割点中,选择与当前点距离最近的点 𝑣 ,即 𝑣=arg⁡min𝑢∈𝑉∖𝑃𝐷(𝑣curr,𝑢) ,其中 𝑣curr 表示当前点。

(b) 将 𝑣 加入切割路径 𝑃 ,并将 𝑣 标记为已访问。

(c) 将当前点 𝑣curr 更新为 𝑣 。

  1. 对切割路径 𝑃 进行2-opt局部搜索。具体地,重复以下步骤,直到无法继续改进:

(a) 对于 𝑃 上的每一对不相邻的边 (𝑣𝑖,𝑣𝑖+1) 和 (𝑣𝑗,𝑣𝑗+1) ,尝试将它们替换为 (𝑣𝑖,𝑣𝑗) 和 (𝑣𝑖+1,𝑣𝑗+1) ,计算新路径的总长度 𝐿new=𝐿(𝑃)−𝐷(𝑣𝑖,𝑣𝑖+1)−𝐷(𝑣𝑗,𝑣𝑗+1)+𝐷(𝑣𝑖,𝑣𝑗)+𝐷(𝑣𝑖+1,𝑣𝑗+1) ,其中 𝐿(𝑃) 表示当前路径 𝑃 的总长度。

(b) 如果 𝐿new<𝐿(𝑃) ,则更新 𝑃 为新路径,并将 𝐿(𝑃) 更新为 𝐿new 。(后略,完整见文末参考)

2024五一数学建模A题完整代码和成品论文获取↓↓↓↓↓

https://www.yuque.com/u42168770/qv6z0d/gyoz9ou5upvkv6nx?singleDoc#

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Ubuntu上怎么卸载qemu-system-x86_64

2024年5月3日&#xff0c;周五晚上 要在Ubuntu上卸载QEMU&#xff0c;你可以使用以下命令&#xff1a; sudo apt remove qemu-system-x86这个命令将卸载QEMU系统模拟器&#xff08;x86架构&#xff09;。你也可以使用purge参数来彻底删除QEMU及其配置文件&#xff1a; sudo a…

三星一季度利润飙涨932%!AI引爆存储热,未来研发狠砸AI

⏩三星一季度利润飙涨932%&#xff01;AI引爆存储热&#xff0c;未来研发狠砸AI 三星电子公布了第一季度财报数据&#xff0c;显示其利润飙涨932.8%。得益于AI拉动的广泛支出&#xff0c;三星电子一季度利润激增。三星表示&#xff0c;预计第二季度业务将主要由生成式人工智能…

001 springCloudAlibaba 负载均衡

文章目录 orderServerOrderController.javaProductClient.javaOrderServerApplication.javaServletInitializer.javaapplication.yamlpom.xml productServerProductController.javaProduct.javaProductServerApplication.javaServletInitializer.javaapplication.yamlpom.xml p…

算法学习系列(五十四):单源最短路的综合应用

目录 引言一、新年好二、通信线路三、道路与航线四、最优贸易 引言 关于这个单源最短路的综合应用&#xff0c;其实最短路问题最简单的就是模板了&#xff0c;这是一个基础&#xff0c;然后会与各种算法结合到一块&#xff0c;就是不再考察单个知识点了&#xff0c;而是各种知…

ASP.NET图书馆管理信息系统

摘  要 本文首先阐述了基于.NET Framework平台的图书馆管理信息系统的开发背景以及其实践意义&#xff0c;其次说明了图书馆管理信息系统的功能以及相比同类软件的创新之处。然后就图书馆管理系统开发中所使用的一些的技术进行研究探讨。主要针对数据库的设计技术、存储过程…

TS 泛型

泛型&#xff08;宽泛的&#xff0c;不确定的类型&#xff09; 使用场景&#xff1a;定义一个函数或类时&#xff0c;无法确定要使用的具体类型&#xff08;返回值、参数、属性的类型不能确定&#xff09;泛型使用时相当于一个参数 functiondemo<T>(arg: T): T{return …

Copilot Venture Studio創始合伙人楊林苑確認出席“邊緣智能2024 - AI開發者峰會”

隨著AI技術的迅猛發展&#xff0c;全球正逐步進入邊緣計算智能化與分布式AI深度融合的新時代&#xff0c;共同書寫著分布式智能創新應用的壯麗篇章。邊緣智能&#xff0c;作為融合邊緣計算和智能技術的新興領域&#xff0c;正逐漸成為推動AI發展的關鍵力量。借助分布式和去中心…

Docker——部署LNMP架构

目录 一、LNMP架构概述 1.项目环境 2.服务器环境 3.需求 二、搭建Linux系统基础镜像 三、部署Nginx 1.建立工作目录 2.编写Dockerfile脚本 3.准备Nginx.conf配置文件 4.生成镜像 5.创建自定义网络 6.启动镜像容器 7.验证Nginx 三、部署Mysql 1.建立工作目录 2.编…

Windows 系统运维常用命令

目标&#xff1a;通过本文可以快速实现windows 网络问题定位。 ipconfig:查看本机网络配置情况 C:\Users\zzg>ipconfigWindows IP 配置以太网适配器 以太网:媒体状态 . . . . . . . . . . . . : 媒体已断开连接连接特定的 DNS 后缀 . . . . . . . :无线局域网适配器 本地…

Edge浏览器

前言 作为一款现代化的网络浏览器&#xff0c;Microsoft Edge提供了许多功能和工具&#xff0c;使用户能够更加高效地浏览互联网&#xff0c;并享受更好的网络体验。下面是我对Edge浏览器的使用心得和深度探索&#xff1a; 使用心得&#xff1a; 性能和速度&#xff1a; Edge浏…

模拟退火算法matlab代码

模拟退火&#xff08;Simulated Annealing, SA&#xff09;算法是一种概率优化算法&#xff0c;它受到冶金学中的退火过程的启发。以下是使用 MATLAB 编写的模拟退火算法的简单示例&#xff0c;用于解决一个优化问题&#xff1a; function [x_min, f_min, T, x, f] simulated…

【Docker第一课】docker的基本命令和试启动容器(详细图解)

目录 知识梗概 docker的初步了解 了解docker常用命令 试开启容器&#xff08;这里演示nginx、python3和mysql&#xff09; 1、nginx容器的启动 2、python3容器的启动 docker的作用 虚拟机与容器的区别 写在前面&#xff1a; 本专栏你将了解docker一些入门知识&#xff…

如何使用 ArcGIS Pro 查找小区最近的地铁站

学习 GIS 除了可以用在工作上之外&#xff0c;还可以将其运用到生活之中&#xff0c;比如查找距离小区最近的地铁站&#xff0c;这里为大家介绍一下查找的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的POI数据&#xff0c;除了POI数据…

从零搭建自己的javaweb网站,Javaweb网站项目打包jar后上传到Linux操作系统的阿里云服务器,公网成功访问,全流程,流程精简,小白秒懂

背景 很多同学自己写了一个javaweb&#xff0c;能在本地跑了&#xff0c;但是还想用公网访问自己的javaweb&#xff0c;写完一个项目99%进度&#xff0c;就差1%最后一步部署网站了&#xff0c;这篇文章教你如何快速地将javaweb部署到云服务器&#xff0c;笔者亲手总结&#xff…

a-table 控制列的展示和隐藏

一、业务场景&#xff1a; 最近在使用 Antd-vue 组件库的时候&#xff0c;a-table需要根据不同角色的权限显示和隐藏 columns的列 为了避免大家走弯路&#xff0c;为大家整理了一下&#xff0c;粘走可以直接用的那种 二、具体实现步骤&#xff1a; 1.在需要显示与隐藏的列增加一…

Git客户端(TortoiseGit)使用详解

1.概述 使用TortoiseGit比直接使用git 客户端和命令实现代码版本管理更为方便&#xff0c;本文根据实际使用情况作一些记录&#xff0c;特别是对于解决冲突的处理。 2.Git安装与配置 下载 Git - Downloads&#xff0c; 可参考Git安装步骤完成Git的安装与配置。 3.TortoiseG…

python学习笔记B-20:序列实战--处理千年虫

将2位数表达的年份&#xff0c;转换为用4位数表达&#xff1a; print("将列表中的2位数年份转换为4位数年份") lst[88,89,90,00,99] print(lst) for index in range(len(lst)):if len(str(lst[index]))2:lst[index] 1900int(lst[index])elif len(str(lst[index]))1…

收单外包机构备案情况分析,广东备案机构遥遥领先

孟凡富 4月30日&#xff0c;中国支付清算协会公示了最新一批收单外包服务备案机构&#xff0c;较上期增加了689家。其中&#xff0c;新增聚合支付技术服务备案机构达6家。截至4月末&#xff0c;备案的收单外包服务机构总数为27714家&#xff0c;同时取消了330家机构的备案资格&…

学习,工作与生活,怎么平衡?

今晚夜景很美&#xff0c;我在校园里转了转...... 不知道大家有没有过这样的体验&#xff1a;在放假之前&#xff0c;愿望总是挺美好的&#xff0c;“原本想看看书给自己充充电&#xff0c;但是&#xff0c;当翻开书之后&#xff0c;很快就开始走神、犯困&#xff0c;甚至坐立…

spring-security 学习笔记一 --- 基于默认配置

1.前言 本文主要讲解 spring-security 在不做任何配置情况下&#xff0c;它的启动流程和认证过程。 1. 准备工作 这里是基于springboot 2.2.5版本对应 spring-security 5.2.2版本演示的 &#xff08;按我下面导入即可&#xff0c;版本是它自己匹配的&#xff09; 引入依赖 &…