当前位置: 首页 > news >正文

MORL4PDEs:基于多目标优化与强化学习的数据驱动偏微分方程发现

摘要:本文提出了一种结合多目标优化与强化学习的数据驱动方法MORL4PDEs,用于从复杂系统观测数据中发现简洁的偏微分方程(PDE)。该方法无需预定义候选函数库,通过神经网络代理生成符号表达式,结合遗传算法优化方程准确性与简约性,并利用强化学习更新模型。实验表明,MORL4PDEs能有效识别含高阶导数及复杂结构的PDE,在多个动态系统中表现优于传统方法。
关键词:偏微分方程发现 多目标优化 强化学习 符号回归 稀疏回归


1. 背景与挑战

偏微分方程(PDE)是描述物理现象与自然规律的核心数学工具。然而,针对复杂系统(如湍流、生物传热等)推导PDE的传统方法面临两大挑战:

  1. 复杂性高:系统常呈现强非线性与不确定性,理论建模困难;
  2. 候选函数库依赖:现有数据驱动方法(如SINDy、PDE-FIND)需预定义完整的候选函数项库,限制了方程形式的灵活性。

传统稀疏回归方法虽能通过正则化筛选关键项,但候选库的完备性直接影响结果质量。若库中遗漏重要项,则无法恢复真实方程。此外,进化算法虽能避免库依赖,但搜索空间有限,难以处理高阶导数与复合项。

2. 方法框架

MORL4PDEs的核心思想是将强化学习(RL)与多目标遗传算法(GA)结合,通过符号回归直接生成PDE表达式,流程如图1所示。
在这里插入图片描述

图1:MORL4PDEs工作流程,包含表达式生成、种群扩展与多目标优化三个阶段。

2.1 表达式生成器

PDE表达式以二叉树形式表示,节点由算子和操作数构成,符号库定义为:
L = { + , − , ∗ , / , ^ 2 , ^ 3 , ∂ , ∂ 2 , ∂ 3 , ∂ 4 , u , x } \mathcal{L} = \{+, -, *, /, \hat{~}2, \hat{~}3, \partial, \partial^2, \partial^3, \partial^4, u, x\} L={+,,,/, ^2, ^3,,2,3,4,u,x}

LSTM网络代理生成二叉树的前序遍历序列。例如,方程 ∂ u / ∂ t = ∂ 2 u / ∂ x 2 \partial u / \partial t = \partial^2 u / \partial x^2 u/t=2u/x2对应的前序序列为[∂, ∂, x, u, x]。生成过程中施加物理约束:

  1. 必须包含空间变量 x x x
  2. 运算符+-出现次数不超过10次;
  3. 微分算子右子节点必须为 x x x(避免 ∂ x / ∂ x \partial x / \partial x x/x等无效项)。
    在这里插入图片描述

2.2 种群扩展与多目标优化

初始种群由LSTM生成,随后通过遗传算法(交叉、变异)扩展搜索空间。关键操作包括:

  • 交叉:交换两棵树的子树(如图2a);
  • 变异:替换节点、删除分支、添加子树或替换子树(如图2b)。

在这里插入图片描述

图2:交叉与变异操作示例。(a)交叉交换子树;(b)变异替换节点。

在这里插入图片描述

为平衡准确性与简约性,引入NSGA-II多目标优化算法,目标函数为:
F 1 = ∥ Θ ( u , x ) ⋅ ξ − u t ∥ 2 2 N ( 准确性 ) , F 2 = α ⋅ k ( 简约性 , k 为项数 ) \begin{aligned} F_1 &= \frac{\|\Theta(u,x) \cdot \xi - u_t\|_2^2}{N} \quad (\text{准确性}), \\ F_2 &= \alpha \cdot k \quad (\text{简约性}, k为项数) \end{aligned} F1F2=N∥Θ(u,x)ξut22(准确性),=αk(简约性,k为项数)

2.3 强化学习优化

以PDE表达式为奖励信号,采用风险寻求策略梯度更新LSTM网络参数。奖励函数综合考虑拟合误差与方程复杂度,鼓励生成简洁且高精度的表达式。

3. 实验与结果

3.1 研究案例

