文献解读-物理信息深度学习(PINN)

文献解读-物理信息深度学习(PINN)我们介绍了物理信息神经网络 神经网络训练解决监督学习任务 同时尊重任何给定的物理定律 由一般非线性偏微分方程描述 我们在解决两类主要问题的背景下提出了我们的发展 偏微分方程的数据驱动解和数据驱动发现 根据可用数据的性质和布局 我们设计了两类不同的算法 即连续时间模型和离散时间模型

物理信息深度学习(PINN)

偏微分方程的数据驱动解数据驱动发现

在 GitHub 上查看

作者

马齐亚·赖西, 巴黎·佩迪卡里斯, 和 乔治·埃姆·卡尼亚达基斯

摘要

我们介绍了物理信息神经网络-神经网络训练解决监督学习任务,同时尊重任何给定的物理定律,由一般非线性偏微分方程描述。我们在解决两类主要问题的背景下提出了我们的发展:偏微分方程的数据驱动解数据驱动发现。根据可用数据的性质和布局,我们设计了两类不同的算法,即连续时间模型和离散时间模型。由此产生的神经网络形成了一种新的数据高效的通用函数近似器,可以自然地将任何潜在的物理定律编码为先验信息。在第一部分中,我们将演示如何使用这些网络来推断偏微分方程的解,并获得关于所有输入坐标和自由参数的完全可微的物理代理模型。在第二部分,我们重点讨论了偏微分方程的数据驱动发现问题。

非线性偏微分方程的数据驱动解

连续时间模型

定义 f ( t , x ) f(t,x) f(t,x)
f : = u t + N [ u ] , f := u_t + \mathcal{N}[u], f:=ut+N[u],
并通过深度神经网络逼近 u ( t , x ) u(t,x) u(t,x). 这个假设产生了一个物理信息的神经网络 f ( t , x ) f(t,x) f(t,x). 这个网络可以通过计算图的演算得到:反向传播




示例(Burgers方程)

定义 f ( t , x ) f(t,x) f(t,x)
f : = u t + u u x − ( 0.01 / π ) u x x , f := u_t + u u_x – (0.01/\pi) u_{xx}, f:=ut+uux(0.01/π)uxx,
并通过深度神经网络逼近 u ( t , x ) u(t,x) u(t,x). 为了强调实现这个想法的简单性,使用 Tensorflow 包给出一个 Python 代码片段。为此, u ( t , x ) u(t,x) u(t,x) 可以简单地定义为




def u(t, x): u = neural_net(tf.concat([t,x],1), weights, biases) return u 

相应地,物理信息神经网络 f ( t , x ) f(t,x) f(t,x) 的形式为

def f(t, x): u = u(t, x) u_t = tf.gradients(u, t)[0] u_x = tf.gradients(u, x)[0] u_xx = tf.gradients(u_x, x)[0] f = u_t + u*u_x - (0.01/tf.pi)*u_xx return f 

神经网络 u ( t , x ) u(t,x) u(t,x) f ( t , x ) f(t,x) f(t,x) 之间的共享参数可以通过最小化均方误差损失来学习
M S E = M S E u + M S E f , MSE = MSE_u + MSE_f, MSE=MSEu+MSEf,
其中
M S E u = 1 N u ∑ i = 1 N u ∣ u ( t u i , x u i ) − u i ∣ 2 , MSE_u = \frac{1}{N_u}\sum_{i=1}^{N_u} |u(t^i_u,x_u^i) – u^i|^2, MSEu=Nu1i=1Nuu(tui,xui)ui2,






M S E f = 1 N f ∑ i = 1 N f ∣ f ( t f i , x f i ) ∣ 2 . MSE_f = \frac{1}{N_f}\sum_{i=1}^{N_f}|f(t_f^i,x_f^i)|^2. MSEf=Nf1i=1Nff(tfi,xfi)2.
这里, { t u i , x u i , u i } i = 1 N u \{t_u^i, x_u^i, u^i\}_{i=1}^{N_u} {
tui,xui,ui}i=1Nu
表示 u ( t , x ) u(t,x) u(t,x) 的初始和边界训练数据和指定 f ( t , x ) f(t,x) f(t,x) 的配置点 { t f i , x f i } i = 1 N f \{t_f^i, x_f^i\}_{i=1}^{N_f} {
tfi,xfi}i=1Nf
. 损失 M S E u MSE_u MSEu 对应于初始和边界数据,而 M S E f MSE_f MSEf 在有限的配置点集上强制执行 Burgers 方程强加的结构。

