车辆路径优化问题(VRP)变体及数学模型

车辆路径优化问题变体及数学模型

  • 一、旅行商问题(Travelling salesman problem,TSP)
    • TSP问题数学模型
    • TSP问题求解
  • 二、车辆路径问题(Vehicle Routing Problem,VRP)
  • 三、带容量约束的车辆路径优化问题(Capacitated Vehicle Routing Problem,CVRP)
    • CVRP问题求解
  • 四、带时间窗车辆路径优化问题(Vehicle Routing Problem with Time Window,VRPTW)
    • VRPTW问题求解
  • 五、取送货问题数学模型(Homogeneous Multi vehicle pickup and delivery problem formulations)
    • PDPTW问题求解

车辆路径优化问题(Vehicle Routing Problem,VRP)是一种非常常见的优化问题,在给定一组客户点、车辆容量、车辆数量、起始点和终点,目标是找到使得所有客户点都被访问一次的最短路径方案。VRP有很多变体:

  • 旅行商问题(Travelling salesman problem,TSP) the classic routing problem in which there is just one vehicle.
  • 车辆路径问题(Vehicle Routing Problem,VRP), a generalisation of the TSP with multiple vehicles.
  • VRP with capacity constraints, in which vehicles have maximum capacities for the items they can carry.
  • 带时间窗的车辆路径规划问题(VRP with time windows,VRPTW),where the vehicles must visit the locations in specified time intervals.
  • VRP with resource constraints, such as space or personnel to load and unload vehicles at the depot (the starting point for the routes).
  • VRP with dropped visits, where the vehicles aren’t required to visit all locations, but must pay a penalty for each visit that is dropped.

一、旅行商问题(Travelling salesman problem,TSP)

最经典的的车辆路径优化问题是旅行商问题(Travelling salesman problem,TSP),给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。

TSP问题数学模型

刘兴禄 -《运筹优化常用模型、算法及案例实战:Python+Java实现》总结了TSP问题共有3种数学模型:

  1. Dantzig-Fulkerson-Johnson model,DFJ模型(本文采用)
  2. Miller-Tucker-Zemlin model,MTZ模型
  3. 1-tree模型

DFJ模型,也是最常见的模型如下:

min ⁡ ∑ i ∈ V ∑ j ∈ V d i j x i j subject to ∑ j ∈ V x i j = 1 , ∀ i ∈ V , i ≠ j ∑ i ∈ V x i j = 1 , ∀ j ∈ V , i ≠ j ∑ i , j ∈ S x i j ≤ ∣ S ∣ − 1 , 2 ≤ ∣ S ∣ ≤ N − 1 , S ⊂ V x i j ∈ { 0 , 1 } , ∀ i , j ∈ V \begin{align} \min \quad & \sum_{i \in V}{}\sum_{j \in V} d_{ij}x_{ij}\\ \text{subject to} \quad &\sum_{j \in V} x_{ij} = 1, \quad \forall i \in V,i \neq j \\ &\sum_{i \in V}{x_{ij}} =1,\quad \forall j \in V ,i \neq j\\ & \textcolor{red}{\sum_{i,j \in S}{x_{ij}} \leq |S|-1,\quad 2\leq |S| \leq N-1, S \subset V}\\ &x_{ij} \in \{0,1\}, \quad \forall i,j \in V \end{align} minsubject toiVjVdijxijjVxij=1,iV,i=jiVxij=1,jV,i=ji,jSxijS1,2SN1,SVxij{0,1},i,jV

这个subtour-elimination的约束,是一个枚举的约束,我们不能在建模的时候就直接全枚举,这样的话有复杂度的情况。等到把这些约束枚举完,黄花菜都凉了。 啰嗦几句,subtour-elimination的思路就是相当于cutting plane。在原来前两个约束的基础上,加上这个约束。但是如果你要在求解步骤model.optimize()之前就想全枚举,把subtour-elimination所有可能的
个约束全加上去,其他的不论,就只是加约束所耗费的时间,别人TSP早都解完去写Paper了,你这边约束还没加完。得不偿失,因此不能硬钢去枚举。

