方形件排样优化与订单组批问题探析

方形件排样优化与订单组批问题是计算复杂度很高的组合优化问题,在工业工程中有很广泛的应用背景。为实现个性化定制生产模式,企业会选择订单组批的方式,继而通过排样优化实现批量切割,加工完成后再按照不同客户需求进行分拣,从而提高原材料的利用率,进而降低生产成本,提高企业竞争力。

本文以二维方形件的排样优化及订单组批为对象,充分考虑各种约束条件,对两个问题分别建立混合整数规划模型,合理规划方形件在板材原片上的布局,整体协调订单分配与批量计划的集成优化,最终取得全局近似最优解。

针对问题一:优化目标是基于三阶段齐头切精确排样方式,在各产品项数量均不超过其需求量的约束下实现使用的板材原片数量最少。我们转“割”为“拼”,采用“均匀栈的生成→条带生成→原片条带放置”的步骤,设计了均匀三阶段排样方式的生成算法(TUSP 法)得到满足条件的排样图。之后采用顺序价值修正启发式算法(SVC 法),逐个将满足条件的排样图加入到整个数据的排样方案中进行优化,最终得到基于整个数据的最优排样方案,得到A1~A4数据集的板材利用率依次为96.02%、94.08%、95.15%和94.08%。根据获得的各产品项的x、y方向坐标及度量,绘制各原片的排样方案效果图。

针对问题二:优化目标是通过订单组批的形式将订单聚类,并按照材质选择相应的排样方式,进而实现使用的板材原片数量最少。本问题的关键在于订单组批,后续排样过程可参考问题一。首先使用杰拉德距离定义了订单之间材质的相似性,以此作为层次聚类的依据,从而划分项目的组批。其次,对同一批次中的不同材质,依次对产品项使用均匀三阶段排样方式的生成算法(TUSP法) 和顺序价值修正启发式算法(SVC法) 获得最终的排样方案,得到B1~B5数据集的板材利用率依次为84.42%、82.84%、82.11%、83.44%和83.51%,并根据排样方案中产品项的坐标等信息绘制各原片的排样方案效果图。

最后,本文对所用算法的复杂度进行了评估,同时对模型的优缺点进行了分析。

关键词:混合整数规划模型; 均匀三阶段排样方式的生成算法; 顺序价值修正启发式算法:订单组批:层次聚类

一、  问题重述

1.1问题背景

新时期我国经济发展面临的重大课题,即是实现由制造大国向制造强国的转变,其中智能制造又是“中国制造 2025”的主攻方向。企业若想在智能制造转型中获取竞争优势,则需要在个性化定制方面提高竞争力。面对层出不穷的客户需求,如何在把控产品质量的同时预测订单规模,以便可以及时做出响应,就成为企业需要思考的问题。

方形件产品(或称板式类产品) 即为依赖于个性化定制生产模式的一类产品,它以板材为主要原片,经过平面加工后,由几种板式配件装配而成。为了实现“多品种小批量”的个性化定制生产,面对数量庞大的订单,企业通常会通过订单组批的方式来实现批量切割,加工完成后再按照不同客户需求进行分拣,从而提高原料的利用率[11-[3]。

在上述“订单组批+批量生产+订单分拣”模式中,订单组批与排样优化为两个重要环节。订单组批就是将相同材质、相近交货期、相似工艺的订单安排在同一个生产批次,通过订单组批优化兼顾个性化需求与生产高效性(如组批批次太小,会造成材料利用率低与生产效率低:如组批批次太大,会影响生产效率从而影响订单交付);排样优化本质为一个面向客户订单的材料切割问题,需要合理规划方形件在板材上的布局,以达到降低板材浪费、简化切割过程的目的。

对于排样优化问题,根据切割工艺方式的不同可分为齐头切与非齐头切(齐头切即直线切割且切割方向垂直于一边,并保证每次切割都可将原片分为两块),齐头切又可分为精确方式与非精确方式(区别在于是否可切割出准确尺寸的方形件) 。三阶段齐头切主要有三种类型:三阶段非精确排样方式、三阶段匀质排样方式以及三阶段同质排样方式,后两种均为精确排样方式。基本经过三到四个阶段的切割即可满足客户需求。

1.2 问题提出

基于对订单组批与排样优化的理解,题目提出以下2个子问题,其中第2个子问题的约束都基于第1个子问题并增加了单个批次生产原片数和面积的限制:

问题一:排样优化问题。只考虑齐头切的切割方式且切割阶段数不超过3的精确排样,建立混合整数规划模型[4],在满足订单需求及相关约束条件下,达到原片的最大化利用。

需要考虑的约束条件如下:

1) 在相同栈( stack) 里的产品项( item) 的宽度(或长度) 应该相同;