为了全面验证MORL4PDEs方法的有效性和稳健性,选取了六个具有代表性的PDE作为研究案例。这些PDE涵盖了不同类型的复杂方程,包括具有高阶微分项和复杂结构的方程,传统方法在处理这些方程时往往面临困难
在这里插入图片描述

Burgers方程是典型的非线性方程,在流体力学、声波传播等领域有着广泛的应用。
KdV方程由Korteweg和de Vries提出,用于描述波传播的非线性效应。
Kuramoto-Sivashinsky方程最初由Kuramoto和Sivashinsky提出,常用于描述涡旋动力学、化学反应等空间耗散系统的动力学,其微分项高达四阶。
Chafee-Infante方程同时包含指数项和导数项,用于描述自由边界问题,属于反应扩散方程。
PDE_divide和PDE_compound则是具有分数结构和复合函数的方程,这类方程无法用封闭形式的方法发现。
通过对这些不同类型方程的研究,可以充分展示MORL4PDEs在处理复杂PDE发现问题上的能力。

3.2 PDE发现结果

在实验中,为LSTM模型选择了一个具有32个隐藏节点的单层LSTM。将MORL4PDEs方法与其他基于遗传算法的方法进行对比,结果显示MORL4PDEs是唯一能够发现所有六个方程的算法。
表2 不同方法在六个数据集上的性能对比

方法发现的PDE系数误差(%)MSERIR(%)
SGA u t = − 0.9934 u u x + 0.1063 u x x u_t = -0.9934uu_x +0.1063u_{xx} ut=0.9934uux+0.1063uxx3.48±2.825.30×10⁻⁵99.077
DLGA u t = − 0.9954 u u x + 0.0994 u x x u_t = -0.9954uu_x +0.0994u_{xx} ut=0.9954uux+0.0994uxx0.52±0.061.93×10⁻⁵97.466
MORL4PDEs u t = − 1.0011 u u x + 0.1024 u x x u_t = -1.0011uu_x +0.1024u_{xx} ut=1.0011uux+0.1024uxx1.26±1.144.89×10⁻⁷-

从表2可以看出,与SGA和DLGA相比,MORL4PDEs在发现方程的系数误差、均方误差(MSE)等方面表现更优。例如在Burgers方程的发现中,MORL4PDEs得到的方程 u t = − 1.0011 u u x + 0.1024 u x x u_{t}=-1.0011uu_{x}+0.1024u_{xx} ut=1.0011uux+0.1024uxx ,其系数误差为 1.26 ± 1.14 % 1.26 \pm 1.14\% 1.26±1.14% ,MSE为 4.89 × 1 0 − 7 4.89 \times 10^{-7} 4.89×107 ,明显优于其他方法。通过图4中MSE的可视化结果也能直观地发现,MORL4PDEs的MSE比其他方法小得多。此外,引入相对改善率(RIR)来衡量MORL4PDEs相对于其他方法在MSE上的改进,结果表明MORL4PDEs发现的方程形式与正确方程的形式相同。以Burgers方程为例,在每次迭代中,MORL4PDEs都能不断优化,如图5展示了每次迭代中奖励最高的二叉树序列,随着迭代的进行,奖励不断提高,方程也越来越接近真实情况。
在这里插入图片描述

3.3 模型比较

表3 不同方法对PDE发现的能力对比

方程类型PDE-FINDPDE-netDL-PDEEPDEDLGASGAMORL4PDEs
Burgers✔️✔️✔️✔️✔️✔️✔️
KdV✔️✔️✔️✔️✔️✔️✔️
Chafee-Infante✔️✔️✔️✔️✔️✔️✔️
PDE_compound✔️✔️
PDE_divide✔️✔️
KS✔️✔️