那怎么办呢?业内一般采用Gurobi或者CPLEX求解器中提供的callback(回调函数)的方法来动态的添加subtour-elimination约束。总的来讲,就是在branch and bound tree迭代的过程中,根据当前结点的松弛后的线性规划模型(relaxed LP)的解,来检查该解是否有存在子环路 subtour,如果有,我们就把执行subtour-elimination时候产生的破圈约束加到正在求解的模型中去; 如果没有,我们就直接接着迭代算法。

TSP问题求解

  • TSP中两种不同消除子环路的方法及callback实现
  • 基于蚁群算法的TSP问题建模求解(Python)
  • 基于模拟退火算法的TSP问题建模求解(Python)
  • 基于自适应遗传算法的TSP问题建模求解(Java)
  • 基于禁忌搜索的TSP问题建模求解(Java)

二、车辆路径问题(Vehicle Routing Problem,VRP)

基本车辆路径问题(Vehicle Routing Problem,VRP)的数学模型可以使用整数线性规划(Integer Linear Programming,ILP)来表示。

min ⁡ ∑ k ∈ V ∑ i ∈ N ∑ j ∈ N c i j x i j k subject to ∑ k ∈ V ∑ j ∈ N x i j k = 1 , ∀ i ∈ C ∑ j ∈ N x 0 j k = 1 , ∀ k ∈ V , ∑ i ∈ N x i h k − ∑ j ∈ N x h j k = 0 , ∀ h ∈ C , ∀ k ∈ V , ∑ i ∈ N x i , n + 1 , k = 1 ∀ k ∈ V , s i k + t i j − M i j ( 1 − x i j k ) ⩽ s j k , ∀ i , j ∈ N , ∀ k ∈ V , a i ⩽ s i k ⩽ b i , ∀ i ∈ N , ∀ k ∈ V ,  x i j k ∈ { 0 , 1 } , ∀ i , j ∈ N , ∀ k ∈ V s i k ≥ 0 , ∀ i ∈ N , ∀ k ∈ V \begin{align} \min \quad &\sum_{k \in \mathcal{V}} \sum_{i \in \mathcal{N}} \sum_{j \in \mathcal{N}} c_{i j} x_{i j k} \\ \text {subject to} \quad &\sum_{k \in \mathcal{V}} \sum_{j \in \mathcal{N}} x_{i j k}=1, \quad \forall i \in \mathcal{C} \\ &\sum_{j \in \mathcal{N}} x_{0 j k}=1, \quad \forall k \in \mathcal{V}, \\ &\sum_{i \in \mathcal{N}} x_{i h k}-\sum_{j \in \mathcal{N}} x_{h j k}=0 , \quad \forall h \in \mathcal{C}, \forall k \in \mathcal{V}, \\ &\sum_{i \in \mathcal{N}} x_{i, n+1, k}=1 \quad \forall k \in \mathcal{V}, \\ &s_{i k}+t_{i j}-M_{i j}\left(1-x_{i j k}\right) \leqslant s_{j k}, \quad \forall i, j \in \mathcal{N}, \forall k \in \mathcal{V}, \\ &a_{i} \leqslant s_{i k} \leqslant b_{i} , \quad \forall i \in \mathcal{N}, \forall k \in \mathcal{V} \text {, } \\ &x_{i j k} \in\{0,1\}, \quad \forall i, j \in \mathcal{N}, \forall k \in \mathcal{V} \\ &s_{i k} \geq 0, \quad \forall i \in \mathcal{N}, \forall k \in \mathcal{V} \\ \end{align} minsubject tokViNjNcijxijkkVjNxijk=1,iCjNx0jk=1,kV,iNxihkjNxhjk=0,hC,kV,iNxi,n+1,k=1kV,sik+tijMij(1xijk)sjk,i,jN,kV,aisikbi,iN,kVxijk{0,1},i,jN,kVsik0,iN,kV

