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

PID模糊控制算法(附MATLAB仿真程序)

一、基本原理

PID模糊控制算法是一种将传统PID控制与模糊逻辑相结合的控制策略。它利用模糊逻辑处理不确定性和非线性问题的能力,以提高控制系统的性能。以下是PID模糊控制算法的基本原理:

1.1. **误差和误差变化率的计算**:
   - 首先,PID控制器需要计算系统的误差(e)和误差的变化率(Δe)。误差是期望输出与实际输出之间的差异,而误差变化率是误差随时间的变化。

1.2. **模糊化处理**:
   - 将误差和误差变化率这两个精确的数值转换为模糊集合中的隶属度。这一步骤称为模糊化,它将连续的输入值映射到模糊集合中的隶属函数上,通常使用三角形或梯形隶属函数。

1.3. **模糊规则库**:
   - 模糊规则库包含了一系列的if-then规则,这些规则定义了输入(误差和误差变化率)与输出(控制动作)之间的关系。例如,如果误差大且误差变化率小,则增加控制力度。

1.4. **模糊推理**:
   - 根据模糊规则库和模糊化的输入,进行模糊推理过程,以确定控制动作的模糊集合。这一过程通常使用最大-最小合成或乘积-最大合成等推理方法。

1.5. **去模糊化处理**:
   - 将模糊控制动作转换回精确的数值,以便用于实际的控制。去模糊化常用的方法包括质心法(centroid method)或最大隶属度法(maximum membership method)。

1.6. **PID参数的调整**:
   - 在PID模糊控制中,模糊控制的输出用于调整PID控制器的参数(比例P、积分I、微分D)。这些参数可以根据模糊控制的输出进行动态调整,以适应系统的变化。

1.7. **控制执行**:
   - 最后,调整后的PID参数被用于计算控制信号,该信号被发送到被控对象,以减少误差并实现期望的系统行为。

PID模糊控制算法的优点在于它能够处理复杂的非线性系统和不确定性,提高系统的鲁棒性和适应性。通过模糊逻辑的引入,可以减少对精确数学模型的依赖,使得控制系统更加灵活和有效。

二、公式推导

模糊PID控制算法的公式推导涉及到模糊逻辑的基本概念和PID控制理论的结合。以下是模糊PID控制算法的基本步骤和公式推导:

2.1. **误差和误差变化率的计算**:
   - 误差 e 是期望输出与实际输出之间的差异。
   - 误差变化率 \Delta e是误差随时间的变化,即\Delta e=e\left ( k \right )-e\left ( k-1 \right )

2.2. **模糊化处理**:
   - 将误差 e和误差变化率\Delta e 转换为模糊集合中的隶属度。这通常通过定义隶属函数来实现,例如,使用三角形或梯形隶属函数。
   - 论域的确定:假设误差e 和误差变化率\Delta e 的论域范围为[-3, 3],并将其划分为若干模糊集合,如NB(负大)、NM(负中)、NS(负小)、ZO(零)、PS(正小)、PM(正中)、PB(正大)。

2.3. **模糊规则库**:
   - 模糊规则库包含了一系列的if-then规则,这些规则定义了输入(误差和误差变化率)与输出(控制动作)之间的关系。例如,如果误差大且误差变化率小,则增加控制力度。

2.4. **模糊推理**:
   - 根据模糊规则库和模糊化的输入,进行模糊推理过程,以确定控制动作的模糊集合。这一过程通常使用最大-最小合成或乘积-最大合成等推理方法。

2.5. **去模糊化处理**:
   - 将模糊控制动作转换回精确的数值,以便用于实际的控制。去模糊化常用的方法包括质心法(centroid method)或最大隶属度法(maximum membership method)。

2.6. **PID参数的调整**:
   - 模糊控制的输出用于调整PID控制器的参数(比例P、积分I、微分D)。这些参数可以根据模糊控制的输出进行动态调整,以适应系统的变化。

2.7. **控制执行**:
   - 最后,调整后的PID参数被用于计算控制信号,该信号被发送到被控对象,以减少误差并实现期望的系统行为。