2) 最终切割生成的产品项是完整的,非拼接而成。

 

 

问题二:订单组批问题。要求建立混合整数规划模型,对数据集B中全部的订单进行组批,然后对每个批次进行独立排样,在满足订单需求和相关约束条件下,使得板材原片的用量尽可能少。在满足子问题1约束的基础上进一步要求:

1) 每份订单当且仅当出现在一个批次中;

2) 每个批次中的相同材质的产品项( item) 才能使用同一块板材原片进行排样;

3) 为保证加工环节快速流转,每个批次产品项( item) 总数不能超过限定值:

4) 因工厂产能限制,每个批次产品项( item) 的面积总和不能超过限定值。

二、 问题分析

2.1问题一分析

问题一需要建立混合整数规划模型得出三阶段齐头切精确排样方案,该方案由排样方式组成,排样方式为该排样优化问题的解。对于三阶段切割方式,要求同一阶段切割方向相同,相邻阶段切割方向互相垂直,我们并不限制第一阶段的切割方向,横向或纵向皆可,并称第一阶段切割生成的模块为 stripe(条带),第二阶段切割生成的模块成为 stack(栈),第三阶段切割生成的模块为 item(产品项)。实际应用中,产品项方向可以是固定的,也可以是旋转的,为了更贴近实际情况,我们考虑产品项方向可旋转。产品项的价值一般为其面积,且会赋予面积大的产品项一个较大的权重,以便优先考虑其放置。

排样方式必须满足:(1) 产品项的个数不超过需求量; (2) 排入的产品项之间互不重叠且不超过原片边界:(3) 满足题目要求的三阶段齐头切精确排样方式。

本问题建立在三阶段匀质排样的基础上,即认为每个栈都由一组宽度相同的产品项组成,对比于三阶段同质排样,匀质排样的材料利用率可能会更高,但切割复杂度也会随之增加。

根据待切割的产品项的种类和数量,确定产品项在原片上的排列组合方式,在满足产品项数量与工艺约束的条件下,减少原材料的损耗。此排样优化问题可描述为:在尺寸为L×W的原片上寻找最佳排样方案,排入 n种产品项,其中第 i 项产品项的长、宽及需求量为   l×wi×di,∑'j=1αν=1,∇i=1,⋯,2ni∈I=1n, 需要使消耗的原片成本最低,且排样方式需符合切割工艺要求。

本问题的优化目标是在各产品项数量均不超过其需求量的约束下实现原片中包含的产品项总价值最大,可以将目标设定成以板材用量最少,另一种角度是使残料最少。尽管追求板材用量最少与追求残料最少的实现方式是一致的,但后者方法的灵敏度较差,最终可能会导致无解:且对于残料,如果其尺寸足够大,就可以成为余料二次利用,所以实际问题中考虑残料最少并不合理。

2.2问题二分析

问题二需要建立混合整数规划模型,对数据集B1~B5中全部的订单进行组批,并对每个批次进行独立排样,在满足订单需求和相关约束条件下,使得板材原片的用量尽可能少。该方案由组批方式组成,组批方式为该子问题的解。

组批方式必须满足:(1) 每份订单当且仅当出现在一个批次中; (2) 每个批次可生产的产品项总数不超过上限;  (3) 每个批次可生产的产品项面积总和不超过上限。

