一种基于物理信息极限学习机的PDE求解方法

news2024/10/2 22:27:11

**作者|**PINN山里娃,作者主页
**研究方向|**物理信息驱动深度学习 不确定性 人工智能 偏微分方程 极限学习机

该作者聚焦深度学习模型与物理信息结合前沿研究,提供了一系列AI for science研究进展报告及代码实现,旨在实现物理信息驱动深度学习方法入门到精通。
内嵌物理知识神经网络(PINN)入门及相关论文
深度学习求解微分方程系列一:PINN求解框架(Poisson 1d)
深度学习求解微分方程系列二:PINN求解burger方程正问题
深度学习求解微分方程系列三:PINN求解burger方程逆问题
深度学习求解微分方程系列四:基于自适应激活函数PINN求解burger方程逆问题
深度学习求解微分方程系列五:PINN求解Navier-Stokes方程正逆问题
一种基于物理信息极限学习机的PDE求解方法

近年来,物理信息驱动的深度学习方法用于科学计算问题受到了越来越多的关注,其中,physic informed neural network(PINN)在求解微分方程(PDE)正逆问题上展现出巨大的优势,但是并不适用于某些需要实时响应的应用。由此,下面将介绍一种基于物理信息极限学习机的PDE求解方法,用于线性微分方程的快速求解,能实现近实时高精度求解(秒级求解)。首先介绍PINN及极限学习机基本方法,其次介绍基于物理信息的极限学习方法,随后介绍求解问题与背景,最后展示基于Pytorch实现的算例结果。
优点:基于物理信息极限学习机的PDE求解方法能够毫秒级求解线性微分方程,而且该方法为无网格方法,可用于复杂形状系统。

1.问题背景

线性微分方程还是理论联系实践的重要渠道之一,**在物理、工程、力学、天文学、生物学、医学、经济学等诸多领域都有重要作用。**如电子计算机与无线电装置的计算问题可归为微分方程求解;弹道计算与飞机飞行中的稳定性研究可归为线性微分方程的求解。对于线性PDE可描述为

L u = f λ ( x , y ) , ( x , y ) ∈ Ω B [ u ( x , y ) ] = b ( x , y ) , ( x , y ) ∈ ∂ Ω \begin{aligned} &L u=f_\lambda(x, y),(x, y) \in \Omega \\ &\mathcal{B}[u(x, y)]=b(x, y),(x, y) \in \partial \Omega \end{aligned} Lu=fλ(x,y),(x,y)ΩB[u(x,y)]=b(x,y),(x,y)Ω
式中: L L L 为线性微分算子, B B B 为边界或初值条件, f λ ( x , y ) f_{\lambda}(x,y) fλ(x,y) 为系统源项, λ \lambda λ为物理参数, u u u为物理系统的解。

2.PINN及极限学习机简介

神经网络作为一种强大的信息处理工具在计算机视觉、生物医学、 油气工程领域得到广泛应用, 引发多领域技术变革。深度学习网络具有非常强的学习能力, 不仅能发现物理规律, 还能求解偏微分方程。近年来,基于深度学习的偏微分方程求解已是研究新热点。PINN是一种科学机器在传统数值领域的应用方法,能够用于解决与PDE相关的各种问题,包括方程求解、参数反演、模型发现、控制与优化等。随着神经网络的发展,极限学习机(ELM)由于其好的泛化性能以及极快的学习能力,在图像分类和回归问题上得到了非常大的。

2.1PINN方法求解逆问题

PINN的主要思想如图1,先构建一个输出结果为 u ^ \hat{u} u^的神经网络,将其作为PDE解的代理模型,将PDE信息作为约束,编码到神经网络损失函数中进行训练。损失函数主要包括4部分:偏微分结构损失(PDE loss),边值条件损失(BC loss)、初值条件损失(IC loss)以及真实数据条件损失(Data loss)。
在这里插入图片描述

图1:PINN示意图