具体的公式推导如下:

e\Delta e分别为误差和误差变化率的量化值,K_{p}K_{i}K_{d}为PID的三个参数,\Delta K_{p}\Delta K_{i}\Delta K_{d}为根据模糊推理得到的参数增量。则有:

其中,\Delta K_{p}\Delta K_{i}\Delta K_{d}可以通过模糊推理和去模糊化过程得到。例如,使用质心法进行去模糊化时,参数增量可以表示为:

这里,\mu _{i}是模糊集合 i的隶属度,c_{i} 是对应的控制规则输出。

最终,控制信号u 可以通过调整后的PID参数计算得到:

这里的\Delta t 是采样时间间隔。

以上是模糊PID控制算法的基本公式推导,具体的实现可能会根据模糊规则库和隶属度函数的定义有所不同。


三、MATLAB仿真

步骤一:以下是一个基于MATLAB的PID模糊控制算法的仿真程序示例:

% 定义采样时间
ts = 0.1;  % 建立被控对象传递函数
sys = tf(4.23,[1,1.64,8.46],'ioDelay',3); 
dsys = c2d(sys,ts,'z') ; % 离散化% 获取差分方程的分子和分母
[num,den] = tfdata(dsys,'v');% 初始化参数
x = [0,0,0]'; % 初始状态 [e(k), e(k-1), ∫e(k)]
e_1 = 0; % 上一次误差
ec_1 = 0; % 上一次误差变化率
kp0 = 0.35; % 初始比例参数
ki0 = 0.35; % 初始积分参数
kd0 = 1; % 初始微分参数% 加载模糊控制器
a = readfis('fuzzpid'); % 假设fuzzpid.fis是之前创建的模糊控制器文件% 初始化控制序列
u = zeros(1,32); % 控制序列初始化为0% 仿真时间
for k = 1:1:3000r(k) = 1; % 单位阶跃输入% 使用模糊推理调整PID参数k_pid = evalfis([e_1, ec_1], a);kp(k) = kp0 + k_pid(1);ki(k) = ki0 + k_pid(2);kd(k) = kd0 + k_pid(3);% 系统响应输出序列y(k+2) = -1*den(3)*y(k-2+2) - 1*den(2)*y(k-1+2) + num(2)*u(k-31+32) + num(3)*u(k-32+32);% 计算误差e(k) = r(k) - y(k+2);% 计算控制量u(k+32) = kp(k)*x(1) + kd(k)*x(2) + ki(k)*x(3);% 更新状态x(1) = e(k); % 计算Px(2) = e(k) - e_1; % 计算Dx(3) = x(3) + e(k)*ts; % 计算Iec_1 = x(2);e_1 = e(k);
end% 绘制结果
figure(1);
plot(time,r,'b',time,y(3:3002),'r');
xlim([0,300]);ylim([0,1.2]);grid on;
xlabel('time(s)');ylabel('rin,yout');figure(2);
plot(time,e,'r');
xlabel('time(s)');ylabel('error');figure(3);
plot(time,u(33:3032),'r');
xlabel('time(s)');ylabel('u');figure(4);
plot(time,kp,'r');
xlabel('time(s)');ylabel('kp');figure(5);
plot(time,ki,'r');
xlabel('time(s)');ylabel('ki');figure(6);
plot(time,kd,'r');
xlabel('time(s)');ylabel('kd');

这段代码首先定义了被控对象的传递函数,并对其进行了离散化处理。然后,初始化了PID参数和模糊控制器。在仿真循环中,使用模糊控制器调整PID参数,并计算系统的响应。最后,绘制了系统的输出、误差、控制量以及PID参数随时间的变化。请注意,这段代码需要您事先创建好模糊控制器文件fuzzpid.fis,并且根据您的具体问题调整参数和模型。

步骤二:创建好模糊控制器文件fuzzpid.fis

