学习周报:文献阅读+Fluent案例+Fluent相关算法学习

目录

摘要

Abstract

文献阅读:基于物理的机器学习的单元操作和过程建模

文献摘要

讨论|结论

机器学习在水系统UOP建模中的局限性和优势

理论知识

即时映射法(vanilla ANN)

滞后映射法(Time lagged ANN)

LSTM

城市水处理中典型单元操作和过程的PINN

实验设置

案例1 连续搅拌槽式反应器(CSTR)

案例2:活性污泥反应器

案例3:固定床颗粒吸附反应器

FLuent案例

几何建模

网格划分

求解器设置

结果展示

理论学习部分

总结


摘要

在本周中,通过阅读文献,了解PINN在基础水处理单元设施中的优势,文章通过与传统ML方法对比,并通过三个常见的水处理设备进行了实验,详细的叙述的PINN的优势和缺点。在Fluent中,选用管道中存在弯折物的CFD分析,进行设置求解。理论学习方面,对有Fluent算法基本知识进行了学习。

Abstract

In the past week, I have read the literature to understand the advantages of PIN in basic water treatment unit facilities, and the article describes the advantages and disadvantages of PINN in detail by comparing it with traditional ML methods and experimenting with three common water treatment equipment. In Fluent, a CFD analysis of bends in a pipe is selected and set up to be solved. In terms of theoretical learning, the basic knowledge of Fluent algorithm was learned.

文献阅读:基于物理的机器学习的单元操作和过程建模

Unit Operation and Process Modeling with Physics-Informed Machine Learning

文献摘要

机器学习(ML)越来越多地应用于水基础设施动态建模。常见的ML模型主要是数据驱动的,需要大量的数据来进行稳健的训练。通常,由于成本和时间的考虑,在水系统中获得更高时间和空间分辨率的可靠数据可能具有挑战性。在这种情况下,将现有的科学知识集成到ML模型中,作为物理信息ML,有利于提高预测能力和泛化能力。研究考察了城市水处理中典型单元操作和过程(UOP)系统动力学的物理信息ML和通用ML模型的预测能力和通用性。包括:(1)连续搅拌槽反应器,(2)活性污泥反应器、(3)固定床颗粒吸附反应器。结果表明:当数据可用性有限时:(1)除了系统动力学表现出更简单的周期模式外,常见的ML模型对于预测水系统动力学并不一定是鲁棒的。常见的ML模型也不能泛化到不同的加载条件。(2)所建立的PINN模型具有较高的预测能力和泛化能力。(3)受益于嵌入的先验知识,pinn需要显著减少的数据集来进行鲁棒预测。这些结果表明,将物理原理和领域知识混合到ML框架中对于强大的UOP和水系统建模至关重要。

讨论|结论

尽管通用机器学习模型的应用和潜在的好处越来越多,但预测系统动力学的鲁棒性和潜在的责任却很少得到检查。用于水系统建模的常见ML模型通常被表述为监督ML问题。在这种基于监督学习的通用ML模型中,有三个主要障碍可能会阻碍它们的预测能力:

  1. 通用ML模型在很大程度上是数据驱动的。因此,这些模型是一个“黑匣子”,与领域知识(例如:化学计量学,反应动力学)和物理原理(例如,质量,动量,能量对话原理)无关。他们并没有同物理规律紧密的结合起来,甚至不能保证物理上有界(例如,预测的物种浓度为负值)。
  2. 用于水系统建模的常见ML模型,在详细的模型实现上有所不同,通常被表述为监督学习。因此,常见的ML模型需要大量不同的数据集来进行模型训练。然而,与ML模型在社交网络和计算机视觉中的传统应用不同,此时水系统的数据采集更具挑战性且不太经济。除了在线传感器实时监测的选定参数(如溶解氧、浊度、压力、氨)外,基本和关键参数仍然主要依赖于离散样品和实验室分析,如SSC、粒度分布、TP、TN和金属(尽管有其他无机和有机化学品)。在有限的数据库中,训练和开发通用机器学习可能会导致模型泛化性差,并且鲁棒性较差
  3. 系统动力学的预测本质上是一个时间外推的任务。虽然常见的ML模型可以很好地解决插值问题,但这种模型可能会受到外推的严重挑战。此外,当模型应用于不同的加载条件时,不能保证模型的泛化性。考虑到ML的潜在责任和城市水系统中有限数据的独特挑战,迫切需要检查常见ML模型对水系统动力学的预测能力。