特别的,考虑下面这个的PDE问题,其中PDE的解 u ( x ) u(x) u(x) Ω ⊂ R d \Omega \subset \mathbb{R}^{d} ΩRd定义,其中 x = ( x 1 , … , x d ) \mathbf{x}=\left(x_{1}, \ldots, x_{d}\right) x=(x1,,xd)
f ( x ; ∂ u ∂ x 1 , … , ∂ u ∂ x d ; ∂ 2 u ∂ x 1 ∂ x 1 , … , ∂ 2 u ∂ x 1 ∂ x d ) = 0 , x ∈ Ω f\left(\mathbf{x} ; \frac{\partial u}{\partial x_{1}}, \ldots, \frac{\partial u}{\partial x_{d}} ; \frac{\partial^{2} u}{\partial x_{1} \partial x_{1}}, \ldots, \frac{\partial^{2} u}{\partial x_{1} \partial x_{d}} \right)=0, \quad \mathbf{x} \in \Omega f(x;x1u,,xdu;x1x12u,,x1xd2u)=0,xΩ
同时,满足下面的边界
B ( u , x ) = 0  on  ∂ Ω \mathcal{B}(u, \mathbf{x})=0 \quad \text { on } \quad \partial \Omega B(u,x)=0 on Ω

PINN求解过程主要包括:

  • 第一步,首先定义D层全连接层的神经网络模型:
    N Θ : = L D ∘ σ ∘ L D − 1 ∘ σ ∘ ⋯ ∘ σ ∘ L 1 N_{\Theta}:=L_D \circ \sigma \circ L_{D-1} \circ \sigma \circ \cdots \circ \sigma \circ L_1 NΘ:=LDσLD1σσL1
    式中:
    L 1 ( x ) : = W 1 x + b 1 , W 1 ∈ R d 1 × d , b 1 ∈ R d 1 L i ( x ) : = W i x + b i , W i ∈ R d i × d i − 1 , b i ∈ R d i , ∀ i = 2 , 3 , ⋯ D − 1 , L D ( x ) : = W D x + b D , W D ∈ R N × d D − 1 , b D ∈ R N . \begin{aligned} L_1(x) &:=W_1 x+b_1, \quad W_1 \in \mathbb{R}^{d_1 \times d}, b_1 \in \mathbb{R}^{d_1} \\ L_i(x) &:=W_i x+b_i, \quad W_i \in \mathbb{R}^{d_i \times d_{i-1}}, b_i \in \mathbb{R}^{d_i}, \forall i=2,3, \cdots D-1, \\ L_D(x) &:=W_D x+b_D, \quad W_D \in \mathbb{R}^{N \times d_{D-1}}, b_D \in \mathbb{R}^N . \end{aligned} L1(x)Li(x)LD(x):=W1x+b1,W1Rd1×d,b1Rd1:=Wix+bi,WiRdi×di1,biRdi,i=2,3,D1,:=WDx+bD,WDRN×dD1,bDRN.
    以及 σ \sigma σ 为激活函数, W W W b b b 为权重和偏差参数。
  • 第二步,为了衡量神经网络 u ^ \hat{u} u^和约束之间的差异,考虑损失函数定义:
    L ( θ ) = w f L P D E ( θ ; T f ) + w i L I C ( θ ; T i ) + w b L B C ( θ , ; T b ) + w d L D a t a ( θ , ; T d a t a ) \mathcal{L}\left(\boldsymbol{\theta}\right)=w_{f} \mathcal{L}_{PDE}\left(\boldsymbol{\theta}; \mathcal{T}_{f}\right)+w_{i} \mathcal{L}_{IC}\left(\boldsymbol{\theta} ; \mathcal{T}_{i}\right)+w_{b} \mathcal{L}_{BC}\left(\boldsymbol{\theta},; \mathcal{T}_{b}\right)+w_{d} \mathcal{L}_{Data}\left(\boldsymbol{\theta},; \mathcal{T}_{data}\right) L(θ)=wfLPDE(θ;Tf)+wiLIC(θ;Ti)+wbLBC(θ,;Tb)+wdLData(θ,;Tdata)
    式中:
    L P D E ( θ ; T f ) = 1 ∣ T f ∣ ∑ x ∈ T f ∥ f ( x ; ∂ u ^ ∂ x 1 , … , ∂ u ^ ∂ x d ; ∂ 2 u ^ ∂ x 1 ∂ x 1 , … , ∂ 2 u ^ ∂ x 1 ∂ x d ) ∥ 2 2 L I C ( θ ; T i ) = 1 ∣ T i ∣ ∑ x ∈ T i ∥ u ^ ( x ) − u ( x ) ∥ 2 2 L B C ( θ ; T b ) = 1 ∣ T b ∣ ∑ x ∈ T b ∥ B ( u ^ , x ) ∥ 2 2 L D a t a ( θ ; T d a t a ) = 1 ∣ T d a t a ∣ ∑ x ∈ T d a t a ∥ u ^ ( x ) − u ( x ) ∥ 2 2 \begin{aligned} \mathcal{L}_{PDE}\left(\boldsymbol{\theta} ; \mathcal{T}_{f}\right) &=\frac{1}{\left|\mathcal{T}_{f}\right|} \sum_{\mathbf{x} \in \mathcal{T}_{f}}\left\|f\left(\mathbf{x} ; \frac{\partial \hat{u}}{\partial x_{1}}, \ldots, \frac{\partial \hat{u}}{\partial x_{d}} ; \frac{\partial^{2} \hat{u}}{\partial x_{1} \partial x_{1}}, \ldots, \frac{\partial^{2} \hat{u}}{\partial x_{1} \partial x_{d}} \right)\right\|_{2}^{2} \\ \mathcal{L}_{IC}\left(\boldsymbol{\theta}; \mathcal{T}_{i}\right) &=\frac{1}{\left|\mathcal{T}_{i}\right|} \sum_{\mathbf{x} \in \mathcal{T}_{i}}\|\hat{u}(\mathbf{x})-u(\mathbf{x})\|_{2}^{2} \\ \mathcal{L}_{BC}\left(\boldsymbol{\theta}; \mathcal{T}_{b}\right) &=\frac{1}{\left|\mathcal{T}_{b}\right|} \sum_{\mathbf{x} \in \mathcal{T}_{b}}\|\mathcal{B}(\hat{u}, \mathbf{x})\|_{2}^{2}\\ \mathcal{L}_{Data}\left(\boldsymbol{\theta}; \mathcal{T}_{data}\right) &=\frac{1}{\left|\mathcal{T}_{data}\right|} \sum_{\mathbf{x} \in \mathcal{T}_{data}}\|\hat{u}(\mathbf{x})-u(\mathbf{x})\|_{2}^{2} \end{aligned} LPDE(θ;Tf)LIC(θ;Ti)LBC(θ;Tb)LData(θ;Tdata)=Tf1xTff(x;x1u^,,xdu^;x1x12u^,,x1xd2u^)22=Ti1xTiu^(x)u(x)22=Tb1xTbB(u^,x)22=Tdata1xTdatau^(x)u(x)22
    w f w_{f} wf w i w_{i} wi w b w_{b} wb w d w_{d} wd是权重。 T f \mathcal{T}_{f} Tf T i \mathcal{T}_{i} Ti T b \mathcal{T}_{b} Tb T d a t a \mathcal{T}_{data} Tdata表示来自PDE,初值、边值以及真值的residual points。这里的 T f ⊂ Ω \mathcal{T}_{f} \subset \Omega TfΩ是一组预定义的点来衡量神经网络输出 u ^ \hat{u} u^与PDE的匹配程度。
  • 最后,利用梯度优化算法最小化损失函数,直到找到满足预测精度的网络参数 KaTeX parse error: Undefined control sequence: \theat at position 1: \̲t̲h̲e̲a̲t̲^{*}