Burgers 方程: Top: 预测解连同初始和边界训练数据。此外,我们还使用了10,000个使用拉丁超立方抽样策略生成的搭配点。 Bottom: 顶部图片中白色垂直线描绘的三个时间快照对应的预测解和精确解的比较。在单个 NVIDIA Titan X GPU 卡上进行模型训练大约需要 60 秒。

示例 (Shrödinger 方程)

Shrödinger 方程: Top: 预测解连同初始和边界训练数据。此外,我们还使用了使用拉丁超立方体采样策略生成的20,000个搭配点. Bottom: 顶部图片中垂直虚线描绘的三个时间快照对应的预测解和精确解的比较。

到目前为止所考虑的连续时间神经网络模型的一个潜在限制源于需要使用大量搭配点 N f N_f Nf 以在整个时空域中强制执行物理信息约束。虽然这对一维或二维空间的问题没有造成重大问题,但它可能会在高维问题中引入严重的瓶颈,因为全局强制执行物理信息约束所需的配置点总数(即在我们的情况下为偏微分方程)将呈指数增长。在下一节中,我们提出了一种不同的方法,该方法通过利用经典的 Runge-Kutta 时间步进方案引入更结构化的神经网络表示来规避对配置点的需求。

离散时间模型

让我们利用 q q q阶龙格-库塔方法的一般形式,得到
u n + c i = u n − Δ t ∑ j = 1 q a i j N [ u n + c j ] ,    i = 1 , … , q , u n + 1 = u n − Δ t ∑ j = 1 q b j N [ u n + c j ] . \begin{array}{ll} u^{n+c_i} = u^n – \Delta t \sum_{j=1}^q a_{ij} \mathcal{N}[u^{n+c_j}], \ \ i=1,\ldots,q,\\ u^{n+1} = u^{n} – \Delta t \sum_{j=1}^q b_j \mathcal{N}[u^{n+c_j}]. \end{array} un+ci=unΔtj=1qaijN[un+cj],  i=1,,q,un+1=unΔtj=1qbjN[un+cj].
这里, u n + c j ( x ) = u ( t n + c j Δ t , x ) u^{n+c_j}(x) = u(t^n + c_j \Delta t, x) un+cj(x)=u(tn+cjΔt,x) 对于 j = 1 , … , q j=1, \ldots, q j=1,,q. 这种通用形式封装了隐式和显式时间步进方案,具体取决于参数 { a i j , b j , c j } \{a_{ij},b_j,c_j\} {
aij,bj,cj}
. 的选择。上面的方程可以等价地(转换为其余各层与第 n n n层的关系)表示为
u n = u i n ,    i = 1 , … , q , u n = u q + 1 n , \begin{array}{ll} u^{n} = u^n_i, \ \ i=1,\ldots,q,\\ u^n = u^n_{q+1}, \end{array} un=uin,  i=1,,q,un=uq+1n,
其中
u i n : = u n + c i + Δ t ∑ j = 1 q a i j N [ u n + c j ] ,    i = 1 , … , q , u q + 1 n : = u n + 1 + Δ t ∑ j = 1 q b j N [ u n + c j ] . \begin{array}{ll} u^n_i := u^{n+c_i} + \Delta t \sum_{j=1}^q a_{ij} \mathcal{N}[u^{n+c_j}], \ \ i=1,\ldots,q,\\ u^n_{q+1} := u^{n+1} + \Delta t \sum_{j=1}^q b_j \mathcal{N}[u^{n+c_j}]. \end{array} uin:=un+ci+Δtj=1qaijN[un+cj],  i=1,,q,uq+1n:=un+1+Δtj=1qbjN[un+cj].
我们先放置一个多输出神经网络
[ u n + c 1 ( x ) , … , u n + c q ( x ) , u n + 1 ( x ) ] . \begin{bmatrix} u^{n+c_1}(x), \ldots, u^{n+c_q}(x), u^{n+1}(x) \end{bmatrix}. [un+c1(x),,un+cq(x),un+1(x)].
这个先验假设加上上面的方程式得到了一个以 x x x作为输入和输出的物理信息神经网络
[ u 1 n ( x ) , … , u q n ( x ) , u q + 1 n ( x ) ] . \begin{bmatrix} u^n_1(x), \ldots, u^n_q(x), u^n_{q+1}(x) \end{bmatrix}. [u1n(x),,uqn(x),uq+1n(x)].


