基于常见机器学习模型的贡献,科学机器学习(SciML)是一种潜在的更强大的水系统动力学建模机器学习方法。与普通ML方法相比,SciML通过引入领域知识,显著提高了预测能力和鲁棒性。此外,SciML在许多挑战传统机制模型(微分方程)的逆问题上也显示出更高的效率。

文章通过利用了SciML的最新进展,并提出了pinn在城市水处理中常见UOPs的新应用,无论是用于雨水、废物还是饮用水处理。本研究的具体目标是概括和总结用于水系统建模的常见ML方法和模型,并检查和比较常见ML和SciML模型(即pinn)对常见UOPs的预测能力,并评估pinn对部分观测数据进行参数估计的能力。

本文所述的pinn虽然是新的,但与数据融合和数据同化在哲学上有许多相似之处,即将理论与观测相结合以获得更好的预测性能。pinn(通过扩展SciML)通过新颖的ML架构将领域知识合并到ML框架中,如图2所示:

通过将领域知识作为ML损失函数中的无监督学习组件,解决方案空间受到约束/正则化,并且ML模型被引导学习生成观察数据的底层系统动态,而不是仅学习数据中的模式(例如,通用ML模型)。如图3、5和8所示,无论是时变还是时空相关的水系统动力学,与普通ML模型相比,pinn的预测能力和通用性都有了显著提高:

与普通ML模型相比,pinn需要更少的数据进行模型训练,并且不容易过度拟合。这是强加领域知识来规范模型解决方案的好处之一。

四个数据点足以让pin学习和预测CSTR系统的动态。相比之下,使用这些有限的数据开发常见的ML模型具有挑战性。

pinn的这一属性对于城市水系统建模尤其重要和有益,因为由于采样/分析挑战和经济资源,城市水系统建模的数据通常是稀疏的。其中一个例子就是对雨水处理系统的监测和建模。

然而,高频率采样在经济上仍然不可行,因为作为大多数监管认证的一部分,流入/流出样本需要实验室分析,这是监测活动的主要成本组成部分。用稀疏样本直接评估系统动力学会导致混叠误差,误导对系统性能的解释。在这种情况下,pinn可以有效地应用于基于稀疏数据的系统动态重构、恢复和通知,如图6所示。同样,pinn也可以用空间中的稀疏数据推断系统动力学。如图7和8中固定床颗粒吸附反应器案例所示,pinn仅在顶部边界(即流出物数据)进行稀疏采样即可推断整个二维溶液域。

pinn的新架构提供的另一个好处是能够同时进行参数估计:如三个UOP案例所示,pinn可以反向识别嵌入数据中的模型参数P。由于这些模型参数P每个都有一个物理基础,一旦学习,这些参数允许pinn外推和推广到未来的时间(即,如三种情况所示的预测)以及与训练数据不同的加载条件(图8)。此外,结合基于领域知识的无监督学习为pinn提供了隐藏动态推理的能力(即,不需要标签进行训练)。

不可见或变化的系统加载条件下(例如,水流线变化或加载浓度变化),pinn的成功通常取决于对系统动力学的强大理解。(对所描述过程的微分方程有较好的理解)。

与常见的ML模型不同,PINN模型体系结构是针对特定问题的,不存在放之四海而皆准的模型。用户需要根据预期的应用制定并将领域知识合并到pinn中。

然而,未来的研究还需要进一步研究和提高PINN训练的鲁棒性和效率。

机器学习在水系统UOP建模中的局限性和优势

(1)当系统动力学表现出周期性模式时,通用ML模型可以利用这些特征并预测系统动力学。然而,依靠数据模式进行动态预测可能不是一个足够和可靠的解决方案,因为水系统受到更复杂的非定常负载和动态,一旦模型扩展到训练周期之后,常见的ML模型就会大大偏离CSTR解决方案。

(2)常见的ML模型无法预测连续搅拌槽式反应器CSTR行为。大多数城市水处理系统都受到更复杂的物理操作和涉及湍流混合,多相相互作用,放热反应等化学和生物过程的影响。将通用ML模型应用于这些系统和条件可能具有挑战性。

