2025年“深圳杯”数学建模挑战赛C题国奖大佬万字思路助攻
完整版1.5万字论文思路和Python代码下载:https://www.jdmm.cc/file/2712073/
引言
本题目旨在分析分布式能源 (Distributed Generation, DG) 接入配电网系统后带来的风险。核心风险评估公式为:
R = P_{loss} \times C_{loss} + P_{over} \times C_{over}
其中:
-
R 代表系统总风险。
-
P_{loss} 代表系统失负荷的发生概率。
-
C_{loss} 代表由系统失负荷造成的危害程度。
-
P_{over} 代表系统过负荷的发生概率。
-
C_{over} 代表由系统过负荷造成的危害程度。
我们需要针对所提供的有源配电网62节点系统(数据见附录Excel表1和表2,即文件 表1 有源配电网62节点系统负荷参数.csv
和 表2 有源配电网62节点系统拓扑参数.csv
),建立风险计算模型,并分析不同场景下系统风险的演变情况。
通用建模方法与数据准备
在深入具体问题之前,我们先讨论一些通用的建模方法和必要的数据准备工作。
1. 系统拓扑与数据解读
-
网络模型构建:根据
表2 有源配电网62节点系统拓扑参数.csv
中的起点、终点、长度、电阻和电抗数据,构建配电网的图模型。节点对应母线/负荷点/开关,边对应线路段。可以使用如图networkx
(Python库) 进行网络拓扑的表示和分析。 -
负荷数据:
表1 有源配电网62节点系统负荷参数.csv
提供了各节点的有功负荷 P (kW)。题目中指明不考虑无功功率。 -
分布式能源(DG)位置:题目描述“8个分布式能源DG从不同位置接入到配电网中,如图1所示”。需要仔细解读图1(在
C题:分布式能源接入配电网的风险分析.docx
中),将DG1至DG8明确映射到表1、表2中的具体节点编号上。如果图1中的DG连接点不是已编号的负荷节点,可能需要将其视为新的发电节点,并明确其与哪个现有节点相连。 -
线路额定参数:
-
题目给出“3条馈线额定负载均为2.2 MW,对应额定载流量为220A”。馈线电压为10kV。
-
“过负荷:线路电流超过额定载流量10%以上”。这意味着每条线路(或至少是关键线路)都需要一个额定载流量。表2并未直接给出各线路段的额定电流。关键假设/数据缺失:如果所有支路的额定电流未给出,需要做出合理假设。例如,主干线路参考220A,支路根据其下游总负荷设计容量按比例估算,或者统一假设一个基于导线型号(若能从电阻电抗反推)的电流限值。在模型中应明确指出此假设。联络线(S13-1, S29-2, S62-3)的容量也需明确,可假设与所连接的馈线容量相当。
-
-
开关信息:图1中标注了分段开关S1-S62以及联络开关S13-1, S29-2, S62-3。这些开关的状态(正常开/合,故障时可操作)对故障隔离和负荷转供至关重要。
2. 故障率计算
根据题目给出的故障率参数:
-
每个分布式能源故障率:p_{dg} = 0.5\%
-
每个用户故障率:p_{user} = 0.5\% (此处“用户故障”可能指负荷点连接设备故障导致该负荷无法供电)
-
每个开关故障率:p_{sw} = 0.2\%
-
配电线路故障率:p_{line} = \text{线路长度(km)} \times 0.002/\text{km}。线路长度从
表2
获取。
由于题目说明“各个类型故障是独立发生的,同一时间同一类型只发生一个故障”,这简化了概率计算,主要考虑单一故障事件。
3. 潮流计算简化
题目明确“不考虑无功功率和电压越限的影响,风险计算分析仅考虑有功功率和电流的影响”。
-
有功潮流:可以使用直流潮流模型(DC Power Flow)的简化形式,或者基于基尔霍夫定律的有功功率平衡方程。考虑到线路电阻
表2
给出了,线路损耗 P_{loss,line} = I^2 R 或 P_{loss,line} = \frac{P^2+Q^2}{V^2}R \approx \frac{P^2}{V_{nom}^2}R (由于Q忽略)可以被估算。 -
电流计算:对于三相平衡系统,电流 I 可以由有功功率 P (kW)和线电压 V_{LL} (kV,此处为10kV)计算:
$$
I = \frac{P \times 1000}{\sqrt{3} \times V_{LL} \times 1000 \times \cos\phi}
$$
由于不考虑无功,功率因数 \cos\phi=1。所以 I = \frac{P}{\sqrt{3} \times 10} (A)。其中P为三相总有功功率。
4. 危害程度函数 (C_{loss} 和 C_{over})
-
C_{loss} (失负荷危害程度):题目提及“供电中断危害可依据部门客户危害度函数进行计算”,但未提供具体函数。可以参考网络资料中关于“用户平均断电损失(Customer Average Interruption Cost, CAIC)”或“失负荷价值(Value of Lost Load, VoLL)”的概念 (如NREL的CDF计算器 [3.1] 或维基百科关于VoLL的解释 [4.1])。若无详细分类,可假设一个平均的单位失负荷成本(例如,/kW 或 /kWh)。
-
C_{over} (过负荷危害程度):过负荷可能导致设备寿命缩短、损耗增加甚至损坏 [5.1, 5.2, 6.2]。其量化也较复杂。模型中可以简化为:当发生过负荷时,产生一个固定的惩罚成本,或者成本与过负荷的程度和持续时间相关(若考虑动态)。
问题解答
问题1:失负荷风险和过负荷风险的计算模型
A. 失负荷风险模型 (R_{loss} = P_{loss} \times C_{loss})
1. P_{loss} (系统失负荷的发生概率) 计算思路:
-
故障识别与枚举:
-
线路故障:遍历所有线路段,根据长度计算故障率。
-
开关故障:遍历所有开关(分段开关和联络开关),使用给定的故障率。开关故障可能指开关误动或拒动。这里主要考虑导致供电中断的开路故障。
-
DG故障:遍历所有DG,使用给定故障率。
-
用户故障:遍历所有负荷点,使用给定故障率。
-
-
故障影响分析 (对每一个单一故障场景):
-
确定初始中断范围:发生故障后,利用网络拓扑判断哪些负荷失去电源。例如,线路L发生故障,则L下游的所有负荷(在没有其他电源的情况下)会失电。
-
尝试通过联络线恢复供电:
-
识别失电区域内可以通过联络线转供的负荷。
-
检查转供路径(包括联络线本身及目标馈线)的容量是否足够,即转供后不能引起新的过负荷。联络开关的容量需要预先定义。
-
“供电恢复的目标是在系统拓扑结构发生变化时,将系统的经济损失降至最小”,这意味着在多种恢复方案可选时,应优先恢复重要负荷或总负荷量最大的方案(如果负荷有优先级或不同C_{loss})。
-
注意约束:“分布式能源不得向上级电网倒送功率”,以及联络线转移功率时,不应导致源馈线向上级变电站倒送。
-
-
计算净失负荷:经过联络线转供后,仍然无法恢复的负荷总量 Load_{unserved, i} (kW),对应于故障场景 i。
-
-
P_{loss} 的确定: 严格来说,P_{loss} 不是一个单一概率,而是与失负荷大小相关的。一个更准确的指标是期望失负荷 (Expected Energy Not Supplied, EENS) 或期望失负荷功率 (Expected Power Not Supplied, EPNS)。 对于风险公式中的 P_{loss},可以理解为某种等效的“发生失负荷”的概率。一个简化的方法是:
$$
P_{loss} = \sum_{i \in \text{Faults}} P(\text{Fault}_i) \times I(\text{Fault}_i \text{ leads to net load loss})
$$
其中 P(\text{Fault}_i) 是故障 i 的发生概率,I(\cdot) 是指示函数。 更合理的做法是计算期望未服务功率:
$$
E[P_{unserved}] = \sum_{i} P(\text{Fault}_i) \times Load_{unserved, i}
$$
如果风险公式必须使用单一 P_{loss} 和 C_{loss},那么 P_{loss} 可以是“发生任意导致失负荷的故障的总概率”,而 C_{loss} 则是这些故障下的平均或加权危害。 或者,将风险公式理解为期望损失:
$$
R_{loss} = \sum_{i} P(\text{Fault}_i) \times (Load_{unserved, i} \times \text{CostPerKW})$。 这样 $P_{loss,i} = P(\text{Fault}_i)
$$
$$
C_{loss,i} = Load_{unserved, i} \times \text{CostPerKW}
$$
2. C_{loss} (系统失负荷造成的危害程度) 计算思路:
-
C_{loss} = Load_{unserved} \times V_{VoLL}
-
Load_{unserved} 是某故障场景下,经过优化恢复后最终未能供电的负荷量 (kW)。
-
V_{VoLL} 是单位失负荷的经济损失 ($/kW 或 $/kWh)。如前述,可参考已有研究或行业数据,或作为参数输入。如果负荷有不同类型(居民、商业等),V_{VoLL} 可以是各类型负荷的加权平均。
3. 代码实现思路 (Python 为例):
-
使用
pandas
读取和处理CSV数据。 -
使用
networkx
构建电网图模型,存储节点(负荷、DG、开关)、支路(线路参数、额定电流、故障率)信息。 -
主循环:遍历所有可能的单一故障点(线路、开关、DG)。
-
内部逻辑:
-
模拟故障发生,从图中移除故障元件或改变其状态。
-
使用图算法(如DFS/BFS)确定孤岛和失电区域。
-
转供逻辑:
-
识别可通过联络开关连接到其他正常馈线的失电区域。
-
进行潮流计算或容量校核,判断转供可行性(不超过联络线及目标馈线容量,不向上级倒送功率)。
-
以最大化恢复负荷或最小化损失为目标选择转供方案。
-
-
计算最终的 Load_{unserved}。
-
-
-
汇总所有故障场景的 P(\text{Fault}_i) \times C_{loss,i} 得到总的 R_{loss}。
B. 过负荷风险模型 (R_{over} = P_{over} \times C_{over})
1. P_{over} (系统过负荷的发生概率) 计算思路:
-
潮流计算:在给定的运行方式下(负荷情况、DG出力情况),计算网络中各条线路的有功功率 P_{line}。
-
电流计算:根据 P_{line} 和额定电压 (10kV),计算线路电流 I_{line} = \frac{P_{line}}{\sqrt{3} \times 10 \text{ (kV)}}。
-
过负荷判断:对每条线路,检查 I_{line} > 1.1 \times I_{rated,line}。I_{rated,line} 是该线路的额定载流量(需预设或假设)。
-
“不得向上级变电站倒送”约束:在潮流计算中,必须保证从变电站到馈线的功率方向,或者说变电站出口开关 (CB1-CB3) 处的功率为正(从变电站流出)。如果DG出力过大可能导致倒送,则需要弃风或通过联络线向其他馈线转移(前提是其他馈线有接纳能力且联络线容量允许)。
-
P_{over} 的确定:
-
对于确定的运行场景(如DG全出力,或特定出力水平),如果发生过负荷,P_{over} 为1,否则为0。
-
如果考虑DG出力的不确定性(例如,在问题3中会更突出),则 P_{over} 可以是:在一定观测时间内(如一天中所有小时),发生过负荷的小时数比例;或者通过蒙特卡洛模拟,DG出力按某种概率分布取值,统计过负荷发生的频率。
-
在本问题中,可能需要评估的是在基准DG容量下,是否存在某些线路在特定(可能是最不利)条件下发生过负荷。
-
2. C_{over} (系统过负荷造成的危害程度) 计算思路:
-
量化过负荷的危害可以有多种方式:
-
简化:一旦发生过负荷,即产生一个固定的惩罚值。
-
与过负荷程度相关:例如,C_{over} = k \times (\frac{I_{line} - 1.1 \times I_{rated,line}}{1.1 \times I_{rated,line}}),其中 k 是一个成本系数。
-
考虑设备寿命损失:更复杂的模型会把过负荷映射到设备(如变压器、电缆)的加速老化模型,从而计算经济损失 [5.2, 6.2]。
-
-
参考搜索结果,如 "Electrical Overload: Understanding the Risks and How to Prevent It - E-Abel" [5.1] 描述了过热、设备损坏、寿命降低等风险,但具体成本化需要模型假设。
3. 代码实现思路:
-
实现简化的潮流计算函数(如基于功率平衡迭代或矩阵求解的DC潮流近似)。
-
输入:节点负荷、DG出力(初始容量300kW/个)、网络拓扑及参数。
-
主逻辑:
-
计算各线路功率和电流。
-
检查倒送功率约束,如有倒送,需调整DG出力(弃风)或尝试通过联络线向其他馈线转移功率,前提是不导致其他线路过负荷且联络线容量允许。
-
检查各线路是否过负荷。
-
-
若有过负荷线路,则记录,并根据上述 C_{over} 计算方法估算危害。
问题2:分布式能源容量从I增加到3I,分析系统风险演变
-
DG容量设定:初始容量 I = 300 \text{ kW}/DG。总共8个DG。 容量从 I 增加到 3I,步长 0.3I。即每个DG的容量依次取: 300, 300(1+0.3), 300(1+0.6), \dots 直到 3 \times 300 = 900 \text{ kW}。 具体容量点 (kW/DG):300, 390, 480, 570, 660, 750, 840, 900。
-
建模思路:
-
对于上述每一个DG容量水平(所有8个DG同时调整容量):
-
更新DG出力:在模型中设置DG的出力为此容量值(这里假设DG按其容量稳定出力,不考虑其波动性,除非题目暗示需要结合典型日出力曲线,但问题2似乎更侧重容量参数本身的影响)。
-
重新计算失负荷风险 R_{loss}:
-
DG容量的增加可能会改变故障后的供电能力。如果DG被允许在故障后为部分区域供电(形成孤岛,需视题目是否有此设定,通常配电网孤岛运行较复杂),则可能降低失负荷。但DG本身也有故障率。主要影响在于,如果DG在网,可以减少从主网获取的功率,改变潮流分布。
-
使用问题1中建立的 R_{loss} 模型,代入新的DG容量。
-
-
重新计算过负荷风险 R_{over}:
-
DG容量增加,显著增加了线路过负荷和向上级电网倒送功率的风险,尤其是在负荷较低时。
-
使用问题1中建立的 R_{over} 模型,代入新的DG容量,严格检查倒送和线路过载情况。
-
-
计算总风险 R = R_{loss} + R_{over}。
-
-
结果分析:绘制总风险 R、失负荷风险 R_{loss}、过负荷风险 R_{over} 随DG总容量(或单个DG容量)变化的曲线图,据此分析演变趋势。
-
-
代码实现思路:
-
外层循环遍历DG的各个容量水平。
-
循环内部调用问题1中开发的风险计算函数(失负荷风险函数和过负荷风险函数)。
-
存储每个容量水平下的 R_{loss}, R_{over}, R。
-
使用
matplotlib
等库进行绘图。
-
问题3:假设8个DG全部为光伏,分析每一个光伏的最大接入容量对系统风险的影响
-
典型光伏发电曲线:
-
需要查找典型的日发电功率曲线。例如,晴天时光伏出力在白天呈钟形曲线,峰值在中午附近,夜间为0。可参考搜索到的资料,如 ResearchGate上的典型曲线 [1.1] 或NREL的数据 [2.2]。曲线通常以标准日照下的峰值功率的百分比形式给出(例如,每小时一个出力系数 Profile(t) \in [0,1])。
-
P_{PV}(t) = \text{PV装机容量} \times \text{Profile}(t)。
-
-
“每一个光伏的最大接入容量”的理解:
-
这可能指对8个DG位置,逐个分析:当某个位置的光伏容量从一个较小值逐渐增大时,系统风险如何变化,从而找到一个“风险可接受”或“边际风险增长过快”的容量点,这个点可视为该位置的“最大接入容量”的参考。
-
或者,对每个DG位置,设定一个较大的接入容量(例如问题2中的3I=900kW,或根据线路热稳极限反算的理论上限),然后评估此时系统风险的构成。
-
更可能的问法是:单独改变一个PV的装机容量,保持其他PV容量在基准值(如初始的300kW),分析该PV容量变化对系统总风险的影响。这种敏感性分析能体现不同接入位置对风险的贡献差异。
-
-
建模思路 (按敏感性分析理解):
-
选择一个基准场景,例如所有PV容量均为初始值 I=300 \text{ kW}。
-
对外层循环:遍历8个PV位置 (DG1 to DG8)。
-
对内层循环:对于当前选定的PV,将其装机容量从一个下限(如0或I)逐步增加到一个上限(如3I或更高,或直到风险急剧增加)。其他7个PV容量保持基准值。
-
风险计算 (含时间维度):由于PV出力随时间变化,风险也可能随时间变化。
-
选择一天中若干典型时刻(如每小时一次,共24个时刻),或者至少选择几个关键时刻(如清晨低负荷无PV、中午高峰PV低/中负荷、傍晚高峰负荷无PV)。
-
对于每个时刻 t:
-
获取该时刻所有PV的出力 P_{PV,j}(t) (j为PV编号)。
-
获取该时刻的负荷 P_{load,k}(t) (如果负荷也随时间变化,则需负荷曲线;若无,则用
表1
的固定负荷)。 -
运行问题1中的风险评估模型(失负荷、过负荷),得到该时刻的瞬时风险 R(t)。
-
-
日总风险/平均风险:可以将瞬时风险进行加权平均或求和,得到日度量下的风险值。例如,期望日风险 R_{daily} = \sum_{t} R(t) \times \Delta t (如果R(t)是风险功率)或 R_{daily} = \text{mean}(R(t))。
-
-
结果分析:对于每个PV位置,绘制其接入容量与系统(日)风险之间的关系曲线。比较不同位置的曲线,分析哪些位置对风险更敏感,以及其“最大经济接入容量”或“风险拐点容量”大致在什么水平。
-
-
代码实现思路:
-
实现一个函数,根据输入的PV装机容量、时刻 t 和标准化的PV出力曲线,返回该PV的瞬时出力。
-
主程序包含嵌套循环:外层遍历PV位置,中层遍历该PV的测试装机容量,内层遍历一天中的各个时刻。
-
在最内层,调用问题1的风险计算模块(需适应瞬时DG出力)。
-
存储结果并绘图。
-
问题4:在问题3基础上,假设每个光伏配置储能电池,分析影响
-
储能配置:储能容量不超过PV装机容量的15%。这通常指储能的功率容量 P_{ESS,max} \le 0.15 \times P_{PV,capacity}。储能的能量容量 E_{ESS,max} (kWh) 也需要设定,例如,假设为功率容量的2小时或4小时 (E_{ESS,max} = P_{ESS,max} \times \text{Duration})。还需要考虑充放电效率 \eta_{ch}, \eta_{dis},以及最小/最大荷电状态 (SOC) 约束。
-
储能运行策略:这是关键。储能的目的是平抑PV波动、削峰填谷、参与调峰调频、提高自消纳、减少弃光、降低风险。一个合理的策略应服务于风险最小化。
-
基本策略示例:
-
充电:当PV出力大于本地负荷且可能导致线路过载或向上级倒送时,优先给储能充电 (若SOC < SOC_{max} 且充电功率 \le P_{ESS,max})。
-
放电:当PV出力不足以满足本地负荷,或在系统故障、主网失压时,储能放电支援 (若SOC > SOC_{min} 且放电功率 \le P_{ESS,max})。
-
目标:可以设定为优先保证本地负荷供电,其次避免线路过载和倒送,再次参与经济调度(如峰谷套利,但本题更侧重风险)。
-
-
-
建模思路:
-
在问题3的模型基础上,为每个PV增加一个储能单元模型。
-
在每个时刻 t 的计算中,加入储能的充放电决策逻辑。
-
首先确定PV的理论出力。
-
根据储能策略,决定储能是充电、放电还是闲置,以及相应的功率。
-
更新储能的SOC: SOC(t) = SOC(t-1) + \frac{P_{ESS}(t) \times \Delta t \times \eta}{E_{ESS,max}} (充电取 P_{ESS}>0, \eta=\eta_{ch};放电取 P_{ESS}<0, \eta=1/\eta_{dis})。
-
PV和储能联合向电网注入/吸收的净功率为 P_{DG\_net}(t) = P_{PV}(t) - P_{ESS,charge}(t) + P_{ESS,discharge}(t)。
-
-
使用此 P_{DG\_net}(t) 作为DG等效出力,代入问题1的风险模型中,重新计算 R_{loss}(t) 和 R_{over}(t)。
-
重复问题3中的分析流程(改变单个PV及其配套储能的容量,分析对系统日风险的影响)。
-
-
结果分析:对比有无储能情况下的风险曲线。预期储能可以:
-
显著降低过负荷风险 R_{over}(通过吸收多余PV出力,减少峰值注入)。
-
可能降低失负荷风险 R_{loss}(通过在PV出力低或故障时段供电)。
-
-
代码实现思路:
-
在PV模型旁增加储能模型类/函数,包含SOC、功率/能量容量、效率、充放电逻辑。
-
修改问题3的时间序列仿真循环,在每个时间步先执行储能的调度决策,再进行电网风险评估。
-
总结与展望
上述思路为解决该数学建模问题提供了框架。在具体实施中,还需要注意以下几点:
-
关键参数的明确:如前所述,所有线路的额定电流、联络线容量、DG在拓扑图中的精确接入点、客户停电损失的具体数值或函数形式、过负荷的量化成本等,都需要明确。如果题目未完全给出,模型中必须清晰地列出所作的假设。
-
模型的简化与合理性:鉴于问题的复杂性,某些方面的简化是必要的(如忽略无功和电压、单一故障假设等已在题目中指明)。关键在于确保简化不失问题本质。
-
计算效率:特别是对于问题3和4中涉及时间序列和多场景迭代的分析,需要考虑算法效率,避免不必要的重复计算。
-
结果的可视化与解读:清晰的图表(如风险随参数变化的曲线、关键节点或线路的风险贡献等)对于结果呈现和分析至关重要。
参考文献(部分)
-
[1] NREL Customer Damage Function Calculator: Customer Damage Function Calculator
-
[2] Wikipedia - Value of Lost Load: https://en.wikipedia.org/wiki/Value_of_lost_load
-
[3] ResearchGate - Typical daily PV generation and load profiles: https://www.researchgate.net/figure/Typical-daily-PV-generation-and-load-profiles-of-a-day-time-business-office_fig2_358496934
-
[4] NREL - Solar Supply Curves: Solar Supply Curves | Geospatial Data Science | NREL
-
[5] E-Abel - Electrical Overload: Understanding the Risks and How to Prevent It: Electrical Overload: Understanding the Risks and How to Prevent It [May 2025]
-
[6] MES - Understanding the Impact of Overloading on Transformer Health: Understanding the Impact of Overloading on Transformer Health
-
[7] IMIA - Analysis of Transformer Failures: https://www.imia.com/wp-content/uploads/2023/07/wgp3303.pdf
完整版万字论文思路和Python代码下载:https://www.jdmm.cc/file/2712073/
相关文章:
2025年“深圳杯”数学建模挑战赛C题国奖大佬万字思路助攻
完整版1.5万字论文思路和Python代码下载:https://www.jdmm.cc/file/2712073/ 引言 本题目旨在分析分布式能源 (Distributed Generation, DG) 接入配电网系统后带来的风险。核心风险评估公式为: R P_{loss} \times C_{loss} P_{over} \times C_{over}…...
大模型微调指南之 LLaMA-Factory 篇:一键启动LLaMA系列模型高效微调
文章目录 一、简介二、如何安装2.1 安装2.2 校验 三、开始使用3.1 可视化界面3.2 使用命令行3.2.1 模型微调训练3.2.2 模型合并3.2.3 模型推理3.2.4 模型评估 四、高级功能4.1 分布训练4.2 DeepSpeed4.2.1 单机多卡4.2.2 多机多卡 五、日志分析 一、简介 LLaMA-Factory 是一个…...
游戏引擎学习第268天:合并调试链表与分组
回顾并为今天的内容设定基调 我们正在直播中开发完整的游戏,目前调试系统的开发已接近尾声。这个调试系统的构建过程经历了较长的时间,中间还暂停过一段时间去做硬件渲染路径的开发,并在已有的软件渲染路径基础上进行了扩展。后来我们又回到…...
【Linux系统编程】进程属性--标识符
1.PID 1.1什么是PID? 区分进程的唯一性 1.2如何查看进程? ps ajx | head -1 ; ps ajx | grep myproc 或者ps ajx | head -1 && ps ajx | grep myproc | grep -v grep(过滤掉grep本身这个进程) 1.3进程有哪两种&#…...
React文档-State数据扁平化
1、选择 State 结构 思考一下: 如果渲染列表, 并更新列表数据在下面展示~ state 过去常常是这样复制的: items [{ id: 0, title: pretzels}, ...]selectedItem {id: 0, title: pretzels} 改了之后是这样的:items [{ id: 0, …...
kotlin flow防抖
一 防抖设计 ✅ 1. 点击事件的防抖:用于防止频繁触发逻辑 🎯 适用场景: 用户连续快速点击按钮,可能会导致多次发送网络请求、CAN 指令或反复切换状态等副作用。所以我们通常在点击函数中处理防抖,例如: …...
基础语法(二)
Mysql基础语法(二) Mysql基础语法(二)主要介绍Mysql中稍微进阶一点的内容,会稍微有一些难度(博主个人认为)。学习完基础语法(一)和基础语法(二)之…...
FreeTex v0.2.0:功能升级/支持Mac
概述 FreeTex在发布之后,迎来很多反馈,本次根据主流的反馈建议,又进行一轮小升级,正式发布v0.2.0版本,主要升级点如下: 新增识别结果预览显示 Latex识别结果支持格式化输出 软件体积更小,并移…...
MacOS 用brew 安装、配置、启动Redis
MacOS 用brew 安装、配置、启动Redis 一、安装 brew install redis 二、启动 brew services start redis 三、用命令行检测 set name tom get name...
大型旋转机械信号分解算法模块
大型旋转机械信号分解算法模块,作为信号处理算法工具箱的主要功能模块,可应用于各类关键机械部件(轴承、齿轮、转子、联轴器等)的信号分析、故障探测、趋势劣化评估等,采用全Python语言,以B/S模式ÿ…...
Java 中的数据类型误导点!!!
在 Java 中,数据类型分为两大类:基本类型(Primitive Types) 和 引用类型(Reference Types)。它们的存储方式和行为完全不同。 1. 基本类型 Java 有 8 种基本数据类型,它们直接存储值ÿ…...
Linux--JsonCpp
1.JsonCpp 简介 JsonCpp 是一个用于 C 的 JSON 解析和生成库,支持 JSON 数据的读写、解析和序列化。它提供了简单的 API 来操作 JSON 对象、数组、字符串、数字等类型,是 C 开发中处理 JSON 数据的常用工具。 核心功能与类 JsonCpp 主要包含以下核心类…...
cv_connection (像halcon一样对区域进行打散)
主题: 分享一个自己用opencv写的小方法, 可以像halcon的connection算子一样, 对cv2.threshold得到的region进行打散, 并返回一个打散后的不相连的region的列表。 代码如下 def cv_connection(region):# he的拓扑信息为 后一…...
ConcurrentHashMap和锁
文章目录 JDK1.7的分段锁JDK1.8的volatileCAS synchronized可重入锁公平锁和非公平锁悲观锁和乐观锁 JDK1.7的分段锁 数据结构:数组(大数组 Segment 和小数组 HashEntry)链表 #mermaid-svg-dfSgz5E7tBmTbx14 {font-family:"trebuchet …...
黑马k8s(二)
集群环境搭建 1.环境规划 2.环境搭建-主机安装 主节点: 软件选择选择 基础设施服务器,这样安装系统完毕之后,会有很多软件我们可以直接使用了 系统点开,点一下完成 ip地址的设置:要跟虚拟网络编辑器,Net…...
LeetCode热题100--240.搜索二维矩阵--中等
1. 题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[1…...
python校园新闻发布管理系统
目录 技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理,难度适中…...
Spring MVC 视图解析器 (ViewResolver) 如何配置? Spring Boot 是如何自动配置常见视图解析器的?
我们来详细分析一下视图解析器 (ViewResolver) 的配置以及 Spring Boot 是如何自动配置它们的。 视图解析器 (ViewResolver) 是什么? 在 Spring MVC 中,当控制器 (Controller) 方法处理完请求并返回一个逻辑视图名 (String) 时,DispatcherS…...
LeetCode 2918.数组的最小相等和:if-else
【LetMeFly】2918.数组的最小相等和:if-else 力扣题目链接:https://leetcode.cn/problems/minimum-equal-sum-of-two-arrays-after-replacing-zeros/ 给你两个由正整数和 0 组成的数组 nums1 和 nums2 。 你必须将两个数组中的 所有 0 替换为 严格 正…...
C++修炼:stack和queue
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞,关注&am…...
欧拉计划 Project Euler 69(欧拉总计函数与最大值)题解
欧拉计划 Project Euler 69 题解 题干欧拉总计函数与最大值 思路code 题干 欧拉总计函数与最大值 小于 n n n且与 n n n互质的正整数的数量记为欧拉总计函数 φ ( n ) \varphi(n) φ(n),例如, 1 、 2 、 4 、 5 、 7 1、2、4、5、7 1、2、4、5、7和 8 …...
TCP Socket编程
最基本的Socket编程 想客户端和服务器能在网络中通信,就得使用 Socket 编程,它可以进行跨主机间通信。在创建Socket时可以选择传输层使用TCP还是UDP。相对于TCP来说,UDP更为简单,下面以TCP为例。 TCP服务端要先建立起来…...
[CLS] 向量是 BERT 类模型中一个特别重要的输出向量,它代表整个句子或文本的全局语义信息
[CLS] 向量是 BERT 类模型中一个特别重要的输出向量,它代表整个句子或文本的全局语义信息。 ✅ 什么是 [CLS] 在 BERT 模型中,每条输入前会加一个特殊的 token:[CLS](classification 的缩写)。这个 token 没有具体语义…...
47.电压跌落与瞬时中断干扰的防护改善措施
电压跌落与瞬时中断干扰的防护改善措施 1. 电压跌落与瞬时中断的影响机理2. 解决措施 1. 电压跌落与瞬时中断的影响机理 跌落发生的常见场景如下: (1)电源插头接触不良,瞬态中断即刻恢复; (2)电…...
LeetCode热题100 两数之和
目录 两数之和题目解析方法一暴力求解代码 方法二哈希代码 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 🥸🥸🥸 C语言 🐿️🐿️🐿…...
【无标题】I/O复用(epoll)三者区别▲
一、SOCKET-IO复用技术 定义:SOCKET - IO复用技术是一种高效处理多个套接字(socket)的手段,能让单个线程同时监听多个文件描述符(如套接字)上的I/O事件(像可读、可写、异常)&#x…...
【数据结构】子串、前缀
子串 (Substring) 字符串中连续的一段字符序列,例如 "abc" 是 "abcd" 的子串。 特点:必须连续,顺序不可改变。 子序列 (Subsequence) 字符串中不连续但保持顺序的字符序列,例如 "acd" 是 "…...
[docker基础四]容器虚拟化基础之 LXC
目录 一 认识LXC 二 LXC容器操作实战 1)实战目的 2)基础知识 lxc-checkconfig lxc-create lxc-start lxc-ls lxc-info lxc-attach lxc-stop lxc-destory 3)安装LXC(我的是Ubuntu) 4)操作实战 1. 检查 lxc 是否运行…...
leetcode 2918. 数组的最小相等和 中等
给你两个由正整数和 0 组成的数组 nums1 和 nums2 。 你必须将两个数组中的 所有 0 替换为 严格 正整数,并且满足两个数组中所有元素的和 相等 。 返回 最小 相等和 ,如果无法使两数组相等,则返回 -1 。 示例 1: 输入…...
RT-Thread 深入系列 Part 5:物联网与网络应用实战
摘要 本文聚焦 RT-Thread 在物联网场景下的网络应用实战,从网络协议栈集成到 MQTT/CoAP/HTTP 客户端实现,再到 mbedTLS 安全通信与 OTA 升级,最后以阿里云、腾讯云和 OneNet 平台对接为案例,完整呈现端到端的物联网解决方案落地过程。 目录 网络协议栈:LWIP 与网络设备 MQ…...
onGAU:简化的生成式 AI UI界面,一个非常简单的 AI 图像生成器 UI 界面,使用 Dear PyGui 和 Diffusers 构建。
一、软件介绍 文末提供程序和源码下载 onGAU:简化的生成式 AI UI界面开源程序,一个非常简单的 AI 图像生成器 UI 界面,使用 Dear PyGui 和 Diffusers 构建。 二、Installation 安装 文末下载后解压缩 Run install.py with python to setup…...
Linux系统入门第十二章 --Shell编程之正则表达式
一、正则表达式 之前学习了 Shell 脚本的基础用法,已经可以利用条件判断、循环等语句编辑 Shell脚本。接下来我们将开始介绍一个很重要的概念-正则表达式(RegularExpression,RE) 1.正则表达式的定义 正则表达式又称正规表达式、常规表达式。在代码中常…...
Ubuntu22.04怎么退出Emergency Mode(紧急模式)
1.使用nano /etc/fstab命令进入fstab文件下; 2.将挂载项首行加#注释掉,修改完之后使用ctrlX退出; 3.重启即可退出紧急模式!...
IC ATE集成电路测试学习——开尔文连接
首先,我们先了解一下ATE在测试时的PMU测量原理。 驱动线路和感知线路 为了提升 PMU 驱动电压的精确度,常使用 4 条线路的结构:两条驱动线路传输电流,另两条感知线路监测我们感兴趣的点(通常是DUT)的电压。…...
Ubuntu 与 Windows 双系统环境下 NTFS 分区挂载教程
Ubuntu 与 Windows 双系统环境下 NTFS 分区挂载教程 摘要 本技术指南针对Ubuntu与Windows双系统用户,系统阐述NTFS分区挂载的技术原理与操作流程。通过规范的技术说明和专业的故障排除方案,帮助用户在异构操作系统环境下实现文件系统的无缝访问&#x…...
C++学习-入门到精通-【6】指针
C学习-入门到精通-【6】指针 指针 C学习-入门到精通-【6】指针一、指针的初始化二、指针运算符地址运算符&间接引用运算符* 三、使用指针的按引用传递方式四、内置数组标准库函数的begin和end内置数组的局限性 五、使用const修饰指针 一、指针的初始化 指针在声明或赋值时…...
数据集-目标检测系列- 冥想 检测数据集 close_eye>> DataBall
数据集-目标检测系列- 冥想 检测数据集 close * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview 2)数据集训练、推理相关项目:GitHub - XIAN-HHappy/ultralytics-yolo-…...
CoAP 协议介绍及应用场景
CoAP 协议,即受限应用协议(Constrained Application Protocol),是专为资源受限的设备和网络设计的一种应用层协议 ,旨在让小型、低功耗的设备能够接入物联网(IoT),并以最小的资源与更…...
【并发编程】基于 Redis 手写分布式锁
目录 一、基于 Redis 演示超卖现象 1.1 Redis 超卖现象 1.2 超卖现象解决方案 二、Redis 的乐观锁机制 2.1 原生客户端演示 2.2 业务代码实现 三、单机部署 Redis 实现分布式锁 3.1 分布式锁的演变和升级 3.2 setnx 实现分布式锁 3.2.1 递归调用实现分布式锁 3.2.2 循…...
adb命令查询不到设备?
一、背景 -----以鸿蒙系统为例,其他系统类似--- 1、确保adb在电脑上成功安装 2 、连接手机 adb devices 列表中无显示设备 二、解决 1. 手机打开开发者模式 手机型号不同,所以选项不一样 2. 一般流程是:设置--搜索--“开发”--会出现开…...
JavaScript 数组去重:11 种方法对比与实战指南
文章目录 前言一、使用 Set 数据结构二、使用 filter indexOf三、使用 reduce 累加器四、双重 for 循环五、利用对象属性唯一性六、先排序后去重七、使用 Map 数据结构八、使用 includes 方法九、优化处理 NaN 的 filter 方法十、利用 findIndex十一.利用Set和展开运算符处理多…...
SlideLoss与FocalLoss在YOLOv8分类损失中的应用及性能分析
文章目录 一、引言二、YOLOv8 损失函数概述三、SlideLoss 详解(一)SlideLoss 的原理(二)SlideLoss 的代码实现 四、FocalLoss 分类损失函数详解(一)FocalLoss 的原理(二)FocalLoss 的…...
AI 驱动数据库交互技术路线详解:角色、提示词工程与输入输出分析
引言 在人工智能与数据库深度融合的趋势下,理解AI在数据库交互流程中的具体角色、提示词工程的运用以及各步骤的输入输出情况,对于把握这一先进技术路线至关重要。本文将对其展开详细剖析。 一、AI 在数据库交互流程中的角色 (一࿰…...
Jmeter中的BeanShell如何使用?
在JMeter中,BeanShell 是一种基于Java语法的脚本工具,可以通过编写脚本实现动态逻辑处理、变量操作、条件判断等功能。以下是BeanShell的详细使用方法和常见场景示例: 1. BeanShell组件类型 JMeter提供多种BeanShell组件,根据场…...
JDBC工具类的三个版本
一、JDBC连接数据库的7个步骤 1、加载驱动 2、获取连接 3、编写sql 4、获取执行sql的stmt对象 有两种 stmt(存在sql注入问题 字符串拼接) pstmt(预编译可以防止sql注入) 5、执行sql 拿到结果集 6、遍历结果集 7、关闭资源…...
安达发|制药车间生产计划准备性的关键影响因素及优化策略研究
在高度规范的制药行业,生产计划的准备性直接影响企业的运营效率和合规水平。根据FDA统计,2024年因生产计划不当导致的药品短缺案例增加了23%,暴露出制药企业在生产计划管理方面的系统性挑战。本文将从设备、物料、人员、环境、法规五个维度&a…...
独立按键控制LED
目录 1.独立按键介绍 2.原理图 3.C51数据运输 解释:<< >> 编辑 解释:& | 解释:^ ~ 编辑 4.C51基本语句 5.按键的跳动 6.独立按键控制LED亮灭代码 第一步: 第二步: 第三步࿱…...
【Vue】vuex的getters mapState mapGetters mapMutations mapActions的使用
目录 一、getters 二、 mapState 三、 mapGetters 四、 mapMutations 五、 mapActions 学到这儿来个小总结:四个map方法的使用 总结不易~ 本章节对我有很大的收获, 希望对你也是!!! 本节素材已上传至Gitee&…...
小程序初始化加载时间优化 步骤思考与总结
回想起来,正确的小程序初始加载时间优化步骤应该为: 一、梳理小程序初始化的步骤,以用户点击小程序为开始(尽可能靠近),以页面渲染出来的时刻为结束—也就是用户感知到的时间。 二、页面渲染时࿰…...
前端弹性布局:用Flexbox构建现代网页的魔法指南
引言:布局的进化史 在网页设计的黑暗时代(2010年前),开发者们用float、position和inline-block这些原始工具进行布局,就像用石器时代的工具建造摩天大楼。直到2012年W3C正式推出Flexbox规范,前端世界终于迎…...