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

基于遗传算法的IEEE33节点配电网重构程序

一、配电网重构原理

配电网重构(Distribution Network Reconfiguration, DNR)是一项优化操作,旨在通过改变配电网中的开关状态,优化电力系统的运行状态,以达到降低网损、均衡负载、改善电压质量等目标。配电网重构的核心目标通常包括:

  1. 减少网损:配电网中的电能损耗(网损)是影响电网运行效率的关键因素,合理重构可以降低损耗,提高能源利用效率。
  2. 提高电压质量:通过优化网络拓扑结构,使电压分布更加均衡,提高供电质量。
  3. 增强系统可靠性:优化开关状态可提高系统的容错能力,增强应对故障的能力。
  4. 均衡负载:优化负荷分配,避免部分线路和变电站长期处于高负载状态,提高设备使用寿命。

1.1 典型的配电网重构方法

常见的配电网重构方法包括:

  • 数学规划法:利用线性规划、非线性规划等优化技术求解最优开关组合。
  • 启发式算法:如遗传算法(GA)、粒子群优化(PSO)、蚁群算法(ACO)等,适用于求解大规模非线性优化问题。
  • 混合优化方法:结合数学优化方法和智能优化算法,提高求解效率。

二、程序介绍

本程序基于Matlab 2021b开发,采用**遗传算法(GA)进行IEEE33节点系统的配电网重构,以最小化网损为优化目标。

程序下载链接(需安装matpower才能运行):

