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

粒子群算法(PSO算法)

粒子群算法概述

1.粒子群优化算法(Particle Swarm Optimization,简称PSO)。粒子群优化算法是在1995年由Kennedy博士和Eberhart博士一起提出的,它源于对鸟群捕食行为的研究。

2.基本核心是利用群体中的个体对信息的共享从而使得整个群体的运动在问题求解空间中产生从无序倒有序的演化过程,从而获得问题的最优解。

3.粒子群算法模拟鸟群的捕食过程,将待优化的问题看做是捕食的鸟群,解空间看做是鸟群的飞行空间,空间的每只鸟的位置即是粒子群算法在解空间的一个粒子,也就是待优化问题的一个解。

粒子群算法满足以下假设:

1.粒子被假定没有体积没有质量,本身的属性只有速度和位置。

2.每个粒子在解空间中运动,它通过速度改变其方向和位置。

3.通常粒子将追踪当前的最优粒子以经过最少代数的搜索达到最优。

PSO算法模型

1.PSO算法首先在可行解空间中初始化一群粒子,每个粒子都代表极值最优化问题的一个潜在最优解,用位置、速度和适应度值三项指标表示该粒子的特征。

2.粒子在解空间中运动,通过跟踪个体极值Pbest和群体极值Gbest来更新个体位置。

3.粒子每更新一次位置和速度,就计算一次适应度值,并且通过比较新粒子的适应度值和个体极值、群体极值的适应度更新个体极值Pbest和群体极值Gbest的位置。

假设在一个n维的搜索空间,有m个粒子组成一个粒子群{X}=\left ( X{_{1}},X_{2},...,X_{m} \right ),其中:

注:

掌握PSO算法需要从以下两个角度进行理解:

1.粒子在一定程度上离开原先的搜索轨迹,向新的方向进行搜索,体现了一种向未知区域开拓的能力,类似于全局搜索

2.粒子在一定程度上继续在原先的搜索轨迹上更细一步的搜索,主要针对搜索过程中所搜索到的区域进行更进一步的搜索,类似于局部搜索

基本粒子群算法

在找到这两个最优解时,粒子根据下面的式子来更新自己的速度和位置:

 注:

Vij 指第i个粒子在第j个分量的速度,k代表第k次循环。r1和r2是介于(0,1)的随机数。c1和c2是学习因子。

关于学习因子c1和c2:

1.如果c1=c2=0,则说明粒子将以当前的飞行速度飞到边界。此时,粒子仅能搜索有限的区域,所以很难找到最优解。

2.如果c1=0,则为“社会”模型,粒子只有群体经验而缺乏认知能力。此时,算法收敛速度快,但容易陷入局部最优。

3.如果c2=0,则为“认知”模型,粒子没有社会共享信息,粒子之间没有信息的交互。此时,算法找到最优解的概率很小。

易知该公式由三部分组成:

1.第一部分为“惯性(inertia)”或“动量(momentum)”部分,反映了粒子的运动“习惯(habit)”,代表粒子有维持自己先前速度的趋势。

2.第二部分为“认知(cognition)”,反映了粒子对自身历史经验的记忆(memory)或回忆(remembrance),代表粒子有向自身历史最佳位置逼近的趋势。

3.第三部分为“社会(social)”部分,反映了粒子间协同合作与知识共享的群体历史经验,代表粒子有向群体或者邻域历史最佳位置逼近的趋势。

标准粒子群算法

Shi和Eberhart于1998年在IEEE国际计算学术会议上发表了题为“A Modified Particle Swarm Optimizer”的论文,首次在速度更新公式中加入了惯性权重,如下式所示:

 其中w>0叫做惯性因子。w越大,全局寻优能力越强,局部寻优能力越弱;w越小,全局寻优能力越弱,局部寻优能力越强。此时的粒子群算法被称作是标准粒子群算法

经验:

实验表明,动态的w能获得更好的寻优结果。在搜索过程中可以对w进行动态调整:可以初始给w赋子较大正值,随着搜索的进行,可以线性地使逐渐减小,这样可以保证在算法开始时,各粒子能够以较大的速度步长在全局范围内探测到较好的区域:而在搜索后期,较小的值则保证粒子能够在极值点周围做精细的搜索,从而使算法有较大的概率向全局最优解位置收敛。对W进行调整,可以权衡全局搜索和局部搜索能力。