该研究表明,用于预测水系统动力学的常见ML模型的局限性可能更多地与监督学习(即回归)的基本模型公式相关,而不是与训练数据的采样频率、详细的ML模型结构和模型训练过程相关。从图9可以看出,增加采样频率、改变模型结构、改变学习率对普通ML模型的性能提升有限

这些观察结果表明:虽然足够的数据是必不可少的,但数据的数量可能不是将常见ML模型应用于水系统UOP建模的限制因素。在城市水系建模的情况下,高采样成本往往会阻碍ML模型训练获得更多的数据。证明在数据采样的经济约束下,更多的采样可能有利于ML模型的训练,但实际上可能无法克服常见ML模型在泛化和外推方面的基本限制。

理论知识

监督ML问题(例如,ANN, RF, DT, SVM, KNN)。这些模型可以分为下面列出的三种方法。图1展示了这些方法与神经网络和LSTM的数据布局、监督训练公式和模型结构。

即时映射法(vanilla ANN)

在这种方法中,当前时间的特征(例如,流量,进水负荷)被用作ML模型的输入。ML模型输出感兴趣的数量,如流出物化学参数或负载标签。通过最小化ML模型预测ANN之间的损失函数[即均方误差(MSE)],通过监督训练获得ML模型参数θ(在人工神经网络的情况下,θ是人工神经网络的权重和偏差)。

此方法中的时间t仅作为不同数据对的索引,打乱时间索引不会影响模型训练和结果,因为给定时间的模型标签/输出只取决于当时的模型输入。

滞后映射法(Time lagged ANN)

也称为滑动窗口法或递归法,该方法是为了利用时间序列数据中嵌入的时间序列信息而开发的。顺序信息对于预测结果可能很重要。例如,当前时间较高的流出物浓度可能与前一时间较高的流出物浓度相关联。如图1(b)所示:

ML模型输入也可以将输出标签的历史数据作为自回归成分,通过这样的表述,ML模型部分地考虑了时间序列中的历史影响,尽管忽略了每个数据对的输入中的时间顺序(在每个时间序列中的输入值都视为独立特征),随后的监督训练本质上是训练ML模型学习更新规则,与之前的即时映射方法相比,时间t索引排序在时间上是滞后的。

然而,由于该方法对输入值中的时间顺序不可知,并将不同时间的特征视为独立特征,使用的ML模型结构与之前的即时映射方法中应用的ML模型没有显著差异。

LSTM

LSTM作为递归神经网络(RNN)的一种,是专门为时间相关数据建模而开发的。如图1(c)所示,LSTM结合了前一时间和当前时间的特征进行预测(由每层LSTM单元之间的垂直连接线表示):

通过隐藏状态和单元状态来考虑输入特征的时间关系。此外,与普通RNN相比,LSTM通过对细胞状态和门机制的新颖架构设计克服了学习长期依赖时梯度消失的问题LSTM能够捕获数据的长期和短期依赖关系。这里采用的LSTM训练数据布局与之前的时滞映射方法相同。由于LSTM通常用于预测未来某个时刻的标签,因此堆叠的“多对一”。

城市水处理中典型单元操作和过程的PINN

pinn实现直接促进了ODE和PDE系统(或混合PDE-ODE系统)的集成。适应偏微分方程的能力对于模拟时变和空间依赖的水系统是必要的(在后面的部分中演示),pinn的实现取决于具体的系统。

系统动力学可以用状态变量Y来表示,可以是时间或空间的函数(即时变空间系统)基于通用逼近定理,应用人工神经网络对系统状态变量y / t进行建模;将时间和空间坐标作为输入特征,输出为Y,给定观测数据后,制定一个有监督的ML问题,并且可以练神经网络来预测基于输入的状态变量,以下式表示:

pinn的数据驱动部分与图1(a)所示的vanilla ANN模型相同,pinn不同于普通的人工神经网络,因为附加的损失函数包含了系统动力学的先验知识。由于系统动力学的先验知识通常由微分方程描述。pinn利用自动微分(AD)来有效地解析计算时间和空间导数,而不是用传统的数值方法逼近这些项。初始条件损失、边界条件损失和函数损失(PDE)或ODE的定义见式。(2) -(4):