三、带容量约束的车辆路径优化问题(Capacitated Vehicle Routing Problem,CVRP)

带容量约束的车辆路径优化问题,CVRP,对一系列装卸货点进行适当的路径规划,在满足约束条件(客户需求、车辆载重和容积、车型、车辆行驶里程、配送中心数量等限制)和目标最优化(路程最短、成本最低、使用车辆数最少、配送时间最快等)下,将客户的配送需求从配送中心送达客户点,或从客户点送回配送中心。

场景:
单向:纯取货 / 纯送货;
单配送中心:只有一个配送中心/车场;
单车型:只考虑一种车型,
需求不可拆分:客户需求只能有一辆车满足;
车辆封闭:完成配送任务的车辆需回到配送中心;
车辆充足:不限制车辆数量,即配送车辆需求均能满足;
非满载:任意客户点的需求量小于车辆最大载重;

要求:
优化目标:最小化车辆启动成本和车辆行驶成本之和;
约束条件:车辆行驶距离约束,重量约束;
算法输入:配送中心位置、客户点位置、客户点需求、车辆最大载重、车辆最大行驶距离、车辆启动成本、车辆单位距离行驶成本;
算法输出:每辆车的行驶路径,经过的客户点,以及总成本。

CVRP问题求解

基于遗传算法的CVRP建模求解(Python)

四、带时间窗车辆路径优化问题(Vehicle Routing Problem with Time Window,VRPTW)

问题描述
VRPTW问题定义在一队车辆 V \mathcal{V} V、一组客户 C \mathcal{C} C和一个有向图 G \mathcal{G} G上。图由 ∣ C ∣ + 2 |\mathcal{C}|+2 C+2个点组成,其中客户由 1 , 2 , ⋯   , n 1,2,\cdots,n 1,2,,n表示,车站由 0 0 0(始发站)和 n + 1 n+1 n+1(终点站)表示。所有节点的集合可表示为 N = { 0 , 1 , 2 , ⋯   , n , n + 1 } \mathcal{N}=\{0,1,2,\cdots,n,n+1\} N={0,1,2,,n,n+1}。所有边的集合 A \mathcal{A} A表示了车站与客户之间,以及客户之间的有向连接。其中没有边从 0 0 0点终止或者从 n + 1 n+1 n+1点开始。每一条弧 ( i , j ) , i ≠ j (i,j),i\neq j (i,j),i=j都对应一个成本 c i j c_{ij} cij和时间 t i j t_{ij} tij,时间可以包括在弧上 ( i , j ) (i,j) (i,j)的行驶时间和在 i i i点的服务时间。所有车辆通常是同质化的,每辆车都存在容量上限 Q Q Q,每一个客户点 i i i都有需要被满足的需求 d i d_i di,并且需要在时间窗 [ a i , b i ] [a_i,b_i] [ai,bi]之内被服务[1]。待优化的问题即为,如何决策车辆访问客户的路径,使得在满足一定约束的条件下,实现最小化总成本的目标。

模型构建
参数

  • V \mathcal{V} V:车辆集合, V = { 0 , 1 , ⋯   , V } \mathcal{V}=\{0,1,\cdots, V\} V={0,1,,V}
  • C \mathcal{C} C:客户集合, C = { 0 , 1 , ⋯   , n } \mathcal{C}=\{0,1,\cdots, n\} C={0,1,,n}
  • N \mathcal{N} N:节点集合, N = { 0 , 1 , 2 , ⋯   , n , n + 1 } \mathcal{N}=\{0,1,2,\cdots,n,n+1\} N={0,1,2,,n,n+1}
  • c i j c_{ij} cij:从 i i i j j j的行驶距离;
  • d i d_i di:每一个客户点 i i i都有需要被满足的需求量;
  • Q Q Q:车辆容量;
  • t i j t_{ij} tij:从 i i i点到 j j j点的行驶时间,以及服务 i i i点的时间之和;
  • [ a i , b i ] [a_i,b_i] [ai,bi]:访问 i i i点的时间窗;
  • M i j M_{ij} Mij:足够大的正数。