值得注意的是,对于逆问题,即方程中的某些参数未知。若只知道PDE方程及边界条件,PDE参数未知,该逆问题为非定问题,所以必须要知道其他信息,如部分观测点 u u u 的值。在这种情况下,PINN做法可将方程中的参数作为未知变量,加到训练器中进行优化,损失函数包括Data loss。

2.2 ELM方法求解

考虑如图2的ELM,它由 n 个神经元的单层前馈神经网络构成,假设输入为 x = ( x 1 , ⋯   , x j ) T \mathbf{x}=(x_{1}, \cdots,x_{j})^{T} x=(x1,,xj)T,输出为一个神经元 y y y ,ELM主要思想是,输入层权值和偏差是预先设定的随机值,并且在整个训练过程中都是固定的,通过训练学习得到输出层权值。
在这里插入图片描述

图2:极限学习机示意图

ELM求解方法
首先,确定前馈神经网络结构,初始化输入权重和偏差(初始化后固定)、输出层权重(待求解)。输入输出的映射可以表示为:
G ( x ) ν = y \mathbf{G} (\mathbf{x}) \nu=\mathbf{y} G(x)ν=y
式中: G = [ g ( x ⃗ 1 ) , g ( x ⃗ 2 ) , … , g ( x ⃗ j ) ] T \boldsymbol{G}=\left[g\left(\vec{x}_1\right), g\left(\vec{x}_2\right), \ldots, g\left(\vec{x}_j\right)\right]^T G=[g(x 1),g(x 2),,g(x j)]T G ( x k ) = [ φ ( a j 1 T x k + b 1 ) , φ ( a j 2 T x k + b 2 ) , … , φ ( a j n T x k + b n ) ] {G}\left({x}_k\right)=\left[\varphi\left({a}_{j1}^T {x}_k+b_1\right), \varphi\left({a}_{j2}^T {x}_k+b_2\right), \ldots, \varphi\left({a}_{jn}^T {x}_k+b_{n}\right)\right] G(xk)=[φ(aj1Txk+b1),φ(aj2Txk+b2),,φ(ajnTxk+bn)]
然后通过求解最小二乘法方法求得输出层权重
ν = pin ⁡ v ( G ) x \nu=\operatorname{pin} v(\boldsymbol{G}) \mathbf{x} ν=pinv(G)x

