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; …...
八股学习 Redis
八股学习 Redis 使用场景常见问题问题1、2示例场景缓存穿透解决方案一解决方案二 问题3示例场景缓存击穿解决方案 问题4示例场景缓存雪崩解决方案 问题5示例场景双写一致性强一致方案允许延时一致方案 问题6RDB方式AOF方式两种方式对比 问题7示例场景惰性删除定期删除 使用场景…...
C++ 中 :: 的各种用法
C 中 :: 的各种用法 文章目录 C 中 :: 的各种用法1. 全局作用域解析示例:访问全局变量 2. 类作用域2.1. 访问类的静态成员示例:访问静态成员2.2. 定义类外成员函数示例:定义类外成员函数 3. 命名空间作用域3.1. 访问命名空间中的成员示例&…...
【Redis】初识分布式系统
目录 单机架构 分布式系统 应用数据分离架构 应用服务集群架构 读写分离/主从分离架构 冷热分离架构 垂直分库 微服务架构 分布式名词概念 本篇博文,将根据分布式系统的演进一步一步介绍每一种架构的形式,最后为大家总结了一些分布式中常用的…...
【EI 会议征稿】第四届材料工程与应用力学国际学术会议(ICMEAAE 2025)
2025 4th International Conference on Materials Engineering and Applied Mechanics 重要信息 大会官网:www.icmeaae.com 大会时间:2025年3月7-9日 大会地点:中国西安 截稿时间:2025年1月24日23:59 接受/拒稿通知…...
redisson 连接 redis5报错 ERR wrong number of arguments for ‘auth‘ command
依赖版本 org.redisson:redisson-spring-boot-starter:3.25.2 现象 启动报错 org.redisson.client.RedisException: ERR wrong number of arguments for ‘auth’ command. channel: [xxx] command: (AUTH), params: (password masked) 原因 redis6以下版本认证参数不包含用…...
GPT(General Purpose Timer)定时器
基本概念: 在嵌入式系统中,General Purpose Timer(GPT)是一种非常重要的硬件组件,用于提供定时功能。 定义:通用定时器是一种能够提供精确时间测量和控制功能的电子设备或电路模块。它可以产生周期性的时…...
Node.js - HTTP
1. HTTP请求 HTTP(Hypertext Transfer Protocol,超文本传输协议)是客户端和服务器之间通信的基础协议。HTTP 请求是由客户端(通常是浏览器、手机应用或其他网络工具)发送给服务器的消息,用来请求资源或执行…...
Vue数据响应式,reaction,ref的使用
目录 数据响应式 如何使用 reactionyu区别 数据响应式 什么是数据响应式 简单来说就是当数据变了的时候,页面的展示也会跟着发生变化。 在Vue当中我们有两个函数可以实现这个功能reaction,ref 如何使用 首先这两个函数在是在Vue对象中我们可以先对…...
【Vue实战】Vuex 和 Axios 拦截器设置全局 Loading
目录 1. 效果图 2. 思路分析 2.1 实现思路 2.2 可能存在的问题 2.2.1 并发请求管理 2.2.2 请求快速响应和缓存带来的问题 3. 代码实现 4. 总结 1. 效果图 如下图所示,当路由变化或发起请求时,出现 Loading 等待效果,此时页面不可见。…...
JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)
1,ZGC(JDK21之前) ZGC 的核心是一个并发垃圾收集器,所有繁重的工作都在Java 线程继续执行的同时完成。这极大地降低了垃圾收集对应用程序响应时间的影响。 ZGC为了支持太字节(TB)级内存,设计了基…...
在 Ubuntu 上安装和配置 Redis
在 Ubuntu 上安装和配置 Redis,并使用发布-订阅(Pub/Sub)功能,可以按照以下步骤进行: 一、安装 Redis 1. 更新包列表 首先,更新本地的包列表以确保获取到最新的软件包信息: sudo apt update…...
【WPS】【WORDEXCEL】【VB】实现微软WORD自动更正的效果
1. 代码规范方面 添加 Option Explicit:强制要求显式声明所有变量,这样可以避免因变量名拼写错误等情况而出现难以排查的逻辑错误,提高代码的健壮性。使用 On Error GoTo 进行错误处理:通过设置错误处理机制,当代码执行…...
相机SD卡照片数据不小心全部删除了怎么办?有什么方法恢复吗?
前几天,小编在后台友收到网友反馈说他在整理相机里的SD卡,原本是想把那些记录着美好瞬间的照片导出来慢慢欣赏。结果手一抖,不小心点了“删除所有照片”,等他反应过来,屏幕上已经显示“删除成功”。那一刻,…...
【机器学习:十四、TensorFlow与PyTorch的对比分析】
1. 发展背景与社区支持 1.1 TensorFlow的背景与发展 TensorFlow是Google于2015年发布的开源深度学习框架,基于其前身DistBelief系统。作为Google大规模深度学习研究成果的延续,TensorFlow从一开始就定位为生产级框架,强调跨平台部署能力和性…...
从零搭建一个Vue3 + Typescript的脚手架——day1
1.开发环境搭建 (1).配置vite vite简介 Vite 是一个由尤雨溪开发的现代化前端构建工具,它利用了浏览器对 ES 模块的原生支持,极大地提升了开发服务器的启动速度和热更新效率。Vite 不仅适用于 Vue.js,还支持 React、Svelte 等多种框架&…...
unity打包sdk热更新笔记
基础打包需要知识: 安装包大小不要超过2G,AB包数量过多会影响加载和构建,多次IO,用Gradle打包,要支持64位系统,不同的渠道包:让做sdk的人支持,提供渠道包的打包工具 配置系统环境变量…...
算法-贪心算法简单介绍
下面是贪心算法视频课的导学内容. 目录 1. 什么是贪心算法?2. 贪心算法简单的三个例子:1. 找零问题2. 最小路径和问题3. 背包问题 3. 贪心算法的特点4. 贪心算法学习的方式? 1. 什么是贪心算法? 简单来说, 我们称以局部最优进而使得全局最优的一种思想实现出来的算法为贪心…...
1Hive概览
1Hive概览 1hive简介2hive架构3hive与Hadoop的关系4hive与传统数据库对比5hive的数据存储 1hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。 其本质是将SQL转换为MapReduce/Spark的任务进…...
Linux SUID提权
文章目录 1. SUID/SGID2. 查找SUID文件3. SUID/SGID提权3.1 SUID配置不当3.2 SUID systemctl提权3.3 $PATH变量劫持 参考 1. SUID/SGID SUID(Set User ID)意味着如果某个用户对属于自己的文件设置了这种权限,那么其他用户在执行这一脚本时也…...
RabbitMQ确保消息可靠性
消息丢失的可能性 支付服务先扣减余额和更新支付状态(这俩是同步调用),然后通过RabbitMq异步调用支付服务更新订单状态。但是有些情况下,可能订单已经支付 ,但是更新订单状态却失败了,这就出现了消息丢失。…...
用plotly制作一条带颜色的时间轴,显示学习情况
前一篇文章我写到用matplotlib制作一条带颜色的时间轴,显示学习情况-CSDN博客,这是我在工作地方写的程序,我回家后发现家里的笔记本用不了matplotlib,所以我尝试用plotly这另外的模块也写一段程序,让我的程序能够回家使…...
MySQL:索引
目录 1.MySQL索引是干什么的 2.铺垫知识 3.单个page的理解 4.页目录 单页情况 多页情况 1.MySQL索引是干什么的 MySQL的索引是提高查询效率,主要提高海量数据的检索速度。 2.铺垫知识 操作系统与磁盘之间IO的基本单位是4kb。 数据库是一个应用层软件&#…...
Kylin: `GLIBC_2.34‘ not found
需要查看服务器GLIBC版本 strings /lib64/libc.so.6 |grep GLIBC_如果没有,有两种办法,一种是libc.so.6降级,但是这样很容易将服务器搞崩溃 所以可以尝试下载对应版本 glibc 打包编译,重新建立软连,下列是RPM资源可以…...
ASP.NET Core - 依赖注入(四)
ASP.NET Core - 依赖注入(四) 4. ASP.NET Core默认服务5. 依赖注入配置变形 4. ASP.NET Core默认服务 之前讲了中间件,实际上一个中间件要正常进行工作,通常需要许多的服务配合进行,而中间件中的服务自然也是通过 Ioc…...
【全套】基于分类算法的学业警示预测信息管理系统
【全套】基于分类算法的学业警示预测信息管理系统 【摘 要】 随着网络技术的发展基于分类算法的学业警示预测信息管理系统是一种新的管理方式,同时也是现代学业预测信息管理的基础,利用互联网的时代与实际情况相结合来改变过去传统的学业预测信息管理中…...
《零基础Go语言算法实战》【题目 2-25】goroutine 的执行权问题
《零基础Go语言算法实战》 【题目 2-25】goroutine 的执行权问题 请说明以下这段代码为什么会卡死。 package main import ( "fmt" "runtime" ) func main() { var i byte go func() { for i 0; i < 255; i { } }() fmt.Println("start&quo…...
回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测
回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测 目录 回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 RVM-Adaboost相关向量机集成学习多输入单输出回归预测是一种先进的机器学习方法,用于处理…...
【OJ刷题】同向双指针问题3
这里是阿川的博客,祝您变得更强 ✨ 个人主页:在线OJ的阿川 💖文章专栏:OJ刷题入门到进阶 🌏代码仓库: 写在开头 现在您看到的是我的结论或想法,但在这背后凝结了大量的思考、经验和讨论 目录 1…...
数据挖掘实训:天气数据分析与机器学习模型构建
随着气候变化对各行各业的影响日益加剧,精准的天气预测已经变得尤为重要。降雨预测在日常生活中尤其关键,例如农业、交通和灾害预警等领域。本文将通过机器学习方法,利用历史天气数据预测明天是否会下雨,具体内容包括数据预处理、…...
RAG 带来的一些问题
RAG (Retrieval-Augmented Generation) 提高了查询的准确性,但也引入了一些新的问题。主要问题集中在信息检索和生成模型的结合方式上,这些问题影响了系统的性能、效率和输出质量。以下是 RAG 带来的主要问题以及相应的解决方法。 1. 依赖外部检索系统的…...
大疆上云API基于源码部署
文章目录 大疆上云API基于源码部署注意事项1、学习官网2、环境准备注意事项3、注册成为DJI开发者4、下载前后端运行所需要的包/依赖前端依赖下载后端所需要的Maven依赖包 用到的软件可以在这里下载5、MySQL数据库安装安装MySQL启动MySQL服务在IDEA中配置MySQL的连接信息 6、Red…...
【Python系列】Python 中使用 pymysql 连接 MySQL 数据库进行数据查询
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
【数据结构学习笔记】19:跳表(Skip List)
介绍 跳表是一个能在 O ( n l o g n ) O(nlogn) O(nlogn)时间完成查找、插入、删除的数据结构,相比于树形结构优点就是很好写(所以也用于实现Redis ZSet)。其核心思想就是维护一个元素有序的,能随机提升索引层数的链表。最下面一…...
《计算机网络》课后探研题书面报告_网际校验和算法
网际校验和算法 摘 要 本文旨在研究和实现网际校验和(Internet Checksum)算法。通过阅读《RFC 1071》文档理解该算法的工作原理,并使用编程语言实现网际校验和的计算过程。本项目将对不同类型的网络报文(包括ICMP、TCP、UDP等&a…...
【论文阅读+复现】High-fidelity Person-centric Subject-to-Image Synthesis
以人物为中心的主体到图像的高保真合成,CVPR2024 code:CodeGoat24/Face-diffuser: [CVPR2024] Official implementation of High-fidelity Person-centric Subject-to-Image Synthesis. paper:2311.10329 背景 研究问题:这篇文…...
Flink集成TDEngine来批处理或流式读取数据进行流批一体化计算(Flink SQL)拿来即用的案例
Flink 以其流批一体化的编程模型而备受青睐。它支持高吞吐、低延迟的实时流计算,同时在批处理方面也表现出色。Flink 提供了丰富的 API,如 DataStream API 和 DataSet API,方便开发者进行数据处理操作,包括转换、聚合、连接等,使得开发者能够轻松构建复杂的数据处理逻辑。…...
Zookeeper特性与节点数据类型详解
1、 Zookeeper介绍 ZooKeeper 是一个开源的分布式协调框架,是Apache Hadoop 的一个子项目,主要用来解决分布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集…...
C# HslCommunication库
C# HslCommunication库是一个用于建立TCP连接并进行Modbus通讯的库。下面将详细介绍如何使用该库进行TCP通讯。 首先,需要在C#项目中引用HslCommunication库。 创建一个TCP连接对象,可以使用HslCommunication.ModBus.ModbusTcpNet类,例如&am…...
springMVC实现文件上传
目录 一、创建项目 二、引入依赖 三、web.xml 四、编写上传文件的jsp页面 五、spring-mvc.xml 六、controller 七、运行 一、创建项目 二、引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.o…...
【深度学习】Windows系统Anaconda + CUDA + cuDNN + Pytorch环境配置
在做深度学习内容之前,为GPU配置anaconda CUDA cuDNN pytorch环境,在网络上参考了很多帖子,但pytorch的安装部分都有些问题或者比较复杂繁琐,这里总结了相对简单快速的配置方式 文章目录 AnacondaCUDAcuDNNpytorchtorchtorchau…...
springboot整合rabbitmq
1. 添加依赖 首先,在你的 pom.xml 文件中添加 RabbitMQ 的依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 2. 配置 RabbitMQ …...
【React】脚手架进阶
目录 暴露webpack配置package.json的变化修改webpack.config.js配置less修改域名、端口号浏览器兼容处理处理跨域 暴露webpack配置 react-scripts对脚手架中的打包命令进行封装,如何暴露这些打包配置呢?上篇写到在package.json中的scripts配置项中有eje…...
Unreal Engine 5 (UE5) Metahuman 的头部材质
在图中,你展示了 Unreal Engine 5 (UE5) Metahuman 的头部材质部分,列出了头部材质的多个元素。以下是对每个部分的解释: 材质解释 Element 0 - MI_HeadSynthesized_Baked 作用: 这是 Metahuman 的主要头部材质,控制整…...
当自动包布机遇上Profinet转ModbusTCP网关,“妙啊”,工业智能“前景无限
在自动化控制技术日新月异的当下,Profinet与ModbusTCP这两种协议在工业通信领域占据着举足轻重的地位。ModbusTCP是基于以太网的串行通信协议,而Profinet则是依托工业以太网的现场总线协议。它们在数据传输速度、实时性表现以及兼容性等方面各具特色。不…...
Elasticsearch 批量导入数据(_bluk方法)
官方API:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html 建议先看API POST /<索引名>/_bulk 格式要求: POST _bulk { "index" : { "_index" : "test", "_id" : &q…...
lammps应用于热电材料
文章目录 1.热传导理论1.热导率2.晶格振动3.晶体热容4.声子平均自由程5.傅里叶定律 2.lammps计算Ar热导率3.lammps模拟SiGe热电材料4.平衡分子动力学(EMD) 1.热传导理论 1.热导率 热传递机制随介质材料相的不同而改变:固体(热传导)、液体(热对流)、气体(对流和辐射…...
SAP资产盘盈盘亏的过账处理、入账价值错误调整、资产减值准备
文章目录 一、SAP资产盘盈盘亏处理1、ABNAN盘盈 (往年资产) ABZON (当年资产)2、ABAVN盘亏 二、资产价值入账错了(价值多了或少了),怎么调账1、价值少了2、价值多了 三、资产减值准备1、启用重估2、指定间隔…...
Adobe与MIT推出自回归实时视频生成技术CausVid。AI可以边生成视频边实时播放!
传统的双向扩散模型(顶部)可提供高质量的输出,但存在显著的延迟,需要 219 秒才能生成 128 帧的视频。用户必须等待整个序列完成才能查看任何结果。相比之下CausVid将双向扩散模型提炼为几步自回归生成器(底部ÿ…...
MYSQL学习笔记(一):准备数据和数据库的最基本命令
前言: 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇,涵盖入门、进阶、高级(一些原理分析);这一篇是入门准备数据和一些关于数据库的操作命令;虽然MYSQL命令很多&…...