决策变量

  • x i j k x_{ijk} xijk:车辆路径决策变量, x i j k = 1 x_{ijk}=1 xijk=1,车辆 k k k经过弧 ( i , j ) (i,j) (i,j)
  • s i k s_{ik} sik:车辆 k k k服务 i i i点的开始时刻;

混合整数规划模型

min ⁡ ∑ k ∈ V ∑ i ∈ N ∑ j ∈ N c i j x i j k subject to ∑ i ∈ C d i ∑ j ∈ N x i j k ⩽ Q , ∀ k ∈ V , ∑ k ∈ V ∑ j ∈ N x i j k = 1 , ∀ i ∈ C ∑ j ∈ N x 0 j k = 1 , ∀ k ∈ V , ∑ i ∈ N x i h k − ∑ j ∈ N x h j k = 0 , ∀ h ∈ C , ∀ k ∈ V , ∑ i ∈ N x i , n + 1 , k = 1 ∀ k ∈ V , s i k + t i j − M i j ( 1 − x i j k ) ⩽ s j k , ∀ i , j ∈ N , ∀ k ∈ V , a i ⩽ s i k ⩽ b i , ∀ i ∈ N , ∀ k ∈ V ,  x i j k ∈ { 0 , 1 } , ∀ i , j ∈ N , ∀ k ∈ V s i k ≥ 0 , ∀ i ∈ N , ∀ k ∈ V \begin{align} \min \quad &\sum_{k \in \mathcal{V}} \sum_{i \in \mathcal{N}} \sum_{j \in \mathcal{N}} c_{i j} x_{i j k} \\ \text {subject to} \quad &\sum_{i \in \mathcal{C}} d_{i} \sum_{j \in \mathcal{N}} x_{i j k} \leqslant Q, \quad \forall k \in \mathcal{V}, \\ &\sum_{k \in \mathcal{V}} \sum_{j \in \mathcal{N}} x_{i j k}=1, \quad \forall i \in \mathcal{C} \\ &\sum_{j \in \mathcal{N}} x_{0 j k}=1, \quad \forall k \in \mathcal{V}, \\ &\sum_{i \in \mathcal{N}} x_{i h k}-\sum_{j \in \mathcal{N}} x_{h j k}=0 , \quad \forall h \in \mathcal{C}, \forall k \in \mathcal{V}, \\ &\sum_{i \in \mathcal{N}} x_{i, n+1, k}=1 \quad \forall k \in \mathcal{V}, \\ &s_{i k}+t_{i j}-M_{i j}\left(1-x_{i j k}\right) \leqslant s_{j k}, \quad \forall i, j \in \mathcal{N}, \forall k \in \mathcal{V}, \\ &a_{i} \leqslant s_{i k} \leqslant b_{i} , \quad \forall i \in \mathcal{N}, \forall k \in \mathcal{V} \text {, } \\ &x_{i j k} \in\{0,1\}, \quad \forall i, j \in \mathcal{N}, \forall k \in \mathcal{V} \\ &s_{i k} \geq 0, \quad \forall i \in \mathcal{N}, \forall k \in \mathcal{V} \\ \end{align} minsubject tokViNjNcijxijkiCdijNxijkQ,kV,kVjNxijk=1,iCjNx0jk=1,kV,iNxihkjNxhjk=0,hC,kV,iNxi,n+1,k=1kV,sik+tijMij(1xijk)sjk,i,jN,kV,aisikbi,iN,kVxijk{0,1},i,jN,kVsik0,iN,kV

下面是各个约束的具体含义:

  • 目标函数(1)最小化总体行驶距离;
  • 约束(2)说明车辆的载重量不能超过其容量上限;
  • 约束(3)保证了每个客户点都被访问了一次;
  • 约束(4-6)分别保证了每辆车必须从始发站出发,到达并离开每个客户点,并最终回到终点站;
  • 约束(7)规定了车辆开始服务点的时刻,不能早于开始服务点的时刻,加上从点到 - 点的行驶时间以及服务点的时间之和,其中的取值下界为;
  • 约束(8)使得开始服务点的时刻是在规定的时间窗范围内;
  • 约束(9-10)是对于决策变量的约束。

