基于PINN的极少监督数据二维非定常圆柱绕流模拟

news2025/6/19 17:59:56

2022年10月16日-19日,亚洲计算流体力学会议在韩国九州举办。会议涌现了不少结合人工智能技术进行流体力学模拟的论文成果,这说明人工智能技术逐渐渗透流体力学模拟领域。百度与西安交通大学的研究人员一起,利用飞桨框架和科学计算工具组件PaddleScience,首次实现了基于物理信息约束神经元网络(PINN)方法,利用极少量监督点模拟二维非定常不可压缩圆柱绕流,将同等条件的CFD流场求解耗时降低了3个数量级。因为会议论文在网上无法下载,因此附上该论文的详细介绍(图1为论文封面),方便感兴趣的研究人员了解论文情况以及飞桨和PaddleScience的能力。

  • 会议论文代码下载地址

https://github.com/tianshao1992/PINNs_Cylinder

在这里插入图片描述

图1 ACFD2022会议收录摘要

研究背景

计算流体力学(Computational Fluid Dynamics, CFD)是研究流体力学问题的一种有效方法。CFD模拟通过在表示流体区域的网格上求解流体力学纳维-斯托克斯方程组(一种偏微分方程)来实现。在过去的几十年中,CFD模拟在模拟不同工程领域的流体问题方面取得了巨大进展,并已成为流体力学中的重要工具。

然而,CFD模拟存在一定的限制。当流体域和流场复杂时,网格生成可能是一项困难的任务。更细的网格可以给出更准确的结果,但它在时间和资源上的计算成本很高。通常,学者们会通过局部网格加密在精度和计算成本之间进行权 横 1 横^1 1,。然而,这会导致另一个问题,即如果在相邻的局部网格块的交界处,网格尺寸变化太快,则交界处网格的质量可能会变差,因此即使进行了局部网格加密,也需要兼顾不同网格块之间的网格尺寸过渡。此外,不同物理现象需要不同的网格尺寸。例如,在CFD-DEM模拟中,需要对网格进行特殊的处理来适合细小颗粒的模 拟 2 拟^2 2。因此,如果CFD模拟不需要网格,则能从本质上克服上述挑战。物理信息约束的神经元网络(PINN ) 3 )^3 3的出现,给无网格CFD模拟提供了一种可行方案。

本论文利用飞桨框架和科学计算工具组件PaddleScience,首次实现了基于物理信息约束神经元网络(PINN)方法,利用极少量监督点模拟二维非定常不可压缩圆柱绕流。通过与基于有限体积法(FVM)的CFD求解方法对比,证明PINN方法在求解精度上能够达到FVM方法同等的精度。同时利用预先训练好的网络模型,每个时间步的结果预测只需8ms,远远快于FVM方法计算速度,这是因为PINN方法可以在GPU上实现不同时间步的并行计算。但是PINN模型的训练较为耗时,未来需要开发更高效的算法来解决训练耗时长的问题。

研究方法

二维非定常不可压圆柱绕流问题描述

二维非定常不可压缩圆柱绕流是一种典型的非定常不可压缩流体现象,包含了流动边界层、流动分离、逆压梯度、粘性耗散等典型的流动现象,常常被用来验证数值求解算法。在本论文中,我们也选用圆柱绕流作为验证案例,选取的圆柱绕流几何和边界设置如图2所示。

整体流动为长方形区域,左侧为速度入口,右侧为压力出口,上下界面为无限远界面(即不设置边界条件),中间放置了一个直径为D=1cm的圆柱。圆柱表面满足无滑移条件,速度为0m/s。左侧入口的速度为1m/s,右侧的压力为0Pa。流体的运动粘性系数为0.4c m 2 m^2 m2/s,密度为1kg/ m 3 m^3 m3。根据上述参数,可以确定流动的雷诺数Re=250。流动的初始时刻状态由CFD软件OpenFOAM进行非定常模拟结果得到,其中OpenFOAM的时间步长设置为0.5ms。这里说明下,OpenFOAM采用的是有限体积方法(FVM)去求解下列纳维-斯托克斯方程组:

∇ ⋅ u = 0 \mathrm{\nabla}·u=0 u=0 (1)

∂ u ∂ t + u ∙ ∇ u + 1 ρ ∇ p − ν ∇ 2 u − f = 0 \frac{\partial\mathrm{u}}{\partial t}+\mathrm{u}∙∇u+\frac{1}{\rho}\mathrm{\nabla}\mathrm{p}-ν\mathrm{\nabla}^2u-f = 0 tu+uu+ρ1∇pν2uf=0 (2)

其中方程(1)为连续性方程, u \mathrm{u} u代表速度矢量, ∇ ⋅ u \mathrm{\nabla}·u u表示进出控制体的质量差,因为本案例采用不可压缩流动,因此进出控制体的质量差为0;方程(2)为动量方程, ν \nu ν表示流体运动粘性系数, ρ \rho ρ表示流体密度, p p p表示控制体上的静压, f \mathrm{f} f表示作用在控制体上的体积力(本案例里为0)。

在这里插入图片描述

图2 二维圆柱绕流示意图及初始和边界条件

物理信息约束神经元网络(PINN)

区别于OpenFOAM的有限体积法(FVM),物理信息约束神经元网络(PINN)利用神经元网络能逼近任意光滑函数的能力,来进行无网格求解纳维-斯托克斯方程组。本文构建的PINN网络结构示意图如图3所示。

神经元网络为一个全连接层网络,输入为3个神经元节点,分别对应流动的时间(t)和坐标(x,y),输出为3个神经元节点,分别对应流动的横向速度(u)、纵向速度(v)和静压(p)。在图3中,为了简便表达,采用速度矢量形式(u)来展示。

为了求解纳维-斯托克斯方程组,在神经元网络的损失函数项引入了物理信息约束,使得神经元网络既可以在数据层面得到训练,也可以在物理规律层面得到训练。具体损失函数的定义方式见下一节。

本文采用的神经元网络参数见表1。除了输入和输出的神经元节点,一共有6层隐藏层,每层包含64个神经元节点,激活函数为tanh,优化器为Adam,初始学习率为0.001,训练迭代步数为40万。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4UFznrSM-1681271362272)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a2a55759711e4abfb624d2f9bbf76b9b~tplv-k3u1fbpfcp-zoom-1.image "表1.png")]

表1 神经元网络参数设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T2Pd3uyq-1681271362272)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f5f895ef266c4a19bb5fa4a1d7808c1e~tplv-k3u1fbpfcp-zoom-1.image "wps_doc_2.jpg")]

图3 物理信息约束神经元网络结构示意

PINN的损失函数

神经元网络的训练过程,是通过损失函数的反向传递来实现网络参数的更新。本文中,损失函数包含数据项和物理规律项:

J = J d + ω J p J=J_d+\omega J_p J=Jd+ωJp(3)

其中, J J J是神经元网络的总损失函数, J d J_d Jd是数据项损失函数, J p J_p Jp是物理规律项损失函数, ω \omega ω是物理规律项的权重。

ω = 0 \omega=0 ω=0时,该神经元网络就是普通的神经元网络。通过设置 ω ≠ 0 \omega\neq0 ω=0,在损失函数中引入物理规律的影响,增强神经元网络对物理规律的拟合能力。物理规律损失函数项通过神经元网络自身的微分传递链计算得到。

数据项损失函数( J d J_d Jd)定义为预测数值与真实数值之间的均方差(MSE):

J d = 1 N d ∑ i = 1 N d ∣ Y p r e d i − Y t r u e i ∣ 2 J_d=\frac{1}{N_d}\sum_{i=1}^{N_d}\left|Y_{pred}^i-Y_{true}^i\right|^2 Jd=Nd1i=1Nd YprediYtruei 2(4)