3.基于物理信息的极限学习机方法

基于物理信息极限学习机方法作为PINN的快速版本,在求解偏微分方程方面受到了广泛关注。其关键特征是用随机值固定输入层权值,并对输出层权值使用Moore-Penrose广义逆求解。
步骤:

  • 首先,确定神经网络结构,单层神经网络( n n n个神经元),随机初始化输入层权值和偏差并固定,随机初始化输出层权值。假设
    χ = [ x , y , 1 ] T , α = [ α 1 , α 2 , ⋯   , α n ] T , β = [ β 1 , β 2 , ⋯   , β n ] T , γ = [ γ 1 , γ 2 , ⋯   , γ n ] T \chi=[x, y, 1]^T, \boldsymbol{\alpha}=\left[\alpha_1, \alpha_2, \cdots, \alpha_n\right]^T, \boldsymbol{\beta}=\left[\beta_1, \beta_2, \cdots, \beta_n\right]^T,\gamma=\left[\gamma_1, \gamma_2, \cdots, \gamma_n\right]^T χ=[x,y,1]T,α=[α1,α2,,αn]T,β=[β1,β2,,βn]Tγ=[γ1,γ2,,γn]T
    式中: α , β \alpha, \beta α,β γ \gamma γ为输出层参数,通过随机初始化后固定。网络中使用非线性激活函数 φ = tanh ⁡ \varphi=\tanh φ=tanh,输出层参数为 ω = [ ω 1 , ω 2 , ⋯   , ω n ] T \boldsymbol{\omega}=\left[\omega_1, \omega_2, \cdots, \omega_n\right]^T ω=[ω1,ω2,,ωn]T,第 k k k个神经元的输出可表示为 φ ( z k ) \varphi\left(z_k\right) φ(zk) z k = [ α k , β k , γ k ] χ z_k=\left[\alpha_k, \beta_k, \gamma_k\right] \chi zk=[αk,βk,γk]χ,神经网络输出可表示为
    u ^ ( χ ) = φ ( z ) ω \hat{u}(\chi)=\varphi(z) \omega u^(χ)=φ(z)ω
  • 其次,将物理信息编码到极限学习网络中,由于极限学习机网络的特殊性,线性PDE方程和边界条件可描述为
    ξ f = L φ ( z ) ω − f λ ( x , y ) = 0 ξ b = B [ φ ( z ) ω ] − b ( x , y ) = 0 \begin{aligned} &\boldsymbol{\xi}_f=L \varphi(\boldsymbol{z}) \boldsymbol{\omega}-f_\lambda(x, y)=0 \\ &\boldsymbol{\xi}_b=\mathcal{B}[\varphi(\boldsymbol{z}) \boldsymbol{\omega}]-b(x, y)=0 \end{aligned} ξf=Lφ(z)ωfλ(x,y)=0ξb=B[φ(z)ω]b(x,y)=0
    通过上式,可得到
    H ω = Y \mathbf{H} \boldsymbol{\omega}=\mathbf{Y} Hω=Y
    式中: H H \mathbf{H} \mathbf{H} HH Y \mathbf{Y} Y是由 L L L B \mathcal{B} B所确定的matrix。
    然后,求解网络权重参数,利用Moore-Penrose广义逆求解可得
    w ∗ = pin ⁡ v ( H ) Y \boldsymbol{w}^{*}=\operatorname{pin} v(\boldsymbol{H}) \mathbf{Y} w=pinv(H)Y
  • 最后,得到PDE的解
    u ^ ( χ ) = φ ( z ) w ∗ \hat{u}(\chi)=\varphi(z) \boldsymbol{w}^{*} u^(χ)=φ(z)w