VRPTW问题求解

  • 考虑随机性的车辆路径规划问题详解(Stochastic VRP) 数据魔术师
  • 使用Java调用Cplex求解带时间窗的车辆路径问题

五、取送货问题数学模型(Homogeneous Multi vehicle pickup and delivery problem formulations)

参数

  • n n n:取货点数量。
  • n ~ \tilde{n} n~:送货点数量,因为这里是Paired PDP问题,故 n = n ~ n=\tilde{n} n=n~
  • P P P:取货点集合, P = { 1 , . . . , n } P = \{1,..., n\} P={1,...,n}
  • D D D:送货点集合, D = { n + 1 , . . . , n + n ~ } D = \{n +1,..., n +\tilde{n}\} D={n+1,...,n+n~}
  • K K K:车辆集合
  • q i q_i qi:客户点 i i i的需求量(供应量),如果是取货点,则 q i > 0 q_i>0 qi>0;如果是送货点,则 q i < 0 q_i<0 qi<0;如果是起点0、终点,则 n + n ~ + 1 n +\tilde{n}+1 n+n~+1,则 q 0 = q n + n ~ + 1 = 0 q_0=q_{n +\tilde{n}+1}=0 q0=qn+n~+1=0
  • e i e_i ei:客户点 i i i允许的最早开始服务时间。
  • l i l_i li:客户点 i i i允许的最晚开始服务时间。
  • d i d_i di:客户点 i i i的服务时间(作业时间)。
  • L i L_i Li:客户点 i i i的服务时间(作业时间)。
  • C k C^k Ck:车辆 k k k的容量。
  • T k T^k Tk:车辆 k k k作业时间上限(maximum route duration of vehicle/route k)
    决策变量
  • x i j k x_{ijk} xijk:车辆路径决策变量, x i j k = 1 x_{ijk}=1 xijk=1,车辆 k k k经过弧 ( i , j ) (i,j) (i,j)
  • Q i k Q_{i}^{k} Qik:车辆 k k k离开节点 i i i时的装载量;
  • B i k B_{i}^{k} Bik:车辆 k k k服务 i i i点的开始时刻;