订单组批问题是一个NP完全问题,求其精确解是比较困难的。模型的优化目标是最小化板材原片使用数量,可以考虑在组批过程中尽量将使用同种材质的订单放在同一批次,这样同一批次中相同材料的产品项种类和数量也越多,在之后的排样过程中,也更容易得

到更高的板材使用率,从而达到目标。所以该子问题的关键就转为寻求一个合适的差异度函数来度量订单间的相似程度,在此基础上对订单进行聚类,最终生成分批后的订单。后续排样过程与第一问类似,可按照第一问的思路进行排样优化。

三、模型假设

假设1:本题假定排样优化方式为三阶段齐头切匀质排样,且产品项作为切割的最小单位需保持完整;

假设2:本题假定第一阶段切割方向为横向的排样方式为X向排样,第一阶段切割方式为纵向的排样方式为Y 向排样:

假设3:本题假定板材原片仅有一种规格,即原片长度为2440( mm),原片宽度为1220( mm), 且原片数量充足;

假设4:本题假定排样方案不受锯缝宽度影响:

假设5:本题假定在切割过程中不存在设备故障、生产事故:

假设6:本题假定所有订单的交货期均相同,即订单组批问题不考虑交货期因素:

假设7:订单包含的产品项的种类和数量满足某种随机分布:

假设8:一个订单仅可组批一次,且不能跨批次组批;

假设9:批次与批次之间不会互相交叉混合。

四、符号说明

本文所用符号的说明如下表所示。

指标:

符号                                      说明

i       产品项编号的指标,对n个产品项按宽度进行排序               w1w2≥≥wn,

即产品项1,产品项2,……,产品项n将宽度不增,其中               i∈I=1⋯n

j          栈编号的指标,将栈中所含产品项中宽度最大的产品项编号作为栈的编

号,其中    j∈J=1⋯n

k        条带编号的指标,将条带中所含栈的最宽栈的编号作为条带编号,其中

k∈K

l         原片编号的指标,将原片中所含条带的最小索引作为原片编号,其中

l∈L

输入参数:

符号

说明

L

原片长度(单位: mm)

w

原片宽度(单位: mm)

 

 

五、问题一:模型建立与求解

5.1整数规划模型建立

根据题目要求建立整数规划模型[8]-[10]如下:

对于问题一,可以理解成有约束条件的三阶段二维装箱问题。装箱问题就是我们有 n 个小矩形,以及无限个大矩形箱子,目标是将全部小矩形无重叠的放入箱子中,小矩形放入箱子的方向可以旋转,水平垂直均可。三阶段切割可以理解:1、沿第一个方向齐头切割后,将矩形切割成几个条带,2、沿第二个方向齐头切割后,将条带切割成几个栈,3、沿第三个方向齐头切割后,将栈切割为产品项。显然,由同一个栈切割得到的几个产品项具有相同的宽度。为统一规则,便于切割,我们将矩形尽量放置于大矩形箱子的左下位置,使得如果必须存在剩余空间的话,剩余空间位于右上位置。由于几个产品项组成一个栈后被放置于大矩形箱子内,故产品项排列的前后顺序对栈在大矩形箱子内的摆放位置并无影响,我们可以将同一个栈内的几个产品项按照产品项的索引从小到大排列,便于后续处理。产品项组成栈后,我们可以获得一定数量的栈,栈组成条带与产品项组成栈类似,同一条带内栈的排序也可以前后调整。对栈进行编号索引,类似的,我们也可以在条带内将不同的栈按照索引顺序从小到大排列。这种排序方法有利于后续我们得到每个产品项在大矩形箱子的位置。最后再将条带放置于大矩形箱子内,找到最好的放置方式使得只需要尽可能少的箱子数即可放置下全部条带。

针对产品项可旋转,我们考虑将n个产品项复制一份,并将其长宽互调,得到了2n个产品项,并进一步按照产品项的宽度进行排序,这时使用两个映射f和g,f表示目前排序下产品项对应为复制前的该产品项索引编号,g表示产品项和其复制品的索引编号差。

