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

启发式算法之模拟退火算法

文章目录

  • 1. 模拟退火算法概述
    • 1.1 算法起源与发展
    • 1.2 算法基本原理
  • 2. 算法实现步骤
    • 2.1 初始化过程
    • 2.2 迭代与降温策略
  • 3. 模拟退火算法的优化策略
    • 3.1 冷却进度表的设计
    • 3.2 参数调整与策略
  • 4. 模拟退火算法的应用领域
    • 4.1 组合优化问题
      • 4.1.1 旅行商问题(TSP)
      • 模拟退火算法流程图
      • 4.1.2 图着色问题
    • 4.2 实际应用案例分析
      • 4.2.1 神经网络训练
      • 4.2.2 作业调度
      • 4.2.3 经济调度问题
      • 4.2.4 机器学习特征选择
  • 5. 模拟退火与其他优化算法的比较
    • 5.1 算法优势与局限性
    • 5.2 算法适用性分析
  • 6. 结论与展望
    • 6.1 算法的总结评述
    • 6.2 未来研究方向与应用前景

1. 模拟退火算法概述

1.1 算法起源与发展

模拟退火算法(Simulated Annealing,SA)最早由N. Metropolis等人于1953年提出。该算法的思想来源于固体物理中的退火过程,1983年,S. Kirkpatrick等人将其引入到组合优化问题中。模拟退火算法是一种基于概率的启发式搜索算法,通过模拟固体物质的退火过程来寻找问题的全局最优解。

1.2 算法基本原理

模拟退火算法的核心思想是利用温度参数控制搜索过程中的随机性,以概率方式跳出局部最优解,从而趋向全局最优解。算法的基本流程包括初始化、产生新解、计算目标函数差、接受或舍弃新解,以及温度的逐渐降低。

以下是模拟退火算法的伪代码实现,其中包含了关键的Metropolis准则概率接受公式:

s:=s0; e:=E(s) // 设定当前状态为初始状态s0,其能量为E(s0)
k:=0 // 评估次数初始化为0
while k<kmax and e>emax: // 当评估次数未达到最大且结果未达到最优时sn:=neighbour(s) // 随机选取一临近状态snen:=E(sn) // sn的能量为E(sn)if random()<P(e, en, temp(k/kmax)): // 根据Metropolis准则决定是否移至临近状态sns:=sn; e:=en // 移至临近状态snk:=k+1 // 评估次数加一
returns // 返回最终状态s

其中,P(e, en, temp) 是Metropolis准则的概率函数,公式如下:

P ( Δ E , T ) = { 1 if  Δ E < 0 e − Δ E / T if  Δ E ≥ 0 P(\Delta E, T) = \begin{cases} 1 & \text{if } \Delta E < 0 \\ e^{-\Delta E / T} & \text{if } \Delta E \geq 0 \end{cases} P(ΔE,T)={1eΔE/Tif ΔE<0if ΔE0

这里,ΔE 是新解与当前解的能量差,T 是当前温度。当ΔE 为负时,即新解更优,接受新解;当ΔE 为正时,以指数衰减的概率接受新解,允许算法跳出局部最优。

Simulated Annealing Process

上图展示了模拟退火算法的搜索过程,随着温度的降低,解的状态逐渐稳定。

2. 算法实现步骤

2.1 初始化过程

初始化是模拟退火算法的第一步,它为算法的运行设定了起始点和基础条件。

  • 初始温度设定:选择一个足够高的初始温度 T 0 T_0 T0 ,确保在算法初期可以接受较大的解变动。
  • 初始解的随机选择:从解空间中随机选取一个初始解 x 0 x_0 x0 作为起点。

2.2 迭代与降温策略

迭代过程是模拟退火算法的核心,通过不断迭代寻找全局最优解。

  • 迭代过程:在每次迭代中,通过随机扰动当前解 ( x_i ) 生成新的解 x ′ x' x ,并根据目标函数值决定是否接受新解。
    • 如果 E ( x ′ ) < E ( x i ) E(x') < E(x_i) E(x)<E(xi) ,则接受新解 x ′ x' x 作为当前解。
    • 如果 E ( x ′ ) ≥ E ( x i ) E(x') \geq E(x_i) E(x)E(xi) ,则以一定的概率 P = exp ⁡ ( − E ( x ′ ) − E ( x i ) T i ) P = \exp\left(-\frac{E(x') - E(x_i)}{T_i}\right) P=exp(TiE(x)E(xi)) 接受新解。
  • 降温策略:根据预定的降温函数逐步降低温度 T i T_i Ti ,常用的降温方法包括线性降温和指数降温。
  • 停止条件:当温度降至某一阈值 T m i n T_{min} Tmin 或达到最大迭代次数时,算法终止。
  • Metropolis准则:用于决定是否接受新解的概率,是模拟退火算法的关键部分。
    P = exp ⁡ ( − E ( x ′ ) − E ( x i ) T i ) P = \exp\left(-\frac{E(x') - E(x_i)}{T_i}\right) P=exp(TiE(x)E(xi))
  • 初始温度的选择 对算法的效果有显著影响,过高可能导致算法收敛慢,过低则可能过早陷入局部最优。
  • 降温速度 决定了算法探索解空间的深度和广度,需要根据具体问题进行调整。
  • 算法终止条件 可以是温度降至某一低值或达到预设的迭代次数,确保算法不会无限运行。

3. 模拟退火算法的优化策略

3.1 冷却进度表的设计

冷却进度表是模拟退火算法中控制温度下降过程的关键工具。它决定了算法的搜索广度和深度,直接影响算法的全局优化能力。

  • 几何冷却:温度按照指数规律下降,公式表示为 T n + 1 = α ⋅ T n T_{n+1} = \alpha \cdot T_n Tn+1=αTn,其中 α \alpha α 是小于1的降温系数。

  • 线性冷却:温度按照线性规律下降,公式表示为 T n + 1 = T n − Δ T T_{n+1} = T_n - \Delta T Tn+1=TnΔT,其中 Δ T \Delta T ΔT 是每次降温的固定量。

  • 适应性冷却:根据算法的搜索效果动态调整降温速率,以达到更好的搜索平衡。

3.2 参数调整与策略

参数调整是模拟退火算法中的另一个关键环节,合理的参数设置可以显著提高算法的性能。

  • 初始温度 T 0 T_0 T0:初始温度通常设置得较高,以保证算法在开始阶段具有足够的搜索能力。

  • 终止温度 T f T_f Tf:终止温度决定了算法搜索的精细度,较低的终止温度有助于找到更精确的解。

  • 降温系数 α \alpha α:降温系数控制了温度下降的速率,需要根据问题特性和搜索要求进行调整。

  • 迭代次数 L L L:每个温度下的迭代次数,影响算法的搜索深度。

  • 随机扰动策略:新解的产生通常通过在当前解的基础上添加一个小的随机扰动来实现,扰动的大小与当前温度相关。

通过上述策略的合理设计和调整,模拟退火算法可以有效地应用于各种复杂的优化问题,寻找到全局最优解或近似最优解。

4. 模拟退火算法的应用领域

4.1 组合优化问题

模拟退火算法在组合优化问题中具有广泛的应用,特别是在解决旅行商问题(TSP)、图着色问题、调度问题等NP-hard问题上表现出色。这些问题的共同特点是存在大量的局部最优解,而模拟退火算法通过模拟物理退火过程,能够有效地跳出局部最优,寻找全局最优解。

4.1.1 旅行商问题(TSP)

旅行商问题是模拟退火算法的经典应用之一。问题的目标是寻找一条最短的路径,使得旅行者访问每个城市恰好一次并最终返回起点。模拟退火算法通过随机扰动当前解,并根据Metropolis准则接受或拒绝新解,从而逐步逼近最优路径。

  1. 初始化:设定初始温度 T T T,初始路径 P P P,以及终止温度 T m i n T_{min} Tmin
  2. 当前解:以当前路径 P P P 作为起点。
  3. 产生新解:通过交换、反转或插入等操作在当前路径的基础上产生一个新的路径 P ′ P' P
  4. 计算代价:计算当前路径 P P P 和新路径 P ′ P' P 的代价(路径长度)。
  5. 接受准则:如果 P ′ P' P 的代价更低,则接受 P ′ P' P 作为新的当前解。如果 P ′ P' P 的代价更高,则以概率 exp ⁡ ( − Δ c o s t T ) \exp(-\frac{\Delta cost}{T}) exp(TΔcost) 接受 P ′ P' P,其中 Δ c o s t \Delta cost Δcost P ′ P' P P P P 代价之差。
  6. 降温:按照预定的降温方案降低温度 T T T
  7. 终止条件:如果达到终止温度 T m i n T_{min} Tmin 或满足其他终止条件,则结束算法。

模拟退火算法流程图

新路径更优
新路径较差
开始
初始化参数和路径
生成新路径 P'
比较新旧路径代价
接受新路径 P'
计算接受概率
接受新路径 P'?
降温
是否达到终止条件
输出最优解

4.1.2 图着色问题

图着色问题要求为图中的每个顶点分配颜色,使得没有两个相邻的顶点具有相同的颜色,同时尽量减少颜色的使用。模拟退火算法在这个问题上的应用可以通过随机改变顶点的颜色分配,并接受或拒绝新的颜色分配方案来寻找最优解。

  1. 初始化:设定初始温度 T T T,初始着色方案 C C C,以及终止温度 T m i n T_{min} Tmin
  2. 当前解:以当前着色方案 C C C 作为起点。
  3. 产生新解:通过随机交换顶点颜色或重新着色部分顶点产生一个新的着色方案 C ′ C' C
  4. 计算冲突数:计算当前着色方案 C C C 和新方案 C ′ C' C 的冲突数(相邻同色顶点对的数量)。
  5. 接受准则:如果 C ′ C' C 的冲突数更少,则接受 C ′ C' C 作为新的当前解。如果 C ′ C' C 的冲突数更多,则以概率 exp ⁡ ( − Δ c o n f l i c t s T ) \exp(-\frac{\Delta conflicts}{T}) exp(TΔconflicts) 接受 C ′ C' C,其中 Δ c o n f l i c t s \Delta conflicts Δconflicts C ′ C' C C C C 冲突数之差。
  6. 降温:按照预定的降温方案降低温度 T T T
  7. 终止条件:如果达到终止温度 T m i n T_{min} Tmin 或满足其他终止条件,则结束算法。
新方案冲突少
新方案冲突多
开始
初始化参数和着色方案
生成新着色方案 C'
比较新旧方案冲突数
接受新着色方案 C'
计算接受概率
接受新着色方案 C'?
降温
是否达到终止条件
输出最优着色方案

4.2 实际应用案例分析

模拟退火算法不仅在理论上具有重要意义,而且在实际应用中也展现出了巨大的潜力。以下是一些模拟退火算法在实际问题中的应用案例。

4.2.1 神经网络训练

在神经网络训练中,模拟退火算法可以用来优化网络权重,提高学习效率和模型性能。通过模拟退火过程,可以在权重空间中进行更广泛的搜索,避免陷入局部最优解。

不可接受
可接受
开始
初始化神经网络权重
前向传播计算输出
能量函数评估
调整温度参数
更新权重
进行下一轮迭代
是否达到终止条件
结束训练

4.2.2 作业调度

在作业调度问题中,模拟退火算法可以用来确定作业的最优执行顺序,以最小化完成所有作业所需的总时间或成本。算法通过随机调整作业顺序,并根据目标函数的变化接受或拒绝新序列。

ΔE<0
ΔE>0
开始
初始化作业序列
计算目标函数值
随机扰动生成新序列
计算新序列目标函数值
比较新旧序列目标函数值
接受新序列
计算接受概率
接受新序列
更新作业序列
是否达到终止条件
结束调度

4.2.3 经济调度问题

模拟退火算法在经济调度问题中也有应用,例如在电力系统的机组调度中,通过优化机组的启停和出力,可以提高能源利用效率,降低运营成本。

ΔC<0
ΔC>0
开始
初始化机组状态
模拟发电量与成本
计算总成本
随机调整机组状态
模拟新状态发电量与成本
计算新状态总成本
比较新旧状态总成本
接受新状态
计算接受概率
接受新状态
更新机组状态
是否达到终止条件
结束调度

4.2.4 机器学习特征选择

在机器学习中,特征选择是一个关键步骤。模拟退火算法可以用来在特征空间中搜索最优的特征子集,提高模型的泛化能力和性能。

性能提升
性能下降
开始
初始化特征子集
训练模型
评估模型性能
随机扰动生成新特征子集
训练新特征子集模型
评估新模型性能
比较新旧模型性能
接受新特征子集
计算接受概率
接受新特征子集
更新特征子集
是否达到终止条件
结束特征选择

通过上述案例分析,我们可以看到模拟退火算法在多个领域中的实用价值,其全局搜索能力和对初始条件不敏感的特点使其成为解决复杂优化问题的强大工具。

5. 模拟退火与其他优化算法的比较

5.1 算法优势与局限性

模拟退火算法(Simulated Annealing, SA)是一种概率型全局优化算法,其核心优势在于能够跳出局部最优解,以一定的概率接受更差的解,从而有助于寻找全局最优解。这种特性使得SA算法特别适合于解决复杂的优化问题,尤其是那些具有多个局部最优解的问题。

优势:

  • 全局搜索能力:SA算法通过模拟物理退火过程,能够在高温阶段接受较劣解,从而有效避免陷入局部最优。
  • 简单易实现:算法原理直观,易于理解和编程实现。
  • 适用性广泛:适用于各种类型的优化问题,包括连续和离散的优化问题。

局限性:

  • 收敛速度:相较于一些确定性算法,SA算法的收敛速度可能较慢,特别是在参数设置不佳时。
  • 参数敏感性:算法性能对初始温度、冷却速度等参数较为敏感,需要仔细调整以获得良好性能。
  • 无法保证最优:SA算法不能保证一定找到全局最优解,特别是在多模态问题中。

5.2 算法适用性分析

模拟退火算法的适用性分析主要考虑其在不同类型问题上的表现和适用条件。

适用场景:

  • 多峰值问题:在存在多个局部最优解的多峰值问题中,SA算法能够通过概率接受机制,提高找到全局最优解的机会。
  • 大规模问题:对于变量数量众多的大规模优化问题,SA算法不需要二阶导数信息,适合于复杂系统。
  • 非线性问题:SA算法不依赖于问题的具体形式,适用于非线性和非凸优化问题。

不适用场景:

  • 实时性要求高的问题:由于SA算法可能需要较长时间才能收敛,对于需要快速响应的实时问题可能不适用。
  • 参数难以调整的问题:如果问题难以确定合适的初始温度和冷却策略,SA算法可能难以发挥最佳性能。

在与其他优化算法的比较中,模拟退火算法在处理复杂性和多样性方面具有明显优势,但在收敛速度和参数调整上可能不如一些特定问题设计的算法。例如,遗传算法(Genetic Algorithms, GA)在搜索全局最优解时也很有效,但可能在某些问题上不如SA算法那样容易跳出局部最优。粒子群优化(Particle Swarm Optimization, PSO)算法在连续空间问题上表现出色,但在处理离散问题时可能不如SA算法灵活。

通过这些分析,我们可以看到模拟退火算法在解决优化问题时的独特地位和潜在的应用范围。尽管存在一些局限性,但通过合理的参数调整和与其他算法的结合,SA算法仍然是一个非常有力的工具。

6. 结论与展望

6.1 算法的总结评述

模拟退火算法(Simulated Annealing, SA)是一种基于概率的启发式搜索算法,其灵感来源于固体材料的退火过程。该算法通过模拟物理退火过程中的降温来逐步寻找到问题的全局最优解。
SA算法在解决组合优化问题时具有显著的优势,特别是在处理具有多个局部最优解的复杂问题时。算法的关键在于如何控制温度的下降速率以及如何设计初始温度和终止温度,这些参数直接影响算法的性能和最终解的质量。

6.2 未来研究方向与应用前景

模拟退火算法在未来的研究和应用中仍具有广阔的发展空间。以下是一些可能的研究方向和应用前景:

  1. 算法改进:研究更高效的降温策略,提高算法的搜索效率和收敛速度。例如,自适应退火算法可以根据解的质量动态调整温度参数。

  2. 参数自动调整:开发智能的参数调整机制,如基于机器学习的方法,以自动优化算法参数,提高算法的适应性和鲁棒性。

  3. 并行计算:利用现代计算架构的并行能力,如GPU加速,来实现模拟退火算法的并行化,以处理更大规模的优化问题。

  4. 混合算法:将模拟退火与其他优化算法结合,如遗传算法、粒子群优化等,以利用各自的优点,形成更强大的混合优化策略。

  5. 实际应用:探索模拟退火算法在新兴领域的应用,如深度学习中的网络结构搜索、物联网设备的资源分配、以及生物信息学中的序列比对等。

  6. 可视化工具:开发直观的可视化工具,帮助研究人员和开发者更好地理解算法的工作原理和过程,如图示能量变化和状态转移。

  7. 算法理论:深入研究算法的理论基础,包括收敛性和性能分析,为算法的改进提供理论支持。

  8. 跨学科应用:推动模拟退火算法在不同学科领域的应用,如经济学、物理学、化学等,以解决跨学科的复杂优化问题。

随着计算技术的发展和算法研究的深入,模拟退火算法有望在未来解决更多具有挑战性的优化问题,并在多个领域发挥重要作用。

相关文章:

启发式算法之模拟退火算法

文章目录 1. 模拟退火算法概述1.1 算法起源与发展1.2 算法基本原理 2. 算法实现步骤2.1 初始化过程2.2 迭代与降温策略 3. 模拟退火算法的优化策略3.1 冷却进度表的设计3.2 参数调整与策略 4. 模拟退火算法的应用领域4.1 组合优化问题4.1.1 旅行商问题&#xff08;TSP&#xff…...

编码器汇总:光学编码器,霍尔编码器,磁性编码器,电容式编码器,单圈编码器,多圈编码器,增量式编码器,绝对值式编码器等

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、光学编码器二、霍尔编码器三、磁性编码器四、电容式编码器五、单圈编码器六、多圈编码器七、增量式编码器八、…...

有哪些性价比高的蓝牙耳机可入?四款百万好评实力品牌推荐!

蓝牙耳机大家都再熟悉不过了&#xff0c;作为最常用的智能配件之一&#xff0c;谁还没有用过几款蓝牙耳机呢&#xff0c;但是选购蓝牙耳机上还是有一些需要注意的地方&#xff0c;市面上的吹风机可谓是五花八门。有哪些性价比高的蓝牙耳机可入&#xff1f;本人花了一些时间整理…...

MySQL数据库——表的CURD(Update)

3.Update 语法&#xff1a;update table_name set column expr 案例 将孙悟空的数学成绩变更为80 mysql> select name,math from result; ----------------- | name | math | ----------------- | 唐三藏 | 98 | | 孙悟空 | 78 | | 猪悟能 | 98 |…...

性能测试 —— linux服务器搭建JMeter+Grafana+Influxdb监控可视化平台!

前言 在当前激烈的市场竞争中&#xff0c;创新和效率成为企业发展的核心要素之一。在这种背景下&#xff0c;如何保证产品和服务的稳定性、可靠性以及高效性就显得尤为重要。 而在软件开发过程中&#xff0c;性能测试是一项不可或缺的环节&#xff0c;它可以有效的评估一个系…...

python基础命令学习

1.Python基础知识 目录 1.Python基础知识1.1 变量及类型1.2 标识符与关键字1.3 输出与输入1.3.1格式化符号1.3.2转义字符1.3.3结束符1.3.4输入的特点 1.4 运算符1.4.1 算数运算符1.4.2 赋值运算符1.4.3 比较(即关系)运算符1.4.4 逻辑运算符 1.5 数据类型转换1.6 判断与循环语句…...

程序设计基础(试题及答案)

一、填空题 1.__ ____函数是程序启动时惟一的入口。 2.算法的复杂性包含两方面: 和 。 3.已知 char c= a ; int x=2,k; 执行语句k=c&&x++ ; 则x为 ,k为 。 4.数值0x34对应的十进制为 。 5…...

日常收录资源

日常收录资源 工具类绘图浏览器插件 软件类DockerGoJavaJavaScriptSpring Boot架构计算机网络算法其他 设计类配色素材图标图片 工具类 绘图 ProcessOnGitMind 浏览器插件 ColorPick Eyedropper&#xff1a;取色器 软件类 Docker Docker - 从入门到实践 Go Golang tuto…...

索引——电子学

电子学 教程 2N2222简介及用Arduino模拟 创意电子学&#xff1a;第000课——注册Tinkercad 网站账号 创意电子学-第01课&#xff1a;点亮LED 创意电子-第05课&#xff1a;串联和并联 创意电子学-第04课&#xff1a;使用欧姆定律 创意电子学-第03课&#xff1a;初学者如何…...

【学习笔记】A2X通信的协议(九)- 广播远程ID(BRID)

3GPP TS 24.577 V18.1.0的技术规范&#xff0c;主要定义了5G系统中A2X通信的协议方面&#xff0c;特别是在PC5接口和Uu接口上的A2X服务。以下是文件的核心内容分析&#xff1a; 7. 广播远程ID&#xff08;BRID&#xff09; 7.1 概述 本条款描述了以下程序&#xff1a; 在用…...

HoloLens 和 Unity 空间坐标系统

所有的 3D 图形应用程序都使用笛卡尔坐标系统来推理虚拟物体的位置和朝向。 这些坐标系建立三个垂直轴&#xff1a;X、Y 和 Z。 添加到场景的每个对象在其坐标系中都有一个 XYZ 位置。 Windows 调用在物理世界中具有实际意义的坐标系统&#xff0c;该系统以米为单位表示其坐…...

【npm】如何将开发的vite插件发布到npm

前言 简单说下 npm 是什么&#xff1a; npm 是一个 node 模块管理工具&#xff0c;也是全球最大的共享源。 npm 工具与 nodejs 配套发布&#xff0c;便利开发人员共享代码。npm 主要包括 npm 官方网站、CLI&#xff08;控制台命令行工具&#xff09;、和 registry&#xff08;…...

数据结构-查找

一、基本术语 二、线性结构 ASL&#xff1a;平均查找长度 1、顺序查找 1.1、代码实现 typedef struct {int* elem;int TableLen; }SSTable;int Search_Seq(SSTable ST, int key) {ST.elem[0] key; //哨兵&#xff0c;使得循环不用判断数组是否会越界int i;for (i ST…...

Ubuntu环境下 pip安装应用时报错

pip安装应用时&#xff0c;报SSL错 WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 可能原因是python没有ssl&#xff0c;则在python安装时应该添加ssl ./configure --with-openssl/usr/local/ssl …...

打包时未添加camera模块,请参考https://ask.dcloud.net.cn/arss/1ooticle/283

今天在app打包使用的时候突然发现app在拍照上传照片的时候遇到这个问题 遇到这种情况通常是因为app打包的时候manifestjson文件中App模块配置中的Camera&Gallery配置没有打开&#xff0c;点击相应选项勾选即可 然后再上传打包就好了! 哈哈哈好久没写博客了最近太忙了&…...

Vue3+Setup使用websocket

创建src/util/socket.ts let websock: any null; let global_callback: any null; const serverPort "8080"; // webSocket连接端口 const wsuri "ws://" window.location.hostname ":" serverPort "/wsdemo"; function crea…...

tcpdump快速入门及实践手册

tcpdump快速入门及实践手册 1. 快速入门 [1]. 基本用法 基本用法&#xff1a; tcpdump [选项 参数] [过滤器 参数] [rootkysrv1 pwe]# tcpdump -h tcpdump version 4.9.3 libpcap version 1.9.1 (with TPACKET_V3) OpenSSL 1.1.1f 31 Mar 2020 Usage: tcpdump [-aAbdDefhH…...

javascript双判断语句

JavaScript的if双判断语句和java相似 if&#xff08;条件表达式&#xff09; { 执行语句 } else { 执行语句 } 比如说要判断一个年份是否是闰年&#xff0c;代码如下 html><head><meta charset"UTF-8"><title></title></hea…...

C# 中的多态

多态的定义&#xff1a; 通过指向派生类的基类引用&#xff0c;调用虚函数&#xff0c;会根据引用所指向派生类的实际类型&#xff0c;调用派生类中的同名重写函数&#xff0c;便是多态。 C#中的多态可以分为两种类型&#xff1a; 编译时多态&#xff08;静态多态&#xff09;&…...

高性能内存对象缓存Memcached原理与部署

目录 一&#xff1a;Memcached 1&#xff1a;Memcached的概述 2&#xff1a;数据存储方式与数据过期方式 &#xff08;1&#xff09;数据存储方式&#xff1a;Slab Allocation (2)数据过期方式:LRU、Laxzy Expiration 3.Memcached 缓存机制 4.Memcached 分布式 5.Memcac…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...