在MATLAB中创建模糊控制器文件 fuzzpid.fis 需要使用MATLAB的模糊逻辑工具箱。以下是创建一个简单的模糊PID控制器的步骤:

  1. 打开模糊逻辑设计器: 在MATLAB命令窗口中输入 fuzzy,这将打开模糊逻辑设计器。

  2. 创建新的模糊推理系统: 在模糊逻辑设计器中,选择“新建”来创建一个新的模糊推理系统。你可以选择“基于规则的系统”或“基于Mamdani的系统”。

  3. 定义输入和输出变量: 对于PID控制器,通常有两个输入变量(误差e和误差变化率ce)和三个输出变量(调整后的Kp、Ki、Kd)。你需要为这些变量定义适当的范围和隶属函数。

    • 误差e:可以定义为 [-100, 100],隶属函数可以是 "负大"、"负中"、"负小"、"零"、"正小"、"正中"、"正大"。
    • 误差变化率ce:可以定义为 [-100, 100],隶属函数同上。
    • Kp、Ki、Kd:可以定义为 [0, 2],隶属函数可以是 "零"、"小"、"中"、"大"。
  4. 添加模糊规则: 根据你的控制策略添加模糊规则。例如,如果误差很大且误差变化率很小,那么可能需要增加Kp和Kd。

  5. 生成M文件: 在模糊逻辑设计器中,选择“文件”->“生成M文件”,这将生成一个MATLAB函数,该函数可以用于仿真和控制。

  6. 保存模糊推理系统: 保存你的模糊推理系统为 fuzzpid.fis 文件。

以下是一个简单的示例代码,展示了如何在MATLAB中创建模糊控制器:

% 创建一个新的模糊推理系统
fis = newfis('fuzzpid', 'mamdani', 'min', 'max', 'min', 'max', 'centroid');% 添加输入变量
fis = addvar(fis, 'input', 'e', [-100 100]);
fis = addvar(fis, 'input', 'ce', [-100 100]);% 添加输出变量
fis = addvar(fis, 'output', 'Kp', [0 2]);
fis = addvar(fis, 'output', 'Ki', [0 2]);
fis = addvar(fis, 'output', 'Kd', [0 2]);% 为输入和输出变量添加隶属函数
fis = addmf(fis, 'input', 1, 'nb', 'gaussmf', [-100 -100 100]);
fis = addmf(fis, 'input', 1, 'nm', 'gaussmf', [-50 -50 100]);
fis = addmf(fis, 'input', 1, 'ns', 'gaussmf', [-10 -10 100]);
fis = addmf(fis, 'input', 1, 'ze', 'gaussmf', [0 0 100]);
fis = addmf(fis, 'input', 1, 'ps', 'gaussmf', [10 10 100]);
fis = addmf(fis, 'input', 1, 'pm', 'gaussmf', [50 50 100]);
fis = addmf(fis, 'input', 1, 'pb', 'gaussmf', [100 100 100]);% 为输出变量添加隶属函数
fis = addmf(fis, 'output', 1, 'z', 'gaussmf', [0.5 0.5 0.5]);
fis = addmf(fis, 'output', 1, 's', 'gaussmf', [1 1 1]);
fis = addmf(fis, 'output', 1, 'm', 'gaussmf', [1.5 1.5 1]);% 添加模糊规则
rule1 = "If e is nb and ce is nb then Kp is z and Ki is z and Kd is z";
rule2 = "If e is pb and ce is ze then Kp is m and Ki is s and Kd is s";
fis = addrule(fis, [rule1, rule2]);% 保存模糊推理系统
savefis(fis, 'fuzzpid.fis');

相关文章:

PID模糊控制算法(附MATLAB仿真程序)

一、基本原理 PID模糊控制算法是一种将传统PID控制与模糊逻辑相结合的控制策略。它利用模糊逻辑处理不确定性和非线性问题的能力,以提高控制系统的性能。以下是PID模糊控制算法的基本原理: 1.1. **误差和误差变化率的计算**: - 首先&…...

云轴科技ZStack助力 “上科大智慧校园信创云平台”入选上海市2024年优秀信创解决方案