混合整数规划模型
min ⁡ ∑ k ∈ K ∑ ( i , j ) ∈ A c i j k x i j k subject to. ∑ k ∈ K ∑ j : ( i , j ) ∈ A x i j k = 1 ∀ i ∈ P ∪ D , ∑ j : ( 0 , j ) ∈ A x 0 j k = 1 ∀ k ∈ K , ∑ i : ( i , n + n ~ + 1 ) ∈ A x i , n + n ~ + 1 k = 1 ∀ k ∈ K , ∑ i : ( i , j ) ∈ A x i j k − ∑ i : ( j , i ) ∈ A x j i k = 0 ∀ j ∈ P ∪ D , k ∈ K , x i j k = 1 ⇒ B j k ≥ B i k + d i + t i j k ∀ ( i , j ) ∈ A , k ∈ K , x i j k = 1 ⇒ Q j k = Q i k + q j ∀ ( i , j ) ∈ A , k ∈ K , max ⁡ { 0 , q i } ≤ Q i k ≤ min ⁡ { C k , C k + q i } ∀ i ∈ V , k ∈ K , ∑ j : ( i , j ) ∈ A x i j k − ∑ j : ( n + i , j ) ∈ A x n + i , j k = 0 ∀ i ∈ P , k ∈ K B i k ≤ B n + i k ∀ i ∈ P , k ∈ K . e i ≤ B i k ≤ l i ∀ i ∈ V , k ∈ K , e i ≤ B i k ≤ l i ∀ i ∈ V , k ∈ K , B n + n ~ + 1 k − B 0 k ≤ T k ∀ k ∈ K , x i j k ∈ { 0 , 1 } ∀ ( i , j ) ∈ A , k ∈ K \begin{align} \min \quad & \sum_{k\in K}\sum_{(i,j) \in A} c_{ij}^k x_{ij}^k \\ \text{subject to.} \quad &\sum_{k \in K} \sum_{j:(i, j) \in A} x_{i j}^{k} =1 & \forall i \in P \cup D, \\ &\sum_{j:(0, j) \in A} x_{0 j}^{k}=1 & \forall k \in K, \\ &\sum_{i:(i, n+\tilde{n}+1) \in A} x_{i, n+\tilde{n}+1}^{k} =1 & \forall k \in K, \\ &\sum_{i:(i, j) \in A} x_{i j}^{k}-\sum_{i:(j, i) \in A} x_{j i}^{k} =0 &\forall j \in P \cup D, k \in K, \\ &x_{i j}^{k}=1 \Rightarrow B_{j}^{k} \geq B_{i}^{k}+d_{i}+t_{i j}^{k} & \forall(i, j) \in A, k \in K, \\ &x_{i j}^{k}=1 \Rightarrow Q_{j}^{k} =Q_{i}^{k}+q_{j} & \forall(i, j) \in A, k \in K, \\ &\max \left\{0, q_{i}\right\} \leq Q_{i}^{k} \leq \min \left\{C^{k}, C^{k}+q_{i}\right\} & \forall i \in V, k \in K, \\ & \sum_{j:(i, j) \in A} x_{i j}^{k}-\sum_{j:(n+i, j) \in A} x_{n+i, j}^{k}=0 \quad \forall i \in P, k \in K\\ & B_{i}^{k} \leq B_{n+i}^{k} \quad \forall i \in P, k \in K . & e_i \leq B_i^k \leq l_i & \forall i \in V, k \in K,\\ & e_i \leq B_i^k \leq l_i & \forall i \in V, k \in K,\\ & B_{n+\tilde{n}+1}^k -B_{0}^k \leq T^k &\forall k \in K,\\ &x_{i j}^{k} \in\{0,1\} & \forall(i, j) \in A, k \in K \\ \end{align} minsubject to.kK(i,j)AcijkxijkkKj:(i,j)Axijk=1j:(0,j)Ax0jk=1i:(i,n+n~+1)Axi,n+n~+1k=1i:(i,j)Axijki:(j,i)Axjik=0xijk=1BjkBik+di+tijkxijk=1Qjk=Qik+qjmax{0,qi}Qikmin{Ck,Ck+qi}j:(i,j)Axijkj:(n+i,j)Axn+i,jk=0iP,kKBikBn+ikiP,kK.eiBikliBn+n~+1kB0kTkxijk{0,1}iPD,kK,kK,jPD,kK,(i,j)A,kK,(i,j)A,kK,iV,kK,eiBikliiV,kK,kK,(i,j)A,kKiV,kK,

  • 目标函数(1)最小化总体行驶成本;
  • 约束(2)保证了每个客户点都被访问了一次;
  • 约束(3-5)分别保证了每辆车必须从始发站出发,到达并离开每个客户点,并最终回到终点站;
  • 约束(6)消除子回路,
  • 约束(7-8)车辆容量约束
  • 约束(9),联结约束(coupling constraint),同一需求的起点和终点都必须是同一辆车提供服务
  • 约束(10),优先级约束(precedence constraint),针对每一货运需求,取货任 务的服务顺序须于送货任务前。
  • 约束(11)时间窗约束
  • 约束(12)路径时长限制

【注】约束(6)和(7)是非线性的,可以用大M进行线性化

PDPTW问题求解

使用Java调用Cplex求解带时间窗的车辆路径问题

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

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

相关文章

【项目】C++ 基于多设计模式下的同步异步日志系统