该研究中的权重因子以可训练参数的形式实现,并通过超参数优化确定。

实验设置

本文首先对具有非定常载荷的CSTR进行了常用的ML方法和pin方法的应用和检验。考虑CSTR案例是为了说明pinn的使用,并描述ML和pinn之间的区别。在第二种情况下,考虑了一个更复杂的系统,一个具有13个状态变量的活性污泥反应器。在第三种情况下,将ML方法和pinn应用于固定床吸附反应器,并与物理建模结果进行了比较,其中系统动力学依赖于时间和空间。使用双曲正切激活函数的完全连接层。通过超参数优化(在验证数据集上执行)识别隐藏层和隐藏神经元的数量,典型配置为4个隐藏层,包含8-64个隐藏神经元。神经网络的权重是随机初始化的。

案例1 连续搅拌槽式反应器(CSTR)

本文考虑将该模型用于ML和pinn模型的基准测试。具有一阶反应的CSTR的动力学由ODE定义,如式(6)所示:

式中V =体积;Y =物种浓度;QI和QE =流入和流出;YI =进水物种浓度;k =一级反应常数。考虑反应堆存储的最小变化(即QE / QI)。

通过ODE求解器SciPy v1.8.0 odeint获得的参考CSTR溶液,在各种加载条件和反应常数的组合下检查ML模型和pinn。

求解器配置(例如,时间步长)由odepack自动完成。在模拟的前半段,为ML和PINNs模型提供时间t、流量QI、进水浓度YI和出水浓度YE(来自ODE求解器),用于模型训练和验证。请注意,在CSTR模型中,YE¼y。在模拟周期的后半段,给定时间t、流量QI和进水浓度YI,训练好的ML模型和pin的任务是预测出水浓度YE。

验证数据集的应用是优化ML模型架构(即隐藏层数、隐藏神经元)和学习过程(如学习率、学习周期),以获得最佳模型性能和防止过拟合。这个过程被称为“超参数优化/调优”

以流量QI、进水浓度YI、时间t作为模型输入特征,模型输出标签为出水浓度YE。在滞后神经网络和LSTM的情况下,使用序列长度τ为8。注意,作为另一种表述,YE的历史值也可以作为输入特征。然而,这种自回归公式的性质可能导致快速的误差积累

在PINNs中,时间作为人工神经网络模型的输入,出水浓度YE作为人工神经网络模型的输出。用流量和进水浓度计算ODE函数损失

图3比较了不同载荷条件下常用ML模型和pinn对CSTR的预测能力:

不同荷载条件下,这些模型对试验周期的预测能力不同。对于呈现周期性模式的CSTR加载和溶液,如图3(a)所示,除vanilla ANN(R2¼−45.1)外,所有模型都预测了测试期间的CSTR动态。滞后的ANN、LSTM和pinn的结果在图3(a)中重叠。对于负载增加和解决方案复杂性增加的CSTR,常见ML模型的预测能力受到挑战。图3(b和c)表明,无论是水力负荷还是进水负荷,附加的频谱特征(即更高的频率)都可能导致常见ML模型的性能下降(表S5中的负R2表示)。具体来说,在图3(d)中,当水力和进水负载中存在高频成分时,常见的ML模型无法预测CSTR解决方案中的一般趋势(例如,峰值时间)。

这些结果说明了预测水系统动力学的常见ML模型的潜在局限性,因为它们的“黑箱”公式(即,不可知的物理)。

与常见的ML模型相比,PINN模型不受这些条件的挑战,并且始终产生高的预测能力,实际上在所有图中都重叠了解决方案。此外,pinn可以识别嵌入在底层系统动力学中的模型参数(即一阶反应常数k)。模型参数k是PINN训练中的一个学习分量。图4显示了pin对具有不同k的CSTRs推断的一阶反应常数k的收敛性:

随着训练进行,损失数据逐渐减少,同时,PINN模型参数k逐渐收敛于k,表明模型参数被识别。这些结果表明,除了对CSTR动态建模之外,pinn还可以提供对底层系统动态(例如,k)的机制洞察,而普通ML模型不提供这样的功能。此外,图4还说明了高阶优化器(即LBFGS优化器)对PINN训练的好处。与低阶Adam优化器相比,LBFGS优化器在迭代/epoch为4000时的应用加速了模型的学习,损失函数的斜率增加。