近日,为激发创新活⼒,促进信创⾏业⾼质量发展,由上海市经济信息化委会同上海市委网信办、上海市密码管理局、上海市国资委等主办的“2024年上海市优秀信创解决方案”征集遴选活动圆满落幕。云轴科技ZStack支持的“上科大智慧校园信创云平台”…...

分布式集群下如何做到唯一序列号

优质博文:IT-BLOG-CN 分布式架构下,生成唯一序列号是设计系统常常会遇到的一个问题。例如,数据库使用分库分表的时候,当分成若干个sharding表后,如何能够快速拿到一个唯一序列号,是经常遇到的问题。实现思…...

Linux vi/vim

Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是 vim 编辑器。 vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 什么是 vim&…...

二分搜索(二)搜索插入位置

35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: …...

postgresql in模糊查询

postgresql in模糊查询 plsql模糊查询表名 转载 一.简单查询 1.Select 列名,列名…from select e.empno,e.ename,e.job,e.sal from emp e(别名); 2.带条件查询 select 列名,列名,…,列名 from 表名 where –查询名字叫SMITH的员工的信息 select * from emp where ena…...

政府大数据面临的挑战

政府大数据在数据资源标准、共享、应用、评价以及数据资产转化方面面临着严峻挑战,因此需要从保障数据流动性的角度来重构信息体系,从关注流程和业务逻辑的角度转向关注数据流动性和数据价值,遵从信息流动的内在逻辑,发挥数据的最…...

数据结构---链表

1. 简介 链表(Linked List)是一种常见的线性数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针(或引用)。链表的一个主要优点是能够高效地插入和删除元素,尤其是在数组…...

【系统架构设计师】真题论文: 论无服务器架构及其应用(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2017年 试题3)解题思路论文素材参考无服务器架构概念和特点无服务器架构的核心技术组件无服务器架构在不同领域的应用真题题目(2017年 试题3) 近年来,随着信息技术的迅猛发展和应用需求的快速更迭,…...

深度学习模型:BiLSTM (Bidirectional LSTM) - 双向长短时记忆网络详解

一、引言 在深度学习领域,序列数据的处理一直是一个关键任务。循环神经网络(RNN)及其变体在自然语言处理、语音识别、时间序列分析等诸多领域发挥着重要作用。然而,传统的 RNN 面临着梯度消失或梯度爆炸等问题,导致难…...

【计算机网络】实验3:集线器和交换器的区别及交换器的自学习算法

实验 3:集线器和交换器的区别及交换器的自学习算法 一、 实验目的 加深对集线器和交换器的区别的理解。 了解交换器的自学习算法。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、熟悉集线器和交换器的区别 (1) 第一步:构建网络…...

playwright 学习复仇记-2 Selector选择器定位元素

前言 Selector 选择器,也就是通常说的元素定位了,页面上点点点的操作,都是基于元素定位,所以这块是重点需要学的核心内容。 Selector 选择器 说到元素定位,大家肯定会首先想到 selenium 的八大元素定位,其…...

C语言——实现计算房屋总价

//功能&#xff1a;计算房屋总价 //房屋总价 房屋面积 * 单价 //契税 房屋总价 * 0.15% //印花税 房屋总价 * 0.05% //功能&#xff1a;计算房屋总价 //房屋总价 房屋面积 * 单价 //契税 房屋总价 * 0.15% //印花税 房屋总价 * 0.05%#include<stdio.h>void main()…...

Vue3 脚手架扩展

当 yarn dev 运行成功后&#xff0c;我们继续添加扩展 首先我们要安装一些依赖 其中的vue-router和vuex安装最新版的就行&#xff0c;因为项目是vue3 element-plus和less&#xff0c;less-loader最好按照我这个版本来下载 element-plus是一个vue常用的ui组件库 element-plus/…...

Ubuntu 20.04 程序运行导致“段错误 (核心已转储)”的原因分析及解决方案 ubuntu