基于遗传算法的配电网重构程序Matlab版本:Matlab2021b,有参考文献(非复现)和程序说明。一、程序功能:实现配电网重构(仅适用于IEEE33节点,非动态)二、优化算法:遗传算法三、目标个数:1(网损最小,可在object_fun程序里修改成其他的)四、自变量个数:5(因为IEEE33节点有5个联https://mbd.pub/o/bread/aJWam51rmatpower安装步骤:

最简单的方法教你装matpower_matpower怎么安装-CSDN博客https://blog.csdn.net/zhangkaikai36/article/details/123850992?ops_request_misc=%257B%2522request%255Fid%2522%253A%252238cbf4a280fbf73974ea368611611f5d%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=38cbf4a280fbf73974ea368611611f5d&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-123850992-null-null.142^v102^pc_search_result_base8&utm_term=matpower%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B&spm=1018.2226.3001.4187

2.1 主要功能

  • 适用于 IEEE33节点系统 进行配电网重构。
  • 采用遗传算法 进行优化计算。
  • 优化目标:默认以最小化网损 为目标,用户可在 object_fun 进行修改。
  • 变量个数:由于IEEE33节点配电网中含有5个联络开关,优化问题的决策变量个数为5。

2.2 主要函数

本程序采用模块化编程,主程序调用各个子程序完成优化过程:

  1. main.m(主程序)

    • 负责调用各个模块,执行遗传算法,完成配电网重构优化计算。
  2. initialize.m(初始化种群)

    • 初始化种群(即生成初始开关状态组合)。
    • 计算初始种群的适应度。
  3. object_fun.m(目标函数计算)

    • 计算适应度,即网损值。
    • 用户可根据需要修改优化目标,例如:电压偏差最小化、负载均衡等。
  4. select.m(选择操作)

    • 采用适应度比例选择(Roulette Wheel Selection)等方法,选择适应度较高的个体进入下一代。
  5. cross.m(交叉操作)

    • 对选出的个体进行交叉操作,生成新的候选解。
  6. mutation.m(变异操作)

    • 通过随机变异,增强种群多样性,避免陷入局部最优。
  7. Iteration.m(迭代计算)

    • 负责控制遗传算法的迭代过程,记录优化结果。
  8. test_1.m(辐射性约束判断)

    • 负责检查生成的配电网是否保持辐射性(即无环结构)。
  9. test_2.m(连通性约束判断)

    • 负责检查配电网是否保持连通性,避免生成不可行解。

2.3 运行要求

  • Matlab 2021b(其他版本也兼容)。
  • Matpower工具箱(用于电力潮流计算)。
  • 命令行窗口 提供优化结果展示,包括方案详情及迭代耗时。

三、程序运行流程

3.1 运行步骤

  1. 加载Matlab和Matpower

    • 运行 startup.m 加载Matpower工具箱。
  2. 运行主程序 main.m

    • 运行 main.m 开始优化计算,程序会依次调用子模块。
  3. 观察优化过程

    • 每次迭代会在命令行窗口显示当前最优解计算耗时
  4. 获取最终结果

    • 程序最终输出最优的开关状态组合,并展示网损优化结果。

3.2 计算示例

假设初始IEEE33节点系统网损为 202.7 kW,通过遗传算法优化后,网损降低至 162.5 kW,实现了 19.8% 的损耗降低


四、扩展与优化

4.1 目标函数扩展

除了网损最小化,该程序的目标函数 object_fun.m 可修改为:

  • 电压偏差最小化

    min⁡∑i=1N(Vi−Vref)2\min \sum_{i=1}^{N} (V_i - V_{\text{ref}})^2

    其中 ViV_i 是第 ii 个节点的电压,VrefV_{\text{ref}} 是参考电压。

  • 负载均衡优化

    min⁡∑i=1N∣Si−Savg∣\min \sum_{i=1}^{N} \left| S_{i} - S_{\text{avg}} \right|

    其中 SiS_i 为第 ii 个支路的负载功率,SavgS_{\text{avg}} 为平均负载。

4.2 适用于动态配电网重构

目前该程序仅适用于静态配电网重构,可扩展为:

  • 时间序列分析:考虑每日负荷变化,不同时间段动态调整开关状态。
  • 分布式电源(DG)接入:优化DG接入后的配电网结构,最大化可再生能源利用。

4.3 其他优化算法

虽然当前程序采用遗传算法(GA),但可替换为:

  • 粒子群优化(PSO):收敛速度快,适合大规模配电网优化。
  • 蚁群算法(ACO):适用于组合优化问题,如配电网动态重构。

五、运行结果及部分代码

5.1部分代码

%% 程序介绍
%-----------------------------------------------------------------%
%程序功能:配电网重构
%程序算法:遗传算法。
%程序适用:仅IEEE33节点,目标函数仅为1。
%目标:配电网有功损耗最小
%选择方法:轮盘赌选择法
%-----------------------------------------------------------------%
%参数说明
%f_num:目标函数个数
%x_num:控制量个数
%pop:种群数量
%individual:个体
%x_min,x_max:编码范围
%pc:交叉概率
%pm:变异概率
%max_gen:最大迭代次数
%-----------------------------------------------------------------%
%% 清空环境
close all;
clear;
clc;
%% 配电网参数
mpopt = mpoption;
mpopt = mpoption(mpopt, 'VERBOSE', 0, 'OUT_ALL', 0); %潮流算法及显示设置 %牛拉法
mpc = loadcase('case33bw'); %载入33节点数据,需要安装matpower
nbus = size(mpc.bus, 1); %节点数
nbranch = length(find(mpc.branch(:, 11) == 1)); %支路数
contactbranch = length(find(mpc.branch(:, 11) == 0)); %联络开关数
h1 = [2, 3, 4, 5, 6, 7, 18, 19, 20, 33]; %环网1                               10个开关
h2 = [9, 10, 11, 12, 13, 14, 34]; %环网2                                      7个开关
h3 = [6, 7, 8, 15, 16, 17, 25, 26, 27, 28, 29, 30, 31, 32, 34, 36]; %环网3    16个开关
h4 = [8, 9, 10, 11, 21, 33, 35]; %环网4                                       7个开关
h5 = [3, 4, 5, 22, 23, 24, 25, 26, 27, 28, 37]; %环网5                        11个开关
result_previous = runpf(mpc, mpopt); %重构前潮流计算结果
ploss_previous_sum = sum(abs(result_previous.branch(:, 14) + result_previous.branch(:, 16))); %重构前配电网总有功损耗%% 遗传算法参数
pop = 500; %种群规模;可修改
max_gen = 50; %进化代数;可修改
pc = 0.7; %交叉概率;可修改
pm = 0.05; %变异概率;可修改
x_num = contactbranch; %自变量个数%% 生成所有开关组成的组合。86240种
tic;
a = cell(1, 5);
[a{:}] = deal(h1, h2, h3, h4, h5); %给元胞数组赋值row = 1; %行数
y = [];
global nnn; %组合序号
nnn = 1;
global H; %存放所有组合
H = {};for j = a{row}    %aaa第一个元胞数组中的数循环y(row) = j;Iteration(a, row, x_num, y);
end
H = H';
H = cell2mat(H); %元胞数组转化为矩阵
disp('-----------------------------------------');
disp(['已生成所有开关组合,共 ' num2str(size(H, 1)) ' 种。']);
toc;
disp('-----------------------------------------');
%% 辐射性判断。55750种,判断是否有环路
tic;
individual = zeros(size(H));
for h1 = 1 : size(H, 1)individual(h1, :) = test_1(H(h1, :));
end
individual(all(individual == 0, 2), :) = []; %去掉0行,即重复开关
%去掉重复组合
individual = sort(individual, 2);
individual = unique(individual, 'rows', 'stable');
disp(['辐射性判断完成,剩余 ' num2str(size(individual, 1)) ' 种组合。']);
toc;
disp('-----------------------------------------');
%% 连通性判断。50751种,去除断路的情况
tic;
for h2 = 1 : size(individual, 1)[individual(h2, :), branch{h2, 1}] = test_2(individual(h2, :));
end
individual(all(individual == 0, 2), :) = []; %去掉0行,即不符合条件的
branch(cellfun(@isempty, branch)) = [];
disp(['连通性判断完成,剩余 ' num2str(size(individual, 1))  ' 种组合。']);
toc;
disp('-----------------------------------------');%% 初始化种群
tic;
% 从开关组合中随机选取pop种
chromo.individual = zeros(pop, x_num); %存储个体
chromo.branch = cell(pop, 1); %存储重构后branch矩阵信息
chromo.fitness = zeros(pop, 1); %存储适应度
% 生成种群
[chromo.individual, chromo.branch] = initialize(pop, individual, branch);
for i = 1 : pop[chromo.fitness(i), ~, ~ ] = object_fun(chromo.branch(i)); %计算个体适应度
end%找最好的染色体
[best_fitness, best_index] = min(chromo.fitness);
best_individual = chromo.individual(best_index, :); %最好的染色体
best_branch = cell2mat(chromo.branch(best_index)); %最好的拓扑图信息
% avg_fitness = sum(chromo.fitness) / pop; %染色体的平均适应度
disp('-------------------------------------')
disp('种群初始化完成。')
toc;
disp('-------------------------------------')
trace = zeros(max_gen, 1 + x_num); %存储最优fitness
every_best_branch = cell(max_gen, 1);%% 进化开始
gen = 0;
basetime = datetime('now');
while gen < max_gen% 选择操作chromo = select(chromo, pop);% 交叉操作chromo = cross(pop, pc, x_num, chromo);% 变异操作chromo = mutation(pop, pm, x_num, chromo);% 计算适应度for j = 1 : pop[chromo.fitness(j), ~, ~] = object_fun(chromo.branch(j));end%找到最小和最大适应度的染色体及它们在种群中的位置[new_best_fitness, new_best_index] = min(chromo.fitness);[worest_fitness, worest_index] = max(chromo.fitness); %worst最坏的% 代替上一次进化中最好的染色体if best_fitness > new_best_fitnessbest_fitness = new_best_fitness;best_individual = chromo.individual(new_best_index, :);best_branch = cell2mat(chromo.branch(new_best_index));endchromo.individual(worest_index, :) = best_individual;chromo.branch{worest_index, 1} = best_branch;chromo.fitness(worest_index) = best_fitness;trace(gen + 1, 1) = best_fitness; %记录每一代进化中最好的适应度trace(gen + 1, 2 : (2 + x_num - 1)) = best_individual; %记录每一代进化中最好的染色体every_best_branch{gen + 1, 1} = best_branch; %记录每一代进化中最好的支路信息gen = gen + 1;nowtime = datetime('now');disp(['第' num2str(gen ) '次迭代,时间已过' datestr(nowtime - basetime, 'HH:MM:SS.FFF')])
end
%进化结束%% 结果(网损、电压、开关)
%重构前
reconstruction_before_ploss = ploss_previous_sum; %有功损耗
reconstruction_before_voltage = result_previous.bus(:, 8); %电压
reconstruction_before_switch = [33, 34, 35, 36, 37]; %开关%重构后
reconstruction_after_ploss = trace(max_gen, 1); %有功损耗
[~, reconstruction_after_voltage, ~] = object_fun(every_best_branch(max_gen)); %电压
reconstruction_after_switch = trace(max_gen, 2 : end); %开关
%% 窗口显示
disp('---------------------------------------------------------------------')
disp(['配电网重构前:打开 ' num2str(reconstruction_before_switch), ' 开关,此时配电网总有功网损:' num2str(reconstruction_before_ploss) 'MW']);
disp('---------------------------------------------------------------------')
disp('---------------------------------------------------------------------')
disp(['配电网重构后:打开 ' num2str(reconstruction_after_switch), ' 开关,此时配电网总有功网损:' num2str(reconstruction_after_ploss) 'MW']);
disp('---------------------------------------------------------------------')
%% 绘图
figure(1)
grid on
hold on
plot((1 : max_gen)', trace(:, 1), 'b-');
title(['最优解迭代图  ' '终止代数=' num2str(max_gen)]);
xlabel('迭代次数', 'fontsize', 12);
ylabel('配电网总有功网损/MW');figure(2)
grid on
hold on
plot((1 : nbus)', reconstruction_before_voltage, 'b-o');
plot((1 : nbus)', reconstruction_after_voltage, 'r-o');
title('改造前后节点电压 ');
xlabel('节点', 'fontsize', 12);
ylabel('节点电压 p.u.');
legend('改造前节点电压', '改造后节点电压');

5.2运行结果

六、结论

本报告详细介绍了基于Matlab的IEEE33节点配电网重构程序,包括基本原理、程序结构、运行流程及优化扩展。该程序通过遗传算法 最小化网损,并严格遵循辐射性连通性 约束,提供了一种高效、模块化 的配电网优化工具。未来可进一步扩展至动态重构、多目标优化智能优化算法融合 领域,提高电网运行的智能化水平。

相关文章:

基于遗传算法的IEEE33节点配电网重构程序

一、配电网重构原理 配电网重构&#xff08;Distribution Network Reconfiguration, DNR&#xff09;是一项优化操作&#xff0c;旨在通过改变配电网中的开关状态&#xff0c;优化电力系统的运行状态&#xff0c;以达到降低网损、均衡负载、改善电压质量等目标。配电网重构的核…...

manus对比ChatGPT-Deep reaserch进行研究类学术相关数据分析!谁更胜一筹?

没有账号&#xff0c;只能挑选一个案例 一夜之间被这个用全英文介绍全华班出品的新爆款国产AI产品的小胖刷频。白天还没有切换语言的选项&#xff0c;晚上就加上了。简单看了看团队够成&#xff0c;使用很长实践的Monica创始人也在其中。逐渐可以理解&#xff0c;重心放在海外产…...

线程通信---java

线程 我们知道&#xff0c;线程是进程的最小执行单位&#xff0c;一个进程可以拥有多个线程&#xff0c;那么就会引入两个问题&#xff1a; 多个线程之间如何进行通信多个线程对同一个数据进行操作&#xff0c;如何保证程序正确执行&#xff0c;也就是线程安全问题 线程的常…...

python面试常见题目

1、python 有几种数据类型 数字:整形 &#xff08;int&#xff09;,浮点型 &#xff08;float&#xff09;布尔 &#xff08; bool&#xff09;:false true字符串 &#xff08;string&#xff09;列表 &#xff08;list&#xff09;元组 &#xff08;tuple&#xff09;字典 &…...

Python中与字符串操作相关的30个常用函数及其示例

以下是Python中与字符串操作相关的30个常用函数及其示例&#xff1a; 1. str.capitalize() 将字符串的第一个字符大写&#xff0c;其余字符小写。 s "hello world" print(s.capitalize()) # 输出: Hello world2. str.lower() 将字符串中的所有字符转换为小写。…...

2025年渗透测试面试题总结-小某鹏汽车-安全工程师(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 小鹏汽车-安全工程师 一、XXE漏洞与SSRF漏洞 1. XXE&#xff08;XML External Entity&#xff09;漏洞…...

kafka + flink +mysql 案例

假设你有两个Kafka主题&#xff1a;user_activities_topic 和 product_views_topic&#xff0c;并且你希望将user_activities_topic中的数据写入到user_activities表&#xff0c;而将product_views_topic中的数据写入到product_views表。 maven <dependencies><!-- …...

Windows下配置Flutter移动开发环境以及AndroidStudio安装和模拟机配置

截止 2025/3/9 &#xff0c;版本更新到了 3.29.1 &#xff0c;但是为了防止出现一些奇怪的bug&#xff0c;我安装的还是老一点的&#xff0c;3.19&#xff0c;其他版本的安装同理。AndroidStudio用的是 2024/3/1 版本。 — 1 环境变量&#xff08;Windows&#xff09; PUB_H…...

【工具类】Springboot 项目日志打印项目版本和构建时间

博主介绍&#xff1a;✌全网粉丝22W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

p5.js:模拟 n个彩色小球在一个3D大球体内部弹跳

向 豆包 提问&#xff1a;编写一个 p5.js 脚本&#xff0c;模拟 42 个彩色小球在一个3D大球体内部弹跳。每个小球都应留下一条逐渐消失的轨迹。大球体应缓慢旋转&#xff0c;并显示透明的轮廓线。请确保实现适当的碰撞检测&#xff0c;使小球保持在球体内部。 cd p5-demo copy…...

RISC-V医疗芯片工程师复合型转型的路径与策略

从RISC-V到医疗芯片:工程师复合型转型的路径与策略 一、引言 1.1 研究背景 在科技快速发展的当下,芯片技术已然成为推动各行业进步的核心驱动力之一。其中,RISC-V 架构作为芯片领域的新兴力量,正以其独特的优势迅速崛起,对整个芯片产业的格局产生着深远影响。RISC-V 架…...

HTML 文本格式化

HTML 文本格式化 在构建网页的过程中&#xff0c;文本的格式化是一个至关重要的环节。HTML&#xff08;HyperText Markup Language&#xff09;提供了丰富的标签和属性来帮助我们实现各种文本格式化的需求。本文将详细介绍HTML中常见的文本格式化方法&#xff0c;包括字体、颜…...

基于RNN+微信小程序+Flask的古诗词生成应用

项目介绍 平台采用B/S结构&#xff0c;后端采用主流的Flask框架进行开发&#xff0c;古诗词生成采用RNN模型进行生成&#xff0c;客户端基于微信小程序开发。是集成了Web后台开发、微信小程序开发、人工智能&#xff08;RNN&#xff09;等多个领域的综合性应用&#xff0c;是课…...

【算法】图论 —— Dijkstra算法 python

引入 求非负权边的单源最短路 时间复杂度 O( m l o g n mlogn mlogn) 模板 https://www.luogu.com.cn/problem/P4779 import heapq as hq def dijkstra(s): # dis表示从s到i的最短路 dis [float(inf)] * (n 1) # vis表示i是否出队列 vis [0] * (n 1) q [] dis[s…...

Java:LocalDatTime(代替Calendar)、ZoneDateTime(时区时间)

文章目录 Local(代替Calendar)方法&#xff1a;获取当前代码 LocalDate&#xff08;年月日星期&#xff09;LocalTime&#xff08;时分秒纳秒&#xff09;LocalDateTime(最常用&#xff1a;年月日时分秒纳秒)ZoneId 时区表示方法 ZoneDateTime(时区时间)方法世界标准时间&#…...

HOW - React 如何在在浏览器绘制之前同步执行 - useLayoutEffect

目录 useEffect vs useLayoutEffectuseEffectuseLayoutEffect主要区别总结选择建议注意事项 useLayoutEffect 使用示例测量 DOM 元素的尺寸和位置示例&#xff1a;自适应弹出框定位 同步更新样式以避免闪烁示例&#xff1a;根据内容动态调整容器高度 图像或 Canvas 绘制前的准备…...

PyTorch系列教程:编写高效模型训练流程

当使用PyTorch开发机器学习模型时&#xff0c;建立一个有效的训练循环是至关重要的。这个过程包括组织和执行对数据、参数和计算资源的操作序列。让我们深入了解关键组件&#xff0c;并演示如何构建一个精细的训练循环流程&#xff0c;有效地处理数据处理&#xff0c;向前和向后…...

VS2019,VCPKG - 为VS2019添加VCPKG

文章目录 VS2019,VCPKG - 为VS2019添加VCPKG概述笔记前置条件迁出vcpkg到本地验证库安装更新已经安装的库删除指定的包安装VS2019能用的boostvcpkg 2025.02.14 版本可以给VS2019用用VCPKG的好处备注END VS2019,VCPKG - 为VS2019添加VCPKG 概述 开源工程用到了VCPKG管理的包。…...

linux下 jq 截取json文件信息

背景&#xff1a;通过‘登录名‘ 获取该对象的其他个人信息如名字。 环境准备&#xff1a;麒麟操作系统V10 jq安装包 jq安装包获取方式&#xff1a;yum install jq 或 使用附件中的rpm 或 git自行下载 https://github.com/stedolan/jq/releases/download/ 实现过程介绍&am…...

测试大语言模型在嵌入式设备部署的可能性-ollama本地部署测试

前言 当今各种大语言模型百花齐放&#xff0c;为了方便使用者更加自由的使用大模型&#xff0c;将大模型变成如同棒球棍一样每个人都能用&#xff0c;并且顺手方便的工具&#xff0c;本地私有化具有重要意义。 本次测试使用ollama完成模型下载&#xff0c;过程简单快捷。 1、进…...

C语言基础系列【21】memcpy、memset

博主介绍&#xff1a;程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章&#xff0c;首发gzh&#xff0c;见文末&#x1f447;&#x1f…...

云曦春季开学考复现(2025)

Crypto 划水的dp和dq 下载附件后是简单的RSA算法题&#xff0c;之所以说简单是因为给了公钥e 趁热打铁&#xff0c;昨天刚学的RSA&#xff0c;既然有p有q&#xff0c;也有e&#xff0c;而np*q&#xff0c;可以算出欧拉函数值phi&#xff08;p-1&#xff09;*&#xff08;q-1&…...

探秘 Netty 通信中的 SslHandler 类:保障网络通信安全的基石

引言 在当今数字化时代&#xff0c;网络安全是每一个应用程序都必须重视的关键因素。尤其是在数据传输过程中&#xff0c;防止数据被窃取、篡改至关重要。Netty 作为一个高性能的网络编程框架&#xff0c;为开发者提供了强大的功能来构建可靠的网络应用。其中&#xff0c;SslH…...

Llama factory微调后的模型怎么通过ollama发布

接上一篇博客:用Llama Factory单机多卡微调Qwen2.5时报torch.OutOfMemoryError: CUDA out of memory的解决办法_llama-factory cuda out of memory-CSDN博客 把Lora模块和其基模型merge到一起之后,就可以通过ollama之类的框架提供服务了。不过还是有些格式转换的工作要做: …...

ubuntu 20.04下ZEDmini安装使用

提前安装好显卡驱动和cuda&#xff0c;如果没有安装可以参考我的这两篇文章进行安装&#xff1a; ubuntu20.04配置YOLOV5&#xff08;非虚拟机&#xff09;_ubuntu20.04安装yolov5-CSDN博客 ubuntu20.04安装显卡驱动及问题总结_乌班图里怎么备份显卡驱动-CSDN博客 还需要提前…...

CmBacktrace的学习跟移植思路

学习移植CmBacktrace需要从理解其核心功能、适用场景及移植步骤入手&#xff0c;结合理论学习和实践操作。以下是具体的学习思路与移植思路&#xff1a; 一、学习思路 理解CmBacktrace的核心功能 CmBacktrace是针对ARM Cortex-M系列MCU的错误追踪库&#xff0c;支持自动诊断Har…...

Android Glide 缓存模块源码深度解析

一、引言 在 Android 开发领域&#xff0c;图片加载是一个极为常见且关键的功能。Glide 作为一款被广泛使用的图片加载库&#xff0c;其缓存模块是提升图片加载效率和性能的核心组件。合理的缓存机制能够显著减少网络请求&#xff0c;降低流量消耗&#xff0c;同时加快图片显示…...

蓝桥杯备赛:炮弹

题目解析 这道题目是一道模拟加调和级数&#xff0c;难的就是调和级数&#xff0c;模拟过程比较简单。 做法 这道题目的难点在于我们在玩这个跳的过程&#xff0c;可能出现来回跳的情况&#xff0c;那么为了解决这种情况&#xff0c;我们采取的方法是设定其的上限步数。那么…...

死锁问题分析工具

使用 gdb 调试 gdb ./your_program (gdb) run (gdb) thread apply all bt还可以分析pthread_mutex内部&#xff0c;查看owen字段分析哪个线程占用的锁&#xff0c;一个可能的 pthread_mutex 内部结构可以大致表示为&#xff1a; typedef struct pthread_mutex_t {int state; …...

装饰器模式--RequestWrapper、请求流request无法被重复读取

目录 前言一、场景二、原因分析三、解决四、更多 前言 曾经遇见这么一段代码&#xff0c;能看出来是把request又重新包装了一下&#xff0c;核心信息都不会改变 后面了解到这叫 装饰器模式&#xff08;Decorator Pattern&#xff09; &#xff1a;也称为包装模式(Wrapper Pat…...

MTK Android12 桌面上显示文件管理器图标

文章目录 需求解决 需求 在MTK平台上&#xff0c;Android12的文件管理器图标未显示在桌面&#xff0c;但在设置里面可以看到&#xff0c;文件管理器是安装的。根据客户要求&#xff0c;需要将文件管理器的图标显示在桌面上。解决 路径&#xff1a;packages/apps/DocumentsUI/…...

SpringBoot实现文件上传

1. 配置文件上传限制 application.yml spring:servlet:multipart:max-file-size: 10MBmax-request-size: 10MB2. 创建文件上传控制器 import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import…...

【开源免费】基于SpringBoot+Vue.JS青年公寓服务平台(JAVA毕业设计)

本文项目编号 T 233 &#xff0c;文末自助获取源码 \color{red}{T233&#xff0c;文末自助获取源码} T233&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

django中视图作用和视图功能 以及用法

在 Django REST Framework(DRF)中,视图(View)是处理 HTTP 请求并返回响应的核心组件。DRF 提供了多种视图类,适用于不同的场景和需求。以下是 DRF 中常见的视图类及其作用、使用方法的详细说明: 一、DRF 视图的分类 DRF 的视图可以分为以下几类: 基于函数的视图(Func…...

大语言模型在患者交互任务中的临床使用评估框架

An evaluation framework for clinical use of large language models in patient interaction tasks An evaluation framework for clinical use of large language models in patient interaction tasks | Nature Medicine 2025.1 收到时间&#xff1a;2023 年 8 月 8 日 …...

Python—类class复习

Python——类&#xff08;class&#xff09;复习 根据类来创建对象的方法被称为实例化 因此学会使用类&#xff08;class&#xff09;来进行编程就是初步进入面向对象编程的大门 1.1 创建和使用类 首先编写一个小狗的简单类Dog&#xff0c;它表示的不是特定的小狗&#xff…...

QT | 信号与槽(超详解)

前言 对qt信号和槽的详细解释 &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&am…...

Codecraft-17 and Codeforces Round 391 E. Bash Plays with Functions 积性函数

题目链接 题目大意 定义函数 f r ( n ) f_r(n) fr​(n) : 在 r 0 r0 r0时&#xff0c;为满足 p p p ⋅ \cdot ⋅ q n qn qn , 且 g c d ( p , q ) 1 gcd(p,q)1 gcd(p,q)1 的有序对 ( p , q ) (p,q) (p,q) 个数&#xff1b;在 r r r ≥ \geq ≥ 1 1 1时&#xff0…...

粉尘环境下的智能生产革命 ——助力矿山行业实现高效自动化作业

在矿山开采领域&#xff0c;运输系统是保障生产连续性的核心环节。然而&#xff0c;粉尘弥漫、环境恶劣、设备分散等问题&#xff0c;长期制约着矿山运输的效率与安全性。传统的集中式控制系统难以适应复杂工况&#xff0c;而远程分布式 IO 模块与 PLC 的深度融合&#xff0c;正…...

更新vscode ,将c++11更新到c++20

要在CentOS系统中安装最新版本的GCC&#xff0c;你可以使用SCL&#xff08;Software Collections&#xff09;仓库&#xff0c;它提供了开发工具的最新版本。以下是安装步骤&#xff1a; 1、 添加SCL仓库&#xff1a; 首先&#xff0c;添加CentOS的SCL仓库&#xff0c;该仓库…...

Numpy实训:读取并分析iris数据集中鸢尾花的相关数据

实训中相关数据集&#xff0c;请联系博主邮箱"1438077481qq.com"&#xff0c;在邮箱内发送"iris.csv"即可快速获取&#xff0c;无任何套路&#xff0c;秉承开源精神&#xff01; 1、导入模块 #导入模块 import numpy as np import csv 2、获取数据 iri…...

nats jetstream server code 分析

对象和缩写 jetstream导入两个对象&#xff1a;stream and consumer&#xff0c;在stream 之上构造jetstreamapi。在nats代码中&#xff0c;以下是一些常见的缩写 1.mset is stream 2.jsX is something of jetstream 3.o is consumer 代码分析 对于producer &#xff0c;发送…...

德鲁伊连接池

德鲁伊连接池&#xff08;Druid Connection Pool&#xff09;是一个开源的Java数据库连接池项目&#xff0c;用于提高数据库连接的性能和可靠性。德鲁伊连接池通过复用数据库连接、定时验证连接的可用性、自动回收空闲连接等机制&#xff0c;有效减少了数据库连接的创建和销毁开…...

Python从入门到精通1:FastAPI

引言 在现代 Web 开发中&#xff0c;API 是前后端分离架构的核心。FastAPI 凭借其高性能、简洁的语法和自动文档生成功能&#xff0c;成为 Python 开发者的首选框架。本文将从零开始&#xff0c;详细讲解 FastAPI 的核心概念、安装配置、路由设计、请求处理以及实际应用案例&a…...

C语言经典案例-菜鸟经典案例

1.输入某年某月某日&#xff0c;判断这一天是这一年的第几天&#xff1f; //输入某年某月某日&#xff0c;判断这一天是这一年的第几天&#xff1f; #include <stdio.h>int isLeapYear(int year) {// 闰年的判断规则&#xff1a;能被4整除且&#xff08;不能被100整除或…...

SpringBoot过滤器(Filter)的使用:Filter接口、FilterRegistrationBean类配置、@WebFilter注释

1、过滤器(Filter)的介绍 Spring Boot 的过滤器用于对数据进行过滤处理。通过 Spring Boot 的过滤器,程序开发人员不仅可以对用户通过 URL 地址发送的请求进行过滤处理(例如:过滤一些错误的请求或者请求中的敏感词等),而且可以对服务器返回的数据进行过滤处理(例如:压…...

采用内存局部性分配有什么好处?

内存分配时的局部性分配&#xff08;Locality of Allocation&#xff09;是指将相关的内存对象分配在相邻或相近的内存区域中。这种分配策略在现代计算机系统中具有显著的好处&#xff0c;主要体现在以下几个方面&#xff1a; 1. 提高缓存命中率 现代计算机系统依赖于多级缓存…...

一周热点-OpenAI 推出了 GPT-4.5,这可能是其最后一个非推理模型

在人工智能领域,大型语言模型一直是研究的热点。OpenAI 的 GPT 系列模型在自然语言处理方面取得了显著成就。GPT-4.5 是 OpenAI 在这一领域的又一力作,它在多个方面进行了升级和优化。 1 新模型的出现 GPT-4.5 目前作为研究预览版发布。与 OpenAI 最近的 o1 和 o3 模型不同,…...

分布式ETCD面试题及参考答案

目录 ETCD 适用的六大场景及其实现原理 ETCD 与 Redis 在分布式锁实现上的差异 解释 ETCD 的 Watch 机制及其应用场景 ETCD 如何实现服务发现?与 ZooKeeper 有何不同? ETCD 实现服务发现的方式 与 ZooKeeper 的不同 ETCD 的键值存储模型支持哪些操作? 为什么 ETCD 适…...

MySQL进阶-关联查询优化

采用左外连接 下面开始 EXPLAIN 分析 EXPLAIN SELECT SQL_NO_CACHE * FROM type LEFT JOIN book ON type.card book.card; 结论&#xff1a;type 有All ,代表着全表扫描&#xff0c;效率较差 添加索引优化 ALTER TABLE book ADD INDEX Y ( card); #【被驱动表】&#xff0…...