其中, N d N_d Nd代表用来构造数据项损失的监督点数目,Y表示用来比较的物理量,真实数值为OpenFOAM计算结果;监督点指已知流场物理量数值的点,值得注意的是,监督点数目可以比OpenFOAM里的网格点数少。物理项损失函数( J p J_p Jp)定义为:

J p = J P D E + J B C + J I C J_p=J_{PDE}+J_{BC}+J_{IC} Jp=JPDE+JBC+JIC(5)

其中, J P D E J_{PDE} JPDE代表了流体偏微分方程的损失函数项,这也是PINN网络必不可少的一项; J B C J_{BC} JBC代表了流体系统的边界条件损失函数项,代表了流体系统的初始条件损失函数项。

J P D E J_{PDE} JPDE J B C J_{BC} JBC J I C J_{IC} JIC的定义如下:

J P D E = 1 N f ∑ i = 1 N f ∣ G ( u i , p i ) ∣ 2 J_{PDE}=\frac{1}{N_f}\sum_{i=1}^{N_f}\left|G\left({u}^i,p^i\right)\right|^2 JPDE=Nf1i=1Nf G(ui,pi) 2 (6)

J B C = 1 N B C ∑ i = 1 N B C ∣ Y p r e d i − Y t r u e i ∣ 2 J_{BC}=\frac{1}{N_{BC}}\sum_{i=1}^{N_{BC}}\left|Y_{pred}^i-Y_{true}^i\right|^2 JBC=NBC1i=1NBC YprediYtruei 2 (7)

J I C = 1 N I C ∑ i = 1 N I C ∣ Y p r e d i − Y t r u e i ∣ 2 J_{IC}=\frac{1}{N_{IC}}\sum_{i=1}^{N_{IC}}\left|Y_{pred}^i-Y_{true}^i\right|^2 JIC=NIC1i=1NIC YprediYtruei 2 (8)

其中, N f N_f Nf是用于计算流体偏微分方程损失函数的数据点数量, N B C N_{BC} NBC是用于计算流体系统边界条件损失函数的数据点数量, N I C N_{IC} NIC是用于计算流体系统初始条件损失函数的数据点数量, G G G代表了流体系统的即纳维-斯托克斯方程组的隐式格式,理想的情况下 G = 0 G=0 G=0

流体系统的总损失函数定义为:

J = ω 1 J d + ω 2 J P D E + ω 3 J B C + ω 4 J I C J=\omega_1J_d+\omega_2J_{PDE}+\omega_3J_{BC}+\omega_4J_{IC} J=ω1Jd+ω2JPDE+ω3JBC+ω4JIC (9)

其中 ω 1 ,   ω 2 ,   ω 3 ,   ω 4 \omega_1,\ \omega_2,\ \omega_3,\ \omega_4 ω1, ω2, ω3, ω4是各损失函数项的权重。区别于方程(3),方程(9)提供了一个更方便调节各损失函数项权重的定义。本文中 ω 1 = ω 3 = ω 4 = 10 ,     ω 2 = 1 \omega_1=\omega_3=\omega_4=10,\ {\ \omega}_2=1 ω1=ω3=ω4=10,  ω2=1

PINN的监督点分布

结合之前我们已经实现的基于大量监督点的PINN方法准确求解二维度非定常圆柱绕 流 4 流^4 4,本文我们进一步探索了监督点数量对PINN求解的影响,因为监督点的数目既影响模型的计算速度,也影响模型对数据的依赖性。减少监督点数量,既可以提高模型计算速度,也可以降低模型对数据的依赖性。为此,我们设计了6种不同的监督点分布,监督点数量从4到68,如图4所示。