将MORL4PDEs与一些现有的流行方法进行比较,结果如表3所示。PDE-FIND作为经典的稀疏回归算法,由于需要构建候选函数库,无法处理具有分数结构和复合函数的PDE_divide和PDE_compound。DL-PDE同样存在这个局限性,并且其使用神经网络自动微分获取导数项的方式,对观测值的拟合要求较高,否则导数项误差较大,在处理Kuramoto-Sivashinsky方程这类高阶导数方程时效果不佳。PDE-net是一种封闭库方法,只能发现部分简单的方程。DLGA在DL-PDE的基础上引入遗传算法,但由于仅以不同阶数的导数作为基本变异单元,搜索空间有限,无法发现复杂形式的PDE。EPDE与DL-PDE类似,也只能处理部分简单方程的发现。SGA虽然可以发现开放形式的PDE,但在处理具有高阶导数项的Kuramoto-Sivashinsky方程时,由于搜索空间过大,无法获得正确的组合形式。相比之下,MORL4PDEs结合了神经网络引导搜索与遗传算法的优势,在确保搜索空间完整性的同时加速收敛,能够成功发现具有高阶导数和复杂形式的方程。

3.4 消融实验

为了深入探究遗传算法组件在MORL4PDEs中的重要性,进行了消融实验。去除遗传算法组件后,单独运行LSTM,对比“仅LSTM”和“使用GA”两种情况。

“仅使用LSTM” 表示仅通过神经网络生成的个体进行优化和更新,而 “结合GA” 表示在前者的基础上加入遗传算法(GA),并对两种方法生成的个体进行融合优化和更新。实验中比较了两种方法的迭代次数。
在这里插入图片描述

实验针对四个不同类型的方程展开,包括非线性的KdV方程、含有分数项的PDE_divide方程、包含指数和导数项的Chafee-Infante方程,以及包含高阶导数项的Kuramoto-Sivashinsky方程。从图6的结果可以看出,在KdV方程、PDE_divide方程和Chafee-Infante方程的求解中,虽然“仅LSTM”和“使用GA”两种方法都能发现方程的正确形式,但添加遗传算法后,迭代次数明显减少,这充分表明遗传算法能够加速收敛。而在处理Kuramoto-Sivashinsky方程时,“仅LSTM”方法无法收敛并发现正确的方程形式,这进一步证明了遗传算法通过交叉和变异算子扩展搜索空间、覆盖最优解、发现更复杂方程的重要作用。

3.5 敏感性分析

对影响MORL4PDEs模型的三个重要参数进行敏感性分析,分别是LSTM中每层的节点数、LSTM的层数,以及每次LSTM训练步骤中遗传算法的迭代次数。
在这里插入图片描述
在这里插入图片描述

在确定LSTM节点数和层数的影响时,仅使用LSTM对表达式个体进行优化,遗传算法部分不参与。对KdV方程的实验结果如图7和图8所示。当LSTM每层节点数为16时,收敛速度较慢,这是因为节点较少,模型的表达能力不足。而当节点数为32、80和128时,模型表现出良好的收敛性能。综合考虑模型复杂度和性能,32个节点是最佳选择。在研究LSTM层数的影响时,将每层节点数设置为32,对比1、2、3和4层的情况。结果发现,模型的收敛速度与层数并不成正比,单层LSTM就可以实现良好的性能,增加层数并不能加快收敛速度。这是因为神经网络在该模型中的主要作用是基于奖励函数优化生成的表达式,而非拟合数据。

对于每次LSTM训练步骤中遗传算法的迭代次数,同样在KdV方程上进行实验,结果如表4所示。当遗传算法迭代次数设置为10和15时,找到最优方程需要更多的训练轮次。设置为20和30时,性能最佳。而当迭代次数为50时,性能反而变差。这是因为遗传算法迭代次数与搜索空间成正比,迭代次数过小时,进化算法无法充分覆盖最优解;迭代次数过大时,会导致搜索空间过大,增加时间复杂度。对于每次LSTM训练步骤中遗传算法的迭代次数,同样在KdV方程上进行实验,结果如表4所示。
表4 GA迭代次数对模型的影响

GA迭代次数1015203050
找到最优方程迭代次数27279828

当遗传算法迭代次数设置为10和15时,找到最优方程需要更多的训练轮次。设置为20和30时,性能最佳。而当迭代次数为50时,性能反而变差。这是因为遗传算法迭代次数与搜索空间成正比,迭代次数过小时,进化算法无法充分覆盖最优解;迭代次数过大时,会导致搜索空间过大,增加时间复杂度。

3.6 计算复杂度分析