Ubuntu 20.04 程序运行导致“段错误 (核心已转储)”的原因分析及解决方案 在Ubuntu 20.04系统中&#xff0c;运行程序时出现“段错误 (核心已转储)”是一种常见的错误提示。本文将详细解析导致段错误的原因&#xff0c;并提供完整的解决方案&#xff0c;辅以示例说明&#xff…...

Mysql常用sql语句

数据库操作 # 创建数据库 create database 库名 charsetutf8; # 使用数据库 use 库名; # 退出数据库 quit # 查看所有数据库 show databases; # 查看当前使用的数据库 select database(); # 删除数据库 drop database 库名; 表操作 #查看当前数据库中所有表 show tables;#创…...

SpringBoot 架构下的在线家具商城:规划与实践之路

第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔记本的广泛运用&#xff0c;以及各种计算机硬件的完善和升…...

request和websocket

当然&#xff0c;可以为你详细介绍 FastAPI 中的 Request 对象。Request 对象在 FastAPI 中扮演着重要的角色&#xff0c;负责封装来自客户端的 HTTP 请求信息。了解 Request 对象的使用方法和属性&#xff0c;有助于你更高效地处理请求数据、访问请求上下文以及进行各种操作。…...

前端【9种前端常见的设计模式】

&#x1f31f;9种前端常见的设计模式 哈喽小伙伴们&#xff0c;这期给大家整理了一些有关9种前端常见的设计模式&#xff0c;覆盖多方面基础知识&#xff0c;建议大家收藏阅读。 文章目录 &#x1f31f;9种前端常见的设计模式&#x1f31f;1. 外观模式&#x1f31f; 2. 代理模…...

IDEA使用HotSwapHelper进行热部署

目录 前言JDK1.8特殊准备DECVM安装插件安装与配置参考文档相关下载 前言 碰到了一个项目&#xff0c;用jrebel启动项目时一直报错&#xff0c;不用jrebel时又没问题&#xff0c;找不到原因&#xff0c;又不想放弃热部署功能 因此思考能否通过其他方式进行热部署&#xff0c;找…...

【Django-xadmin】

时间长不用,会忘的系列 1、Django-xadmin后台字段显示处理 主要是修改每个模块下adminx.py文件 代码解释&#xff1a;第1行控制表单字段显示第2行控制列表字段显示第3行控制搜索条件第4行控制过滤条件第5行支持单个或多个字段信息修改第6行列表分页&#xff0c;每页显示多少行…...

AI 计算基础设施的战略转折点分析

核心技术范式转移 我们正处于计算架构的重大转折点。第一个根本性转变是从传统的 CPU 编程范式&#xff0c;向以 GPU 为核心的神经网络运算模式转移。这不仅仅是硬件架构的改变&#xff0c;更代表了整个软件开发和应用部署方式的革新。第二个转变则是在这个新的基础设施之上&a…...

Java基于SpringBoot+Vue的IT技术交流和分享平台(附源码+lw+部署)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

二:OpenStack环境准备-controller node

一&#xff1a;工具、环境准备-controller node 二&#xff1a;OpenStack环境准备-controller node 三&#xff1a;安装服务-controller node 四&#xff1a;工具、环境准备-compute node 五&#xff1a;OpenStack环境准备-compute node 六&#xff1a;安装服务-compute node 七…...

解决stable-diffusion-webui时的问题:No module ‘xformers‘. Proceeding without it

p.s 被另一篇文章坑了&#xff0c;装个xformers把我原先的pytorch降智了&%$^# 注意&#xff1a;&#xff01;&#xff01;&#xff01;xformers非强制安装&#xff1b;可优化显存&#xff0c;提高性能和出图速率&#xff0c;对于GPU能力有限的用户很有用&#xff1b;安装过…...

清理Linux/CentOS7根目录的思路

在使用Linux服务器过程中&#xff0c;经常会遇到磁盘空间不足的问题&#xff0c;好多应用默认安装在根目录下&#xff0c;记录一下如何找到问题所在&#xff0c;清理根目录&#xff08;/&#xff09; 1. 检查空间使用情况 1.1 查看分区占用&#xff1a; df -h输出&#xff1…...

人工智能-深度学习-BP算法