前言 一般而言&#xff0c;业务的服务都是周而复始的运行&#xff0c;当程序出现某些问题时&#xff0c;程序员要能够进行快速的修复&#xff0c;而修复的前提是要能够先定位问题。 因此为了能够更快的定位问题&#xff0c;我们可以在程序运行过程中记录一些日志&#xff0c;通…

MySQL8.0 通过data文件恢复数据库

情景&#xff1a; mysql突然访问不了&#xff0c;也启动不了&#xff0c;需要保存之前的数据库文件&#xff0c;在卸载重装恢复数据 步骤&#xff1a; 1、Mysql里的数据一般会自动保存到C:\ProgramData\MySQL\MySQL Server 8.0\Data目录下&#xff0c;卸载前要将其备份。这是…

数据结构之树(Topk问题, 链式二叉树)

一.topk问题 取N个数中最大(小)的前k个值,N远大于k 这道题可以用堆的方法来解决,首先取这N个数的前k个值,用它们建堆 时间复杂度O(k) 之后将剩余的N-k个数据依次与堆顶数据进行比较,如果比堆顶数据大,则将堆顶数据覆盖后向下调整 时间复杂度(N-k)*log(N) 总共的时间复杂度…

【05】消失的数字

hellohello~这里是土土数据结构学习笔记&#x1f973;&#x1f973; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1f4a5;所属专栏&#xff1a;C语言函数实现 感谢大家的观看与支持&#x1f339;&#x1f339;&#x1f339; 有问题可以写在评论区或者私信我哦…

缓冲区与C库函数的实现

目录 一、缓冲区 二、C库函数的实现 一、缓冲区 缓冲区本质就是一块内存&#xff0c;而缓冲区存在的意义本质是提高使用者(用户)的效率【把缓冲区理解成寄送包裹的菜鸟驿站】 缓冲区的刷新策略 1. 无缓冲(立即刷新) 2. 行缓冲(行刷新) 3. 全缓冲(缓冲区满了&#xff0c;再刷…

春风吹又生的开源项目「GitHub 热点速览」

随着上周知名 Switch 开源模拟器 Yuzu&#xff08;柚子&#xff09;被任天堂起诉&#xff0c;该项目作者就删库了&#xff0c;但还是要赔偿任天堂数百万美元。此事还在 GitHub 上掀起了一波 Yuzu fork 项目的小浪潮&#xff0c;正所谓野火烧不尽&#xff0c;春风吹又生。 很多读…

Express学习(四)

使用Express写接口 创建基本的服务器 创建API路由模块 编写GET接口 编写POST接口 CORS跨域资源共享 什么是CORS CORS由一系列HTTP响应头组成&#xff0c;这些HTTP响应头决定浏览器是否阻止前端JS代码跨域获取资源。浏览器的同源安全策略默认会阻止网页“跨域”获取资源。但如…

十五、软考-系统架构设计师笔记-面向服务架构设计理论与实践

1、SOA相关概念 面向服务的架构(SOA)的定义 SOA 是一个组件模型&#xff0c;它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的&#xff0c;它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构…

狂揽Github—start19.7k☆开源OCR—Umi-OCR

文章目录 背景Umi-OCR—源码下载Umi-OCR—可执行程序下载页面介绍截图OCR识别批量OCR识别批量文档二维码全局设置 总结&#xff1a; 背景 大家都知道我是一个Python办公自动化的小小程序员&#xff0c;经常收集一些免费开源的OCR供大家使用&#xff0c;目前我已经写出来多家OCR…

(done) win11 如何安装 Anaconda3 ? 如何安装 jupyter notebook

首先是这个网站 https://www.anaconda.com/download/#windows 下载并安装 anaconda3 进入 anaconda3.navigator 后&#xff0c;会看到如下界面 点击下面这个 Launch 按钮&#xff0c;可以启动 jupyter notebook 如下图&#xff0c;jupyter 出来了

【数据结构七】堆与PriorityQueue详解

堆 在Java中有一种数据结构基于队列&#xff0c;并保证操作的数据带有优先级&#xff0c;该数据结构应该提供了两个最基本的操作&#xff0c;一个是返回最高优先级对象&#xff0c;一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue)。它的底层使用了堆这种数据结…