在进行计算复杂度分析时,定义 n n n代表数据大小, m m m表示偏导数项的数量。MORL4PDEs模型首先使用LSTM智能体生成 N N N个表达式样本,接着执行 S S S轮遗传算法,最后选择前 M M M个样本与之前的 N N N个样本合并进行进一步评估和迭代。这里 n n n可以无限增加,而 N N N M M M S S S是常数超参数。

在每次迭代中,样本选择涉及的稀疏回归是主要计算成本所在。在传统的PDE-FIND和DL-PDE模型中,稀疏回归的计算复杂度(包含矩阵求逆)用大O符号表示为 O ( n 3 ) O(n^{3}) O(n3) 。而在MORL4PDEs中使用的STRidge算法,其回归迭代次数不随数据大小 n n n增加,而是随候选偏导数项的数量 m m m增加。由于MORL4PDEs用操作数项替代候选项、合理约束二叉树深度并强调方程简洁性,与传统基线模型相比, m m m的值更小,每次迭代中的偏导数项数量减少,从而有效降低了计算复杂度。


4. 结论

MORL4PDEs通过RL与GA的协同优化,突破了传统PDE发现方法对候选函数库的依赖,能够高效生成简洁且高精度的方程。未来工作将扩展至高维PDE及实际工业场景应用。

相关文章:

MORL4PDEs:基于多目标优化与强化学习的数据驱动偏微分方程发现

摘要:本文提出了一种结合多目标优化与强化学习的数据驱动方法MORL4PDEs,用于从复杂系统观测数据中发现简洁的偏微分方程(PDE)。该方法无需预定义候选函数库,通过神经网络代理生成符号表达式,结合遗传算法优…...

UniApp和微信小程序中v-switch夜间模式动画开关

UniApp兼容版 <template><view><view class"main-container" :style"{ backgroundColor: value ? #45e3f9 : #20114c,transform:scale(${size})}" tap"onClick"><view class"content" :style"{ left: val…...

六十天Linux从0到项目搭建第四天(通配符命令、其他命令、压缩解压工具、shell的感性理解、linux权限解析)

通配符&#xff08;Wildcard&#xff09; 是 Shell 提供的特殊字符&#xff0c;用于 匹配文件名或路径名&#xff0c;可以代替一个或多个字符&#xff0c;使得命令能批量操作文件&#xff0c;而无需手动输入每个文件名。 典型用法 * 匹配任意字符 *.txt → 匹配所有 .txt 文…...

RAG优化:python从零实现自适应检索增强Adaptive Retrieval

开篇:当RAG遇上“自适应大脑”,检索从此不再“一根筋”!🧠 想象一下,你的AI助手是个超级聪明的“学霸”,但有时候却像个“一根筋”的机器人——无论你问它什么,它都用同一种方式去回答。问它“什么是XAI?”它给你一堆定义;问它“AI发展太快了吗?”它还是给你一堆定…...

C语言实现的冰墩墩

在windows系统下&#xff0c;vs 2022编译。 其中#include <graphics.h>需要自己下载安装。 环境配置没什么难度&#xff0c;直接上demo。 代码如下&#xff1a; #include <graphics.h> #include <conio.h> #include <math.h> #define PI acos(-1.0…...

【构建CV图像识别系统】从传统方法到深度学习

目录 1. 图像的基本概念1.1 像素与色彩1.2 过滤与卷积 2. 图像分类与检测3. 图像特征的提取3.1 全局特征3.2 局部特征3.2.1 边缘&#xff08;Edge&#xff09;3.2.2 角点&#xff08;Corner&#xff09;3.2.3 SIFT 特征 4. 传统方法与深度学习在图像识别中的应用4.1 基于传统方…...

在Centos 7环境下安装MySQL

前言&#xff1a;在安装与卸载MySQL时&#xff0c;用户需切换为root&#xff0c;这样安装之后&#xff0c;普通用户也能够使用。 Tips:我们在刚开始学习时&#xff0c;尽量全部使用root进行&#xff0c;适应mysql语句&#xff0c;后面学了用户管理&#xff0c;就可以考虑新建普…...

【机器学习基础 4】 Pandas库

