怎样保存网站资料 做证据/如何做电商

怎样保存网站资料 做证据,如何做电商,戴尔电脑网站建设方案范文,wordpress 不检查更新第三十周周报 一、文献阅读题目信息摘要Abstract创新点物理背景网络框架实验实验一:直道稳定流条件实验二:环状网络中的非稳定流条件 结论缺点及展望 二、代码实践总结 一、文献阅读 题目信息 题目:《Enhanced physics-informed neural net…

第三十周周报

  • 一、文献阅读
    • 题目信息
    • 摘要
    • Abstract
    • 创新点
    • 物理背景
    • 网络框架
    • 实验
      • 实验一:直道稳定流条件
      • 实验二:环状网络中的非稳定流条件
    • 结论
    • 缺点及展望
  • 二、代码实践
  • 总结

一、文献阅读

题目信息

  • 题目:《Enhanced physics-informed neural networks for efficient modelling of hydrodynamics in river networks》
  • 期刊: Hydrological Processes
  • 作者: Xiao Luo, Saiyu Yuan, Hongwu Tang, Dong Xu, Qihua Ran, Yuhao Cen, Dongfang Liang
  • 发表时间: 2024
  • 文章链接:https://www.researchgate.net/publication/379763912_Enhanced_physics-informed_neural_networks_for_efficient_modelling_of_hydrodynamics_in_river_networks

摘要

在河网水动力过程研究中,数值模拟是研究常用方法,但存在计算复杂、数据处理等问题。随着计算技术发展,一维水动力模型虽能模拟河网非恒定流,但计算需求有时较高。传统的机器学习算法发展为物理系统建模有着很大的帮助,计算效率高,但存在缺乏物理可解释性、等问题。物理信息神经网络(PINNs)将物理定律引入机器学习,在解决物理的偏微分方程方面有非常大的作用,但目前的PINNs用于河流水动力建模的研究非常有限,特别是在复杂河网的全面应用方面更是少之又少,因此本篇论的目的就是在探索将PINNs应用于河网非恒定流建模,作者过增强PINNs架构,有效模拟具有不规则横截面的真实河网的水动力特性。作者首先对水力参数进行预处理以优化训练速度,同时引入层归一化解决梯度消失问题。此外,还引入了水位范围和节点方程等物理约束确保训练能够有效收敛的同时还加入其他物理约束。最后,作者通过两个实验证明了增强后的PINNs架构能以较少数据预测河网水动力,同时其对时间步长敏感性低,这种PINNs机构是模拟复杂河网水动力过程的有效方法。

Abstract

This article enhances the physics-informed neural networks (PINNs) method to effec-tively model the hydrodynamics of real-world river networks with irregular cross-sections. First, we pre-process hydraulic parameters to optimize training speed with-out compromising accuracy, achieving a 91.67% acceleration compared with tradi-tional methods. To address the vanishing gradient problem, layer normalization is also incorporated into the architecture. We also introduce novel physical constraints—water level range and junction node equations—to ensure effective
training convergence and enrich the model with additional physical insights. Two practical case studies using HEC-RAS benchmarks demonstrate that our improved PINN method can predict river network hydrodynamics with less data and is less sen-sitive to time step size, allowing for longer computational time steps. Incorporating physical knowledge, our enhanced PINN methodology emerges as an efficient and promising avenue for modelling the complexities of hydrodynamic processes in natu-ral river networks.

创新点

  1. 预处理水力参数提升训练速度
  2. 引入层归一化解决梯度消失
  3. 增加水位范围和节点方程等物理约束,确保收敛的同时加入更多物理规律

物理背景

本论文使用一维的Saint-Venant方程作为物理模型,Saint-Venant方程被广泛用于描述河流中的水流。
在这里插入图片描述
这些方程基于质量和动量守恒原理,适用于同一河段的两段之间。
然而,当涉及到河网中的交叉点时,需要替代方程来准确描述这些点的水力条件。
利用质量连续性原理,在没有源或汇的情况下,流入某一点的流体质量必须等于流出该点的流体量。可以直接推导出方程(3)来描述结点处的水力条件:
在这里插入图片描述
Akan和Yen(1981)进行了一项研究,他们在研究中证明,当接点处的流量为亚临界时,能量方程可以用水级相等来近似,在交叉点处,流入和流出的水面高程可以认为是相等的。如式(4)所示:
在这里插入图片描述

网络框架