示例 (Allen-Cahn 方程)
这个例子旨在强调提出的离散时间模型处理控制偏微分方程中不同类型非线性的能力。为此目的,让我们考虑 Allen-Cahn 方程和周期边界条件
u t − 0.0001 u x x + 5 u 3 − 5 u = 0 ,     x ∈ [ − 1 , 1 ] ,     t ∈ [ 0 , 1 ] , u ( 0 , x ) = x 2 cos ⁡ ( π x ) , u ( t , − 1 ) = u ( t , 1 ) , u x ( t , − 1 ) = u x ( t , 1 ) . \begin{array}{l} u_t – 0.0001 u_{xx} + 5 u^3 – 5 u = 0, \ \ \ x \in [-1,1], \ \ \ t \in [0,1],\\ u(0, x) = x^2 \cos(\pi x),\\ u(t,-1) = u(t,1),\\ u_x(t,-1) = u_x(t,1). \end{array} ut0.0001uxx+5u35u=0,   x[1,1],   t[0,1],u(0,x)=x2cos(πx),u(t,1)=u(t,1),ux(t,1)=ux(t,1).
Allen-Cahn 方程是反应扩散系统领域的一个著名方程。它描述了多组分合金体系的相分离过程,包括有序-无序转变。对于 Allen-Cahn 方程,给出了非线性算子
N [ u n + c j ] = − 0.0001 u x x n + c j + 5 ( u n + c j ) 3 − 5 u n + c j , \mathcal{N}[u^{n+c_j}] = -0.0001 u^{n+c_j}_{xx} + 5 \left(u^{n+c_j}\right)^3 – 5 u^{n+c_j}, N[un+cj]=0.0001uxxn+cj+5(un+cj)35un+cj,
并且可以通过最小化误差平方和来学习神经网络的共享参数
S S E = S S E n + S S E b , SSE = SSE_n + SSE_b, SSE=SSEn+SSEb,
其中
S S E n = ∑ j = 1 q + 1 ∑ i = 1 N n ∣ u j n ( x n , i ) − u n , i ∣ 2 , SSE_n = \sum_{j=1}^{q+1} \sum_{i=1}^{N_n} |u^n_j(x^{n,i}) – u^{n,i}|^2, SSEn=j=1q+1i=1Nnujn(xn,i)un,i2,
S S E b = ∑ i = 1 q ∣ u n + c i ( − 1 ) − u n + c i ( 1 ) ∣ 2 + ∣ u n + 1 ( − 1 ) − u n + 1 ( 1 ) ∣ 2 + ∑ i = 1 q ∣ u x n + c i ( − 1 ) − u x n + c i ( 1 ) ∣ 2 + ∣ u x n + 1 ( − 1 ) − u x n + 1 ( 1 ) ∣ 2 . % \begin{array}{rl} SSE_b =& \sum_{i=1}^q |u^{n+c_i}(-1) – u^{n+c_i}(1)|^2 + |u^{n+1}(-1) – u^{n+1}(1)|^2 \\ +& \sum_{i=1}^q |u_x^{n+c_i}(-1) – u_x^{n+c_i}(1)|^2 + |u_x^{n+1}(-1) – u_x^{n+1}(1)|^2. \end{array} % SSEb=+i=1qun+ci(1)un+ci(1)2+un+1(1)un+1(1)2i=1quxn+ci(1)uxn+ci(1)2+uxn+1(1)uxn+1(1)2.
这里, { x n , i , u n , i } i = 1 N n \{x^{n,i}, u^{n,i}\}_{i=1}^{N_n} {
xn,i,un,i}i=1Nn
对应于时间 t n t^n tn 的数据.




















Allen-Cahn 方程: Top: 解以及初始训练(t=0.1)到最终预测(t=0.9)训练快照的位置. Bottom: 顶部图片中白色垂直线描绘的初始训练数据和最终预测快照。

非线性偏微分方程的数据驱动发现

在下文中,我们将概述我们解决这个问题的两种主要方法,即连续时间模型和离散时间模型,以及针对各种基准集合的一系列结果和系统研究。在第一种方法中,我们将假设在整个时空域中可以使用分散的和潜在的噪声测量。 在后者中,我们将尝试仅从在不同时刻拍摄的两个数据快照推断未知参数 λ \lambda λ。本手稿中使用的所有数据和代码均可在 GitHub 上公开获取.