BP算法的核心思想是通过计算损失函数对网络参数的梯度&#xff0c;然后使用梯度下降法来更新网络参数&#xff0c;从而最小化损失函数。 误差反向传播算法(BP)的基本步骤: 前向传播&#xff1a;正向计算得到预测值。 计算损失&#xff1a;通过损失函数计算预测值和真实值的差…...

C++小问题

怎么分辨const修饰的是谁 是限定谁不能被改变的&#xff1f; 在C中&#xff0c;const关键字的用途和位置非常关键&#xff0c;它决定了谁不能被修改。const可以修饰变量、指针、引用等不同的对象&#xff0c;并且具体的作用取决于const的修饰位置。理解const的规则能够帮助我们…...

如何让控件始终处于父容器的居中位置(父容器可任意改变大小)

前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任软件经理&#xff0c;从事C#上位机软件开发8年以上&#xff01;我们在C#开发winform程序的时候&#xff0c;有时候需要将一个控件居中显示&#xff0c…...

Python 调用 Umi-OCR API 批量识别图片/PDF文档数据

目录 一、需求分析 二、方案设计&#xff08;概要/详细&#xff09; 三、技术选型 四、OCR 测试 Demo 五、批量文件识别完整代码实现 六、总结 一、需求分析 市场部同事进行采购或给客户报价时&#xff0c;往往基于过往采购合同数据&#xff0c;给出现在采购或报价的金额…...

Java基础访问修饰符全解析

一、Java 访问修饰符概述 Java 中的访问修饰符用于控制类、方法、变量和构造函数的可见性和访问权限&#xff0c;主要有四种&#xff1a;public、protected、default&#xff08;无修饰符&#xff09;和 private。 Java 的访问修饰符在编程中起着至关重要的作用&#xff0c;它…...

朗迪锋亮相2024人因工程与智能系统交互国际会议

2024年11月28日至30日&#xff0c;2024人因工程与智能系统交互国际会议在深圳隆重举办。此次大会以推动我国人因工程学科发展为目标&#xff0c;致力于加强国际学术交流&#xff0c;深入探讨人工智能时代的智能系统交互&#xff0c;旨在培育新质生产力&#xff0c;助力经济社会…...

OpenGL学习过程总结

1、矩阵 参考链接 第三课&#xff1a;矩阵变换...

webGL入门教程_06变换矩阵与绕轴旋转总结

变换矩阵与绕轴旋转总结 目录 1. 变换矩阵简介2. 平移矩阵3. 缩放矩阵4. 旋转矩阵 4.1 绕 Z 轴旋转4.2 绕 X 轴旋转4.3 绕 Y 轴旋转 5. 组合变换矩阵6. 结论 1. 变换矩阵简介 在计算机图形学中&#xff0c;变换矩阵用于在三维空间中对物体进行操作&#xff0c;包括&#xff…...

mysql 查询所有的触发器

SELECTTRIGGER_SCHEMA AS Database,TRIGGER_NAME AS Trigger,EVENT_OBJECT_TABLE AS Table,EVENT_MANIPULATION AS Event,ACTION_STATEMENT AS Statement FROMinformation_schema.TRIGGERS;创建触发器遇到报错&#xff1a; You do not have the SUPER privilege and binary lo…...

基于Java Springboot个人财务APP且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…...

GateWay使用手册

好的&#xff0c;下面是优化后的版本。为了提高可读性和规范性&#xff0c;我对内容进行了结构化、简化了部分代码&#xff0c;同时增加了注释说明&#xff0c;便于理解。 1. 引入依赖 在 pom.xml 中添加以下依赖&#xff1a; <dependencies><!-- Spring Cloud Gate…...

go语言读取yaml配置文件内容