构建增强型PINNs框架,包括采用全连接深度神经网络近似未知解、预训练水力参数、PINNs近似SVE、增加物理信息(水位软约束和节点方程约束)、选择激活函数与层归一化、特定的模型训练和评估方法。
作者提出的增强型PINN的架构图如下图所示:
在这里插入图片描述
下面我们对作者提出的PINN框架进行分析:

  1. 该论文DNN的结构是一个全连接的前馈神经网络来得出 U ( x , t ) U(x, t) U(x,t) Z ( x , t ) Z(x,t) Z(x,t)的值
    在数学上可以理解为:
    U ( x , t ) ≈ U ^ ( x , t ; θ ) , Z ( x , t ) ≈ Z ^ ( x , t ; γ ) , \begin{array}{l}U(x, t) \approx \widehat{U}(x, t ; \theta),\\Z(x, t) \approx \widehat{Z}(x, t ; \gamma),\end{array} U(x,t)U (x,t;θ),Z(x,t)Z (x,t;γ),
    x = [ x 1 , x 2 , … , x N c ] x = [x_1,x_2,\dots,x_{N_c}] x=[x1,x2,,xNc]表示空间坐标向量,t表示时间坐标向量。 N c N_c Nc为截面总数。 θ θ θ γ γ γ是网络的参数。
    在这里插入图片描述

  2. 此外,作者认为天然的河道是非常复杂的(因为其形状常常是不规则的),因此求解此类系统的SVEs需要根据每个断面的实际地形计算各种中间变量(即为每个横截面计算水力特性)。这种复杂的计算对模型的训练速度造成了很大的影响。
    因此,作者提出一种预训练方法:通过计算横截面的水力参数(如流量面积和水面高程)与横截面几何形状之间的关系来简化计算。
    具体步骤如下:
    首先,作者在训练关键变量之前,对水位进行分层处理,并使用插值函数来近似每个分层水平的水力特征。 然后,预计算的数据集将作为深度神经网络的输入,目的是逼近不同横截面区域的流量面积 A(Z)、河流宽度 B(Z) 和输水能力函数 K(Z)。
    其中:
    A ( Z ) ≈ A ^ ( Z ^ ( x , t ; γ ) , α ) , B ( Z ) ≈ B ^ ( Z ^ ( x , t ; γ ) , β ) , K ( Z ) ≈ K ^ ( Z ^ ( x , t ; γ ) , δ ) , \begin{aligned} &A(Z) \approx \widehat{A}(\widehat{Z}(x, t ; \gamma), \alpha),\\ &B(Z) \approx \widehat{B}(\widehat{Z}(x, t ; \gamma), \beta),\\ &K(Z) \approx \widehat{K}(\widehat{Z}(x, t ; \gamma), \delta), \end{aligned} A(Z)A (Z (x,t;γ),α),B(Z)B (Z (x,t;γ),β),K(Z)K (Z (x,t;γ),δ),
    这些近似值是通过调整 α、β 和 δ来实现。
    获得了近似的流量面积 A ( Z ) A(Z) A(Z),就可以求得 Q ^ ( Z ) \widehat{Q}(Z) Q (Z),其中 Q ^ ( Z ) = A ( Z ) U ^ ( x , t ; γ ) \widehat{Q}(Z)=A(Z) \widehat{U}(x, t ; \gamma) Q (Z)=A(Z)U (x,t;γ)
    在这里插入图片描述

  3. 构建完DNN后,就开始定义损失函数
    首先需要定义式(1)和式(2)的残差项:
    f c ( x , t ) ≈ ∂ Q ^ ∂ x + B ^ ∂ Z ^ ∂ t = f ^ c ( x , t ; θ , γ ) , f m ( x , t ) ≈ ∂ Q ^ ∂ t + ∂ Q ^ U ^ ∂ x + g A ^ ( ∂ Z ^ ∂ x + Q ^ ∣ Q ^ ∣ K ^ 2 ) = f ^ m ( x , t ; θ , γ ) . \begin{array}{l}f_{c}(x, t) \approx \frac{\partial \widehat{Q}}{\partial x}+\widehat{B} \frac{\partial \widehat{Z}}{\partial t}=\widehat{f}_{c}(x, t ; \theta, \gamma),\\f_{m}(x, t) \approx \frac{\partial \widehat{Q}}{\partial t}+\frac{\partial \widehat{Q} \widehat{U}}{\partial x}+g \widehat{A}\left(\frac{\partial \widehat{Z}}{\partial x}+\frac{\widehat{Q}|\widehat{Q}|}{\widehat{K}^{2}}\right)=\widehat{f}_{m}(x, t ; \theta, \gamma) .\end{array} fc(x,t)xQ +B tZ =f c(x,t;θ,γ),fm(x,t)tQ +xQ U +gA (xZ +K 2Q Q )=f m(x,t;θ,γ).
    总体的损失函数如下:
    L ( θ , γ ) = λ u L u ( θ ) + λ z L z ( γ ) + L f ( θ , γ ) , L(\theta, \gamma)=\lambda_{u} L_{u}(\theta)+\lambda_{z} L_{z}(\gamma)+L_{f}(\theta, \gamma), L(θ,γ)=λuLu(θ)+λzLz(γ)+Lf(θ,γ),
    其中 L u ( θ ) L_{u}(\theta) Lu(θ) L z ( γ ) L_{z}(\gamma) Lz(γ)分别用于计算U和Z的真实值与DNN预测值之间的差异。
    L f ( θ , γ ) L_{f}(\theta, \gamma) Lf(θ,γ)是残差的损失项。
    损失函数的具体形式如下:
    L u ( θ ) = 1 N u ∑ i = 1 N u ( U ^ ( x , t ; θ ) − U ) 2 , L z ( γ ) = 1 N z ∑ i = 1 N z ( Z ^ ( x , t ; γ ) − Z ) 2 , L f ( θ , γ ) = 1 N f [ ∑ i = 1 N f f ^ c 2 ( x , t ; θ , γ ) + ∑ i = 1 N f f ^ m 2 ( x , t ; θ , γ ) ] , \begin{array}{c}L_{u}(\theta)=\frac{1}{N_{u}} \sum_{i=1}^{N_{u}}(\widehat{U}(x, t ; \theta)-U)^{2}, \\L_{z}(\gamma)=\frac{1}{N_{z}} \sum_{i=1}^{N_{z}}(\widehat{Z}(x, t ; \gamma)-Z)^{2}, \\L_{f}(\theta, \gamma)=\frac{1}{N_{f}}\left[\sum_{i=1}^{N_{f}} \widehat{f}_{c}^{2}(x, t ; \theta, \gamma)+\sum_{i=1}^{N_{f}} \widehat{f}_{m}^{2}(x, t ; \theta, \gamma)\right],\end{array} Lu(θ)=Nu1i=1Nu(U (x,t;θ)U)2,Lz(γ)=Nz1i=1Nz(Z (x,t;γ)Z)2,Lf(θ,γ)=Nf1[i=1Nff c2(x,t;θ,γ)+i=1Nff m2(x,t;θ,γ)],

  4. 在使用PINN模型预测Z(水位)时会有一个问题:在观测值有限的情况下,预测的水位很可能会出现负值(即低于河床的高度),同时Z的不准确就会导致其他变量(如:A、B、K)不准确。
    为了确保这样错误的计算不会产生连锁反映,在计算水力参数之前,作者对预测的水位值进行了限制(如果它们低于河床高度,就会将其设置为等于河床高度)。但是,这种方法是有缺点的当预测的水位低于河床高度时,对应的偏微分方程会自动简化为零。这并不符合真实的物理规律。
    为了解决这个问题,作者在原来的损失函数基础上加入了一个软约束项,其通过惩罚预测水位超出期望范围的情况来增强模型的物理一致性。通过这种约束的设置,可以让模型的预测结果更加具有科学性。
    L f ( θ , γ ) = 1 N f [ ∑ i = 1 N f f ^ c 2 ( x , t ; θ , γ ) + ∑ i = 1 N f f ^ m 2 ( x , t ; θ , γ ) ] + ω 1 N f ∑ i = 1 N f f s 2 ( x , t ) L_{f}(\theta, \gamma)=\frac{1}{N_{f}}\left[\sum_{i=1}^{N_{f}} \widehat{f}_{c}^{2}(x, t ; \theta, \gamma)+\sum_{i=1}^{N_{f}} \widehat{f}_{m}^{2}(x, t ; \theta, \gamma)\right]+\omega \frac{1}{N_{f}} \sum_{i=1}^{N_{f}} f_{s}^{2}(x, t) Lf(θ,γ)=Nf1 i=1Nff c2(x,t;θ,γ)+i=1Nff m2(x,t;θ,γ) +ωNf1i=1Nffs2(x,t)
    其中ω表示惩罚系数,设为10-5。惩罚系数变大可以直接加强这个约束,从而减少水位超出范围的可能性。
    f s ( x , t ) f_{s}(x, t) fs(x,t)的具体形式为:
    f s ( x , t ) = { Z ^ − Z max ⁡ , if  Z max ⁡ ≤ Z ^ 0 , if  Z min ⁡ ≤ Z ^ < Z max ⁡ Z min ⁡ − Z ^ , if  Z ^ < Z min ⁡ f_{s}(x, t)=\left\{\begin{array}{clc}\hat{Z}-Z_{\max }, & \text { if } & Z_{\max } \leq \widehat{Z} \\0 , & \text { if }& Z_{\min } \leq \widehat{Z}<Z_{\max } \\Z_{\min }-\widehat{Z}, & \text { if } & \widehat{Z}<Z_{\min }\end{array}\right. fs(x,t)= Z^Zmax,0,ZminZ , if  if  if ZmaxZ ZminZ <ZmaxZ <Zmin
    Zmin和Zmax分别为截面的最低点和最高点标高。如果预测的水位超出了期望的范围,这个约束就会起到作用;如果预测的水位在期望范围内,这个惩罚项就会变为零。
    在这里插入图片描述

  5. 网状的河流由多个河道组成,每个河道都有单独的空间坐标。此外,在河道交汇的地方,水流会分成多个部分,这些交叉点在模型中被视为内部边界。在传统的数值模型中,处理这些交汇点会增加模型的复杂性和计算量。但在PINNs中,通过实施“水位相等”原则,增加了结点约束的同时又不会增加模型的复杂性。 这种方法在观测数据缺乏的情况下,降低了无法收敛的风险的同时也提高了预测的准确性。
    作者通过引入了一个与这些结方程相关的约束项 L j ( θ , γ ) L_{j}(\theta, \gamma) Lj(θ,γ),其具体形式如下:
    L j ( θ , γ ) = 1 N j [ ∑ i = 1 N j g ( Z ^ i in  , Z ^ iout  ) ] + 1 N j [ ∑ i = 1 N j ( Q ^ in − Q ^ out  ) ] , L_{j}(\theta, \gamma)=\frac{1}{N_{j}}\left[\sum_{i=1}^{N_{j}} g\left(\widehat{Z}_{i_{\text {in }}}, \widehat{Z}_{\text {iout }}\right)\right]+\frac{1}{N_{j}}\left[\sum_{i=1}^{N_{j}}\left(\widehat{Q}_{\text {in}}-\widehat{Q}_{\text {out }}\right)\right], Lj(θ,γ)=Nj1 i=1Njg(Z iin ,Z iout ) +Nj1 i=1Nj(Q inQ out ) ,
    其中Nj表示河网中结点的总数。 g ( ) g() g()表示满足与连接点相连的横截面上的水位的函数关系。

实验

作者利用HEC-RAS生成训练数据并引入少量随机白噪声(0.2%),采用数值实验,通过RMSE和MAPE评估模型性能。

实验一:直道稳定流条件

实验一的条件是在稳态条件下的单个河流河段。作者通过创建一个受控环境,从而可以对增强后的PINNs方法进行评估。
在这里插入图片描述
在实验一中应用预训练方法评估横截面水力参数,以C1截面为例预训练后DNN预测值与插值计算结果贴合,收敛时达到足够精度,验证了预训练方法的有效性。
其中,图(a)展示了流量面积(A)的真实值和预测值的对比,图(b)展示了图(a)在训练时的损失变化。图©展示了输水能力函数(K)的真实值和预测值的对比,图(d)展示了图(b)在训练时的损失变化。结果表面:
在这里插入图片描述
此外,作者通过不同的观测横截面数量(12、6、4、2)进行训练,评估PINNs在不同数据量下的表现。其中,神经网络架构设为三个隐藏层,每层50个神经元,激活函数采用Tanh,损失函数为均方误差(MSE),并对水位数据集进行z - score标准化。优化策略的初始阶段,AdamW学习率根据Lc的值动态调整,训练共20,000个周期,之后用L - BFGS - B优化器确保收敛。
在不同的横截面数量中,模型的参数如下:
在这里插入图片描述
作者使用12个横截面的观测数据,通过对比HEC-RAS和PINNs的结果,验证PINNs能捕捉到水流横截面内的水文动力特征,包括速度和深度等水动力特性的空间变化和分布。对于Z和U变量,RMSE分别为 2.63 × 1 0 − 3 2.63×10^{-3} 2.63×103 2.97 × 1 0 − 4 2.97×10^{-4} 2.97×104,MAPE分别为0.003%和0.02%,Q的最大绝对误差为 1.83 m 3 / s 1.83 m^{3}/s 1.83m3/s,能量坡度也能准确捕捉水动力过程。
在这里插入图片描述
此外,作者还对预训练对导数计算的影响进行了分析,目的是确定预训练对导数计算精度的影响。 对比有无预训练方法的变量Q和QU的导数计算,发现预训练对导数计算精度影响不大,验证了预训练模型可整合到计算框架中。
在这里插入图片描述
在实验一的最后,作者还对观测横截面数量对模型结果的影响进行了探究。随着用作约束的横截面数量减少,模型的预测精度下降。
实验结果表明,当受6个横截面观测约束时,U的MAPE为7%,Z的RMSE为0.14m;约束为4个横截面观测时,U的MAPE变为20.5%,Z的RMSE为0.36m。在10次实验中,传统神经网络和PINN在不同观测截面数量下进行评估,结果显示随着约束数据减少,两者误差均上升,但PINN在不同约束下表现出更稳定的精度和计算稳定性。
在这里插入图片描述

实验二:环状网络中的非稳定流条件

实验二目的是评估PINNs在捕捉真实世界环形河道系统中复杂的流动模式和边界交互能力。研究背景是在一个环形河道网络中的非稳定流动态。主河道分为两个子河道,然后再下游重新汇合。
如下图所示:
在这里插入图片描述
利用预训练技术,模型增加了河宽作为变量以适应非稳定流条件,从结果来看,模型预测值和实际训练值高度一致,证明了模型的有效性。
在这里插入图片描述
实验二的神经网络包含三个隐藏层,每层30个神经元,激活函数和损失函数分别为Tanh和MSE。AdamW优化器初始学习率为0.001,训练过程中衰减率为0.001,经过20,000次迭代训练达到稳定收敛后,再用L - BFGS - B优化器进行微调。实验二中使用了水位相等约束方程和节点处的流量守恒约束。
参数如下:
在这里插入图片描述
作者在实验二中研究了时间间隔对预测精度的影响。在10分钟内,以不同时间间隔进行实验,该评估显示,数据约束间隔的减少并不会导致预测准确性的明显下降。虽然物理约束可在一定程度上弥补数据稀疏,但数据过度缺乏会使精度有所下降。在 Δ o b s = 10 m i n \Delta obs = 10min Δobs=10min时,U和Z的最大误差分别为0.033m/s和0.018m,相比PINNs在1D稳态明渠案例中的水位误差(可达1m)。
在这里插入图片描述
此外,作者还分析了PDE约束间隔对模型性能的影响。作者通过分析不同时间步长间隔下观测数据和PDE残差约束时26个不同横截面的模型评估指标(U的MAPE和Z的RMSE),结果表明模型在部分组表现较好,部分组精度有不同程度下降,其中数据约束最少的第四组和第八组表现最差,但在一定范围内PDE约束的时间间隔对计算精度影响不明显。
在这里插入图片描述

结论

预训练水力参数可加速训练,新物理约束确保收敛且加深物理理解,增强后的PINNs在河网水动力建模中高效且数据需求少、对时间步长敏感度低。作者通过改进PINNs方法对实际场景中具有不规则横截面的河网水动力进行有效建模。此外,预处理水力参数提升了训练速度的同时也没有牺牲精度,层归一化解决梯度消失问题,新物理约束确保训练收敛并丰富物理内涵。实验表明,改进后的PINNs方法数据需求少,且对时间步长敏感度低,是河网水动力建模的有效方法。

缺点及展望

缺点:
作者提出本论文的实验比较简单,未涵盖真实河网的全部复杂性。此外,使用PINNs处理时间相关PDE时局限于固定时域,无法计算超出边界的解,缺乏泛化能力。
研究展望:
可以将增强后的PINNs架构研究更多河段,验证模型的泛化能力;优化模型种训练算法和网络架构,提升模型的性能;研究在增强后的PINN框架的在实际种的应用,如洪灾防范、水资源和环境保护等。

二、代码实践

在之前我们阅读了一篇PINN求解PDE的论文,其中涉及到使用pytorch实现PINN求解PDE,其中,有一个部分是使用PINN拟合Burgers方程。今天我们就来尝试复现,并了解一下PINNs的代码实现。
代码:https://github.com/jayroxis/PINNs
参考文章:https://blog.csdn.net/qq_42818403/article/details/142685980
Burgers方程是一种经典的非线性偏微分方程,在流体力学、交通流等领域有着广泛的应用。
Burgers方程公式为: u t + u u x = ν u x x , x ∈ [ − 1 , 1 ] , t ≥ 0 u_{t}+u u_{x}=\nu u_{x x}, \quad x \in[-1,1], t \geq 0 ut+uux=νuxx,x[1,1],t0
其中,u 表示速度场,t 为时间,x 为空间坐标,ν 为粘性系数。

如下图所示:
初始时刻u符合sin分布,随着时间推移在x=0处发生间断。这个经典问题,可使用pytorch通过PINN实现对Burgers方程的求解。
在这里插入图片描述
网络架构:

  • 输入: 时间t和空间坐标x(形状均为 ( n , 1 ) (n,1) (n,1))
  • 输出: ( t , x ) (t,x) (t,x)上的解 u ( t , x ) u(t,x) u(t,x)
  • 激活函数: 使用 Tanh 激活函数能够有效处理非线性问题,同时可以使模型生成平滑的函数
  • 边界条件要求: u ( t , − 1 ) = u ( t , 1 ) = 0 , t ≥ 0 u(t,-1)=u(t, 1)=0, \quad t \geq 0 u(t,1)=u(t,1)=0,t0,即 x = − 1 x = -1 x=1 x = 1 x =1 x=1时,解为 0。因此,我们可以通过计算这些边界上的解值,定义边界损失。
  • 初始条件(t=0时): u ( 0 , x ) = − sin ⁡ ( π x ) , x ∈ [ − 1 , 1 ] u(0, x)=-\sin (\pi x), \quad x \in[-1,1] u(0,x)=sin(πx),x[1,1],即 u ( 0 , x ) = − s i n ( π x ) u(0,x)=-sin(πx) u(0,x)=sin(πx)。因此,初始损失通过比较模型预测的解和精确初始条件来定义。
  • 选用7层全连接神经网络,每层包含 100 个神经元,激活函数为 Tanh。该网络能够处理输入的非线性关系,并生成较为平滑的解。

代码实现如下:

import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import numpy as np# 绘制损失曲线
def plot_loss(losses):plt.figure(figsize=(8, 5))plt.plot(losses, color='blue', lw=2)plt.xlabel('Epoch', fontsize=14)plt.ylabel('Loss', fontsize=14)plt.title('Training Loss Curve', fontsize=16)plt.grid(True)plt.tight_layout()plt.show()# 绘制数值解图像
def plot_solution(model):x = torch.linspace(-1, 1, 100).unsqueeze(1)t = torch.full((100, 1), 0.0)  # 在t=0时绘制解with torch.no_grad():u_pred = model(t, x).numpy()# 参考解 u(0,x) = -sin(πx)u_exact = -np.sin(np.pi * x.numpy())plt.figure(figsize=(8, 5))plt.plot(x.numpy(), u_pred, label='Predicted Solution', color='red', lw=2)plt.plot(x.numpy(), u_exact, label='Exact Solution (Initial)', color='blue', lw=2, linestyle='dashed')plt.xlabel('x', fontsize=14)plt.ylabel('u(t=0, x)', fontsize=14)plt.title('Burgers Equation Solution at t=0', fontsize=16)plt.legend(fontsize=12)plt.grid(True)plt.tight_layout()plt.show()
# 绘制整个 (x, t) 平面的解
def plot_solution_3d(model):# 创建 (x, t) 网格x = torch.linspace(-1, 1, 100).unsqueeze(1)t = torch.linspace(0, 1, 100).unsqueeze(1)X, T = torch.meshgrid(x.squeeze(), t.squeeze())# 将 X 和 T 拉平,方便模型预测x_flat = X.reshape(-1, 1)t_flat = T.reshape(-1, 1)with torch.no_grad():u_pred = model(t_flat, x_flat).numpy().reshape(16, 16)# 绘制三维曲面图fig = plt.figure(figsize=(10, 7))ax = fig.add_subplot(111, projection='3d')ax.plot_surface(X.numpy(), T.numpy(), u_pred, cmap='viridis')ax.set_xlabel('x', fontsize=12)ax.set_ylabel('t', fontsize=12)ax.set_zlabel('u(t, x)', fontsize=12)ax.set_title('Solution of Burgers Equation on (x, t) Plane', fontsize=14)plt.show()# 绘制二维等高线图
def plot_solution_contour(model):# 创建 (x, t) 网格x = torch.linspace(-1, 1, 100).unsqueeze(1)t = torch.linspace(0, 1, 100).unsqueeze(1)X, T = torch.meshgrid(x.squeeze(), t.squeeze())# 将 X 和 T 拉平,方便模型预测x_flat = X.reshape(-1, 1)t_flat = T.reshape(-1, 1)with torch.no_grad():u_pred = model(t_flat, x_flat).numpy().reshape(16, 16)# 绘制二维等高线图plt.figure(figsize=(8, 6))plt.contourf(X.numpy(), T.numpy(), u_pred, 100, cmap='viridis')plt.colorbar(label='u(t, x)')plt.xlabel('x', fontsize=12)plt.ylabel('t', fontsize=12)plt.title('Contour Plot of Burgers Equation Solution', fontsize=14)plt.tight_layout()plt.show()# 定义网络结构
class PINN(nn.Module):def __init__(self):super(PINN, self).__init__()self.layer = nn.Sequential(nn.Linear(2, 16), nn.Tanh(),nn.Linear(16, 16), nn.Tanh(),nn.Linear(16, 16), nn.Tanh(),nn.Linear(16, 16), nn.Tanh(),nn.Linear(16, 16), nn.Tanh(),nn.Linear(16, 1))def forward(self, t, x):u = self.layer(torch.cat([t, x], dim=1))return u# 定义Burgers方程中的物理损失
def physics_loss(model, t, x):u = model(t, x)u_t = torch.autograd.grad(u, t, torch.ones_like(t), create_graph=True)[0]u_x = torch.autograd.grad(u, x, torch.ones_like(x), create_graph=True)[0]u_xx = torch.autograd.grad(u_x, x, torch.ones_like(x), create_graph=True)[0]f = (u_t + u * u_x - (0.01 / torch.pi) * u_xx).pow(2).mean()return f# 定义边界条件损失
def boundary_loss(model, t, x_left, x_right):u_left = model(t, x_left)u_right = model(t, x_right)return u_left.pow(2).mean() + u_right.pow(2).mean()# 初始条件损失
def initial_loss(model, x):t_0 = torch.zeros_like(x)u_init = model(t_0, x)u_exact = -torch.sin(torch.pi * x)return (u_init - u_exact).pow(2).mean()# 训练模型并记录损失
def train(model, optimizer, num_epochs):losses = []for epoch in range(num_epochs):optimizer.zero_grad()# 随机采样 t 和 x,并确保 requires_grad=Truet = torch.rand(3000, 1, requires_grad=True)x = torch.rand(3000, 1, requires_grad=True) * 2 - 1  # x ∈ [-1, 1]# 物理损失f_loss = physics_loss(model, t, x)# 边界条件损失t_bc = torch.rand(500, 1)x_left = -torch.ones(500, 1)x_right = torch.ones(500, 1)bc_loss = boundary_loss(model, t_bc, x_left, x_right)# 初始条件损失x_ic = torch.rand(1000, 1) * 2 - 1ic_loss = initial_loss(model, x_ic)# 总损失loss = f_loss + bc_loss + ic_lossloss.backward()optimizer.step()# 记录损失losses.append(loss.item())if epoch % 100 == 0:print(f'Epoch {epoch}, Loss: {loss.item()}')return losses# 初始化模型和优化器
model = PINN()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)# 训练模型
losses = train(model, optimizer, num_epochs = 100000)# 绘制训练损失曲线
plot_loss(losses)# 绘制数值解图像
plot_solution(model)
plot_solution_3d(model)   # 三维曲面图
plot_solution_contour(model)   # 二维等高线图

结果如下图所示:
基本上预测结果能够拟合实际的解,且loss无线接近于0。
通过 PINN 结合自动微分和物理约束,能够高效求解 Burgers 方程这样的非线性偏微分方程。相比传统的数值方法,PINN 具有处理高维问题和复杂边界条件的潜力。
在这里插入图片描述
在这里插入图片描述

总结

本周主要精读了一篇PINN的文献和复现了之前论文的代码。
本周阅读的文献中提出了一种增强型PINNs方法,其通过预处理水力参数、引入层归一化以及增加水位范围和节点方程等物理约束,有效解决了传统PINNs在河网水动力建模中的局限性,且增强后的PINNs架构能够以较少的数据预测河网水动力,且对时间步长的敏感性低,是一种有效的模拟方法。此外,在代码实现部分详细介绍了网络架构的设计、物理损失、边界条件损失和初始条件损失的定义,以及模型的训练过程。
下一周计划阅读timeGan文献。

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

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

相关文章

CSS 的基础知识及应用

前言 CSS&#xff08;层叠样式表&#xff09;是网页设计和开发中不可或缺的一部分。它用于描述网页的视觉表现&#xff0c;使页面不仅实现功能&#xff0c;还能提供吸引人的用户体验。本文将介绍 CSS 的基本概念、语法、选择器及其在提升网页美观性方面的重要性。 什么是 CSS&…

Web开发 -前端部分-CSS-2

一 长度单位 代码实现&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

Linux shell zip 命令实现不切换当前终端的工作目录打包另一个路径下的文件和文件夹

如图&#xff0c;我想在当前目录 ~/Bypasser 下打包 src 文件夹&#xff0c;使得生成的 zip 压缩包中具有 src 文件夹下的所有文件夹、所有文件夹中的所有子项目、所有文件&#xff0c;保留层次结构但压缩包中最外面不包含 src 这一层。执行命令时&#xff0c;不要改变当前终端…

QT跨平台应用程序开发框架(3)—— 信号和槽

目录 一&#xff0c;基本概念 二&#xff0c;connect函数使用 2.1 connect 2.2 Qt内置信号和槽 2.3 一些细节 三&#xff0c;自定义信号和槽 3.1 自定义槽函数 3.2 自定义信号 3.3 带参数的信号槽 四&#xff0c;信号和槽的意义 五&#xff0c;信号和槽断开连接 六&…

聊聊如何实现Android 放大镜效果

一、前言 很久没有更新Android 原生技术内容了&#xff0c;前些年一直在做跨端方向开发&#xff0c;最近换工作用重新回到原生技术&#xff0c;又回到了熟悉但有些生疏的环境&#xff0c;真是感慨万分。 近期也是因为准备做地图交互相关的需求&#xff0c;功能非常复杂&#x…

一、1-2 5G-A通感融合基站产品及开通

1、通感融合定义和场景&#xff08;阅读&#xff09; 1.1通感融合定义 1.2通感融合应用场景 2、通感融合架构和原理&#xff08;较难&#xff0c;理解即可&#xff09; 2.1 感知方式 2.2 通感融合架构 SF&#xff08;Sensing Function&#xff09;&#xff1a;核心网感知控制…

golang标准库path/filepath使用示例

文章目录 前言一、常用方法示例1.将相对路径转换为绝对路径2.获取路径中最后一个元素3.获取路径中除去最后一个元素的部分4.路径拼接5.将路径拆分为目录和文件名两部分6.返回一个相对路径7.文件路径遍历8.根据文件扩展名过滤文件9.使用正则表达式进行路径匹配 前言 path/filep…

HBase实训:纸币冠字号查询任务

一、实验目的 1. 理解分布式数据存储系统HBase的架构和工作原理。 2. 掌握HBase表的设计原则&#xff0c;能够根据实际业务需求设计合理的表结构。 3. 学习使用HBase Java API进行数据的插入、查询和管理。 4. 实践分布式数据存储系统在大数据环境下的应用&#xff0c;…

HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (三、影视搜索页功能实现)

在HarmonyOS NEXT开发环境中&#xff0c;可以使用nutpi/axios库来简化网络请求的操作。本文将展示如何使用HarmonyOS NEXT框架和nutpi/axios库&#xff0c;从零开始实现一个简单的影视APP&#xff0c;主要关注影视搜索页的功能实现。 为什么选择nutpi/axios&#xff1f; nutpi…

天机学堂3-ES+Caffeine

文章目录 day05-问答系统表 用户端分页查询问题目标效果代码实现 3.6.管理端分页查询问题ES相关 管理端互动问题分页实现三级分类3.6.5.2.多级缓存3.6.5.3.CaffeineTODO&#xff1a;使用Caffeine作为本地缓存&#xff0c;另外使用redis或者memcache作为分布式缓存&#xff0c;构…

重拾Python学习,先从把python删除开始。。。

自己折腾就是不行啊&#xff0c;屡战屡败&#xff0c;最近终于找到前辈教我 第一步 删除Python 先把前阵子折腾的WSL和VScode删掉。还是得用spyder&#xff0c;跟matlab最像&#xff0c;也最容易入手。 从VScode上搞python&#xff0c;最后安装到appdata上&#xff0c;安装插…

智能新浪潮:亚马逊云科技发布Amazon Nova模型

在2024亚马逊云科技re:Invent全球大会上&#xff0c;亚马逊云科技宣布推出新一代基础模型Amazon Nova&#xff0c;其隶属于Amazon Bedrock&#xff0c;这些模型精准切入不同领域&#xff0c;解锁多元业务可能&#xff0c;为人工智能领域带来革新。 带你认识一起了解Amazon Nova…

flutter 装饰类【BoxDecoration】

装饰类 BoxDecoration BoxDecoration 是 Flutter 中用于控制 Container 等组件外观的装饰类&#xff0c;它提供了丰富的属性来设置背景、边框、圆角、阴影等样式。 BoxDecoration 的主要属性 1.color 背景颜色。类型&#xff1a;Color?示例&#xff1a; color: Colors.blu…

Datawhale-self-llm-Phi-4 Langchain接入教程

本项目是一个围绕开源大模型、针对国内初学者、基于 AutoDL 平台的中国宝宝专属大模型教程&#xff0c;针对各类开源大模型提供包括环境配置、本地部署、高效微调等技能在内的全流程指导&#xff0c;简化开源大模型的部署、使用和应用流程&#xff0c;让更多的普通学生、研究者…

某讯一面,感觉问Redis的难度不是很大

前不久&#xff0c;有位朋友去某讯面试&#xff0c;他说被问到了很多关于 Redis 的问题&#xff0c;比如为什么用 Redis 作为 MySQL 的缓存&#xff1f;Redis 中大量 key 集中过期怎么办&#xff1f;如何保证缓存和数据库数据的一致性&#xff1f;我将它们整理出来&#xff0c;…

Python基于Django的图像去雾算法研究和系统实现(附源码,文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

【开源免费】基于SpringBoot+Vue.JS欢迪迈手机商城(JAVA毕业设计)

本文项目编号 T 141 &#xff0c;文末自助获取源码 \color{red}{T141&#xff0c;文末自助获取源码} T141&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

NVIDIA发布个人超算利器project digital,标志着ai元年的开启

上图NVIDIA公司创始人兼首席执行官 黄仁勋&#xff08;Jensen Huang&#xff09; 这些年被大家熟知的赛博朋克风格一直都是未来的代言词&#xff0c;可以承载人类记忆的芯片&#xff0c;甚至能独立思考的仿生人&#xff0c;现在&#xff0c;随着NVIDIA的project digital发布之后…

海云安开发者安全智能助手D10荣膺 “ AI标杆产品 ” 称号,首席科学家齐大伟博士入选2024年度 “ 十大杰出青年 ”

2024年12月27日&#xff0c;粤港澳大湾区AI领袖峰会在深圳成功举办&#xff0c;大会表彰了在人工智能技术创新、应用实践和产业发展等方面取得优异成绩的企业和个人&#xff0c;深圳海云安网络安全技术有限公司开发者安全智能助手D10荣膺“AI标杆产品”称号。同时&#xff0c;公…

第23篇 基于ARM A9处理器用汇编语言实现中断<五>

Q&#xff1a;怎样修改HPS Timer 0定时器产生的中断周期&#xff1f; A&#xff1a;在上一期实验的基础上&#xff0c;可以修改按键中断服务程序&#xff0c;实现红色LED上的计数值递增的速率&#xff0c;主程序和其余代码文件不用修改。 实现以下功能&#xff1a;按下KEY0…