目前,采用较多的动态惯性权重值是线性递减权值策略,其表达式如下:

 其中,T_{max}表示最大迭代次数;w_{max}w_{min}分别表示最大和最小惯性权重。在大多数应用中,通常有w_{max}=0.9 , w_{min}=0.4 。

当然,除了线性递减权值策略,还有线性微分递减策略:

 

 压缩粒子群算法

当 w=\lambda 时,标准粒子算法就会退化为压缩粒子群算法:

此时的粒子群算法被称作是压缩粒子群算法。其中 \lambda 为压缩因子:

 离散粒子群算法

基本粒子群算法是在连续域中搜索函数极值的有利工具。为了处理离散空间的问题,Kennedy和Eberhart又提出了一种离散二进制版的粒子群算法。在此算法中,将离散空间问题映射到连续粒子空间,并适当修改粒子群算法来求解。在计算上仍保留经典粒子群算法中的速度和位置更新规则。

在离散粒子群算法中,将离散问题空间映射到连续粒子运动空间,并做适当的修改。仍然保留经典粒子群算法中的速度和位置更新规则。粒子在状态空间的取值只限于0,1两个值,而速度的每一个位代表的是粒子位置所对应的位取值为0/1的可能性。因此在离散粒子群算法中,粒子速度的更新公式依然保持不变,但是个体最优位置和全局最优位置每一位的取值只能为0/1。

更新方式:

 

其中,r ~ U(0 , 1) ,  V_{ij} 表示位置X_{ij}取值为1的可能性,其更新公式与基本粒子群算法一致。

粒子群算法流程

Step 1.种群初始化:群体规模N,每个粒子的位置X和速度V_{i}

Step 2.计算每个粒子的适应值fit_{i};。 

Step 3.对每个粒子,用它的适应度值fit_{i}和个体极值Pbest_{i}比较。如果fit_{i}<Pbest_{i},则用fit_{i}替换Pbest_{i}

Step 4.对每个粒子,用它的适应度值fit_{i}和全局极值Gbest_{i}比较。如果fit_{i}<Gbest_{i},则用fit_{i}替换Gbest_{i}

Step 5.迭代更新粒子的速度V_{i}和位置X

Step6.进行边界条件处理。

Step 7.判断算法终止的条件是否满足。若满足,则结束算法并输出优化结果;否则,返回Step2。

 算法的参数说明

 注:

边界条件处理:

当某一维或若干维的位置或速度超过设定值时,采用边界条件处理策略可将粒子的位置限制在可行搜索空间内,这样能避免种群的膨胀与发散,也能避免粒子大范围地盲目搜索,从而提高了搜素效率。具体的方法有很多种,比如通过设置最大位置限制x_{max}和最大速度限制v_{max},当超过最大位置或最大速度时,在范围内随机产生一个数值代替,或者将其设置为最大值,即边界吸收。

例题

适应度函数fit.m

function y = fit(x)
% 函数用于计算粒子的适应度
% x:输入粒子
% y:粒子适应度值
y = x(1).^2 + x(2).^2 - 10*cos(2*pi*x(1)) - 10*cos(2*pi*x(2)) + 20;

主脚本main.m

