matlab实现了一个优化的遗传算法,用于求解注汽站最优位置的问题
function [best_chromosome, best_fitness] = optimized_genetic_algorithm()%% 遗传算法参数初始化% 定义井信息,包括坐标、管道长度、流量、压力等wells = defineWells(); % 返回井的结构体数组N = length(wells); % 注汽井数量% 遗传算法相关参数L_chromosome = 20; % 染色体长度(x和y各10位二进制编码)M_population = 80; % 群体大小(染色体数量)p_c_initial = 0.8; % 初始交叉概率p_m_initial = 0.01; % 初始变异概率T_termination = 500; % 最大迭代代数% 几何约束X_min = 0; X_max = 1000; % X坐标范围(单位:m)Y_min = 0; Y_max = 1000; % Y坐标范围(单位:m)% 其他约束参数i_max = 0.005; % 最大允许水力坡降(单位:无量纲)%T_W_max = 323.15; % 最大允许外壁温度(K)P_R = 18.0 * 1e6; % 锅炉额定压力(Pa)X_R = 0.9; % 锅炉额定干度q_max = 100; % 最大允许单位管长热损失(W/m)DeltaP_max = 2000; % 最大允许单位管长压降(Pa/m)%% 初始化种群population = zeros(M_population, L_chromosome); % 初始化种群for i = 1:M_populationx = randi([0, 1023]); % 随机生成x坐标(0~1023对应10位二进制)y = randi([0, 1023]); % 随机生成y坐标population(i, :) = encode_position(x, y); % 将坐标编码为染色体end%% 初始化全局最优解global_best_fitness = -inf; % 全局最优适应度值(初始化为负无穷)global_best_chromosome = zeros(1, L_chromosome); % 全局最优染色体%% 遗传算法主循环for generation = 1:T_termination% 动态调整交叉概率和变异概率(随迭代次数降低)p_c = p_c_initial * (1 - generation / T_termination);p_m = p_m_initial * (1 - generation / T_termination);% 计算当前种群中每个个体的适应度fitness_values = zeros(M_population, 1);for i = 1:M_populationfitness_values(i) = fitness_function_with_constraints(population(i, :), wells, ...X_min, X_max, Y_min, Y_max, ...i_max, P_R, X_R, q_max, DeltaP_max, N);end% 归一化适应度值(防止负值溢出)fitness_values = fitness_values - min(fitness_values) + 1e-6; % 平移到非负值fitness_values = fitness_values / sum(fitness_values); % 归一化到0~1% 选择操作:轮盘赌选择生成新种群new_population = selection(population, fitness_values);% 交叉操作:通过单点交叉生成新个体new_population = crossover(new_population, p_c, L_chromosome);% 变异操作:随机翻转基因位new_population = mutation(new_population, p_m, L_chromosome);% 更新种群population = new_population;% 找到当前代的最优个体[current_best_fitness, best_index] = max(fitness_values); % 当前最优适应度if current_best_fitness > global_best_fitness% 如果当前最优优于全局最优,则更新全局最优global_best_fitness = current_best_fitness;global_best_chromosome = population(best_index, :);end% 输出当前代的最优适应度值(调试信息)fprintf('Generation %d: Best Fitness = %f\n', generation, current_best_fitness);end%% 输出最终结果best_fitness = global_best_fitness; % 全局最优适应度best_chromosome = global_best_chromosome; % 全局最优染色体% 解码最优染色体得到注汽站的最优坐标[best_x, best_y] = decode_position(best_chromosome);fprintf('最优注汽站坐标:(%d, %d)\n', best_x, best_y);fprintf('最优适应度:%f\n', best_fitness);
end%% 适应度函数:基于焓值、热损失、压降和其他约束计算适应度
function fitness = fitness_function_with_constraints(chromosome, wells, X_min, X_max, Y_min, Y_max, ...i_max, P_R, X_R, q_max, DeltaP_max, N)% 初始化变量penalty = 0; % 罚分total_loss = 0; % 总热损失total_pressure_drop = 0; % 总压降total_H = 0; % 总焓值% 解码染色体得到注汽站的坐标[x, y] = decode_position(chromosome);% 几何约束:检查注汽站是否越界if any(x < X_min | x > X_max) || any(y < Y_min | y > Y_max)penalty = penalty + 500; % 越界罚分end% 遍历每口井,计算热损失、压降、焓值和水力坡降for j = 1:Nwell = wells(j); % 当前井信息distance = well.pipe_length; % 使用预设的管道长度%% 1. 焓值计算H = calculate_H(total_loss); % 焓值计算total_H = total_H + H; % 累计焓值%% 2. 计算水力坡降% 计算水力坡降 i = lambda * (1/d) * (w^2)/(2*g)d = 0.063; % 管线内径(m)w = 1.5; % 平均水流速度(m/s)g = 9.81; % 重力加速度(m/s^2)lambda = 0.057; % 摩擦因子i = lambda * (1 / d) * (w^2) / (2 * g);% 如果水力坡降超标,增加惩罚if i > i_maxpenalty = penalty + 500 * (i - i_max); % 超标罚分end%% 3. 压降计算deltaP_total = calculate_deltaP(distance);total_pressure_drop = total_pressure_drop + deltaP_total; % 累积压降% 如果压降超过允许值,增加惩罚if deltaP_total > DeltaP_max * 1e6 % 将 DeltaP_max 由 MPa 转为 Papenalty = penalty + 1000 * (deltaP_total - DeltaP_max * 1e6); % 罚分end%% 4. 热损失计算q_loss = calculate_pipe_heat_loss(distance); % 单位热损失计算 (W)total_loss = total_loss + q_loss; % 累计总热损失% 检查单位热损失是否超标if (q_loss / distance) > q_maxpenalty = penalty + 100 * ((q_loss / distance) - q_max); % 单位热损失超标罚分endend%% 6. 检查锅炉出口压力和干度P_actual = 17.19 * 1e6; % 实际锅炉出口压力 (Pa)X_actual = 0.85; % 实际锅炉出口干度if P_actual > P_Rpenalty = penalty + 500 * (P_actual - P_R); % 锅炉压力超标罚分endif X_actual < X_Rpenalty = penalty + 500 * (X_R - X_actual); % 锅炉干度不符罚分end% 计算适应度值,考虑惩罚项fitness = total_H - penalty; % 目标是最大化焓值,最小化惩罚
end%% 焓值计算函数
function H = calculate_H(total_loss) % 给定参数h_guo = 1800; % 炉内焓值,单位可能是kJ/kgDelta_Q = total_loss * 20; % 炉内热量变化,单位可能是WG = 4.167; % 质量流量,单位可能是kg/sh1 = 296.4; %井口饱和水比焓,单位可能是kJ/kgh2 = 2375; % 井口饱和蒸汽比焓,单位可能是kJ/kg% 计算h_wellhead(井口焓值)% 根据公式h_wellhead = h_guo - Delta_Q / Gh_well = h_guo - Delta_Q / G;% 计算x(干度)% 根据公式x = (h_wellhead - h_prime) / (h_double_prime - h_prime)X_gan = (h_well - h1) / (h2 - h1);% 计算总焓值H% 根据公式H = G * (h_prime + x * (h_double_prime - h_prime))H = G * (h1 + X_gan * (h2 - h1));% 输出结果disp(['总焓值H = ', num2str(H)]);
end%% 压降计算函数
function deltaP_total = calculate_deltaP(distance) % 参数设置lambda = 0.057; % 摩擦因子D = 0.063; % 管道内径(m)omega_0 = 17.36; % 流速(m/s)rho_prime = 81; % 饱和水密度(kg/m³)rho_double_prime = 250; % 饱和水蒸气密度(kg/m³)chi = 0.859; % 计算φphi = 1 + (chi * (1 - chi) * (1000 / (rho_double_prime * omega_0))) * (rho_prime / rho_double_prime) / ...(1 + (1 - chi) * (rho_prime / rho_double_prime - 1));% 计算管道压降 ΔPmdeltaP_m = phi * lambda * (distance / D) * (omega_0^2) / 2 * rho_prime * ...(1 + chi * (rho_prime / rho_double_prime - 1)); % 管道压降% 计算阀门压降 ΔPjbdeltaP_jb = (omega_0^2) / 2 * rho_prime * ...(1 + chi * (rho_prime / rho_double_prime - 1)); % 阀门压降% 总压降deltaP_total = deltaP_m + deltaP_jb;
end %% 管道热损失计算函数
function q_loss = calculate_pipe_heat_loss(distance)% 使用管线参数计算热损失T_steam = 586.15; % 蒸汽温度(K)313℃% distance - 管道长度 (m)T_env = 293.15; % 环境温度(K)% 管道和保温层参数d_inner = 0.1; % 内径 (m)d_outer = 0.18; % 外径 (m)lambda_pipe = 0.085; % 管道导热系数 (W/(m·K))lambda_insulation1 = 0.04; % 第一层保温材料导热系数 (W/(m·K))lambda_insulation2 = 0.03; % 第二层保温材料导热系数 (W/(m·K))delta_insulation1 = 0.03; % 第一层保温材料厚度 (m)delta_insulation2 = 0.05; % 第二层保温材料厚度 (m)% 计算总热阻 (K/W)R = log(d_outer / d_inner) / (2 * pi * lambda_pipe) + ...log((d_outer + 2 * delta_insulation1 + 2 * delta_insulation2) / d_outer) / (2 * pi * lambda_insulation1) + ...log((d_outer + 2 * delta_insulation1) / (d_outer + 2 * delta_insulation1 + 2 * delta_insulation2)) / (2 * pi * lambda_insulation2);% 传热系数 (W/(m·K))alpha1 = 57; % 内壁换热系数 (W/(m²·K))alpha2 = 0.2; % 外壁换热系数 (W/(m²·K))k1 = 1 / (R + 1 / alpha1 + 1 / alpha2); % 总传热系数% 单位长度热损失 (W/m)q1 = k1 * (T_steam - T_env);% 总热损失 (KW)q_loss = q1 * distance * 1e-3; % 按距离L计算总热损失
end%% 编码函数:将坐标转换为二进制染色体
function chromosome = encode_position(x, y)% 将x和y坐标分别编码为10位二进制字符串x_bin = dec2bin(x, 10); % 将x坐标转换为10位二进制字符串y_bin = dec2bin(y, 10); % 将y坐标转换为10位二进制字符串% 合并x和y的二进制字符串chromosome_bin = [x_bin, y_bin]; % 转换为数值数组 (1和0的数组)chromosome = arrayfun(@(c) str2double(c), chromosome_bin)';
end%% 解码函数:将二进制染色体解码为坐标
function [x, y] = decode_position(chromosome)% 将二进制染色体分为x和y两部分x_bin = num2str(chromosome(1:10)'); % 前10位为x坐标y_bin = num2str(chromosome(11:20)'); % 后10位为y坐标% 将二进制字符串转换为十进制x = bin2dec(x_bin); % 解码x坐标y = bin2dec(y_bin); % 解码y坐标
end%% 选择函数(轮盘赌选择)
function new_population = selection(population, fitness_values)% 基于适应度值的轮盘赌选择% population - 当前种群 (MxL)% fitness_values - 适应度值 (Mx1)cumulative_fitness = cumsum(fitness_values); % 计算累计适应度M_population = size(population, 1); % 群体大小L_chromosome = size(population, 2); % 染色体长度new_population = zeros(M_population, L_chromosome); % 初始化新种群for i = 1:M_populationr = rand() * cumulative_fitness(end); % 随机数selected = find(cumulative_fitness >= r, 1, 'first'); % 选择个体new_population(i, :) = population(selected, :); % 复制到新种群end
end%% 交叉函数(单点交叉)
function new_population = crossover(population, p_c, L_chromosome)% 单点交叉生成新种群% population - 当前种群 (MxL)% p_c - 交叉概率% L_chromosome - 染色体长度new_population = population; % 初始化新种群for i = 1:2:size(population, 1)-1if rand() < p_ccross_point = randi(L_chromosome-1); % 随机选择交叉点% 交换基因new_population(i, cross_point+1:end) = population(i+1, cross_point+1:end);new_population(i+1, cross_point+1:end) = population(i, cross_point+1:end);endend
end%% 变异函数(随机翻转基因)
function new_population = mutation(population, p_m, L_chromosome)% 随机翻转染色体中的基因位% population - 当前种群 (MxL)% p_m - 变异概率% L_chromosome - 染色体长度new_population = population; % 初始化新种群for i = 1:size(population, 1)for j = 1:L_chromosomeif rand() < p_mnew_population(i, j) = 1 - population(i, j); % 翻转基因位endendend
end
%% 定义井信息
function wells = defineWells()% 定义井的坐标、管道长度、流量、压力、温度和干度% 每口井的信息存储在结构体中% 井1信息well1.coord = [200, 400]; % 坐标 (m)well1.pipe_length = 600; % 管道长度 (m)well1.pressure = 11.0 * 1e6; % 压力 (Pa)well1.flow_rate = 237; % 流量 (kg/s)well1.temperature = 553.15; % 温度 (K)well1.dryness = 0.5; % 干度% 井2信息well2.coord = [800, 400]; % 坐标 (m)well2.pipe_length = 800; % 管道长度 (m)well2.pressure = 12.0 * 1e6; % 压力 (Pa)well2.flow_rate = 225; % 流量 (kg/s)well2.temperature = 563.15; % 温度 (K)well2.dryness = 0.4; % 干度% 返回所有井信息wells = [well1, well2];
end
以下是对上述代码功能的详细解释:
optimized_genetic_algorithm
函数:- 功能:实现了一个优化的遗传算法,用于求解注汽站最优位置的问题。
- 主要步骤:
- 参数初始化:定义井信息,包括坐标、管道长度、流量、压力等,设置遗传算法的相关参数,如染色体长度、群体大小、交叉概率、变异概率、最大迭代代数,以及几何约束和其他约束参数。
- 种群初始化:使用
randi
函数生成随机的x
和y
坐标,将其编码为染色体,并存储在population
矩阵中。 - 全局最优解初始化:将全局最优适应度初始化为负无穷,全局最优染色体初始化为零向量。
- 遗传算法主循环:
- 动态调整交叉概率和变异概率,随迭代次数降低。
- 计算当前种群中每个个体的适应度,使用
fitness_function_with_constraints
函数,考虑了各种约束条件。 - 对适应度值进行归一化处理,将其平移到非负值并归一化到 0 到 1 范围。
- 执行选择操作,使用
selection
函数进行轮盘赌选择生成新种群。 - 执行交叉操作,使用
crossover
函数通过单点交叉生成新个体。 - 执行变异操作,使用
mutation
函数随机翻转基因位。 - 更新种群,将新生成的种群替换原种群。
- 找到当前代的最优个体,如果优于全局最优则更新全局最优。
- 输出当前代的最优适应度值作为调试信息。
- 最终结果输出:输出全局最优适应度和全局最优染色体,将最优染色体解码得到注汽站的最优坐标并输出。
fitness_function_with_constraints
函数:- 功能:计算个体的适应度,考虑了各种约束条件。
- 主要步骤:
- 初始化罚分、总热损失、总压降和总焓值。
- 解码染色体得到注汽站的坐标。
- 检查几何约束,对越界的注汽站添加罚分。
- 遍历每口井,计算焓值、水力坡降、压降和热损失:
- 对于焓值计算,调用
calculate_H
函数。 - 对于水力坡降,计算其值并对超标情况添加罚分。
- 对于压降,计算其值,将
DeltaP_max
从 MPa 转为 Pa 并检查是否超标,超标时添加罚分。 - 对于热损失,计算单位热损失,检查是否超标,超标时添加罚分。
- 对于焓值计算,调用
- 检查锅炉出口压力和干度,对不满足条件的情况添加罚分。
- 计算适应度值,考虑惩罚项,目标是最大化焓值,最小化惩罚。
calculate_H
函数:- 功能:计算焓值。
- 主要步骤:
- 给定炉内焓值、炉内热量变化、质量流量、井口饱和水比焓和井口饱和蒸汽比焓等参数。
- 根据公式计算井口焓值
h_well
、干度X_gan
和总焓值H
。 - 输出总焓值结果。
calculate_deltaP
函数:- 功能:计算总压降。
- 主要步骤:
- 设定管道参数,如摩擦因子、管道内径、流速、饱和水密度和饱和水蒸气密度等。
- 计算
φ
,管道压降deltaP_m
和阀门压降deltaP_jb
。 - 计算总压降为两者之和。
calculate_pipe_heat_loss
函数:- 功能:计算管道热损失。
- 主要步骤:
- 设定管道和保温层参数,包括蒸汽温度、环境温度、管道内径、外径、不同层的导热系数和厚度等。
- 计算总热阻,传热系数,单位长度热损失和总热损失。
encode_position
函数:- 功能:将
x
和y
坐标转换为二进制染色体。 - 主要步骤:
- 将
x
和y
坐标分别编码为 10 位二进制字符串,合并为一个 20 位二进制字符串,转换为 1 和 0 的数组。
- 将
- 功能:将
decode_position
函数:- 功能:将二进制染色体解码为
x
和y
坐标。 - 主要步骤:
- 将二进制染色体分为
x
和y
两部分,将二进制字符串转换为十进制。
- 将二进制染色体分为
- 功能:将二进制染色体解码为
selection
函数:- 功能:基于适应度值进行轮盘赌选择。
- 主要步骤:
- 计算累计适应度,根据随机数选择个体,将选中的个体复制到新种群。
crossover
函数:- 功能:进行单点交叉操作。
- 主要步骤:
- 对于相邻个体,根据交叉概率进行单点交叉,交换交叉点后的基因。
mutation
函数:- 功能:进行随机变异操作。
- 主要步骤:
- 对每个个体的每个基因位,根据变异概率随机翻转基因位。
defineWells
函数:- 功能:定义井的信息,包括坐标、管道长度、压力、流量、温度和干度,并存储在结构体中。
综上所述,该代码整体上使用遗传算法求解注汽站的最优位置,考虑了多种物理约束和性能指标,通过对注汽站位置的优化,使系统在焓值、热损失、压降等方面达到较好的性能。同时,代码包含了位置编码解码、适应度计算、选择、交叉和变异等遗传算法的关键操作,以及各种物理性能指标的计算函数。
相关文章:
matlab实现了一个优化的遗传算法,用于求解注汽站最优位置的问题
function [best_chromosome, best_fitness] optimized_genetic_algorithm()%% 遗传算法参数初始化% 定义井信息,包括坐标、管道长度、流量、压力等wells defineWells(); % 返回井的结构体数组N length(wells); % 注汽井数量% 遗传算法相关参数L_chromosome 20; …...
电商项目-基于ElasticSearch实现商品搜索功能(三)
本系列文章主要介绍基于 Spring Data Elasticsearch 实现商品搜索的后端代码,介绍代码逻辑和代码实现。 主要实现功能:根据搜索关键字查询、条件筛选、规格过滤、价格区间搜索、搜索查询分页、搜索查询排序、高亮查询。 主要应用技术:canal,…...
【Vim Masterclass 笔记12】S06L26 + L27:Vim 文本的搜索、查找及替换同步练习(含点评课)
文章目录 S06L26 Exercise 07 - Search, Find, and Replace1 训练目标2 操作指令2.1. 打开 search-practice.txt 文件2.2. 同一行内的搜索练习2.3. 当前文件内的搜索练习2.4. 单词搜索练习2.5. 全局替换练习 3 退出 Vim S06L27 同步练习点评课 写在前面 Vim 的文本检索、查找与…...
Jsoup实现实时爬取
文章目录 1.作用2.使用pom文件引入示例代码(来自官网) 3.测试代码4.上线代码控制层业务层 1.作用 获取Html文档,然后解析出需要的字段 2.使用 pom文件引入 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redi…...