N d = 68 N_d=68 Nd=68的监督点分布存在两种方式,a方案在圆柱前缘也布置一些点,b方案则所有点均在圆柱后方。 N d = 34 N_d=34 Nd=34的监督点分布存在两种方式,a方案集中在圆柱近后方,b方案则分散在圆柱近和远后方。 N d = 16 N_d=16 Nd=16 N d = 4 N_d=4 Nd=4的监督点分布的区别在于 N d = 4 N_d=4 Nd=4仅在圆柱表面均分分布4个监督点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fct4KrdO-1681271362273)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5c7b9f1d7bc64dc48b2f3110deb8e6d1~tplv-k3u1fbpfcp-zoom-1.image "wps_doc_3.jpg")]

图4 圆柱周围监督点布局

研究结果

PINN的训练过程

根据表1给的参数,在NVIDIA V100-32GB显卡上进行了不同监督点布局的模型训练。在训练40万步后,各损失函数项均收敛,其中一个模型的训练损失函数下降曲线如图5所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gaGp6Qxg-1681271362274)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c7b75037bdc04397b06276474122c7ef~tplv-k3u1fbpfcp-zoom-1.image "wps_doc_4.jpg")]

图5 PINN训练过程损失函数曲线

PINN与FVM对比

利用训练好的模型,我们将PINN计算的结果与OpenFOAM的FVM方法计算结果对比,如图6和图7所示。可以看到,在所有的监督点布局情况下,对全流场信息(u, v, p)PINN均能取得与OpenFOAM的FVM方法接近的计算结果,两者的绝对误差从全流场来看也较低。对于 N d = 4 N_d=4 Nd=4的监督点布局,PINN的计算结果也能较好的捕捉到圆柱后涡的脱落现象。

进一步的,圆柱表面的升力和阻力也进行了对比,见图8。从对比结果来看,PINN可以在只需要4个监督点的情况下,得到与OpenFOAM类似的结果。

表2对比了训练好的PINN与OpenFOAM的FVM方法的计算耗时,可见在类似计算配置的情况下,PINN方法比OpenFOAM的FVM减少了3个数量级的计算耗时。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wicXXBI1-1681271362275)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f10e12664f104d7a8fdf94778644ec3f~tplv-k3u1fbpfcp-zoom-1.image "表2.png")]

表2 PINN与FVM计算耗时对比

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XsABcWFv-1681271362276)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d81a2424216b4ece95f752418ba7b0b4~tplv-k3u1fbpfcp-zoom-1.image "wps_doc_5.jpg")]

图6 不同监督点布局下PINN与FVM方法对比(静压、横向流速、纵向流速)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBSHC7kb-1681271362276)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a59efe3d47234830a08de45d968b38dc~tplv-k3u1fbpfcp-zoom-1.image "wps_doc_6.jpg")]

图7 不同监督点布局下PINN与FVM方法对比误差(静压、横向流速、纵向流速)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lanvyENH-1681271362277)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/65f87c5d11f642c7a162b670031790e6~tplv-k3u1fbpfcp-zoom-1.image "wps_doc_7.jpg")]

图8 不同监督点布局下PINN与FVM方法对比(升力和阻力)

结果讨论

通过二维非定常不可压缩圆柱绕流这个典型案例的论证,本文的结论表明PINN方法可以应用在求解非定常不可压缩流体力学,可以取得接近CFD方法类似的精度,同时在计算耗时上可以提升3个数量级。

但是PINN方法也有一定的局限性,一个关键的限制是目前采用的PINN方法依赖于CFD模拟产生的监督数据。尽管本论文的研究表明,只多4个监督点数据就可以满足PINN求解的需求,但是为了生成这4个监督点的数据,需要进行全流场的CFD模拟,而CFD模拟仍然面临网格质量、求解速度等问题。未来需要开发完全不依赖监督点的PINN方法,才能克服依赖CFD模拟数据的限制。

参考文献