其中l₀和w₀表示产品项k的长度和宽度,lmin(i)和 wmin(i)表示产品项i到m的产品项长度最小值和宽度最小值。这时在判断能否继续向栈排入产品项时,仅需将 lmin(i)和 wmin(i)分别与剩余长度和剩余宽度比较即可, 这大大减少了算法了计算复杂度。

产品项已经耗尽:

注:对于此终止条件,我们仍考虑建立一个一维数组 demand 对每个产品项的剩余量进行记录,这是再判断某产品项是否有剩余可排入栈时,仅需与 demand(i)进行对比即可。

初始化 demand数组:demand(i)表示产品项i在栈中排入的限制数量,令其初值等于产品项的初始需求,其赋值计算表达式如下:

 demand(i)=d(i), i=1,…,m.                      (20)

其中d(i)表示产品项的初始需求。

Step2. 算法建立过程

在将产品项排入栈的过程中,需要对生成的栈的信息进行存储,我们考虑建立一个一维数组向量对栈j的信息存储,向量构建如下:

其中w表示此栈的放置方式,w='h'表示水平放置,         w='v'表示竖直放置,二元数组(i,num,)中,i表示产品项的编号,numn表示此产品项在栈中排入的次数。

在得到栈的主要信息之后,我们需要进一步计算栈的价值。并且由于生成的是均匀栈,故此要求栈的所有出现的产品项的宽度或者长度均是相等的。下以水平均匀栈为例:设以产品项j作为主产品项的水平均匀栈j,其长度不大于L,且宽度等于w,,记此栈的价值为HV(j,L,w,,m,),   其求解的伪代码如下:

算法1:均匀栈生成算法

输入:栈价值V:条带剩余长度RL; 栈中包含产品项i的数量 num

输出: 栈价值HV(j,L,w,m,); 栈的数组信息m,

1  RL=L-l,;

2        for i=1 to 2m

3          if RL< lmin(i) or l₁≠ɪ;

4              HV(j,L, wj, mj)=V; break

5          else

6              if demand(i)=0 return

7              else

8                  if RL<l₁ return

9                 else

10                   num= min( demand(i), [RL/l₁]); RL=L-num×l,

11                     Add (i, num) to m,;       P=14num×c₁

12                 end

13             end

14         end

15      end

 16    return HV(j,L,w,m,); m,                                 

2.条带生成算法

我们类比上一节提出的产品项排成栈的算法,进一步将栈排条带中,从而可得到由栈生成条带的算法,由于和栈生成算法类似,下面仅简略展示条带生成算法的步骤,如下:

StepI. 算法初始化设置

确定栈的各类属性:首先通过使用栈生成算法生成了 n个栈,进而通过算法输出结果计算水平栈的长度和竖直栈的宽度,并将其储存。

确定栈的使用需求:在这部分我们认为算法生成的n个栈均是不同的,即当两个栈的长宽以及内部包含的产品项种类和数目均相同时,而这时栈内产品项的排列顺序也可以是不同的,故此我们认为生成的n个栈均是不同的。进而设置每个栈的需求量均为1。

Step2. 算法建立过程:

在这部分我们类比产品项生成栈的算法,进行算法设计,将n个栈放置进条带中,具体流程均与上节所述类似,在此不进行重复展示。

 

5.3.2求解过程

下面基于 TUSP 排样图生成算法和SVC 顺序价值修正启发式算法来求解在产品项可旋转的条件下的三阶段匀质齐头切情况下二维矩形排样问题,模型的求解流程如下:

TUSP和SVC求解3CS框图

输入: 初始化产品项单位价值,令ρ₁=l₁w₂,

输出: 最优的排样方案