一、Pandas库简介 Pandas 是一个开源的 Python 数据分析库&#xff0c;主要用于数据清洗、处理、探索与分析。其核心数据结构是 Series&#xff08;一维数据&#xff09;和 DataFrame&#xff08;二维表格数据&#xff09;&#xff0c;可以让我们高效地操作结构化数据。Pandas …...

干部监督预警系统的定义与功能

一、干部监督预警系统是什么&#xff1f; 干部监督预警系统是通过整合多源数据&#xff08;如干部档案、履职表现、廉政记录、舆情反馈等&#xff09;&#xff0c;利用大数据分析、人工智能等技术&#xff0c;对干部行为进行实时监测、风险评估和分级预警的数字化管理工具。 二…...

可视化图解算法:链表的奇偶重排(排序链表)

1. 题目 描述 给定一个单链表&#xff0c;请设定一个函数&#xff0c;将链表的奇数位节点和偶数位节点分别放在一起&#xff0c;重排后输出。 注意是节点的编号而非节点的数值。 数据范围&#xff1a;节点数量满足 0≤n≤105&#xff0c;节点中的值都满足 0≤val≤10000 要…...

获取小红书笔记详情接口的详细指南

一、引言 小红书作为一个集社交、购物、分享于一体的综合性平台&#xff0c;拥有海量的用户和丰富的笔记内容。小红书笔记详情API接口为开发者提供了一种高效获取笔记详细信息的方法&#xff0c;包括笔记的标题、正文、图片、视频、标签、点赞数、评论数等。这些数据可以帮助开…...

麒麟系统运维指令

麒麟系统运维指令 麒麟系统运维指令1、 查看系统版本2、查看系统信息3、用户与权限管理4. 网络相关命令5. 包管理6. 文件操作7. 进程管理 麒麟系统运维指令 1、 查看系统版本 目的指令查看操作系统版本信息cat /etc/os-release查看操作系统版本信息hostnamectl查看内核版本un…...

pyqt SQL Server 数据库查询

一、概述 本项目旨在开发一个基于 Python 和 PyQt6 的数据库查询工具&#xff0c;该工具能够连接到 SQL Server 数据库&#xff0c;显示数据库中的表名&#xff0c;支持用户输入 SQL 查询语句进行数据查询&#xff0c;并将查询结果展示在表格中。同时&#xff0c;为了提升用户…...

抓包软件【Fiddler】

我叫补三补四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲Fiddler 什么是Fidder Fiddler是一款非常流行并且实用的HTTP抓包工具&#xff0c;原理是在电脑上开启一个HTTP代理服务器&#xff0c;然后转发所有的HTTP请求和响应。是用C#开发的工具…...

SpringCould微服务架构之Docker(1)

项目中微服务比较多的时候&#xff0c;一个一个手动的部署太麻烦了&#xff0c;所以就需要用到Docker。 项目部署中的问题&#xff1a; Docker是一种快速交付应用、运行应用的技术。...

计算图(Computation Graph)

在强化学习中&#xff0c;TensorFlow的计算图&#xff08;Computation Graph&#xff09;是用于描述模型结构和训练流程的核心机制。 1. 计算图的基本概念 定义&#xff1a;计算图是TensorFlow中表示数学运算和数据流动的有向图。图中的节点&#xff08;Nodes&#xff09;代表…...

邮件营销:如何设置合适的发送频率

在邮件营销里&#xff0c;把握好发送频率特别关键&#xff0c;这直接关系到客户愿不愿意搭理你的邮件&#xff0c;以及邮件营销能不能达到预期效果。下面这几个步骤和建议&#xff0c;能帮你找到合适的邮件发送频率&#xff1a; 一、了解目标受众 分析客户行为&#xff1a;查…...

React项目中,递归写法获取tree的id集合

后端接口返回一个childrens的树&#xff0c;最后要拿到的是每个childrens下第一个对象的id集合&#xff0c;用于编辑页的回显 采用的是递归写法&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; const categoryIds: Array&…...

深入解析Linux网络、安全与容器技术

1. Netfilter&#xff1a;Linux内核的包处理框架 Netfilter 是Linux内核中用于控制网络数据包的核心机制&#xff0c;负责处理数据包的过滤、修改和转发。其核心功能包括&#xff1a; 包过滤&#xff08;Packet Filtering&#xff09;&#xff1a;根据规则允许或拒绝数据包通过…...