4.算例展示

4.1 2D Poisson Equation

u x x + u y y = ( 16 x 2 + 64 y 2 − 12 ) e − ( 2 x 2 + 4 y 2 ) , ( x , y ) ∈ Ω u_{x x}+u_{y y}=\left(16 x^2+64 y^2-12\right) e^{-\left(2 x^2+4 y^2\right)},(x, y) \in \Omega uxx+uyy=(16x2+64y212)e(2x2+4y2),(x,y)Ω
式中: Ω = { ( x , y ) ∣ x = 0.55 ρ ( θ ) cos ⁡ ( θ ) , y = 0.75 ρ ( θ ) sin ⁡ ( θ ) } \Omega=\{(x, y) \mid x=0.55 \rho(\theta) \cos (\theta), y=0.75 \rho(\theta) \sin (\theta)\} Ω={(x,y)x=0.55ρ(θ)cos(θ),y=0.75ρ(θ)sin(θ)} ρ ( θ ) = 1 + cos ⁡ ( θ ) sin ⁡ ( 4 θ ) , 0 ≤ θ ≤ 2 π \rho(\theta)=1+\cos (\theta) \sin (4 \theta), 0 \leq \theta \leq 2 \pi ρ(θ)=1+cos(θ)sin(4θ),0θ2π
方程真实解为:
u = 1 2 + e − ( 2 x 2 + 4 y 2 ) u=\frac{1}{2}+e^{-\left(2 x^2+4 y^2\right)} u=21+e(2x2+4y2)

4.2 结果

基于物理信息的极限学习机预测结果如图3所示,可看出,预测结果能方程好接近真解,同时计算时间为0.85s。
在这里插入图片描述

图3:基于物理信息的极限学习机预测

PINN预测结果如图4所示,PINN计算时间为144s,同时预测精度比基于物理信息的极限学习机差两个数量级。
请添加图片描述

图4:PINN预测结果

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

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

相关文章

动态规划PTA总结

0动态规划 最优子结构&&最值问题&&重叠子问题 ---> 动态规划 引用别人的文章 1数字三角形 1.1题目 给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下)&am…

HTML+CSS美食静态网页设计——简单牛排美食餐饮(9个页面)公司网站模板企业网站实现

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

SAP MM 为UB类型的STO执行VL10B,报错-没有项目类别表存在(表T184L NL 0002 V)-之对策

SAP MM 为UB类型的STO执行VL10B,报错-没有项目类别表存在(表T184L NL 0002 V)-之对策 业务人员创建好了UB类型的转储单据后,试图执行事务代码VL10B,未能成功,报错如下: 报错信息:4500000246 00…

【数据结构】——带头双向循环链表

目录 1.带头双向循环链表 2.链表实现 2.1可完成带头双向可循环链表节点的结构体 2.2申请一个可双向循环的节点 2.3初始化链表 2.4尾插 2.5尾删 2.6头插 2.7头删 2.8打印 2.9查找(修改) 2.10在pos之前插入x 2.11删除pos位置 2.12判空 2.13记…

Springboot图书馆管理系统毕业设计、Springboot图书借阅系统设计与实现 毕设作品参考

功能清单 【后台管理员功能】 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信息,支持删除 资讯分类:录入、修改、查看、删除资讯分类 录入…

【毕业设计源码】基于微信小程序的校园第二课堂(课外活动)管理系统

该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等学习内容。 目录 一、项目介绍: 二、文档学习资料: 三、模块截图: 四、开发技术与运行环境: 五、代码展示: 六、数据库表截图&#xff1a…

【数据库原理及应用】——数据库设计(学习笔记)