%% I. 清空环境
clc
clear
close all%% II. 绘制目标函数曲线
figure
[x,y] = meshgrid(-5:0.1:5,-5:0.1:5);
z = x.^2 + y.^2 - 10*cos(2*pi*x) - 10*cos(2*pi*y) + 20;
mesh(x,y,z)
hold on%% III. 参数初始化
c1 = 1.49445;
c2 = 1.49445;kmax = 100;   % 进化次数  
popsize = 100; %种群规模% 控制粒子速度
Vmax = 1;
Vmin = -1;
% 个体位置变化的最大范围
popmax = 5;
popmin = -5;%% IV. 产生初始粒子和速度
for i = 1:popsize% 随机产生一个种群pop(i,:) = 5*rands(1,2);     %初始各个粒子位置V(i,:) = rands(1,2);         %初始化各个粒子速度% 计算适应度fitness(i) = fit(pop(i,:));   %各个粒子的适应度值
end%% V. 个体极值和群体极值
[best_fitness best_index] = max(fitness);
Gbest = pop(best_index,:);     %粒子群体最优位置
Pbest = pop;                   %粒子个体最优位置
fitnessPbest = fitness;        %粒子个体最优适应度值
fitnessGbest = best_fitness;   %粒子群体最优适应度值%% VI. 迭代寻优
for i = 1:kmaxfor j = 1:popsize% 速度更新V(j,:) = V(j,:) + c1*rand*(Pbest(j,:) - pop(j,:)) + c2*rand*(Gbest - pop(j,:));% 进行速度约束(边界约束)V(j,find(V(j,:)>Vmax)) = Vmax;V(j,find(V(j,:)<Vmin)) = Vmin;% 位置更新pop(j,:) = pop(j,:) + V(j,:);% 进行位置约束(边界约束)pop(j,find(pop(j,:)>popmax)) = popmax;pop(j,find(pop(j,:)<popmin)) = popmin;% 适应度值更新fitness(j) = fit(pop(j,:)); endfor j = 1:popsize  % 个体最优更新if fitness(j) > fitnessPbest(j)Pbest(j,:) = pop(j,:);fitnessPbest(j) = fitness(j);end% 群体最优更新if fitness(j) > fitnessGbestGbest = pop(j,:);fitnessGbest = fitness(j);endend Best(i) = fitnessGbest;%用于存储每次迭代产生的最优的适应度值        
end
%% VII.输出结果
[fitnessGbest, Gbest]
plot3(Gbest(1), Gbest(2), fitnessGbest,'bo','linewidth',1.5)figure
plot(Best)
title('最优个体适应度','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);

运行结果:

ans =80.7065   -4.5223    4.5231

 适应度函数fun.m

function y = fun(x)
%函数用于计算粒子适应度值
%x:输入粒子 
%y:粒子适应度值 
y = 0.5 + (sin(sqrt(x(1)^2+x(2)^2))^2 - 0.5) / (1 + 0.001*(x(1)^2+x(2)^2))^2;
% y = 3*cos(x(1)*x(2)) + x(1) + x(2)^2;

主脚本main.m

%% I. 清空环境
% clc
% clear%% II. 绘制目标函数曲线
figure
[x,y] = meshgrid(-10:0.1:10,-10:0.1:10);
z = 0.5 + (sin(sqrt(x.^2+y.^2)).^2 - 0.5)./ (1 + 0.001*(x.^2+y.^2)).^2;
mesh(x,y,z)
hold on
%% III. 参数初始化
c1 = 1.49445;
c2 = 1.49445;kmax = 100;   % 进化次数
popsize = 100; %种群规模% 控制粒子速度
Vmax = 1;
Vmin = -1;
% 个体位置变化的最大范围
popmax = 10;
popmin = -10;%惯性权重最大值和最小值
Wmax = 0.9;
Wmin = 0.4;% %压缩因子
% phi = c1+c2;
% lamda = 2 / abs(2 - phi - sqrt(phi^2 - 4*phi));   % 压缩因子
%% IV. 产生初始粒子和速度
for i = 1:popsize% 随机产生一个种群pop(i,:) = 10*rands(1,2);     %初始各个粒子位置V(i,:) = rands(1,2);         %初始化各个粒子速度% 计算适应度fitness(i) = fun(pop(i,:));   %各个粒子的适应度值
end%% V. 个体极值和群体极值
[best_fitness best_index] = min(fitness);
Gbest = pop(best_index,:);     %粒子群体最优位置
Pbest = pop;                   %粒子个体最优位置
fitnessPbest = fitness;        %粒子个体最优适应度值
fitnessGbest = best_fitness;   %粒子群体最优适应度值%% VI. 迭代寻优
for i = 1:kmax%计算动态惯性权重w = Wmax - (Wmax - Wmin)*i / kmax;for j = 1:popsize% 速度更新V(j,:) = w*V(j,:) + c1*rand*(Pbest(j,:) - pop(j,:)) + c2*rand*(Gbest - pop(j,:));%标准粒子群算法%         V(j,:) = lamda*V(j,:) + c1*rand*(Pbest(j,:) - pop(j,:)) + c2*rand*(Gbest - pop(j,:));%压缩粒子群算法%         V(j,:) = V(j,:) + c1*rand*(Pbest(j,:) - pop(j,:)) + c2*rand*(Gbest - pop(j,:));%普通粒子群算法% 进行速度约束(边界约束)V(j,find(V(j,:)>Vmax)) = Vmax;V(j,find(V(j,:)<Vmin)) = Vmin;% 位置更新pop(j,:) = pop(j,:) + V(j,:);% 进行位置约束(边界约束)pop(j,find(pop(j,:)>popmax)) = popmax;pop(j,find(pop(j,:)<popmin)) = popmin;% 适应度值更新fitness(j) = fun(pop(j,:));endfor j = 1:popsize% 个体最优更新if fitness(j) < fitnessPbest(j)Pbest(j,:) = pop(j,:);fitnessPbest(j) = fitness(j);end% 群体最优更新if fitness(j) < fitnessGbestGbest = pop(j,:);fitnessGbest = fitness(j);endendBest(i) = fitnessGbest;%用于存储每次迭代产生的最优的适应度值
end
%% VII.输出结果
disp(['当x=',num2str(Gbest(1)),'和','y=',num2str(Gbest(2)),'时','所求函数的最小值是',num2str(fitnessGbest)])plot3(Gbest(1), Gbest(2), fitnessGbest,'bo','linewidth',15)figure
plot(Best)
title('最优个体适应度','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);

运行结果:

>> main
当x=7.2595e-06和y=-1.7485e-05时所求函数的最小值是3.5877e-10

相关文章:

粒子群算法(PSO算法)

粒子群算法概述 1.粒子群优化算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;。粒子群优化算法是在1995年由Kennedy博士和Eberhart博士一起提出的&#xff0c;它源于对鸟群捕食行为的研究。 2.基本核心是利用群体中的个体对信息的共享从而使得整…...

信道编码技术介绍

信息与通信系统中的编码有4 种形式&#xff1a;信源编码、信道编码、密码编码和多址编码。 其中信道编码的作用是对信源经过压缩后的数据加一定数量受到控制的冗余&#xff0c;使得数据在传输中或接收中发生的差错可以被纠正或被发现&#xff0c;从而可以正确恢复出原始数据信息…...

JavaScript【4】数组和其他内置对象(API)

1.数组: 1.概述: js中数组可理解为一个存储数据的容器,但与java中的数组不太一样;js中的数组更像java中的集合,因为此集合在创建的时候,不需要定义数组长度,它可以实现动态扩容;js中的数组存储元素时,可以存储任意类型的元素,而java中的数组一旦创建后,就只能存储定义类型的元…...

【背包dp-----分组背包】------(标准的分组背包【可以不装满的 最大价值】)

通天之分组背包 题目链接 题目描述 自 01 01 01 背包问世之后&#xff0c;小 A 对此深感兴趣。一天&#xff0c;小 A 去远游&#xff0c;却发现他的背包不同于 01 01 01 背包&#xff0c;他的物品大致可分为 k k k 组&#xff0c;每组中的物品相互冲突&#xff0c;现在&a…...

docker-compose——安装mongo

编写docker-compose.yml version : 3.8services:zaomeng-mongodb:container_name: zaomeng-mongodbimage: mongo:latestrestart: alwaysports:- 27017:27017environment:- MONGO_INITDB_ROOT_USERNAMEroot- MONGO_INITDB_ROOT_PASSWORDpssw0rdvolumes:- ./mongodb/data:/data/…...

day 28

类 一个常见的类的定义包括了&#xff1a; 1. 关键字class 2. 类名 3. 语法固定符号冒号(:) 4. 一个初始化函数__init__(self) Pass占位符和缩进 Python 通过缩进来定义代码块的结构。当解释器遇到像 def, class, if, for 这样的语句&#xff0c;并且后面跟着冒号 : 时&…...

JavaScript入门【1】概述

1.JavaScript是什么? <font style"color:rgb(38,38,38);">Javascript &#xff08;简称“JS”&#xff09;是⼀种直译式脚本语⾔&#xff0c;⼀段脚本其实就是⼀系列指令&#xff0c;计算机通过这些指令来达成⽬标。它⼜是⼀种动态类型的编程语⾔。JS⽤来在⽹…...

MySQL 中 JOIN 和子查询的区别与使用场景

目录 一、JOIN:表连接1.1 INNER JOIN:内连接1.2 LEFT JOIN:左连接1.3 RIGHT JOIN:右连接1.4 FULL JOIN:全连接二、子查询:嵌套查询2.1 WHERE 子句中的子查询2.2 FROM 子句中的子查询2.3 SELECT 子句中的子查询三、JOIN 和子查询的区别3.1 功能差异3.2 性能差异3.3 使用场…...

DeepSeek 大模型部署全指南:常见问题、优化策略与实战解决方案

DeepSeek 作为当前最热门的开源大模型之一&#xff0c;其强大的语义理解和生成能力吸引了大量开发者和企业关注。然而在实际部署过程中&#xff0c;无论是本地运行还是云端服务&#xff0c;用户往往会遇到各种技术挑战。本文将全面剖析 DeepSeek 部署中的常见问题&#xff0c;提…...

Python 3.11详细安装步骤(包含安装包)Python 3.11详细图文安装教程

文章目录 前言Python 3.11介绍Python 3.11安装包下载Python 3.11安装步骤 前言 作为当前最热门的编程语言之一&#xff0c;Python 3.11 不仅拥有简洁优雅的语法&#xff0c;还在性能上实现了飞跃&#xff0c;代码运行速度提升显著。无论是初入编程的小白&#xff0c;还是经验丰…...

虚拟主播肖像权保护,数字时代的法律博弈

首席数据官高鹏律师团队 在虚拟主播行业蓬勃发展的表象之下&#xff0c;潜藏着一场关乎法律边界的隐形战争。当一位虚拟偶像的3D模型被非法拆解、面部数据被批量复制&#xff0c;运营方惊讶地发现——传统的肖像权保护体系&#xff0c;竟难以完全覆盖这具由代码与数据构成的“…...

硬件工程师笔记——二极管Multisim电路仿真实验汇总

目录 1 二极管基础知识 1.1 工作原理 1.2 二极管的结构 1.3 PN结的形成 1.4 二极管的工作原理详解 正向偏置 反向偏置 multisim使用说明链接 2 二极管特性实验 2.1 二极管加正向电压 2.2 二极管加反向电压 2.3 二极管两端的电阻 2.4 交流电下二级管工作 2.5 二极…...

学习笔记(C++篇)—— Day 6

1.内部类 如果一个类定义在另一个类的内部&#xff0c;就叫做内部类。 例如下面一个代码示例&#xff1a; class A { private:static int _k;int _h 1; public:class B // B默认就是A的友元{public:void foo(const A& a){cout << _k << endl; //OKcout <&…...

常见的实时通信技术(轮询、sse、websocket、webhooks)

1. HTTP轮询&#xff1a;最老实的办法 刚开始做实时功能时&#xff0c;我第一个想到的就是轮询。特别简单直白&#xff0c;就像你每隔5分钟就刷新一次朋友圈看看有没有新消息一样。 短轮询&#xff1a;勤快但费劲 短轮询就是客户端隔三差五地问服务器&#xff1a;"有新…...

2025年第三届盘古石杯初赛(智能冰箱,监控部分)

前言 所以去哪里可以取到自己家里的智能家居数据呢&#xff1f;&#xff1f;&#xff1f;&#xff1f; IOT物联网取证 1、分析冰箱&#xff0c;请问智能冰箱的品牌&#xff1f; [答案格式&#xff1a;xiaomi] Panasonic2、请问智能冰箱的型号&#xff1f; [答案格式&#x…...

[强化学习的数学原理—赵世钰老师]学习笔记02-贝尔曼方程

本人为强化学习小白&#xff0c;为了在后续科研的过程中能够较好的结合强化学习来做相关研究&#xff0c;特意买了西湖大学赵世钰老师撰写的《强化学习数学原理》中文版这本书&#xff0c;并结合赵老师的讲解视频来学习和更深刻的理解强化学习相关概念&#xff0c;知识和算法技…...

基于STM32的INA226电压电流检测仪

系统总体框图 功率检测装置原理图功能及模块连接说明 一、系统功能概述 该装置以STM32F103C8T6微控制器为核心&#xff0c;集成功率检测、数据交互、状态显示和用户提示功能&#xff0c;通过模块化设计实现稳定运行。 二、各模块功能及连接方式 按键模块 功能&#xff1a…...

Android7 Input(七)App与input系统服务建立连接

概述 本文主要讲述Android 系统创建窗口时与输入管理系统服务通过InputChannel通道建立通信桥梁的过程。 本文涉及的源码路径 frameworks/native/libs/input/InputTransport.cpp frameworks/base/core/java/android/view/InputChannel.java frameworks/base/core/java/andr…...

1.2 C++第一个程序

第一个程序&#xff1a;Hello World 教程 目标 用 cout 输出文字&#xff0c;学会用 endl 换行。理解程序的基本结构&#xff0c;明白 main 函数的作用。 一、程序是什么&#xff1f;——像“魔法食谱” 比喻&#xff1a;写程序就像写一份做蛋糕的食谱&#xff01; 食材&am…...

Hi3516DV500刷写固件

hi3516DV500刷固件 1、硬件连接 2、软件准备 3、刷固件步骤 一、硬件连接 特别注意的是&#xff0c;串口的接线顺序 通过网线连接好笔记本和开发板后&#xff0c;需要确认一下网口水晶头是否闪烁&#xff0c;以确认网络物理是否连通 二、软件资源准备 固件包准备 打开工具…...

完整卸载 Fabric Manager 的方法

目录 ✅ 完整卸载 Fabric Manager 的方法 1️⃣ 停止并禁用服务 2️⃣ 卸载 Fabric Manager 软件包 3️⃣ 自动清理无用依赖&#xff08;可选&#xff09; 4️⃣ 检查是否卸载成功 ✅ 补充&#xff08;仅清除服务&#xff0c;不删包&#xff09; ✅ 完整卸载 Fabric Mana…...

linux标准库头文件解析

linuxc标准库 C 标准库&#xff08;C Standard Library&#xff09;包含了一组头文件&#xff0c;这些头文件提供了许多函数和宏&#xff0c;用于处理输入输出、字符串操作、数学计算、内存管理等常见编程任务。。 头文件功能简介<stdio.h>标准输入输出库&#xff0c;包含…...

PLC和变频器之间如何接线

这篇文章想梳理一下&#xff0c;不同电平输出的PLC应该如何去接不同品牌的变频器 对于PLC的IO来讲&#xff0c;有高低电平输入的不同&#xff0c;有高低电平输出的区别 对于变频器的DI或DO来讲&#xff0c;不同的品牌内部线路和原理也有区别 我们场地现在用的是西门子1200的…...

【Spring】Spring的请求处理

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 目录 引言HTTP/HTTPS协议Spring Web与Spring Web MVCSpring WebFlux 自定义的TPC/IP协议FTP、S…...

现代健康生活养生指南

现代社会中&#xff0c;熬夜加班、久坐不动、饮食不规律成为许多人的生活常态&#xff0c;由此引发的健康问题也日益增多。想要摆脱亚健康&#xff0c;不必依赖中医理念&#xff0c;从以下这些现代科学养生方法入手&#xff0c;就能逐步改善身体状况。​ 饮食上&#xff0c;注…...

使用tensorRT10部署低光照补偿模型

1.低光照补偿模型的简单介绍 作者介绍一种Zero-Reference Deep Curve Estimation (Zero-DCE)的方法用于在没有参考图像的情况下增强低光照图像的效果。 具体来说&#xff0c;它将低光照图像增强问题转化为通过深度网络进行图像特定曲线估计的任务。训练了一个轻量级的深度网络…...

题单:表达式求值1

题目描述 给定一个只包含 “加法” 和 “乘法” 的算术表达式&#xff0c;请你编程计算表达式的值。 输入格式 输入仅有一行&#xff0c;为需要计算的表达式&#xff0c;表达式中只包含数字、加法运算符 和乘法运算符 *&#xff0c;且没有括号。 所有参与运算的数字不超过…...

【ant design】ant-design-vue 4.0实现主题色切换

官网&#xff1a;Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 我图方便&#xff0c;直接在 app.vue 中加入的 <div class"app-content" v-bind:class"appOption.appContentClass"><a-config-provider…...

MinIO深度解析:从入门到实战——对象存储系统全指南

在当今数字化时代&#xff0c;数据存储至关重要。MinIO作为一款高性能的对象存储系统&#xff0c;正逐渐受到广泛关注。它与云原生存储系统相媲美&#xff0c;并且其API与Amazon S3完全兼容。本文将带您快速了解MinIO&#xff0c;并探讨其在实际中的应用场景。 一、关于MinIO …...

(8)python开发经验

文章目录 1 下载python2 pip安装依赖无法访问3 系统支持4 下载python文档5 设置虚拟环境6 编译安装python 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;Qt开发 &#x1f448;&#x1f449;python开发 &#x1f448; 1 下载python 下载地址尽量不要下载最新版…...

uniapp自动构建pages.json的vite插件

对于 uniapp 来说&#xff0c;配置 pages.json 无疑是最繁琐的事情&#xff0c;具有以下缺点&#xff1a; 冗长&#xff0c;页面很多时 pages 内容会很长难找&#xff0c;有时候因为内容很长&#xff0c;导致页面配置比较难找&#xff0c;而且看起来比较凌乱json弊端&#xff…...

【MySQL进阶】如何在ubuntu下安装MySQL数据库

前言 &#x1f31f;&#x1f31f;本期讲解关于如何在ubuntu环境下安装mysql的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f3…...

解放双手的全自动抠图工具

软件介绍 本文要介绍的这款软件是Teorex PhotoScissors&#xff0c;是一款全自动抠图软件。 第二段&#xff1a;软件便捷性 这款来自国外的软件堪称神器&#xff0c;目前已解锁可无限使用。使用起来特别方便&#xff0c;无需安装&#xff0c;打开即可直接操作&#xff0c;并…...

Python多进程编程执行任务

我的需求如下&#xff1a;现有一批任务&#xff0c;使用进程池执行&#xff0c;每个任务执行耗时不一样&#xff0c;任务并发执行期间&#xff0c;需要每隔一段时间监控任务执行进度 直接贴代码&#xff1a; import multiprocessing import time import random from multiproc…...

【Linux笔记】——Linux线程封装

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a;【Linux笔记】——Linux线程控制创建、终止与等待|动态库与内核联动 &#x1f516;流水不争&#xff0c;争的是…...

ChatGPT + DeepSeek 联合润色的 Prompt 模板指令合集,用来润色SCI论文太香了!

对于非英语母语的作者来说,写SCI论文的时候经常会碰到语法错误、表达不够专业、结构不清晰以及术语使用不准确等问题。传统的润色方式要么成本高、效率低,修改过程又耗时又费力。虽然AI工具可以帮助我们来润色论文,但单独用ChatGPT或DeepSeek都会存在内容泛泛、专业性不足的…...

【typenum】 9 与常量泛型桥接(generic_const_mappings.rs)

一、源码 该代码提供了常量结构体与库类型的转换。 // THIS IS GENERATED CODE //! Module with some const-generics-friendly definitions, to help bridge the gap //! between those and typenum types. //! //! - It requires the const-generics crate feature to be…...

并发学习之synchronized,JVM内存图,线程基础知识

文章目录 Java内存图内存图区域介绍执行流程 进程和线程概念解释线程的6种状态简述等待队列和同步队列&#xff08;阻塞队列&#xff09;线程之间是独立的 synchronized静态方法非静态方法代码块 知识总结&#xff1a; 方法区存储类信息正在执行的程序叫进程&#xff0c;进程会…...

使用Docker部署Nacos

sudo systemctl start docker sudo systemctl enable docker docker --version 步骤 2: 拉取 Nacos Docker 镜像 拉取 Nacos 镜像&#xff1a; 你可以从 Docker Hub 上拉取官方的 Nacos 镜像&#xff0c;使用以下命令&#xff1a; docker pull nacos/nacos-server 这会从 …...

如何 naive UI n-data-table 改变行移动光标背景色

默认是light 灰&#xff0c;想换个显眼包色&#xff0c;折腾半天&#xff0c;可以了。 无废话上代码&#xff1a; <template><n-data-tablesize"small":columns"columns":data"sortedDataList":bordered"true":row-key"…...

Maven 插件扩展点与自定义生命周期

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

Redis的发布订阅模型是什么,有哪些缺点?

Redis 发布订阅模型概述 Redis 发布订阅&#xff08;Pub/Sub&#xff09;是一种消息广播模式&#xff0c;核心角色包括&#xff1a; 发布者&#xff08;Publisher&#xff09;&#xff1a;向指定频道&#xff08;Channel&#xff09;发送消息。频道&#xff08;Channel&#…...

【EDA软件】【联合Modelsim仿真使用方法】

背景 业界EDA工具仿真功能是必备的&#xff0c;例如Vivado自带仿真工具&#xff0c;且无需联合外部仿真工具&#xff0c;例如MoodelSim。 FUXI工具仿真功能需要联合Modelsim&#xff0c;才能实现仿真功能。 方法一&#xff1a;FUXI联合ModelSim 1 添加testbench文件 新建to…...

C语言_动态内存管理

1. 为什么存在动态内存分配 ? 当前&#xff0c;我们掌握的内存开辟方式有&#xff1a; int val22;// 在栈空间上开辟四个字节 char arr[10]{0};// 在栈空间上开辟10个字节的连续空间而上述的开辟空间的方式有两个特点&#xff1a; 空间开辟大小示固定的数组在申明的时候&am…...

使用Langfuse和RAGAS,搭建高可靠RAG应用

大家好&#xff0c;在人工智能领域&#xff0c;RAG系统融合了检索方法与生成式AI模型&#xff0c;相比纯大语言模型&#xff0c;提升了准确性、减少幻觉且更具可审计性。不过&#xff0c;在实际应用中&#xff0c;当建好RAG系统投入使用时&#xff0c;如何判断接收信息是否正确…...

MySQL 数据库优化:ShardingSphere 原理及实践

在高并发、大数据量的业务场景下,MySQL 作为关系型数据库的核心存储引擎,其性能和扩展性面临严峻挑战。ShardingSphere 作为 Apache 顶级开源项目,提供了分布式数据库解决方案,通过分库分表、读写分离、弹性迁移等能力,帮助开发者实现 MySQL 的水平扩展与性能优化。 本文…...

【Redis】零碎知识点(易忘 / 易错)总结回顾

一、Redis 是一种基于键值对&#xff08;key-value&#xff09;的 NoSQL 数据库 二、Redis 会将所有数据都存放在内存中&#xff0c;所以它的读写性能非常惊人 Redis 还可以将内存的数据利用快照和日志的形式保存到硬盘上&#xff0c;这样在发生类似断电或者机器故障时&#xf…...

谷歌浏览器(Google Chrome)136.0.7103.93便携增强版|Win中文|安装教程

软件下载 【名称】&#xff1a;谷歌浏览器&#xff08;Google Chrome&#xff09;136.0.7103.93 【大小】&#xff1a;170M 【语言】&#xff1a;简体中文 【安装环境】&#xff1a;Win10/Win11 【夸克网盘下载链接】&#xff08;务必手机注册&#xff09;&#xff1a; h…...

【滑动窗口】LeetCode 209题解 | 长度最小的子数组

长度最小的子数组 前言&#xff1a;滑动窗口一、题目链接二、题目三、算法原理解法一&#xff1a;暴力枚举解法二&#xff1a;利用单调性&#xff0c;用滑动窗口解决问题那么怎么用滑动窗口解决问题&#xff1f;分析滑动窗口的时间复杂度 四、编写代码 前言&#xff1a;滑动窗口…...

WebXR教学 07 项目5 贪吃蛇小游戏

WebXR教学 07 项目5 贪吃蛇小游戏 index.html <!DOCTYPE html> <html> <head><title>3D贪吃蛇小游戏</title><style>body { margin: 0; }canvas { display: block; }#score {position: absolute;top: 20px;left: 20px;color: white;font-…...