AF3 Rotation 类解读

Rotation 类(rigid_utils 模块)是 AlphaFold3 中用于 3D旋转 的核心组件,支持两种旋转表示: 1️⃣ 旋转矩阵 (3x3) 2️⃣ 四元数 (quaternion, 4元向量) 👉 设计目标: 允许灵活选择 旋转矩阵 或 四元数 封装了常用的 旋转操作(组合、逆旋转、应用到点上等) 像 torch.…...

数据预处理习题

简述常用的文本数据类型。 结构化文本&#xff1a;如数据库中的表格数据、JSON/XML格式数据&#xff0c;具有明确的字段和层级关系。非结构化文本&#xff1a;如自然语言文本&#xff08;新闻、社交媒体内容&#xff09;、长文档&#xff08;书籍、论文&#xff09;&#xff0…...

常见框架漏洞—中间件IIS

一.IIS6.x篇 1.在Windows server 2003中搭建网站 2.访问网站&#xff0c;并对该网站进行抓包 3.修改提交方式为PUT&#xff0c;然后写入木马 4.修改提交方式为MOVE&#xff0c;令将其更名为脚本⽂档后缀 5.我们在Windows server 2003中可以看到我们上传的shell.asp 6.我们在网…...

群体智能优化算法-蚁狮优化算法(Ant Lion Optimizer, ALO,含Matlab源代码)

一、文章摘要 蚁狮优化算法&#xff08;Ant Lion Optimizer&#xff0c;ALO&#xff09;是一种新颖的元启发式算法&#xff0c;由Mirjalili提出&#xff0c;其灵感来源于自然界中蚁狮幼虫构筑陷阱捕猎蚂蚁的行为。该算法通过模拟蚂蚁的随机游走、蚁狮的陷阱机制、陷阱缩小及精…...

【计算机视觉】数据增强

一、数据增强的意义 在深度学习中&#xff0c;数据集往往有限&#xff0c;而模型需要大量的样本来学习特征。数据增强技术通过对图像进行如下变换&#xff1a; 扩充样本数量&#xff1a;利用已有数据生成新的样本。提高模型鲁棒性&#xff1a;使模型适应不同的图像变换&#…...

BERT文本分类实战----美团外卖评论情绪分类

HuggingFace 提供了巨大的模型库&#xff0c;虽然其中的很多模型性能表现出色&#xff0c;但这些模型往往是在广义的数据集上训练的&#xff0c;缺乏针对特定数据集的优化&#xff0c;所以在获得一个合适的模型之后&#xff0c;往往还要针对具体任务的特定数据集进行二次训练&a…...

Chrome 133 版本开发者工具(DevTools)更新内容

Chrome 133 版本开发者工具&#xff08;DevTools&#xff09;更新内容 一、持久化的 AI 聊天记录 AI 助手面板会在本地持久化聊天记录&#xff0c;即使重新加载 DevTools 或 Chrome&#xff0c;也可以查看之前与 Gemini 的对话内容。 二、Performance 面板改进 此版本为 Per…...

大模型应用(Java)2025/3/24

大佬视频&#x1f449;使用Java实现一个基础的大模型RAG问答对话系统_哔哩哔哩_bilibili 需求 让大模型来理解知识库内容&#xff0c;并根据知识库回答。 通过本次应用我学到了&#xff1a; RAG工程的基本处理框架流程&#xff08;基于java&#xff09;向量数据库的基础使用…...

基于Sentinel-1A GRD洪涝淹没范围提取(SDWI阈值法和OSTU自动阈值法)

0 前言 两幅灾前和灾后的遥感影像经过SARscape配准、滤波、辐射定标预处理之后&#xff0c;使用GDAL库分别使用SDWI阈值法和OSTU自动阈值法提取洪涝淹没范围 1 ENVI 5.6和SARscape5.6安装 通过网盘分享的文件&#xff1a;ENVI5(1).6 链接: https://pan.baidu.com/s/1mKcEkC3…...

PPT 转高精度图片 API 接口