📖 前言:数据库的设计是指基于现有的数据库管理系统,针对具体应用构建适合的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能有效地存储和管理数据,满足各类用户的应用需求。本章将介绍数据…

PaddleOCR简单使用教程-Windows

说明 最近公司业务需要用到图文识别类似的功能,所以查阅了许多工具之后选择用百度开源的PaddleOCR来进行使用 先看官方简介: 百度飞桨PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落,支…

Flink系列之Flink 流式编程模式总结

title: Flink系列 一、Flink 流式编程模式总结 1.1 基础总结 官网: https://flink.apache.org/ Apache Flink — Stateful Computations over Data Streams 三个任意: 任意的数据源 Source任意的计算类型 Transformation任务的数据目的地 Sink其中关于…

trt多流、多batch、多context

(1)一个engine可以创建多个context,一个engine可以有多个执行上下文,允许一组权值用于多个重叠推理任务。例如,可以使用一个引擎和一个上下文在并行CUDA流中处理图像。每个上下文将在与引擎相同的GPU上创建。 &#xf…

跨境电商市场也“内卷”,出海卖家如何破圈?

近些年来,跨境电商从业者都在调侃本行业越来越“卷”,大家需要铆足了劲竞争更有利的资源,以往的流量红利期似乎一去不复返了。事实上,很多跨境电商卖家对这种局势并不陌生,一些人甚至经历了国内电商从流量红利期至流量…

复习计算机网络——第三章记录(1)

数据链路层 功能:通过一些数据链路层的协议,在不太可靠的物理链路上实现可靠的数据传输。 相关基本概念: 1、结点(node):网络中的主机(host)和路由器(router&#xff…

JS实现简易计算器(input表单)

实现效果: 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"></head><body><p>整数1:<input type"text" id"num1"></p><p>整数2:<input type"text&q…

Kamiya丨Kamiya艾美捷抗BCMA单抗,克隆Vicky-2说明书

Kamiya艾美捷抗BCMA单抗化学性质&#xff1a; 同义词&#xff1a;B细胞成熟蛋白&#xff0c;TNFRSF 17&#xff0c;CD269。 特异性&#xff1a;识别鼠标BCMA。 物种反应性&#xff1a;老鼠不与人BCMA发生交叉反应。其他物种未经测试。 Ig同种型&#xff1a;大鼠IgG2a 免疫…

4×30m钢筋混凝土简支T梁桥结构设计与计算

目 录 1设计资料 1 1.1桥面净宽 1 1.2设计荷载 1 1.3主梁跨径和全长 1 1.4材料 1 1.5设计依据 1 1.6参考资料 1 2任务与要求 2 2.1结构尺寸拟定 2 2.2行车道板计算 2 2.3主梁计算 2 2.4横梁的计算 2 3结构尺寸拟定 3 4行车道板计算 4 4.1永久荷载及其效应 4 4.2截面设计、配筋与…

机器视觉计算(一)

本文主要记录像素尺寸映射到实际物理尺寸的计算&#xff0c;并给出一些参考文献。 分辨率 视野(Field of View)/像素(Pixel) 比如我要看的产品大小是30mm*10MM&#xff0c;使用200万像素&#xff08;1600pixel*1200pixel&#xff09;的相机。因为产品是长条形&#xff0c;为了…

[附源码]Python计算机毕业设计SSM酒店客户管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

read-after-write consistency 写后读一致性的解决方法

问题定义 写后读一致即写完数据之后马上读&#xff0c;直接能读到新的数据&#xff0c;而不是老的数据。 导致这个问题主要是数据库之间的同步延时。这里只讨论一主多从的情况。 如下图&#xff1a; 用户添加新评论用户刷新&#xff0c;读请求到从节点1&#xff0c;此时从节…

【Matplotlib绘制图像大全】(十三):甜甜圈饼图

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

Vue2.0开发之——Vue基础用法-vue-cli(30)

一 概述 vue-cli—介绍并安装vue-clivue-cli—基于vue-cli创建vue项目vue-cli—项目预览效果vue-cli—项目目录结构vue-cli—vue项目运行过程vue-cli—组件的基本使用 二 vue-cli—介绍并安装vue-cli 2.1 什么是单页面应用程序 单页面应用程序&#xff08;英文名&#xff1a…