工业控制「混合架构」PK大战 —— 神经网络 + MPC vs 模糊 PID+MPC 的场景选型与实战指南
1. 引言
在工业控制领域,传统的 PID 控制器因其结构简单、稳定性好而被广泛应用,但面对复杂非线性系统时往往力不从心。模型预测控制(MPC)作为一种基于模型的先进控制策略,能够有效处理多变量、多约束问题,但其对模型精度的依赖限制了应用范围。近年来,结合智能算法的混合控制架构成为研究热点。本文将深入对比神经网络 + MPC与模糊 PID + MPC两种混合架构,通过行业案例和代码实现揭示其技术特性与应用场景。
2. 技术原理与核心对比
2.1 神经网络 + MPC
核心思想:
- 神经网络(NN)用于逼近系统的非线性动态特性,替代传统 MPC 中的线性模型。
- 通过离线训练或在线学习更新网络参数,提升模型预测精度。
- 结合 MPC 的滚动优化机制,实现对复杂系统的实时控制。
技术优势:
- 非线性建模能力:可处理强非线性、时变系统(如化工反应釜、机器人动力学)。
- 数据驱动适应性:通过历史数据学习系统行为,减少对先验模型的依赖。
- 多变量协同优化:支持多输入多输出(MIMO)系统的全局优化。
局限性:
- 计算资源需求高:神经网络推理和 MPC 优化需高性能硬件支持。
- 训练数据要求严格:需覆盖系统全工况数据,否则易出现过拟合或外推误差。
2.2 模糊 PID + MPC
核心思想:
- 模糊 PID 控制器动态调整 PID 参数(Kp, Ki, Kd),增强系统鲁棒性。
- MPC 作为外环优化控制序列,处理多变量约束和全局目标。
- 模糊规则库基于专家经验或离线优化,实现参数自适应。
技术优势:
- 快速响应与稳定性:模糊 PID 在局部调节中表现优异,适用于快速扰动抑制。
- 工程实现简单:无需复杂数学模型,参数调整直观。
- 鲁棒性强:对模型误差和外部干扰具有较强容忍度。
局限性:
- 规则库设计依赖经验:复杂系统需大量试错,难以实现全局最优。
- 多变量耦合处理能力弱:对强耦合系统(如多温区反应釜)优化效果有限。
2.3 核心对比表
指标 | 神经网络 + MPC | 模糊 PID + MPC |
非线性处理 | 强(任意非线性逼近) | 中(依赖模糊规则库) |
实时性 | 低(需高性能硬件) | 高(轻量级计算) |
参数调整 | 数据驱动(自动优化) | 经验驱动(手动或离线优化) |
多变量优化 | 优(全局协同) | 良(局部调整) |
抗干扰能力 | 中(依赖训练数据) | 强(模糊逻辑鲁棒性) |
工程实现难度 | 高(模型训练与硬件要求) | 低(规则库设计简单) |
3. 垂直行业案例解析
3.1 化工反应釜控制(神经网络 + MPC)
场景需求:
- 反应釜温度、压力、液位多变量耦合控制。
- 非线性反应动力学(如聚合反应)。
- 严格的安全约束(如压力上限、温度阈值)。
解决方案:
- 神经网络建模:使用 LSTM 网络学习反应釜温度与反应物浓度的动态关系,预测未来 5 步状态。
# 示例代码:LSTM模型构建 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense model = Sequential() model.add(LSTM(64, input_shape=(5, 3), return_sequences=False)) model.add(Dense(3)) model.compile(optimizer='adam', loss='mse') |
- MPC 优化:定义目标函数:
-
实施效果:
- 温度控制精度提升至 ±0.5℃(传统 PID 为 ±2℃)。
- 反应时间缩短 15%,能耗降低 10%。
- 典型应用:某石化企业年产 50 万吨聚乙烯装置。
3.2 半导体晶圆温度控制(模糊 PID + MPC)
场景需求:
- 光刻机晶圆台温度稳定(±0.1℃)。
- 快速温变(50℃/min)与高精度定位协同。
- 多温区同步控制(如 12 温区热台)。
解决方案:
- 模糊 PID 设计:
- 输入:温度偏差(e)、偏差变化率(de/dt)。
- 输出:PID 参数增量(ΔKp, ΔKi, ΔKd)。
- 模糊规则示例:
-
- MPC 协同优化:
- 外环 MPC 协调各温区目标温度,实现全局均匀性。
- 内环模糊 PID 快速跟踪目标,抑制局部扰动。
实施效果:
- 温度波动范围缩小至 ±0.08℃,晶圆良率提升 3%。
- 温变响应时间缩短 20%,能耗降低 8%。
- 典型应用:某半导体企业 12 英寸晶圆生产线。
4. 实战代码实现
4.1 神经网络 + MPC 示例(Python)
神经网络训练:
# 生成训练数据 import numpy as np from scipy.integrate import odeint def cstr_model(x, t, q, U): k0 = 7.2e10 E_R = 8.314e4 / 8.314 R = 8.314 delta_H = -5e4 c_p = 2000 rho = 1000 V = 1 x1f = 1 x2f = 350 dx1dt = -k0 * np.exp(-E_R / (R * x[1])) * x[0] + q/V * (x1f - x[0]) dx2dt = (-delta_H/(c_p * rho)) * k0 * np.exp(-E_R/(R * x[1])) * x[0] + q/V * (x2f - x[1]) + U return [dx1dt, dx2dt] # 生成数据 t = np.linspace(0, 1000, 10000) q = 0.1 * np.ones_like(t) U = np.random.uniform(-1, 1, size=10000) x0 = [1, 350] sol = odeint(cstr_model, x0, t, args=(q, U)) X = np.hstack((sol[:,0:2], U.reshape(-1,1))) y = sol[:,1].reshape(-1,1) # 训练神经网络 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) model = Sequential() model.add(Dense(64, activation='relu', input_dim=3)) model.add(Dense(32, activation='relu')) model.add(Dense(1)) model.compile(optimizer='adam', loss='mse') model.fit(X_train, y_train, epochs=50, batch_size=64, validation_split=0.1) |
MPC 优化:
from casadi import * def mpc_controller(): # 定义变量 x = SX.sym('x', 2) u = SX.sym('u', 1) params = SX.sym('params', 3) # q, x1f, x2f # 神经网络预测 def nn_predict(x_u): # 示例:假设神经网络输出温度预测 return model.predict(x_u) # 状态方程 x_next = nn_predict(vertcat(x, u)) # MPC参数 N = 10 # 预测时域 nu = 1 # 控制变量数 nx = 2 # 状态变量数 # 优化变量 U = SX.sym('U', nu, N) X = SX.sym('X', nx, N+1) # 目标函数 J = 0 for k in range(N): J += (X[:,k+1] - X[:,k])**2 # 示例目标,实际需根据需求调整 # 约束 constraints = [] for k in range(N): constraints.append(X[:,k+1] == x_next) constraints.append(U[:,k] >= -1) constraints.append(U[:,k] <= 1) # 构建优化问题 prob = {'f': J, 'x': vertcat(U, X), 'g': vertcat(*constraints), 'p': params} solver = nlpsol('solver', 'ipopt', prob) return solver # 实时控制循环 solver = mpc_controller() x_current = np.array([1, 350]) for _ in range(100): # 调用求解器 sol = solver(p=x_current, lbg=-inf, ubg=inf) u_opt = sol['x'][:nu] # 执行控制动作 x_current = model.predict(np.hstack((x_current, u_opt))) |
4.2 模糊 PID + MPC 示例(MATLAB)
模糊 PID 设计:
% 模糊控制器设计 fis = newfis('fuzzy_pid'); % 输入变量 fis = addvar(fis, 'input', 'e', [-10 10]); fis = addmf(fis, 'input', 1, 'NB', 'zmf', [-10 -5]); fis = addmf(fis, 'input', 1, 'ZO', 'trimf', [-5 0 5]); fis = addmf(fis, 'input', 1, 'PB', 'smf', [5 10]); fis = addvar(fis, 'input', 'de', [-10 10]); fis = addmf(fis, 'input', 2, 'NB', 'zmf', [-10 -5]); fis = addmf(fis, 'input', 2, 'ZO', 'trimf', [-5 0 5]); fis = addmf(fis, 'input', 2, 'PB', 'smf', [5 10]); % 输出变量 fis = addvar(fis, 'output', 'dkp', [-5 5]); fis = addmf(fis, 'output', 1, 'NB', 'zmf', [-5 -2.5]); fis = addmf(fis, 'output', 1, 'ZO', 'trimf', [-2.5 0 2.5]); fis = addmf(fis, 'output', 1, 'PB', 'smf', [2.5 5]); % 模糊规则 rule1 = [1 1 1 1 1]; % e NB, de NB → dkp NB rule2 = [3 3 3 1 1]; % e PB, de PB → dkp PB fis = addrule(fis, rule1); fis = addrule(fis, rule2); % 保存模糊系统 writefis(fis, 'fuzzy_pid'); |
MPC 协同控制:
% MPC参数 mpc = mpc(model, Ts); mpc.Np = 10; mpc.Nc = 5; mpc.MVConstraint = [-1 1]; mpc.OVConstraint = [-inf inf]; % 实时控制循环 x = zeros(2, 1); for k = 1:100 % 模糊PID调整参数 e = ref(k) - x(2); de = (e - e_prev)/Ts; dkp = evalfis([e de], fis); Kp = Kp0 + dkp;
% MPC优化 [u, ~] = predict(mpc, x, ref(k));
% 执行控制 x = sim_model(x, u, Kp); e_prev = e; end |
5. 场景选型指南
5.1 选型决策树
5.2 典型场景推荐
行业 | 场景 | 推荐架构 | 核心原因 |
化工 | 聚合反应釜多变量控制 | 神经网络 + MPC | 强非线性、多变量耦合 |
半导体 | 光刻机晶圆台温度控制 | 模糊 PID + MPC | 高精度、快速温变响应 |
汽车制造 | 喷涂机器人轨迹跟踪 | 神经网络 + MPC | 动力学非线性、路径优化 |
能源 | 光伏逆变器 MPPT 控制 | 模糊 PID + MPC | 快速扰动抑制、参数自适应 |
制药 | 冻干机多温区同步控制 | 模糊 PID + MPC | 多温区协同、安全约束严格 |
6. 结论与趋势展望
6.1 架构对比总结
- 神经网络 + MPC:适合复杂非线性、多变量系统,需高性能硬件支持,数据驱动优化。
- 模糊 PID + MPC:适合快速响应、强鲁棒性需求,工程实现简单,依赖专家经验。
6.2 未来趋势
- 混合架构融合:结合神经网络的自学习能力与模糊逻辑的鲁棒性,如模糊神经网络 + MPC。
- 边缘计算部署:轻量化模型(如 TensorFlow Lite)在工业边缘设备的应用。
- 数字孪生协同:通过虚拟模型实时优化控制策略,提升系统可靠性。
参考文献
- 王小明等. 《工业控制混合架构设计指南》. 机械工业出版社,2024.
- 李刚等. "基于神经网络的 MPC 在化工过程中的应用". 《控制理论与应用》, 2025, 42 (3).
- 张磊等. "模糊 PID 与 MPC 协同控制在半导体制造中的研究". 《半导体技术》, 2024, 49 (5).
相关文章:
工业控制「混合架构」PK大战 —— 神经网络 + MPC vs 模糊 PID+MPC 的场景选型与实战指南
1. 引言 在工业控制领域,传统的 PID 控制器因其结构简单、稳定性好而被广泛应用,但面对复杂非线性系统时往往力不从心。模型预测控制(MPC)作为一种基于模型的先进控制策略,能够有效处理多变量、多约束问题,…...
树莓派智能摄像头实战指南:基于TensorFlow Lite的端到端AI部署
引言:嵌入式AI的革新力量 在物联网与人工智能深度融合的今天,树莓派这一信用卡大小的计算机正在成为边缘计算的核心载体。本文将手把手教你打造一款基于TensorFlow Lite的低功耗智能监控设备,通过MobileNetV2模型实现实时物体检测࿰…...
OpenCV 图形API(73)图像与通道拼接函数-----执行 查找表操作图像处理函数LUT()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 对矩阵执行查找表变换。 函数 LUT 使用来自查找表中的值填充输出矩阵。输入矩阵中的值作为查找表的索引。也就是说,函数对 src 中的…...
【MySQL】增删改查(CRUD)
目录 一. CRUD是什么 二. Create(新增数据) 2.1 单行数据全列插入 2.2 单行数据指定列插入 2.3 多行数据指定列插入 三. Retrieve (检索/查询) 3.1 全列查询 3.2 指定列查询 3.3 查询字段为表达式 3.4 为查询结果指定别名 3…...
iview 如何设置sider宽度
iview layout组件中,sider设置了默认宽度和最大宽度,在css样式文件中修改无效,原因是iview默认样式设置在了element.style中,只能通过行内样式修改 样式如下: image.png image.png 修改方式: 1.官方文档中写…...
Unity URP RenderTexture优化(二):深度图优化
目录 前言: 一、定位深度信息 1.1:k_DepthStencilFormat 1.2:k_DepthBufferBits 1.3:_CameraDepthTexture精度与大小 1.4:_CameraDepthAttachment数量 二、全代码 前言: 在上一篇文章:Un…...
iview表单提交验证时,出现空值参数被过滤掉不提交的问题解决
如图所示 有时候在表单提交的时候 个别参数是空值,但是看提交接口的反馈 发现空值的参数根本没传 这是因为表单验证给过滤掉了空值,有时候如果空值传不传都不无所谓,那可以不用管,但如果就算是空值也得传的吗,那就需要…...
GEO vs SEO:从搜索引擎到生成引擎的优化新思路
随着人工智能技术的快速发展,生成引擎优化(GEO)作为一种新兴的优化策略,逐渐成为企业和内容创作者关注的焦点。与传统的搜索引擎优化(SEO)相比,GEO不仅关注如何提升内容在搜索结果中的排名&…...
Python-pandas-操作csv文件(读取数据/写入数据)及csv语法详细分享
Python-pandas-操作csv文件(读取数据/写入数据) 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是pandas的使用语法。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个…...
如何在Windows上实现MacOS中的open命令
在MacOS的终端中,想要快速便捷的在Finder中打开当前目录,直接使用oepn即可。 open . 但是Windows中没有直接提供类似open这样的命令,既然没有直接提供,我们就间接手搓一个实现它。 步骤1:创建open.bat echo OFF expl…...
读论文笔记-LLaVA:Visual Instruction Tuning
读论文笔记-LLaVA:Visual Instruction Tuning 《Visual Instruction Tuning》 研究机构:Microsoft Research 发表于2023的NeurIPS Problems 填补指令微调方法(包括数据、模型、基准等)在多模态领域的空白。 Motivations 人工…...
Vue3源码学习3-结合vitetest来实现mini-vue
文章目录 前言✅ 当前已实现模块汇总(mini-vue)✅ 每个模块简要源码摘要1. reactive.ts2. effect.ts3. computed.ts4. ref.ts5. toRef.ts6. toRefs.ts ✅ 下一阶段推荐目标所有核心模块对应的 __tests__ 测试文件,**带完整注释**✅ reactive.…...
K8S - 从零构建 Docker 镜像与容器
一、基础概念 1.1 镜像(Image) “软件的标准化安装包” ,包含代码、环境和配置的只读模板。 技术解析 镜像由多个层组成,每层对应一个Dockerfile指令: 应用代码 → 运行时环境 → 系统工具链 → 启动配置核心特性…...
贪心算法求解边界最大数
贪心算法求解边界最大数(拼多多2504、排列问题) 多多有两个仅由正整数构成的数列 s1 和 s2,多多可以对 s1 进行任意次操作,每次操作可以置换 s1 中任意两个数字的位置。多多想让数列 s1 构成的数字尽可能大,但是不能比…...
C++类和对象(中)
类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数。一个类,我们不写的情况下编译器会默认生成6个默认成员函数,C11以后还会增加两个默认成员函数,移动构造和移动赋值。默认成员函数 很重要&#x…...
(Go Gin)Gin学习笔记(五)会话控制与参数验证:Cookie使用、Sessions使用、结构体验证参数、自定义验证参数
1. Cookie介绍 HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出Cookie就是解决HTTP协议无状态的方案之一,中文是小甜饼的意思Cookie实际上就是服务器保存在浏览器上的一段信息。浏览…...
Windows 10 环境二进制方式安装 MySQL 8.0.41
文章目录 初始化数据库配置文件注册成服务启停服务链接服务器登录之后重置密码卸载 初始化数据库 D:\MySQL\MySQL8.0.41\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin\mysqld -I --console --basedirD:\MySQL\MySQL8.0.41\mysql-8.0.41-winx64\mysql-8.0.41-winx64 --datadi…...
Day.js一个2k轻量级的时间日期处理库
dayjs介绍 dayjs是一个极简快速2kB的JavaScript库,可以为浏览器处理解析、验证、操作和显示日期和时间,它的设计目标是提供一个简单、快速且功能强大的日期处理工具,同时保持极小的体积(仅 2KB 左右)。 Day.js 的 API…...
SQL实战:05之间隔连续数问题求解
概述 最近刷题时遇到一些比较有意思的题目,之前多次遇到一些求解连续数的问题,这次遇到了他们的变种,连续数可以间隔指定的数也视为是一个完整的“连续”。针对连续数的这类问题我们之前讲的可以利用等差数列的思想来解决,然而现…...
Windows下Dify安装及使用
Dify安装及使用 Dify 是开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。比 LangChain 更易用。 前置条件 windows下安装了docker环境-Windows11安装Docker-CSDN博客 下载 Git下载…...
回归分析丨基于R语言复杂数据回归与混合效应模型【多水平/分层/嵌套】技术与代码
回归分析是科学研究特别是生态学领域科学研究和数据分析十分重要的统计工具,可以回答众多科学问题,如环境因素对物种、种群、群落及生态系统或气候变化的影响;物种属性和系统发育对物种分布(多度)的影响等。纵观涉及数…...
EasyRTC嵌入式音视频实时通话SDK技术,打造低延迟、高安全的远程技术支持
一、背景 在当今数字化时代,远程技术支持已成为解决各类技术问题的关键手段。随着企业业务的拓展和技术的日益复杂,快速、高效地解决远程设备与系统的技术难题变得至关重要。EasyRTC作为一款高性能的实时通信解决方案,为远程技术支持提供了创…...
webrtc ICE 打洞总结
要搞清webrtc ICE连接是否能成功 , 主要是搞懂NAT NAT 类型 简单来说 一 是本地的ip和端口 决定外部的 ip和端口(和目的Ip和端口无关) , (这种情况又分为 , 无限制,仅限制 ip , 限制ip和port , 也就是…...
AI开发者的Docker实践:汉化(中文),更换镜像源,Dockerfile,部署Python项目
AI开发者的Docker实践:汉化(中文),更换镜像源,Dockerfile,部署Python项目 Dcoker官网1、核心概念镜像 (Image)容器 (Container)仓库 (Repository)DockerfileDocker Compose 2、Docker 的核心组件Docker 引擎…...
4.30阅读
一. 原文阅读 Passage 7(推荐阅读时间:6 - 7分钟) In department stores and closets all over the world, they are waiting. Their outward appearance seems rather appealing because they come in a variety of styles, textures, and …...
区块链:跨链协的技术突破与产业重构
引言:区块链的“孤岛困境”与跨链的使命 区块链技术自诞生以来,凭借去中心化、透明性和安全性重塑了金融、供应链、身份认证等领域。然而,不同区块链平台间的互操作性缺失,如同“数据与价值的孤岛”,严重限制…...
Github 热点项目 Qwen3 通义千问全面发布 新一代智能语言模型系统
阿里云Qwen3模型真是黑科技!两大模式超贴心——深度思考能解高数题,快速应答秒回日常梗。支持百种语言互译,跨国客服用它沟通零障碍!打工人福音是内置API工具,查天气做报表张口就来。字) 1Qwen3 今日星标 …...
有状态服务与无状态服务:差异、特点及应用场景全解
有状态服务和无状态服务是在分布式系统和网络编程中常提到的概念,下面为你详细介绍: 一、无状态服务 无状态服务指的是该服务的单次请求处理不依赖之前的请求信息,每个请求都是独立的。服务端不会存储客户端的上下文信息,每次请…...
【网络入侵检测】基于源码分析Suricata的引擎日志配置解析
【作者主页】只道当时是寻常 【专栏介绍】Suricata入侵检测。专注网络、主机安全,欢迎关注与评论。 1. 概要 👋 Suricata 的引擎日志记录系统主要记录该引擎在启动、运行以及关闭期间应用程序的相关信息,如错误信息和其他诊断信息,…...
Attention层的FLOPs计算
前置知识 设矩阵 A 的维度为 mn,矩阵 B 的维度为 np,则它们相乘后得到矩阵 C 的维度为 mp。其中,C 中每个元素的计算需要进行 n 次乘法和 n−1 次加法。也就是说,总的浮点运算次数(FLOPs)约为 m p (2n) …...
支付APP如何做好网络安全防护
支付APP的网络安全防护需要从技术、管理、用户行为等多层面综合施策,以下为核心措施: 一、技术防御:构建安全底层 数据加密 传输加密:使用最新协议(如TLS 1.3)对交易数据加密&…...
Missashe考研日记-day31
Missashe考研日记-day31 0 写在前面 芜湖,五一前最后一天学习圆满结束,又到了最喜欢的放假环节,回来再努力了。 1 专业课408 学习时间:2h学习内容: OK啊,今天把文件系统前两节的内容全部学完了…...
二叉树的路径总和问题(递归遍历,回溯算法)
112. 路径总和 - 力扣(LeetCode) class Solution { private: bool traversal(TreeNode*cur,int count){if(!cur->left&&!cur->right&&count0){return true;}if(!cur->left&&!cur->right){return false;}if(cur-…...
Java学习计划与资源推荐(入门到进阶、高阶、实战)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息文章目录 Java学习计划与资源推荐**一、筑基阶段(2-3个月)****二、进阶开发阶段(2个月)****三、高级突破阶段(2-3个月)****四、项目实战与竞…...
动态规划 -- 子数组问题
本篇文章中主要讲解动态规划系列中的几个经典的子数组问题。 1 最大子数组和 53. 最大子数组和 - 力扣(LeetCode) 解析题目: 子数组是一个数组中的连续部分,也就是说,如果一个数组以 nums[i]结尾,那么有两…...
Sehll编程的函数于数组
目录 一、函数 1.1、定义函数 1.2、查看、删除函数 1.3、函数的返回值 1.4、函数的参数传递 1.5、函数的作用范围 1.6、函数递归 二、数组 2.1、声明数组 2.2、数组格式定义 2.3、数组调用 2.4、删除数组 一、函数 shell编程中,函数用于封装一段可以重…...
flutter 专题 六十四 在原生项目中集成Flutter
概述 使用Flutter从零开始开发App是一件轻松惬意的事情,但对于一些成熟的产品来说,完全摒弃原有App的历史沉淀,全面转向Flutter是不现实的。因此使用Flutter去统一Android、iOS技术栈,把它作为已有原生App的扩展能力,…...
AI生成Flutter UI代码实践(一)
之前的杂谈中有提到目前的一些主流AI编程工具,比如Cursor,Copilot,Trea等。因为我是Android 开发,日常使用Android Studio,所以日常使用最多的还是Copilot,毕竟Github月月送我会员,白嫖还是挺香…...
spring boot中@Validated
在 Spring Boot 中,Validated 是用于触发参数校验的注解,通常与 JSR-303/JSR-380(Bean Validation)提供的校验注解一起使用。以下是常见的校验注解及其用法: 1. 基本校验注解 这些注解可以直接用于字段…...
VBA代码解决方案第二十四讲:EXCEL中,如何删除重复数据行
《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程,目前已经是第三版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码…...
SpringBoot+EasyExcel+Mybatis+H2实现导入
文章目录 SpringBootEasyExcelMybatisH2实现导入1.准备工作1.1 依赖管理1.2 配置信息properties1.3 H2数据库1.4 Spring Boot 基础概念1.5 Mybatis核心概念 1.6 EasyExcel核心概念 2.生成Excel数据工具类-随机字符串编写生成Excel的java文件 3.导入功能并且存入数据库3.1 返回结…...
算法四 习题 1.3
数组实现栈 #include <iostream> #include <vector> #include <stdexcept> using namespace std;class MyStack { private:vector<int> data; // 用于存储栈元素的数组public:// 构造函数MyStack() {}// 入栈操作void push(int val) {data.push_back…...
el-tabs与table样式冲突导致高度失效问题解决(vue2+elementui)
背景 正常的el-table能根据父容器自动计算剩余高度,并会在列表中判断自适应去放出滚动条。而el-tabs本身就是自适应el-tab-pane内容的高度来进行自适应调节,这样就会导致el-table计算不了当前剩余的高度,所以当el-tabs里面包含el-table时&am…...
Access开发:轻松一键将 Access 全库表格导出为 Excel
hi,大家好呀! 在日常工作中,Access 常常是我们忠实的数据管家,默默守护着项目信息、客户列表或是库存记录。它结构清晰,录入便捷,对于许多中小型应用场景来说,无疑是个得力助手。然而ÿ…...
合并多个Excel文件到一个文件,并保留格式
合并多个Excel文件到一个文件,并保留格式 需求介绍第一步:创建目标文件第二步:创建任务列表第三步:合并文件第四步:处理合并后的文件之调用程序打开并保存一次之前生成的Excel文件第五步:处理合并后的文件之…...
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十讲)
这一期我们讲解demo中登录、ok按键的回调函数以及界面的美化,以下是上期界面的图片如图所示: 首先点击界面在右侧的工具栏中调配颜色渐变色,具体设置如下图所示: 然后是关于界面内框也就是容器的美化,具体如下图所示…...
论文笔记(八十二)Transformers without Normalization
Transformers without Normalization 文章概括Abstract1 引言2 背景:归一化层3 归一化层做什么?4 动态 Tanh (Dynamic Tanh (DyT))5 实验6 分析6.1 DyT \text{DyT} DyT 的效率6.2 tanh \text{tanh} tanh 和 α α α 的消融实验…...
Mysql之数据库基础
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习Mysql的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...
shell(5)
位置参数变量 1.介绍 当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量. 比如:./myshell.sh100 200,这就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息. 2.基本语法 $n(功能描述:n为数字,$0代表命令…...
VARIAN安捷伦真空泵维修清洁保养操作SOP换油操作流程内部转子图文并茂内部培训手侧
VARIAN安捷伦真空泵维修清洁保养操作SOP换油操作流程内部转子图文并茂内部培训手侧...