连续时间模型

定义 f ( t , x ) f(t,x) f(t,x)
f : = u t + N [ u ; λ ] f := u_t + \mathcal{N}[u;\lambda] f:=ut+N[u;λ]
然后通过深度神经网络逼近 u ( t , x ) u(t,x) u(t,x). 这个假设生成了一个物理信息神经网络 f ( t , x ) f(t,x) f(t,x). 这个网络可以通过计算图的演算得到:反向传播。值得强调的是,微分算子 λ \lambda λ 的参数变成了物理信息神经网络 f ( t , x ) f(t,x) f(t,x) 的参数。




示例 (Navier-Stokes 方程)

下图显示了我们在此示例中的结果摘要。

文献解读-物理信息深度学习(PINN)

Navier-Stokes 方程: Top: Re=100时,不可压缩流动和动态涡脱落经过圆柱体。时空训练数据对应于圆柱体尾流中所描绘的矩形区域. Bottom: 流向和横向速度分量的训练数据点的位置。.

文献解读-物理信息深度学习(PINN)

Navier-Stokes 方程: Top: 代表时刻的预测与精确瞬时压力场。根据定义,压力可以恢复到一个常数,从而证明两个图之间的不同幅度是合理的。这种显着的定性一致性突出了基于物理的神经网络在模型训练期间没有使用压力数据而识别整个压力场的能力。Bottom: 对偏微分方程进行了修正.

到目前为止,我们的方法是假设在整个时空域都可以获得分散的数据。然而,在许多实际感兴趣的情况下,人们可能只能在不同的时间瞬间观察系统。在下一节中,我们将介绍一种不同的方法,它只使用两个数据快照来处理数据驱动的发现问题。我们将看到,如何利用经典的龙格-库塔时间步进方案,构建离散时间物理信息神经网络,即使在数据快照之间的时间差距非常大的情况下,也能保持高预测精度。

离散时间模型

我们首先采用 q q q 阶龙格-库塔方法的一般形式,得到
u n + c i = u n − Δ t ∑ j = 1 q a i j N [ u n + c j ; λ ] ,    i = 1 , … , q , u n + 1 = u n − Δ t ∑ j = 1 q b j N [ u n + c j ; λ ] . \begin{array}{ll} u^{n+c_i} = u^n – \Delta t \sum_{j=1}^q a_{ij} \mathcal{N}[u^{n+c_j};\lambda], \ \ i=1,\ldots,q,\\ u^{n+1} = u^{n} – \Delta t \sum_{j=1}^q b_j \mathcal{N}[u^{n+c_j};\lambda]. \end{array} un+ci=unΔtj=1qaijN[un+cj;λ],  i=1,,q,un+1=unΔtj=1qbjN[un+cj;λ].
这里, u n + c j ( x ) = u ( t n + c j Δ t , x ) u^{n+c_j}(x) = u(t^n + c_j \Delta t, x) un+cj(x)=u(tn+cjΔt,x) 对于 j = 1 , … , q j=1, \ldots, q j=1,,q. 这种通用形式封装了隐式和显式时间步进方案,具体取决于参数 { a i j , b j , c j } \{a_{ij},b_j,c_j\} {
aij,bj,cj}
. 的选择。上面的方程可以等价地表示为
u n = u i n ,    i = 1 , … , q , u n + 1 = u i n + 1 ,    i = 1 , … , q . \begin{array}{ll} u^{n} = u^n_i, \ \ i=1,\ldots,q,\\ u^{n+1} = u^{n+1}_{i}, \ \ i=1,\ldots,q. \end{array} un=uin,  i=1,,q,un+1=uin+1,  i=1,,q.
其中
u i n : = u n + c i + Δ t ∑ j = 1 q a i j N [ u n + c j ; λ ] ,    i = 1 , … , q , u i n + 1 : = u n + c i + Δ t ∑ j = 1 q ( a i j − b j ) N [ u n + c j ; λ ] ,    i = 1 , … , q . \begin{array}{ll} u^n_i := u^{n+c_i} + \Delta t \sum_{j=1}^q a_{ij} \mathcal{N}[u^{n+c_j};\lambda], \ \ i=1,\ldots,q,\\ u^{n+1}_{i} := u^{n+c_i} + \Delta t \sum_{j=1}^q (a_{ij} – b_j) \mathcal{N}[u^{n+c_j};\lambda], \ \ i=1,\ldots,q. \end{array} uin:=un+ci+Δtj=1qaijN[un+cj;λ],  i=1,,q,uin+1:=un+ci+Δtj=1q(aijbj)N[un+cj;λ],  i=1,,q.
我们先放置一个多输出神经网络
[ u n + c 1 ( x ) , … , u n + c q ( x ) ] . \begin{bmatrix} u^{n+c_1}(x), \ldots, u^{n+c_q}(x) \end{bmatrix}. [un+c1(x),,un+cq(x)].
这一先验假设产生了两个物理信息神经网络
[ u 1 n ( x ) , … , u q n ( x ) , u q + 1 n ( x ) ] , \begin{bmatrix} u^{n}_1(x), \ldots, u^{n}_q(x), u^{n}_{q+1}(x) \end{bmatrix}, [u1n(x),,uqn(x),uq+1n(x)],