案例2活性污泥反应器

本文考虑的活性污泥反应器的数学模型是由国际水协会(IWA)开发的1号活性污泥模型(ASM1),ASM1描述了活性污泥反应器中的生物过程,共有8个过程和13个组成部分。数学上,ASM1是一个耦合ODE系统,有13个方程、13个状态变量、5个计量参数和14个动力学参数,如在线补充资料表S1和表S2所示。ASM1的广义表达式定义如式(7)所示:

其中:V为体积,Y为13种状态变量的向量,R为反应速率,So为氧饱和浓度,Kl为氧传递系数(式(7)中最后一个源项只直接影响SO)。

本研究中考察的特定活性污泥反应器配置基于完善的基准模拟模型1号(BSM1)。其中,活性污泥CSTR反应器容积为1333 m3,曝气定氧传递系数为3.5 h(或84天),氧饱和浓度为8 g=m3。加载条件包括一周的干燥天气和第二周的降雨径流(例如暴雨)事件,考虑流入和流入浓度。

与案例1类似,前五天的物种出水浓度溶液(从ODE求解器中获得)以及系统输入(即流量,进水浓度)用于ML和PINN模型的训练和验证。随后,ML和pinn模型被检查,并与ASM1的参考溶液在剩余的9天进行比较。

与案例1相反,在这种情况下,pinn的函数损失计算为13个耦合ODE方程,如图2(d)所示。此外,ASM1的14个动力学参数(汇总在在线补充材料中)不提供给pinn,而是作为学习的一部分制定。

图5比较了常用ML和PINN模型在潮湿天气负荷条件下对活性污泥反应器的预测能力:

与之前的CSTR案例类似,在这种情况下,所有模型在训练期间(t < 5天)都产生了良好的性能,但在测试期间(t > 7天)结果不同。

特别是,一旦预测超出训练周期,vanilla ANN模型就会受到挑战。与此同时,滞后ANN和LSTM模型虽然与ASM解决方案有所不同,但在干燥天气条件下(5天< t < 7天)捕获了测试期间的流出物。

然而,在降雨径流期(7天< t < 11天),这些模型的性能下降,在此期间,系统负荷和动态偏离了训练周期的周期性模式。两种模型对出水浓度的预测R2分别为0.59和0.58。特别是,滞后的人工神经网络倾向于在预测中产生不规则的正峰值和负峰值。在降雨径流事件停止后(t > 11 d),系统负荷和动力学重新出现周期性模式。

这些结果和案例1的结果(图3)表明,普通ML模型主要通过学习数据中的模式来预测系统动态,而不是学习嵌入数据模式中的底层机制和动态。

与常见的ML模型相比,pinn稳健地预测了活性污泥反应器的动力学,而不考虑负载特性和模式,如图5(d)所示。在PINN训练中,ASM的14个动力学参数(表S2)是未知的,需要由PINN从数据中学习。

在观察到的鲁棒性能的激励下,PINN进一步探索了基于部分观测的隐藏动态推断。在图5中,使用t < 5天的所有状态变量的数据来训练PINN。在图6中,PINN只提供了训练期间的SO和SNH数据。图6(a)显示,尽管观测值有限,但PINN仍然可以稳健地预测SO和SNH的动态,R2 > 0.99。图5和图6之间的比较表明,PINN(用部分观测值训练)对SO和SNH的预测是对普通ML模型(用所有状态变量训练)的改进。此外,图6(b)显示,PINN还可以推断未观测到的状态变量(SS, XNH, XS, XI, XND)的(隐藏的)动态,并且具有合理的精度(R2¼0.82,对这些状态变量进行平均),尽管SS和XBH存在一些偏差。隐藏动力学的PINN推断来自于所有状态变量不是独立的,而是通过潜在的生物反应过程相互关联和耦合的。由于这一领域知识被制定为无监督学习组件lasm - θ;PÞ,在PINN训练中不需要(隐藏的)状态变量的观察/标签:

案例3固定床颗粒吸附反应器

案例1和2检查ML和pinn对主要仅时变的UOPs系统动态建模。对于许多其他UOPs系统,系统动力学是时变的和空间依赖的(跨越传质区)。这种系统的一个例子是固定床颗粒吸附反应器。吸附反应器广泛用于水处理,将溶质从水相分离到固相(通常为颗粒状介质)。