如何在Ubuntu上安装Cmake
前言 本文主要阐述如何在Ubuntu22.04上面安装cmake,具体可看下面的操作。 正文 一、环境 Ubuntu22.04 cmake-3.31.4.tar.gz 二、步骤 参考这个方案: 【运维】Ubuntu如何安装最新版本的Cmake,编译安装Cmake,直接命令安装…...

图解Git——分支开发工作流《Pro Git》
分支开发工作流 由于分支管理的便捷, 才衍生出这些典型的工作模式,你可以根据项目实际情况选择。 1. 长期分支 适用于持续开发和发布周期长的项目。常见的长期分支包括: master:只保留稳定的代码,通常用于生产环境。…...
没有正确使用HTTP Range Request,导致访问Azure Blob存储的视频没有实现流式播放
引文: 组里的小伙伴在修改视频播放相关的代码,修改之前的方案使用CDN转发,可以实现流式播放,修改之后的代码因为没有正确的使用Http Range Request, 导致画面访问Azure Blob存储的视频没有实现流式播放,整理下线索在这…...

回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测
回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测 目录 回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 RVM-Adaboost相关向量机集成学习多输入单输出回归预测是一种先进的机器学习方法,用于处理…...
开发人员学习书籍推荐(C#、Python方向)
作为一名开发人员,持续学习和提升自己的技术水平是至关重要的。如今,技术不断更新换代,新的开发框架、语言和工具层出不穷。对于刚入行的开发者或希望深入某一领域的工程师来说,选对书籍是学习的捷径之一。本篇文章将推荐一些经典…...

Springboot + vue 小区物业管理系统
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...

基于深度学习的视觉检测小项目(十二) 使用线条边框和渐变颜色美化界面
到目前为止,已经建立起了基本的项目架构,样式表体系也初步具备,但是与成品的界面相比,还是差点什么。 我的界面效果图: 优秀demo的界面截图: 是的,我的界面太“平” 了,没有立体感&…...

基于OQuPy的量子编程实例探究:理论、实践与展望
基于OQuPy的量子编程探究:理论、分析与实践 一、引言 1.1 研究背景与意义 近年来,量子计算作为一种革命性的计算范式,在科学界与产业界引发了广泛关注。它依托量子力学原理,运用量子比特(qubit)进行信息处理,与传统计算相比,具备并行处理、指数级加速等显著优势,为解…...

【数据库】二、关系数据库
文章目录 二、关系数据库1 关系2 关系数据库3 完整性约束4 关系运算 二、关系数据库 1 关系 域:一组具有相同数据类型的值的集合。 笛卡尔积:所有域(域可相同)中所有取值的组合 例如:D1{1,2,3},D2{A,b}&…...

C#类型转换
C#是静态类型的语言,变量一旦声明就无法重新声明或者存储其他类型的数据,除非进行类型转换。本章的主要任务就是学习类型转换的知识。类型转换有显式的,也有隐式的。所谓显式,就是我们必须明确地告知编译器,我们要把变…...

【Vue】Vue组件--上
目录 一、组件基础 二、组件的嵌套关系 1. 基础架构 2. 嵌套 三、组件注册方式 1. 局部注册: 2. 全局注册: 四、组件传递数据 1. 基础架构 2. 传递多值 3. 动态传递数据 五、组件传递多种数据类型 1. Number 2. Array 3. Object 六、组…...

21、Transformer Masked loss原理精讲及其PyTorch逐行实现
1. Transformer结构图 2. python import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_printoptions(precision3, sci_modeFalse)if __name__ "__main__":run_code 0batch_size 2seq_length 3vocab_size 4logits torch.randn(batch…...

构建高性能网络服务:从 Socket 原理到 Netty 应用实践
1. 引言 在 Java 网络编程中,Socket 是实现网络通信的基础(可以查看我的上一篇博客)。它封装了 TCP/IP 协议栈,提供了底层通信的核心能力。而 Netty 是在 Socket 和 NIO 的基础上,进一步封装的高性能、异步事件驱动的…...
Spring Boot教程之五十六:用 Apache Kafka 消费 JSON 消息
Spring Boot | 如何使用 Apache Kafka 消费 JSON 消息 Apache Kafka 是一个流处理系统,可让您在进程、应用程序和服务器之间发送消息。在本文中,我们将了解如何使用 Apache Kafka 在 Spring Boot 应用程序的控制台上发布 JSON 消息。 为了了解如何创建 …...

Elasticsearch ES|QL 地理空间索引加入纽约犯罪地图
可以根据地理空间数据连接两个索引。在本教程中,我将向你展示如何通过混合邻里多边形和 GPS 犯罪事件坐标来创建纽约市的犯罪地图。 安装 如果你还没有安装好自己的 Elasticsearch 及 Kibana 的话,请参考如下的链接来进行安装。 如何在 Linux࿰…...
csp-j知识点:联合(Union)的基本概念
一、联合(Union)的基本概念 联合是C/C语言中一种特殊的数据结构,它的主要特点是所有成员共享同一块内存空间。这意味着在任何给定时刻,联合中只有一个成员是有效的,因为它们都占用相同的物理内存位置。联合的大小取决…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...