[ u 1 n + 1 ( x ) , … , u q n + 1 ( x ) , u q + 1 n + 1 ( x ) ] . \begin{bmatrix} u^{n+1}_1(x), \ldots, u^{n+1}_q(x), u^{n+1}_{q+1}(x) \end{bmatrix}. [u1n+1(x),,uqn+1(x),uq+1n+1(x)].
给定两个不同时间快照的噪声测量值 { x n , u n } \{\mathbf{x}^{n}, \mathbf{u}^{n}\} {
xn,un}
{ x n + 1 , u n + 1 } \{\mathbf{x}^{n+1}, \mathbf{u}^{n+1}\} {
xn+1,un+1}
系统的时间分别为 t n t^{n} tn t n + 1 t^{n+1} tn+1, 神经网络的共享参数以及微分算子的参数 λ \lambda λ 可以通过最小化误差平方和来训练
S S E = S S E n + S S E n + 1 , SSE = SSE_n + SSE_{n+1}, SSE=SSEn+SSEn+1,
其中
S S E n : = ∑ j = 1 q ∑ i = 1 N n ∣ u j n ( x n , i ) − u n , i ∣ 2 , SSE_n := \sum_{j=1}^q \sum_{i=1}^{N_n} |u^n_j(x^{n,i}) – u^{n,i}|^2, SSEn:=j=1qi=1Nnujn(xn,i)un,i2,
S S E n + 1 : = ∑ j = 1 q ∑ i = 1 N n + 1 ∣ u j n + 1 ( x n + 1 , i ) − u n + 1 , i ∣ 2 . SSE_{n+1} := \sum_{j=1}^q \sum_{i=1}^{N_{n+1}} |u^{n+1}_j(x^{n+1,i}) – u^{n+1,i}|^2. SSEn+1:=j=1qi=1Nn+1ujn+1(xn+1,i)un+1,i2.
这里, x n = { x n , i } i = 1 N n \mathbf{x}^n = \left\{x^{n,i}\right\}_{i=1}^{N_n} xn={
xn,i}
i=1Nn
, u n = { u n , i } i = 1 N n \mathbf{u}^n = \left\{u^{n,i}\right\}_{i=1}^{N_n} un={
un,i}
i=1Nn
, x n + 1 = { x n + 1 , i } i = 1 N n + 1 \mathbf{x}^{n+1} = \left\{x^{n+1,i}\right\}_{i=1}^{N_{n+1}} xn+1={
xn+1,i}
i=1Nn+1
, u n + 1 = { u n + 1 , i } i = 1 N n + 1 \mathbf{u}^{n+1} = \left\{u^{n+1,i}\right\}_{i=1}^{N_{n+1}} un+1={
un+1,i}
i=1Nn+1
.


































示例 (Korteweg–de Vries 方程)