[1] Teigland, R., & Eliassen, I. K. (2001). A multiblock/multilevel mesh refinement procedure for CFD computations. International journal for numerical methods in fluids, 36(5), 519-538.
[2] Volk, A., Ghia, U., & Stoltz, C. (2017). Effect of grid type and refinement method on CFD-DEM solution trend with grid size. Powder Technology, 311, 137-146.
[3] Raissi, M., Perdikaris, P., & Karniadakis, G. E. (2017). Physics informed deep learning (part i): Data-driven solutions of nonlinear partial differential equations. arXiv preprint arXiv:1711.10561.
[4] https://aistudio.baidu.com/aistudio/projectdetail/4178470

拓展阅读

1.【PaddlePaddle Hackathon 第四期】—飞桨科学计算 PaddleScience:
https://github.com/PaddlePaddle/Paddle/issues/50629#science

2. 飞桨AI for Science流体力学公开课第一期:
https://aistudio.baidu.com/aistudio/course/introduce/27926

3. AI+Science系列(三):赛桨PaddleScience底层核心框架技术创新详解

4. 飞桨科学计算实训示例:
https://aistudio.baidu.com/aistudio/projectoverview/public?topic=15

相关地址

1. 飞桨AI for Science共创计划:

https://www.paddlepaddle.org.cn/science

2. 飞桨PPISG-Science小组:

https://www.paddlepaddle.org.cn/specialgroupdetail?id=9

3. 飞桨PaddleScience工具组件:

https://github.com/PaddlePaddle/PaddleScience

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

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

相关文章

生成式人工智能所面临的问题有哪些?

在生成式人工智能中工作需要混合技术、创造性和协作技能。通过发展这些技能,您将能够在这个令人兴奋且快速发展的领域应对具有挑战性的问题。 生成式人工智能是指一类机器学习技术,旨在生成与训练数据相似但不完全相同的新数据。 换句话说,…

WPS C++ 二次开发 Demo运行

1.官网二次开发地址:https://open.wps.cn/docs/client/wpsLoad 2.Demo源码下载: 经过测试上述链接找不到demo源码,可通过git命令下载: git clone https://code.aliyun.com/zouyingfeng/wps.git -b dev 图中cpp文件夹即为cdemo源码…

<Linux>进程概念

文章目录一、什么是进程1.进程概念2.进程描述 – PCB3.task_struct内容分类二、进程的基本操作1.查看进程2.结束进程3.通过系统调用获取进程标示符4.通过系统调用创建子进程(fork)三、进程状态1.普遍的操作系统状态2.Linux操作系统状态四、两种特殊的进程1.僵尸进程2.孤儿进程五…

sql语法:事务的”那些事“

Mysql版本:8.0.26 可视化客户端:sql yog 目录前言一、事务是什么?二、事务的特点三、如何提交事务和回滚事务?3.1 手动提交3.2 自动提交模式下开启事务3.3 注意事项四、事务的隔离级别4.1 模拟事务安全问题4.1.1 脏读问题模拟如下&#xff1…

11.Java面向对象----多态

Java面向对象—多态 面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统…

Nacos介绍与安装

文章目录一、什么是Nacos(摘抄自官网介绍)二、Nacos安装2.1 下载安装包2.2 解压2.3 配置端口2.4.启动2.5.访问一、什么是Nacos(摘抄自官网介绍) Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发…

【模型复现】densenet,增加残差结构连接,复用特征图的角度降低了计算量还提升了精度,transition_block压缩特征图

相比ResNet,DenseNet[1608.06993] Densely Connected Convolutional Networks (arxiv.org)提出了一个更激进的密集连接机制:即互相连接所有的层,具体来说就是每个层都会接受其前面所有层作为其额外的输入。下图为DenseNet的密集连接机制。可以…

聚观早报|Uber分拆旗下网约车服务; 字节跳动首度超越腾讯和阿里

今日要闻:Uber分拆旗下网约车服务Careem;字节跳动首度超越腾讯和阿里;搜狗追上GPT-4需要3年左右;苹果首款头戴装置将延至6月量产;全面注册制新规今起正式落地Uber分拆旗下网约车服务Careem Uber 旗下网约车服务 Careem…