其中ieI, 令(

 Uni=+∞

1

 For E=1 to Em. x

2

初始化产品项可用量, 令 c₁=d₁,

其中i∈I

3

令 U=0, J=0

4

 While ∑mac,>0

5

使用TUSP算法生成当前排样图 P

6

确定P的使用次数, 计算表达式为f= min |c;/r;||r;∧i∈I

7

将P加入当前排样方案

8

更新当前排样方案的排样方式数J: J=J+1

9

更新原片使用数量V: U=U+1

10

更新产品项可用量c₁: c₁=c₁=f×r₁

11

使用价值修正公式来修正产品项的价值

12

 end

13

 If UKUap

14

记当前排样方案为最优方案:

 Uun=U, Jop=J

15

 end

16

 If Unip=U and Jap>J

17

记当前排样方案最优:   Jap=J

18

19

 end

 end

5.4求解结果与分析

5.4.1对于数据集A1、A2、A3、A4的排样方案效果图

基于所建立的模型,使用 Python绘出排样方案效果图,部分结果如下(由于排样方案效果图数量较多,故仅展示部分效果图,全部效果图见附录9.1):

 

七、模型分析与评价

7.1算法复杂度分析

对于3阶段二维矩形排样问题的算法设计,我们是使用基于HUSP算法和价值修正的顺序启发式算法来寻找满足约束条件和优化目标的解,其中HUSP算法主要包括三个层级,对应着3阶段切样方式。第一个层级是产品项生成栈,需要遍历所有的个栈; 第二个层级是栈生成条带,需要遍历所有的条带,第三个层级是条带生成原片,需要遍历所有的原片,因此算法的复杂度为O(n³)

25

                                                                               

7.2模型优缺点分析

7.2.1模型优点分析

1、本文考虑的三阶段排样问题,考虑了较多约束条件,如齐头切和产品项可旋转等,这保证了本文所建立的模型和算法具有较高的灵活性,使用范围较广。

2、本文针对3阶段二维矩形排样问题建立了混合整数规划模型,并结合优化目标和约束条件,设计了基于HUSP算法,使用顺序价值修正的启发式算法,算法的求解得到的原片利用率是较好的。

7.2.2模型缺点分析

1、本文所涉及的算法为启发式算法,无法保证算法求解的最忧性。

2、对于问题二的处理,我们并没有对订单组批和排样问题进行协同优化,这导致了我们问题二求解的结果中原片利用率比问题一平均低了10%。

 function stack= item   to   stack( item,L. W, rho)

%输入: item的所有信息: item,原片长度: L, 原片宽度: W.价值修正系数: rho;

%输出: 生成 stack的所有信息: stack--一个三维数组

%初始参数设置

 item   id= item(:,1);

 item   length= item(:,3);

 item   lighth= item(:,4);

 item   square= item(:,2).* item(:,3);

 item   value= rho.* item   square;

 demand= item(:,5);

m= length( item(:,1));% item总数

 Imin=[];

 wmin=[];

 for i=1:m

 lmin(i)= min( item   length(i:m));

 wmin(i)= min( item   width(i:m));

 end

%以 item i作为主 item的 stack, 预先设定2m个

a= zeros(2*m+2,2);

a(3:2*m+2,1)=[1:2*m]';

 for i=1:2*m

 stack(:,:,i)=a;

 end

%通过循环进行 item的放置

RL=L;%剩余高度

RW=W;%剩余宽度

demand0= demand;

 for i=1:2*m

 if demand(i)==0

%对每个 stack进行 item的放置i

RL=L- item   length(i);

RW=L- item   width(i);

VL=0;%水平 stack价值

VW=0;%竖直 stack价值

ML= zeros(m,1);%存放每个 item在水平 stack放置的个数

MW= zeros(m,1);%存放每个 item在直 stack放置的个数

%水平放置 stack

demand1= demand;

 for j=1:2*m

 num  j=0;

% stack均匀性要求

 if item   width(j)~= item   width(i)

 return

 end

 if demand1(j)==0| item   length(j)>RL

 return

 end

 if item   length(j)>RL && RL< Imin(j)

 break

 end

 if RL< Imin(j) && RL>= Imin(j)

 return

 end

%限制旋转前和旋转后的 item只能使用一次

 if demand0-demand1(j)>=ML(j)

 return

 end

 if RL> Imin(j) && item   width(j)== item   width(i)

 if j<=m

 num  j= min(demand1(j), floor(RL/ item   length(j)));

ML(j)=ML(j)+1;

RL=RL- num  j* item   length(j);

VL=VL+ num  j* item   value(j);

demand1(j)=demand1(j)-1;

 else

 num  j= min(demand1(j-m), floor(RL/ item   length(j-m)));

ML(j-m)=ML(j-m)+1;

RL=RL- num  j* item   length(j-m);

VL=VL+ num  j* item   value(j);

demand1(j-m)=demand1(j-m)-1;

 end

 end

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高质量短视频素材平台推荐

在当今短视频内容日益增长的时代&#xff0c;拥有高质量的素材显得尤为重要。以下是一些值得关注的短视频素材平台&#xff0c;它们各具特色&#xff0c;适合不同需求的创作者。 蛙学网 蛙学网专注于提供高质量的短视频素材&#xff0c;适合各种创作需求。虽然该平台需要订阅&a…

DerpNStink: 1渗透测试

靶机&#xff1a;DerpNStink: 1 <https://www.vulnhub.com/entry/derpnstink-1,221/> 攻击机&#xff1a;kail linux 2024 目标&#xff1a;获得4个flag 1,将两台虚拟机网络连接都改为NAT模式&#xff0c;并查看靶机的MAC地址 2&#xff0c;攻击机上做主机扫描发现靶机 靶…

#HarmonyOS:页面和自定义组件生命周期

页面生命周期 即被Entry装饰的组件生命周期 onPageShow&#xff1a;页面每次显示时触发一次&#xff0c;包括路由过程、应用进入前台等场景。onPageHide: 页面每次隐藏时触发一次&#xff0c;包括路由过程、应用进入后台等场景。onBackPress: 当用户点击返回按钮是触发 组件…

自定义类型:联合和枚举【上】

自定义类型&#xff1a;数组&#xff0c;结构体&#xff0c;联合体&#xff0c;枚举。前面一些我们已经讲过了&#xff0c;接下来我们讲联合体和枚举。 一.联合体 1.联合体类型的声明 像结构体一样&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成员可以不同…

网络搜索引擎Shodan(2)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 声明&#xff1a;本文主要用作技术分享&#xff0c;所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险&#xff0c;并遵循相关法律法规。 感谢泷…

(南京观海微电子)——GH7006-01_HKC_B3-PV043WVQ-N80_MIPI_LVDS_RGB原理及代码介绍

1. 原理 2. 代码 /**************************************************/ // Model - GV050WVQ-N82 // IC - GH7006 // Width - 800 // Height - 480 // REV: - V01 // DATA - 20240621 // INTERFACE- LV…

4.1.2 网页设计技术

文章目录 1. 万维网&#xff08;WWW&#xff09;的诞生2. 移动互联网的崛起3. 网页三剑客&#xff1a;HTML、CSS和JavaScriptHTML&#xff1a;网页的骨架CSS&#xff1a;网页的外衣JavaScript&#xff1a;网页的活力 4. 前端框架的演变基于CSS的框架基于JavaScript的框架基于MV…

质量漫谈一

我知道很多同学看到这类问题&#xff0c;第一反应想要去寻找的就是作为测试角色&#xff0c;应该要如何如何去做&#xff1f;但是今天这里作为质量第一篇&#xff0c;不打算按照这样单角度去写&#xff0c;这类同学可以就此打住&#xff0c;如果在意的话&#xff0c;可关注后续…

excel斜线表头

检验数据验证对象 鼠标放在检验数据 验证对象中间&#xff0c;altenter 之后空格 选中格子&#xff0c;右键单元格格式&#xff0c; 完成 如果是需要多分割&#xff0c;操作一样&#xff0c;在画斜线的时候会有区别&#xff0c;在插入里面用直线画斜线即可 在表格插入的时…

采用Excel作为可视化设计器的开源规则引擎 NopRule

决策树和决策矩阵是业务人员可以直观理解的复杂IF-ELSE逻辑表达形式&#xff0c;也是规则引擎中最常用、最有用的部分。常见的规则引擎如Drools虽然提供了更加丰富的功能特性集&#xff0c; 特别是所谓的RETE算法可以用于高效复用多次重复出现的表达式片段&#xff0c;但在实际…

xxl-job java.sql.SQLException: interrupt问题排查

近期生产环境固定凌晨报错&#xff0c;提示 ConnectionManager [Thread-23069] getWriteConnection db:***,pattern: error, jdbcUrl: jdbc:mysql://***:3306/***?connectTimeout3000&socketTimeout180000&autoReconnecttrue&zeroDateTimeBehaviorCONVERT_TO_NUL…

Windows自带录屏好用吗?四大录屏工具轻松实现高效录屏!

Windows系统自带的录屏工具其实就是Xbox Game Bar。今天&#xff0c;除了这个工具&#xff0c;我还会为大家推荐几款实用录屏工具&#xff0c;让大家轻松实现高效录屏&#xff01; 福昕录屏软件 直达链接&#xff1a;www.foxitsoftware.cn/REC/ 操作教程&#xff1a;立即获取…

本地缓存库分析(一):golang-lru

文章目录 本地缓存概览golang-lru标准lrulru的操作PutGet 2q&#xff1a;冷热分离lruPutGet expirable_lru&#xff1a;支持过期时间的lruPutGet过期 总结 本地缓存概览 在业务中&#xff0c;一般会将极高频访问的数据缓存到本地。以减少网络IO的开销&#xff0c;下游服务的压…

css 切角实现(全)

效果 样式代码 <template><div class"container"><div class"clip-all-angle"> 4个角全部剪切 </div><div class"clip-two-angle"> 切底部两个角 </div><div class"clip-two-top-angle"> …

1.2.2 算法的时间复杂度

那么我们如何评估算法的时间开销&#xff1f; 存在什么问题? 和机器性能有关&#xff0c;如:超级计算机 v.s. 单片机 和编程语言有关&#xff0c;越高级的语言执行效率越低 和编译程序产生的机器指令质量有关 有些算法是不能事后再统计的&#xff0c;如:导弹控制算法 能否事…

Spring Boot框架下的酒店住宿登记系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

PIL处理器在环测试

目录 PIL处理器在环测试介绍 PIL测试过程 编译模块 测试结果 PIL处理器在环测试介绍 SIL测试是验证代码和模型的一致性&#xff0c;代码运行在Windows平台上&#xff0c;某种程度上说&#xff0c;这并不能保证代码到目标处理器上的运行结果也能够和模型保持一致。所以&…

ctfshow的sql注入解题思路171-211

ctfshow-SQL注入 web171&#xff1a;爆库名->爆表名->爆字段名->爆字段值 -1 union select 1,database() ,3 -- //返回数据库名 -1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema库名 -- //获取数据库里的表名 -…

【华为\荣耀、中兴、华三路由器IPV6设置】

华为\荣耀、中兴、华三路由器ipv6设置 华为\荣耀设置-路由器拨号情况下中兴设置-路由器拨号情况下华三设置-光猫拨号情况下&#xff08;待续&#xff09; 华为\荣耀设置-路由器拨号情况下 如图设置就行 中兴设置-路由器拨号情况下 中兴路由器有两个设置地方也是如图设置 …

一站式AI自动化剪辑 内置多种功能 永久免费

AI影视解说自动化剪辑工具&#xff0c;功能非常强大&#xff0c;吊打所有视频解说&#xff0c;解放双手&#xff0c;从我开始 【资源名称】&#xff1a;纳拉托艾 【资源大小】&#xff1a;1.27 【资源版本】&#xff1a;0.1 【测试机型】&#xff1a;Win11. 【资源介绍】&a…