我们的最后一个例子旨在强调所提出的框架处理涉及高阶导数的控制偏微分方程的能力。在这里,我们考虑浅水表面波的数学模型; Korteweg-de Vries (KdV) 方程。 KdV 方程是 u t + λ 1 u u x + λ 2 u x x x = 0 , u_t + \lambda_1 u u_x + \lambda_2 u_{xxx} = 0, ut+λ1uux+λ2uxxx=0,
其中 ( λ 1 , λ 2 ) (\lambda_1, \lambda_2) (λ1,λ2) 是未知参数。对于 KdV 方程,非线性算子由下式给出
N [ u n + c j ] = λ 1 u n + c j u x n + c j − λ 2 u x x x n + c j \mathcal{N}[u^{n+c_j}] = \lambda_1 u^{n+c_j} u^{n+c_j}_x – \lambda_2 u^{n+c_j}_{xxx} N[un+cj]=λ1un+cjuxn+cjλ2uxxxn+cj
以及神经网络的共享参数以及 KdV 方程中的参数 λ = ( λ 1 , λ 2 ) \lambda = (\lambda_1, \lambda_2) λ=(λ1,λ2)
可以通过最小化上面给出的误差平方和来学习。








KdV 方程n: Top: 解以及两个训练快照的时间位置. Middle: 上图中虚线所示的两个瞬时快照对应的训练数据和精确解. Bottom: 修正偏微分方程以及确定的方程


结论

尽管提出了一系列有希望的结果,但读者可能会同意,这本由两部分组成的论文提出的问题多于它的答案。在更广泛的背景下,并在寻求进一步了解这些工具的过程中,我们相信这项工作倡导机器学习和经典计算物理学之间富有成效的协同作用,有可能丰富这两个领域并导致高影响力的发展。


致谢

这项工作得到了 DARPA EQUiPS 赠款 N66001-15-2-4055 和 AFOSR 赠款 FA9550-17-1-0013 的支持。所有数据和代码都在 GitHub 上公开提供


引文

笔记来源:https://github.com/maziarraissi/PINNs

课程及参考文献

深度学习与科学计算的结合:基础与提高DeepXDE(天元数学东南中心)

DeepXDE 科学机器学习库(薛定谔方程)

课程视频下载密码:safh

Physics Informed Deep Learning (Part I)

Physics Informed Deep Learning (Part II)

DeepXDE- A Deep Learning Library for Solving Differential Equations

文献解读-Physics Informed Deep Learning(PINN)

文献解读-物理信息深度学习(PINN)

作者邮箱:turingscat@126.com

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224322.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午12:12
下一篇 2026年3月17日 下午12:12


相关推荐

  • bat中获取bat命令结果

    bat中获取bat命令结果bat 中获取 bat 命令结果 FOR 循环 一行行处理 FOR F options variableIN command DOcommand command parameters 先重定向输出到文件 再读取文件 set pstr a txt 管道 dird s b find log a txt 管道

    2026年3月19日
    2
  • 面试:最易被忽略的12种高级错误

    面试:最易被忽略的12种高级错误

    2021年7月23日
    50
  • C++学习——数据类型(强制)转换详解

    C++学习——数据类型(强制)转换详解有时,编程的过程中需要将值从一种数据类型转换为另一种数据类型。C++ 提供了这样做的方法。如果将一个浮点值分配给一个 int 整型变量,该变量会接收什么值?如果一个 int 整数乘以一个 float 浮点数,结果将会是什么数据类型?如果一个 double 浮点数除以一个 unsigned int 无符号整数会怎么样?是否有办法预测在这些情况下会发生什么?答案是肯定的。当运算符的操作数具有不同的…

    2022年8月18日
    11
  • 浅谈媒体查询

    浅谈媒体查询媒体查询是界面为了适应不同屏幕大小而存在的基本语法是 mediamediaty 在 not 不再 only 仅在 mediafeature 设备尺寸 CSS Code 两种引入方式 1 内嵌 style mediascreena width 400px body backgrou

    2026年3月17日
    2
  • pvp还是pve_阿特拉斯PVP好玩还是pve

    pvp还是pve_阿特拉斯PVP好玩还是pve今天组内同事分享了PVE和PVP这两种游戏中常见的战斗模式,引起了我对这两种模式的兴趣。结合分享的内容以及网络上的资料,现在来谈谈这两种战斗模式的区别。首先我们来看看他们的定义:PVE:PlayerVSEnvironment,指的是玩家与系统之间的互动。通过字面意思其实很容易理解,PVE指的是玩家挑战系统程序所控制的NPC怪物和boss,从而…

    2025年8月14日
    4
  • Proxmark3 Easy Gui 5.0、5.13、5.2加强版介绍

    Proxmark3 Easy Gui 5.0、5.13、5.2加强版介绍一个偶然的机会 入手了一台 PM3 学习了不少 proxmark3 的知识

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号