【CSS】绝对定位元素设置 水平 / 垂直 居中 ( 绝对定位元素居中设置 - 先偏移 50% 再回退子元素一半尺寸 | 绝对定位居中设置 )

文章目录一、问题提出二、绝对定位 居中设置1、设置固定尺寸2、先偏移50%再回退固定值三、绝对定位元素 水平 / 垂直 居中一、问题提出 绝对定位 不能通过 设置 margin: auto; 样式的方式 , 设置盒子模型水平居中 ; 相对定位 的 盒子模型 , 并没有脱离标准流限制 , 仍然可以使…

notion插件:为你的工作流带来新生

在本文中,我们将介绍Notion的几款有助于提高生产力的插件。这些插件将加强Notion的功能,并为你的工作流程带来更多的便利。 我们特地为你准备了这本漫游指南:收录各种工具、信息和资源,携你共同探索浩瀚美丽的互联网海洋。 snackt…

23种设计模式-抽象工厂模式

抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创…

数据结构与算法六 树

一 二叉树入门 之前我们实现的符号表中,不难看出,符号表的增删查操作,随着元素个数N的增多,其耗时也是线性增多的,时间复杂度都是O(n),为了提高运算效率,接下来我们学习树这种数据结构。 1.1 树的基本定义…

流程引擎基础知识

流程引擎基础知识流程部署流程取消部署流程发起流程取回流程作废流程委托流程流转常用流程表介绍备注流程部署 1.后台直接导入bpmn /**流程部署源代码*/public void deploy() {ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();RepositoryService repo…

如何使用ChatGPT在1天内完成毕业论文

如何使用ChatGPT在1天内完成毕业论文 几天前,亲眼见证了到一位同学花了1天时间用ChatGPT完成了他的毕业论文,世道要变,要学会使用黑科技才能混的下去。废话到此结束,下面说明这么用AI生成自己的论文。 使用工具: 1. P…

Maven(一):什么是Maven?

Maven(一):什么是Maven?前言一、为什么要学习Maven?1、Maven 作为依赖管理工具1.1 jar 包的规模1.2 jar 包的来源1.3 jar 包之间的依赖关系2、Maven 作为构建管理工具2.1 你没有注意过的构建2.2 脱离 IDE 环境仍需构建…

【ERNIE Bot】百度 | 文心一言初体验

文章目录一、前言二、文心一言介绍三、申请体验⌈文心一言⌋四、⌈文心一言⌋初体验1️⃣聊天对话能力2️⃣文案创作能力3️⃣文字转语音能力✨4️⃣AI绘画能力✨5️⃣数理推理能力6️⃣代码生成能力7️⃣使用技巧说明五、总结一、前言 ​ 最近有关人工智能的热门话题冲上热榜…

亚马逊云科技十七年持续进化,解锁Amazon S3的七项新发布

17年前的3月14日,亚马逊云科技推出了一项“非常简单的”对象存储服务(Amazon Simple Storage Service)。该服务允许开发人员创建、列出和删除私有存储空间(称为存储桶)、上传和下载文件以及管理其访问权限。当时&#…

【C#+Unity小白】制作一款简单的2D平台游戏,PONG(弹球)游戏

素材均来自于Brackeys 各位可以到Youtube支持他,他的视频底下有他个人的网站,各位可以从他拿素材。 像我这样的菜鸡,在我看codeMonkey零零散散的制作视频而不知所措时,Brackeys出现了,他耐心教导,他真的是…

【2023最新】超详细图文保姆级教程:App开发新手入门(1)

1. 关于 『YonBuilder移动开发』 PS: 本段内容主要目的是去除官方语音描述,用通俗的语言来简单介绍一下『YonBuilder移动开发』,方便新手开发者判断是否适合自己上手学习。 简介: YonBuilder移动开发平台(官网:https://develope…

2023年14界蓝桥杯省赛“日期统计”题解

问题描述 小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如下所示: 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 …