PPT 转高精度图片 API 接口 文件处理 / 图片处理&#xff0c;将 PPT 文件转换为图片序列。 1. 产品功能 支持将 PPT 文件转换为高质量图片序列&#xff1b;支持 .ppt 和 .pptx 格式&#xff1b;保持原始 PPT 的布局和样式&#xff1b;转换后的图片支持永久访问&#xff1b;全…...

IOS接入微信方法

导入SDK 和配置 SDK 的不做介绍&#xff1b; 1 在IOS 开发者中心 Identifiers 打开‘Associated Domains’ 2 建立一个文件&#xff08;不带后缀的&#xff09;apple-app-site-association, teamid在 IOS 开发者中心的会员找&#xff0c;appid在 xcode里面找 {"applin…...

隐式与显式等待的区别及混合使用

隐式等待&#xff08;Implicit Wait&#xff09;和显式等待&#xff08;Explicit Wait&#xff09;是 Selenium WebDriver 中两种不同的等待机制&#xff0c;用于处理动态加载的页面元素或异步操作。以下是它们的区别、作用范围以及混合使用的注意事项&#xff1a; 1. 核心区别…...

Selenium基本使用(三)隐藏框、获取文本、断言、切换窗口

1、定位文本框&#xff0c;密码框,按钮 案例一&#xff1a; 网站&#xff1a;过期更新 from selenium import webdriver import time dxwebdriver.Chrome() dx.get("过期更新") time.sleep(2) dx.find_element_by_name("userAccount").send_keys("…...

蓝桥杯,利用 Vue.js 构建简易任务管理器

在日常开发中&#xff0c;我们经常需要处理各种任务和计划。一个简单且高效的任务管理器可以帮助我们更好地组织和安排时间。今天&#xff0c;我将向大家展示如何使用 Vue.js 构建一个简易的任务管理器。这个项目不仅能够帮助我们更好地理解 Vue.js 的基本语法和功能&#xff0…...

vmwaretools解压失败|vmware tools distrib cannot mkdir read only file system|bug汇总

最简单的一条路线&#xff1a;你的解压命令用sudo了吗&#xff1f; 这个方法不能解决的话就看下面内容。本文提供给你全过程思路。 如需转载&#xff0c;标记出处 背景&#xff1a; 之前虚拟机和主机的复制黏贴还能用&#xff0c;今天突然用不了&#xff0c;重新下载安装包&am…...

类与对象(中)(详解)

【本节目标】 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&…...

2025-03-21 Unity 网络基础3——TCP网络通信准备知识

文章目录 1 IP/端口类1.1 IPAddress1.2 IPEndPoint 2 域名解析2.1 IPHostEntry2.2 Dns 3 序列化与反序列化3.1 序列化3.1.1 内置类型 -> 字节数组3.1.2 字符串 -> 字节数组3.1.3 类对象 -> 字节数组 3.2 反序列化3.2.1 字节数组 -> 内置类型3.2.2 字节数组 -> 字…...

练习8-8 移动字母

练习8-8 移动字母 day 8 void Shift( char s[] ){int lenstrlen(s);int a[3];for(int i0;i<3;i){a[i]s[i];}for(int i3;i<len;i){s[i-3]s[i];}s[len-3]a[0];s[len-2]a[1];s[len-1]a[2]; }...

BigEvent项目后端学习笔记(二)文章分类模块 | 文章分类增删改查全流程解析(含优化)

&#x1f4d6; 模块概述 文章分类模块包括 新增文章分类、文章分类列表、获取文章分类详情、更新文章分类、删除文章分类 功能。本篇对于原项目进行了代码优化&#xff0c;将原先写在 Controller 层的业务逻辑代码迁移至了 Service 层。 &#x1f6e0;️ 技术实现要点 分组校…...

蓝桥杯,冬奥大抽奖

在日常的网页开发中&#xff0c;抽奖功能是一种常见的交互设计&#xff0c;它可以增加用户的参与感和趣味性。今天&#xff0c;我将分享一个简单的抽奖转盘实现&#xff0c;它使用了HTML、CSS和JavaScript&#xff0c;非常适合初学者学习和理解前端开发的基本概念。 一、项目背…...