1、config.yaml配置文件内容假设如下 name: "example" version: 1.0 settings:timeout: 30debug: truefeatures:- feature1- feature22、定义结构体 go语言定义结构体匹配yaml内容 package mainimport ("fmt""log""os""gopkg.…...

Proteus8.17下载安装教程

Proteus是一款嵌入式系统仿真开发软件&#xff0c;实现了从原理图设计、单片机编程、系统仿真到PCB设计&#xff0c;真正实现了从概念到产品的完整设计&#xff0c;其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等&#xff0c;能够帮助用…...

【AI】Sklearn

长期更新&#xff0c;建议关注、收藏、点赞。 友情链接&#xff1a; AI中的数学_线代微积分概率论最优化 Python numpy_pandas_matplotlib_spicy 建议路线&#xff1a;机器学习->深度学习->强化学习 目录 预处理模型选择分类实例&#xff1a; 二分类比赛 网格搜索实例&…...

图数据库 | 10、图数据库架构设计——高性能图存储架构(上)

老夫在之前的三大篇内容中&#xff0c;介绍了图数据库的三大组件—图计算、图存储以及图查询语言。&#xff08;都归拢在图数据库原理、架构与应用这个专栏中了&#xff0c;感兴趣的朋友可以在去找阅读。&#xff09; 接下来&#xff0c;老夫还将继续深化这三大组件&#xff0…...

el-table 组件二次封装(vue2)

PublicTable.vue <!-- 公共表格组件 --> <template><div class"table-common"><el-table v-loading"loading" :ref"tableid" border style"width: 100%" :data"tableDatas" :row-key"rowKey&quo…...

张量并行和流水线并行在Transformer中的具体部位

目录 张量并行和流水线并行在Transformer中的具体部位 一、张量并行 二、流水线并行 张量并行和流水线并行在Transformer中的具体部位 张量并行和流水线并行是Transformer模型中用于提高训练效率的两种并行策略。它们分别作用于模型的不同部位,以下是对这两种并行的具体说…...

详解Qt pdf 之QPdfSelection 选择文本类

文章目录 QPdfSelection 类详解前言 详细说明公共函数说明1. 构造函数2. text3. boundingRect4. isEmpty5. startPage6. endPage 使用场景示例代码代码说明总结 QPdfSelection 类详解 前言 QPdfSelection 是 Qt PDF 模块中的一个类&#xff0c;用于表示在 PDF 文档中被选中的…...

一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库

大家好&#xff0c;今天给大家分享一个基于PyTorch的OCR库EasyOCR&#xff0c;它允许开发者通过简单的API调用来读取图片中的文本&#xff0c;无需复杂的模型训练过程。 项目介绍 EasyOCR 是一个基于Python的开源项目&#xff0c;它提供了一个简单易用的光学字符识别&#xff…...

matlab 中的 bug

在matlab中绘图&#xff0c;设置 axe 的背景颜色 axes_in3.Color #00235B ;打印的时候 print(figure_handle1,-dpng,-r300,"merge_yt_ey") ;此时保存的图片无法识别背景颜色 原因在于 matlab 中的 InverseHardcopy 将 InvertHardcopy 设置成 off 则可以解决这个问…...

【算法刷题指南】优先级队列

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…...

android user版本默认usb模式为充电模式

android插入usb时会切换至默认设置的模式&#xff0c;debug版本为adb&#xff0c;user版本为mtp protected long getChargingFunctions() {// if ADB is enabled, reset functions to ADB// else enable MTP as usual.if (isAdbEnabled()) {return UsbManager.FUNCTION_ADB;} e…...

[极客大挑战 2019]HardSQL--详细解析

信息搜集 登录系统&#xff0c;有两个可能的注入点&#xff1a; 随便输一下看看传参类型&#xff1a; 都是GET型。 SQL注入 传参 usernameadmin’&password123 传参 usernameadmin&password123’ username和password传参&#xff0c;四种闭合方式只有单引号报错&a…...

java基础概念46-数据结构1

一、引入 List集合的三种实现类使用了不同的数据结构&#xff01; 二、数据结构的定义 三、常见的数据结构 3-1、栈 特点&#xff1a;先进后出&#xff0c;后进先出。 java内存容器&#xff1a; 3-2、队列 特点&#xff1a;先进先出、后进后出。 栈VS队列-小结 3-3、数组 3-…...