离散化算法,以Acwing802.区间和为例子(C++实现)

目录 1.例题2.算法实现思路3.代码 1.例题 假定有一个无限长的数轴&#xff0c;数轴上每个坐标上的数都是 0现在&#xff0c;我们首先进行 n 次操作&#xff0c;每次操作将某一位置 x 上的数加 c接下来&#xff0c;进行 m 次询问&#xff0c;每个询问包含两个整数 l 和 r&#…

贪心算法(算法竞赛、蓝桥杯)--奶牛晒衣服

1、B站视频链接&#xff1a;A28 贪心算法 P1843 奶牛晒衣服_哔哩哔哩_bilibili 题目链接&#xff1a;奶牛晒衣服 - 洛谷 #include <bits/stdc.h> using namespace std; priority_queue<int> q;//用大根堆维护湿度的最大值 int n,a,b; int tim,maxn;int main(){s…

sqllab第十关通关笔记

知识点&#xff1a; 时间盲注适用于回显无变化的场景重点还是不断的构造payload进行尝试&#xff1b;判断绕过条件 这里就不演示判断注入类型&#xff1b;通过测试发现和第九关一样&#xff1b;回显无变化的&#xff1b; 构造第九关的payload:id1 and if(1,sleep(2),1) -- 发…

MySQL的事务隔离是如何实现的?

目录 从一个例子说起 快照读和当前读 事务的启动时机和读视图生成的时刻 MVCC 隐藏字段 Undo Log回滚日志 Read View - 读视图 可重复读(RC)隔离级别下的MVCC 读提交(RR)隔离级别下的MCC 关于MVCC的一些疑问 1.为什么需要 MVCC &#xff1f;如果没有 MVCC 会怎样&am…

Windows-WSL2-VSCode+Docker配置C++开发环境

Windows-WSL2-VSCodeDocker配置C开发环境 写在前面 因为在学习工作中&#xff0c;需要不同的编码环境&#xff0c;若将这些不同的开发环境都状态一台设备上&#xff0c;很容易出问题&#xff0c;而且迁移性差&#xff0c;于是计划把不同的开发环境用docker隔离开来&#xff0…

Llama-3公布基础训练设施,使用49000个H100

3月13日&#xff0c;社交、科技巨头Meta在官网公布了两个全新的24K H100 GPU集群&#xff08;49,152个&#xff09;&#xff0c;专门用于训练大模型Llama-3。 此外&#xff0c;Llama-3使用了RoCEv2网络&#xff0c;基于Tectonic/Hammerspace的NFS/FUSE网络存储&#xff0c;继续…

嵌入式开发--基于STM32G431RBTx-按键中断

嵌入式开发–STM32G431RBTx-按键 将如下引脚口都设置为输出上拉模式 PB0&#xff0c;PB1&#xff0c;PB2&#xff0c;PA0 设置为上拉模式 配置定时器 如图有反映stm32g431的定时器资源。 时钟源选择外部时钟 设定系数 第一个是分频系数(Prescaler) 第二个是周期计数值&…

F.岛屿个数【蓝桥杯】/dfs+环

岛屿个数 小蓝得到了一副大小为 M N 的格子地图&#xff0c;可以将其视作一个只包含字符‘0’&#xff08;代表海水&#xff09;和 ‘1’&#xff08;代表陆地&#xff09;的二维数组&#xff0c;地图之外可以视作全部是海水&#xff0c;每个岛屿由在上/下/左/右四个方向上相…

记一次生产慢sql索引优化及思考

记一次生产慢sql索引优化及思考 问题重现 夜黑风高的某一晚&#xff0c;突然收到一条运营后台数据库慢sql的报警&#xff0c;耗时竟然达到了60s。看了一下&#xff0c;还好不是很频繁&#xff0c;内心会更加从容排查问题&#xff0c;应该是特定条件下没有走到索引导致&#x…