非平衡吸附固定床反应器的物质输运和反应方程见式。(8) - (10) :

式中:Y为溶解相物质浓度;U为速度向量;Up为孔隙速度;ψ为孔隙度;Dh为各向同性颗粒介质的水动力弥散系数张量;φ =颗粒介质的比质量(除以孔隙度φ);ρp =颗粒介质密度;R =总反应速率/净反应速率;Q =吸附相和吸附剂的质量分数(kg吸附物/kg吸附剂);Kf =正向(吸附)常数,kr为反向(解吸)常数;qmax =吸附量(kg吸附量/kg吸附剂)。吸附剂的质量是干燥的。具体设置条件可见图2(e)。

图7表示了溶解相时空域和吸附相在固定床颗粒吸附反应器在PINNs中的二维轮廓,等高线的纵轴为空间坐标x,表示TDP沿反应器长度的空间分布等值线的横轴为时间t,表示TDP剖面随时间的演变:

如图7(a)所示,这些监督学习点构成了解域的一小部分(位于图边缘作为初始和边界条件,以及从物理建模中收集的突破数据点)。如果一个通用的人工神经网络模型只使用这些数据点来实现和训练,那么通用的人工神经网络模型将不能推断反应堆的动态,并且不能泛化。这是因为可以有无数个表面(具有不同的解)完美地适合这些边缘上的点;然而,普通的人工神经网络模型无法区分哪个溶液表面对应于物理溶液。

pinn通过在解空间中配置额外的搭配点来克服这个问题,如图7(b)中的黑点标记所示。在这些搭配点上,执行基于物理原理的无监督学习[如图2(d)所示]来指导ML训练,并确保得到的解面是物理解。

通过训练,PINN学会了同时满足物理和匹配物理建模出水结果的解决方案。如图7(a)所示,反应器颗粒床最初是干净的,没有吸附TDP。反应器加载TDP溶液后,TDP被高表面积吸附剂吸附,吸附相TDP增加,如图7(b)所示。随着时间的推移,TDP传质区穿透反应器颗粒床,最终TDP在反应器出水中突破。TDP突破曲线y / t的PINNs模型预测LbÞ与物理吸附建模结果吻合较好,如图8(d)所示。注意没有提供用于PINN训练的吸附相q的数据,吸附相的解和隐藏动力学完全是由pin通过底层物理推断出来的

FLuent案例

几何建模

在XY平面上绘制一个25mm的圆,生成后挤出1000mm并添加冻结,使其成为一个实体,在YZ面上绘制出一条同长度的直线。在XY平面上新建一个草图平面,绘制一个关于原点对称的20mm×0.7mm的矩形,采用扫掠命令,选择匝数的扭曲方式,将匝数调整为2,创建一个扭曲的胶带状障碍物:

为使其扭曲部分不会和进出口相交,需拉长该圆柱体,选择两端平面挤出10mm,然后将这两个部分同原本的圆柱体合并起来,使用Boolean命令,将两端圆柱连接,并使中间扭曲部分进行分离,以圆柱体为目标几何体,扭曲部分为工具几何体,保留其几何体,完成流体区域的分离,选择两者形成新部件后,完成几何划分:

网格划分

插入以四面体主导的方法,将最小单位尺寸调整为25mm,再插入膨胀的条件,以整个圆柱为主体,外表面为边界进行膨胀划分,命名完成各边界后,更新网格进入fluent:

求解器设置

模型采用能量模型和k-omega SST粘性模型,流体材料选择为水,进口速度设置为0.005m/s,温度为300k,湍流数值保持默认,在壁面处调整温度为330k,边界条件为温度,确保扭曲部分的计算方式为耦合计算,求解方法如下所示,并将残差调整为10e-6,以获得更好的结果,直接进行混合初始化,完成后进行1000次的迭代计算:

结果展示

残差:

流线图:

速度云图:

压力云图:

温度变化:

理论学习部分

总结

本周通过学习Fluent相关的算法,巩固了软件的理解和使用,能更好的理解在什么情况下设置正确的边界条件和如何采取正确的求解方法来进行仿真。阅读文献时会更关注其创新点和实验方式,为了以后的写作中提供更多的灵感。

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值