scNET:整合scRNA-seq和PPI用于学习基因和细胞的embedding

scRNA-seq 技术的最新进展为深入了解各种组织的异质性提供了前所未有的视角。然而&#xff0c;仅靠基因表达数据往往无法捕捉和识别细胞通路和复合物的变化&#xff0c;因为这些变化在蛋白质水平上更容易被察觉。此外&#xff0c;由于scRNA-seq数据存在高噪声水平和零膨胀等固有…...

第四天 开始Unity Shader的学习之旅之Unity中的基础光照

Unity Shader的学习笔记 第四天 开始Unity Shader的学习之旅之Unity中的基础光照 文章目录 Unity Shader的学习笔记前言一、我们是如何看到这个世界的1. 光源2.吸收和散射3.着色 二、标准光照模型1. 自发光2. 高光反射① Phong模型② Blinn-Phong模型 3.漫反射4.环境光 总结 前…...

Lustre 语言的 Rust 生成相关的工作

目前 Lustre V6 编译器支持编译生成的语言为C语言。但也注意到&#xff0c;以 Rust 语言为生成目标语言&#xff0c;也存在若干相关工作。 rustre&#xff08;elegaanz&#xff09; 该项工作为 Lustre v6 语言的解析器&#xff0c;使用 Rust 语言实现。生成 Lustre AST。 项…...

std::endl为什么C++ 智能提示是函数?

在使用vscode 的C智能提示后&#xff0c;输入endl 后&#xff0c;提示的却是std::endl(basic_ostream<CharT, Traits> &os), 感觉比较奇怪&#xff0c;各种代码里都是直接用的std::endl 啊&#xff0c; 这里怎么变成函数了呢&#xff1f; 在 C 中&#xff0c;std::en…...

大模型在肺血栓栓塞症风险预测及临床方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、肺血栓栓塞症概述 2.1 定义与流行病学 2.2 发病机制与病理生理 2.3 临床表现与诊断方法 三、大模型技术原理与应用现状 3.1 大模型技术基础 3.2 在医疗领域的应用进展 3.3 选择大模型进行肺血栓栓塞症预…...

用一颗红黑树同时封装出map和set

目录 1. 红黑树源代码 2. 红黑树模版参数的控制 3. 红黑树节点当中存储的数据 4. 模板参数中仿函数的增加 5. 正向迭代器的实现 6. set模拟实现 7. map的模拟实现 8. 封装后的代码 8.1 红黑树的代码 8.2 正向迭代器的代码 8.3 set的代码 8.4 map的代码 1. 红黑树源…...

C Sharp上位机需要掌握哪些知识?

学历不高就不要有进大厂的想法了&#xff0c;你就在上位机这一条路上走到底。 .NET桌面程序开发有WPF和Winform。Winform比较简单&#xff0c;拖拖控件&#xff0c;难度不大&#xff0c;这种级别的开发&#xff0c;新人上手一个月就够了&#xff0c;但是不会有哪家公司专门招聘…...

【自学笔记】Spark基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Apache Spark基础知识点总览目录简介核心组件Spark SQLDataFrame与Dataset APIRDD&#xff08;弹性分布式数据集&#xff09;Spark StreamingMLlib&#xff08;机器…...

基于Spring Boot的智能停车计费系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

数据不外传!通过内网穿透实现绿联NAS远程访问的安全配置方案

文章目录 前言1. 开启ssh服务2. ssh连接3. 安装cpolar内网穿透4. 配置绿联NAS公网地址 前言 大家好&#xff0c;今天要带给大家一个超级酷炫的技能——如何让绿联NAS秒变‘千里眼’&#xff0c;通过简单的几步操作就能轻松实现内网穿透。想象一下&#xff0c;无论你身处何地&a…...

地理信息可视化技术大全【WebGIS 教程一】

前言&#xff1a; 在当今数据驱动的时代&#xff0c;地理信息技术&#xff08;GIS&#xff09;和空间数据可视化已成为科学研究、商业决策和智慧城市建设的重要工具。随着Web技术的快速发展&#xff0c;基于浏览器端的地图渲染和地理信息处理能力显著增强&#xff0c;各类开源与…...