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

泰安人才市场招聘网/seo技术培训海南

泰安人才市场招聘网,seo技术培训海南,公司做网站买域名之后做什么,徐州营销网站建设0.引言 上一篇博客介绍了使用Yalmip工具箱求解单阶段鲁棒优化的方法。这篇文章将和大家一起继续研究如何使用Yalmip工具箱求解两阶段鲁棒优化(默认看到这篇博客时已经有一定的基础了,如果没有可以看看我专栏里的其他文章)。关于两阶段鲁棒优化与列与约束生成算法的原…

0.引言

        上一篇博客介绍了使用Yalmip工具箱求解单阶段鲁棒优化的方法。这篇文章将和大家一起继续研究如何使用Yalmip工具箱求解两阶段鲁棒优化(默认看到这篇博客时已经有一定的基础了,如果没有可以看看我专栏里的其他文章)。关于两阶段鲁棒优化列与约束生成算法的原理,之前的博客已经详细地介绍过了,这里就不再过多介绍,主要是结合实例来讲解编程思路。这篇博客用到了两个算例,1个是两阶段鲁棒优化问题和列与约束生成算法的开山鼻祖[1],另一个是电气专业中两阶段鲁棒优化问题最热门的文章之一[2],相信大家在网上见到过无数号称完美复现的代码,但实际上大部分都是有问题的(包括我自己早期写的代码,也是被网上的代码带歪了,后面理解慢慢深入才发现问题所在)。

        求解两阶段鲁棒优化问题一共有两个难点,一是求解max-min或者min-max形式的子问题,其实就是求解一个单阶段鲁棒优化,上一篇博客我已经非常详细地介绍了求解方式,借助Yalmip工具箱,共有三种不同的方式可以解决。二是主问题和子问题的迭代求解,也就是列与约束生成算法(C&CG)的实现。很多代码在复现C&CG算法时并没有向主问题同时添加列(变量)和约束,这也是代码中最常见的问题。针对这两个难点,我将用两个不同的算例详细地进行讲解。

        此外,文献[1]和[2]中都是采用了先将约束条件写成紧凑的矩阵形式,然后再对子问题进行处理的方式,很多朋友和我反映这部分太难处理了,实际问题的约束建模过程中经常包括循环语句,想要转成矩阵形式确实很不容易。这篇文章中我将分别采用两种不同的方式求解鲁棒优化。一是采用原始的约束条件,省去将约束条件转为矩阵形式的步骤,这种方式数学公式可能会更繁琐,但比起矩阵形式的转换,理解起来会更容易一些。二是采用矩阵形式进行编程,在博客中我教大家一种非常简单就能将约束写为矩阵形式的方法,文中只是介绍了如何使用,之后也会单独写博客对此详细展开。

        总之,这篇博客干货满满,可以认真通读一遍,跟着博客中的思路亲自动手使用Matlab+Yalmip实现两阶段鲁棒优化的编程(博客中提到的所有例子我都提供了相应的代码)。相信大家理解后,面对任何类型的两阶段鲁棒优化问题都能迅速使用类似的方法进行解决。

        博客中主要包含8大内容:

        ①.拿到一个复杂的两阶段鲁棒优化问题分析步骤和方法

        ②.采用Yalmip工具箱中的uncertain函数鲁棒优化模块求解两阶段鲁棒优化的子问题。

        ③.Yalmip工具箱中的鲁棒优化模块和常规的求解思路有什么异同

        ④.使用KKT条件求解两阶段鲁棒优化的子问题,并使用C&CG算法进行迭代求解。

        ⑤.使用对偶变换求解两阶段鲁棒优化的子问题,并使用C&CG算法进行迭代求解。

        ⑥.采用Yalmip工具箱的内置函数,将线性约束写成紧凑矩阵形式的方法。

        ⑦.矩阵形式的两阶段鲁棒优化问题,如何快速写出子问题内层优化的KKT条件,并使用C&CG算法进行迭代求解。

        ⑧.矩阵形式的两阶段鲁棒优化问题,如何快速写出子问题内层优化的对偶问题,并使用C&CG算法进行迭代求解。

        由于博客篇幅较长,将分上下两篇发布,其中上篇使用的是文献[1]中的算例,包含上述①-⑤的内容。下篇使用文献[2]中的算例,包含上述①、④、⑥-⑧的内容。

        这篇博客是下篇的内容。

1.两阶段鲁棒优化基本形式

        如文献[1]中所述,标准的两阶段鲁棒优化问题的形式为:

        其中,y为第一阶段决策变量,u为不确定变量,x为第二阶段决策变量。和分析单阶段鲁棒优化问题的五个特征一样,拿到一个复杂的两阶段鲁棒优化问题先不用慌,按照下面的步骤进行分析即可:

        1)确定第一阶段决策变量有哪些,将其与变量y对应。

        2)确定第二阶段决策变量有哪些,将其与变量x对应。

        3)确定不确定变量有哪些,将其与变量u对应。

        4)确定优化问题中不确定集合的形式,并考虑是否可以直接使用Yalmip中的鲁棒优化模块进行求解。

        5)确定目标函数是否有仅包含第一阶段决策变量的项,如果有的话可以单独拿出来。

        6)确定子问题的目标函数,将其与鲁棒优化的标准形式相对应。

        7)确定约束条件,考虑是否包含非线性约束,是否需要线性化。

        8)求解max-min或者min-max类型的子问题

        9)使用迭代方式,将子问题产生的变量和约束不断添加到主问题中,最终得到最优解。

        下面分别以文献[1]和[2]中的优化问题进行讲解说明:

2.两阶段鲁棒运输问题编程实战

        更多内容,请关注Matlab+Yalmip两阶段鲁棒优化通用编程指南(上):

鲁棒优化入门(6)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(上)

3.微电网两阶段鲁棒优化调度编程实战

        第二个算例来源于文献[2],其两阶段鲁棒优化问题的形式为:

s.t.

        我之前写过一篇博客解析这篇论文,但是使用的是紧凑的矩阵形式。这次博客我先尝试使用一般形式的约束进行求解,方便大家体会采用矩阵形式求解两阶段鲁棒优化的方便之处。

        首先逐步进行分析:

        1)确定第一阶段决策变量有哪些。

        2)确定第二阶段决策变量有哪些。

        3)确定不确定变量有哪些。

        4)确定优化问题中不确定集合的形式,并考虑是否可以直接使用Yalmip中的鲁棒优化模块进行求解。

        该优化问题的不确定集中为箱式不确定集但包含0-1变量,不可以直接使用Yalmip中的鲁棒优化模块进行求解。

        5)确定目标函数是否有仅包含第一阶段决策变量的项,如果有的话可以单独拿出来。

        该优化问题第一阶段和第二阶段目标函数相同。

        6)确定子问题的目标函数,将其与两阶段鲁棒优化的标准形式相对应。

        7)确定约束条件,考虑是否包含非线性约束,是否需要线性化。

        子问题中的约束条件均为线性,但不确定变量P_{PV},P_L的约束条件包含0-1变量,则含变量P_{PV},P_L的优化问题并不满足强对偶定理,KKT条件和对偶变换都无法适用。那是不是无法使用常规的方法求解单阶段鲁棒优化形式的子问题呢?

        当然不是,如果出现这种情况,我们就可以把不确定变量写在外层。那么对于子问题的内层优化问题来说,变量P_{PV},P_L是一个确定值,即使其中包含0-1变量,也只是一个常数。实际上子问题的内层优化并不包含0-1变量,因此还是可以使用常规的KKT条件或强对偶定理进行求解。但是由于不确定变量中包含0-1变量,直接通过uncertain函数直接使用Yalmip鲁棒优化模块的方法不可行。

        分析完成后,分别使用KKT条件和强对偶定理求解子问题,具体如下:

3.1 KKT条件求解子问题

        为了方便求解,我们首先把子问题的内层min优化问题写出来,并将所有约束写成≤0的形式或=0的形式:

        根据拉格朗日函数可以写出内层优化的KKT条件

        其中U_{TM}表示上三角全为1,主对角线以下全为0的24阶方阵,即:

        要想求解这个问题,还需要写出引入16组0-1变量,使用大M法将16组互补松弛条件转为线性约束,具体如下:

        其中q1-q16都是0-1变量,qi和λi的维度相同。

        将内层优化的KKT方程组添加到外层优化中,就可以将双层优化问题转为单层优化问题。经过上面的处理,便顺利将max-min形式的子问题转为混合整数线性规划问题,并可以使用Yalmip进行求解,代码在压缩包中的Problem2文件夹中,运行Problem2_subproblem_KKT1.m文件即可得到结果。

        PS:假设第一阶段变量的取值:

        运行结果如下:

        从运行结果可以看出,使用KKT条件可以正常求出最优解,但由于引入了非常多的拉格朗日乘子和相应的0-1变量,对于初始的约束形式手动写KKT条件非常麻烦,一旦出错也很难发现问题在哪。

3.2 将两阶段鲁棒优化问题写成矩阵形式

        对于约束条件比较复杂的两阶段鲁棒优化问题,先把目标函数和约束条件写成紧凑的矩阵形式再使用KKT条件或对偶变换求解会方便很多。文献[1]中将优化问题写成了紧凑的矩阵形式,但存在一定问题,我在此重新梳理一遍。

        首先,将优化问题写成紧凑的矩阵形式(等式约束都改写成不等式形式,例如x=0可以写成x≥0,-x≥0):

        其中,第一阶段决策变量x是一个48维的列向量:

        第二阶段决策变量y是一个192维的列向量:

        c和y的维度一样,但c是一个192维的常数列向量:

        那么如何确定矩阵G,矩阵E,矩阵M,向量h的取值呢?之前的博客中我采用了手动推导的方式(微电网两阶段鲁棒优化经济调度方法matlab代码_)。

        这次我来教大家使用Yalmip工具箱中的函数depends、getbase、getbasematrix、see写出约束矩阵取值的方法,函数的语法可以参考官方文档。

        下面是一个简单的线性规划问题:

        我用这个例子来帮助大家体会depends、getbase、getbasematrix、see等函数的用法,代码如下:

clc
clear
close all
warning off
yalmip('clear')%% 决策变量
sdpvar x1 x2
%% 目标函数
obj = x1 + 2*x2;z = [-2*x1 + 3*x2 - 12 ;x1 + x2 - 14;-3*x1 + x2 + 3;3*x1 + x2 - 30];x1_index = depends(x1)
x2_index = depends(x2)
M1 = full(getbase(z))
M2 = full(getbasematrix(z,depends(x1)))
M3 = full(getbasematrix(z,depends(x2)))
see(z)

        运行结果如下:

        观察可知,depends函数返回的是变量在Yalmip工具箱中的编号getbase函数以稀疏矩阵的形式返回sdpvar变量中的常数项系数以及变量系数getbasematrix函数以稀疏矩阵的形式返回sdpvar变量中指定编号的变量系数see函数直接在命令行输出sdpvar变量中的常数项变量系数以及用到的变量编号。

        假设我们想把上面的优化问题写成紧凑的矩阵形式:

        求矩阵A、b、c,然后使用矩阵形式求解优化问题的代码如下:

clc
clear
close all
warning off
yalmip('clear')%% 决策变量
sdpvar x1 x2%% 求系数矩阵
obj0 = x1 + 2*x2;z = [-2*x1 + 3*x2 - 12 ;x1 + x2 - 14;-3*x1 + x2 + 3;3*x1 + x2 - 30];M1 = full(getbase(z));
M2 = full(getbase(obj0));
index = depends([x1 x2]);
A = M1(:,index + 1);
b = -M1(:,1);
c = M2(index + 1)';%% 矩阵形式的目标函数
x = [x1;x2];
obj = c'*x;
C = [A*x <= b , x >= 0];%% 求解优化问题
ops = sdpsettings('verbose', 3, 'solver', 'gurobi');
sol = optimize(C , -obj ,ops);%% 判断求解是否成功
if sol.problem == 0disp('求解成功!!!');x = value(x)
elsedisp(['求解失败,原因为',sol.info]);
end

        运行结果如下:

        采用相同的方法,将文献[1]所提确定性优化问题改写成矩阵形式求解的代码在压缩包中的Problem2文件夹中,运行Problem2_matrix.m文件即可得到结果。

3.3 矩阵形式的C&CG算法与KKT条件求解

        原始子问题为:

        内层优化中变量x和不确定变量u都可以看作常数,其拉格朗日函数可以写作:

        其中,π和θ都是拉格朗日乘子。根据拉格朗日函数进一步写出KKT条件

        这就是初始的KKT条件,可以进一步化简。首先根据式(1)和(4)可以得到:

        然后,根据式(1)和(3)可以得到:

        经过这样处理,就可以消去变量θ,减少决策变量的数目,得到:

        其中包含两项互补松弛条件,可以通过引入0-1变量,使用大M法转换为线性约束:

        将KKT条件添加到子问题的外层优化中,子问题便转为:

        子问题变成了一个混合整数线性规划,可以采用求解器有效地进行求解。

        再复习一下,我们把文献[2]中所提两阶段鲁棒优化分解成一个主问题MP2_KKT和一个子问题SP2_KKT:

        主问题MP2_KKT

        子问题SP2_KKT

        使用KKT条件+C&CG算法求解该两阶段鲁棒优化问题的代码在压缩包中的Problem2文件夹中,运行Problem2_KKT.m文件即可得到结果。

3.4 矩阵形式的C&CG算法与对偶变换求解

        原始子问题为:

        其内层优化min问题的对偶问题可以写做:

        将其与外层max问题合并得到:  

        该问题的目标函数中包含u^T\pi的非线性项,可以进行线性化,也可以直接使用求解器进行求解。为了方便起见,我直接使用了求解器进行求解。但是由于问题规模比较大,求解时间会比较长(大概要3小时左右才能得到最优解)。

        首先,将不确定变量u写成:

        式中,\odot符号表示矩阵的Hadamard乘积(哈达玛积 Hadamard Product - 知乎),即对应元素相乘,对应于matlab中的“.*”符号。在此基础上,可以对原优化问题的目标函数进行化简:

        两阶段鲁棒优化问题可以分为主问题和子问题:

        对偶变换版本主问题MP2_dual

        对偶变换版本子问题SP2_dual

        使用C&CG算法与对偶变换求解两阶段鲁棒优化的步骤概括如下:

        使用对偶变换+C&CG算法求解该两阶段鲁棒优化问题的代码在压缩包中的Problem2文件夹中,运行Problem2_dual.m文件即可得到结果。

参考文献:

[1]Zeng B, Zhao L. Solving two-stage robust optimization problems using a column-and-constraint generation method[J]. Operations Research Letters, 2013, 41(5): 457-461.

[2]刘一欣,郭力,王成山.微电网两阶段鲁棒优化经济调度方法[J].中国电机工程学报,2018,38(14):4013-4022+4307.

PS:

        完整资料可以私信博主获取。

相关文章:

鲁棒优化入门(7)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(下)

0.引言 上一篇博客介绍了使用Yalmip工具箱求解单阶段鲁棒优化的方法。这篇文章将和大家一起继续研究如何使用Yalmip工具箱求解两阶段鲁棒优化(默认看到这篇博客时已经有一定的基础了&#xff0c;如果没有可以看看我专栏里的其他文章)。关于两阶段鲁棒优化与列与约束生成算法的原…...

Docker技术--Docker中的网络问题

1.docker中的网络通信 如果想要弄清楚docker中的网络通信问题,其实需要弄清楚这几个问题就可以:容器与容器之间的通信、容器与外部网络之间的通信、外部网络与容器之间的通信。 -a:容器与容器之间的通信,如下所示: 在默认情况下,docker使用网桥(Bridge模式)与NAT通信。这…...

ASP.NET Core 中的两种 Web API

ASP.NET Core 有两种创建 RESTful Web API 的方式&#xff1a; 基于 Controller&#xff0c;使用完整的基于ControllerBase的基类定义接口endpoints。基于 Minimal APIs&#xff0c;使用Lambda表达式定义接口 endpoints。 基于 Controller 的 Web API 可以使用构造函数注入&a…...

【线程池】如何判断线程池中的任务执行完毕(三)

目录 前言 1. isTerminated()方法 2. awaitTermination()方法 3.getTaskCount()方法和executor.getCompletedTaskCount()方法结合使用 4.使用CountDownlatch类 前言 通常我们使用线程池的时候&#xff0c;系统处于运行的状态&#xff0c;而线程池本身就是主要为了线程复用&…...

Qt/C++编写视频监控系统81-Onvif报警抓图和录像并回放

一、前言 视频监控系统中的图文警情模块&#xff0c;是通过Onvif协议的事件订阅拿到的&#xff0c;通过事件订阅后&#xff0c;设备的各种报警事件比如入侵报警/遮挡报警/越界报警/开关量报警等&#xff0c;触发后都会主动往订阅者发送&#xff0c;而且一般都是会发送两次&…...

浅谈安防视频监控平台EasyCVR视频汇聚平台对于夏季可视化智能溺水安全告警平台的重要性

每年夏天都是溺水事故高发的时期&#xff0c;许多未成年人喜欢在有水源的地方嬉戏&#xff0c;这导致了悲剧的发生。常见的溺水事故发生地包括水库、水坑、池塘、河流、溪边和海边等场所。 为了加强溺水风险的提示和预警&#xff0c;完善各类安全防护设施&#xff0c;并及时发现…...

基于单片机的串行通信发射机设计

一、项目介绍 串行通信是一种常见的数据传输方式&#xff0c;允许将数据以比特流的形式在发送端和接收端之间传输。当前实现基于STC89C52单片机的串行通信发射机&#xff0c;通过红外发射管和接收头实现自定义协议的数据无线传输。 二、系统设计 2.1 单片机选择 在本设计中&…...

MySQL数据库——多表查询(3)-自连接、联合查询、子查询

目录 自连接 查询语法 自连接演示 联合查询 查询语法 子查询 介绍 标量子查询 列子查询 行子查询 表子查询 自连接 通过前面的学习&#xff0c;我们对于连接已经有了一定的理解。而自连接&#xff0c;通俗地去理解就是自己连接自己&#xff0c;即一张表查询多次。…...

day53 动规.p14 子序列

- 1143.最长公共子序列 cpp class Solution { public: int longestCommonSubsequence(string text1, string text2) { vector<vector<int>> dp(text1.size() 1, vector<int>(text2.size() 1, 0)); for (int i 1; i < text1.size(…...

将docker打包成镜像并保存到本地

如果想重装系统&#xff0c;又不想破坏docker里面配好的环境&#xff0c;那么可以将docker镜像打包到本地进行保存。 1. 将docker打包成镜像 命令&#xff1a;docker commit 容器id 镜像名:tag 使用docker ps -a即可查看容器相关信息 docker commit dd25c7c6bf17 zm_cu101:c…...

Harmony数据存储工具类

使用的是mmkv 1、安装mmkv ohpm install @ohos/mmkv2、封装 import{MMKV, SerializeBase} from @ohos/mmkv/*** 数据存储工具类*/ class MMKVUtil{private filePath:string = private cachePath:string = private mmkv:MMKVprivate mmapID:string="MMKV"construct…...

ROS 2官方文档(基于humble版本)学习笔记(一)

ROS 2官方文档&#xff08;基于humble版本&#xff09;学习笔记&#xff08;一&#xff09; 一、安装ROS 2二、按教程学习1.CLI 工具配置环境使用turtlesim&#xff0c;ros2和rqt安装 turtlesim启动 turtlesim使用 turtlesim安装 rqt使用 rqt重映射关闭turtlesim 由于市面上专门…...

【数据结构】十字链表的画法

十字链表的基本概念 有向边又称为弧 假设顶点 v 指向 w&#xff0c;那么 w 称为弧头&#xff0c;v 称为弧尾 顶点节点采用顺序存储 顶点节点 data&#xff1a;存放顶点的信息firstin&#xff1a;指向以该节点为终点&#xff08;弧头&#xff09;的弧节点firstout&#xff1…...

使用rabbitmq进行支付之后的消息通知

订单服务完成支付后将支付结果发给每一个与订单服务对接的微服务&#xff0c;订单服务将消息发给交换机&#xff0c;由交换机广播消息&#xff0c;每个订阅消息的微服务都可以接收到支付结果. 微服务收到支付结果根据订单的类型去更新自己的业务数据。 相关技术方案 使用消息…...

【100天精通python】Day47:python网络编程_Web开发:web服务器,前端基础以及静态服务器

目录 1 网络编程与web编程 1.1 网络编程 1.2 web编程 1.3 前后端交互的基本原理 2 Web开发基础 2.1 HTTP协议 2.2 Web服务器 2.3 前端基础 2.3.1 HTML&#xff08;超文本标记语言&#xff09; 2. 3.2 CSS&#xff08;层叠样式表&#xff09; 2.3.3 JavaScript 2.…...

Web框架Beego

beego简介第一个beego项目beego项目结构分析bee 工具简介beego参数配置beego路由设置beego控制器介绍beego获取参数beego ORMbeego orm高级查询beego 原生sql查询beego 模板语法指南beego模板处理...

Kubernetes(K8s)基本环境部署

此处只做学习使用&#xff0c;配置单master环境。 一、环境准备 1、ip主机规划&#xff08;准备五台新机&#xff09;>修改各个节点的主机名 注意&#xff1a;关闭防火墙与selinux 节点主机名ip身份joshua1 kubernetes-master.openlab.cn 192.168.134.151masterjoshua2k…...

antd5:form组件底层封装库field-form-1.37.0启动

一开始node版本是18.16.0 npm install发现安装依赖成功 npm start发现启动出错 node:internal/crypto/hash:71this[kHandle] new _Hash(algorithm, xofLen);^Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:71:19)…...

深度学习经典检测方法的概述

深度学习经典的检测方法 two-stage&#xff08;两阶段&#xff09;&#xff1a;Faster-rcnn Mask-Rcnn系列 两阶段&#xff08;two-stage&#xff09;是指先通过一个区域提取网络&#xff08;region proposal network&#xff0c;RPN&#xff09;生成候选框&#xff0c;再通过…...

viewpager2导致的mViews下标越界问题

viewpager2种在嵌套一个RecyclerView场景&#xff1a;左右滑动&#xff0c;上下滑动&#xff0c;出现mViews为null问题。 //RecyclerView布局为 new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL) 由于使用viewpager2导致布局缓存的销毁&#xff0c;会…...

无涯教程-JavaScript - NORMSDIST函数

NORMSDIST函数替代Excel 2010中的NORM.S.DIST函数。 描述 该函数返回标准正态累积分布函数。分布的平均值为0(零),标准偏差为1。使用此功能代替标准法线区域的表格。 语法 NORMSDIST (z)争论 Argument描述Required/OptionalZThe value for which you want the distributio…...

Mysql查询(SELECT)

基本查询&#xff1a;SELECT FROM SELECT 查询字段 FROM 表名; SELECT * FROM userinfo; 条件查询&#xff1a;用where表示查询条件 SELECT 查询字段 FROM 表名 WHERE 条件; 模糊查询&#xff1a;like %匹配0或多个字符&#xff0c;一般不用左模糊&#xff08;%放在左边&…...

基于JAVAEE技术的ssm校园车辆管理系统源码和论文

基于JAVAEE技术的ssm校园车辆管理系统源码和论文105 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 1.选题背景和意义 背景&#xff1a; 随着第二次工业革命后&#xff0c;内燃机的发明与完善&#xff0c;解…...

opencv-人脸识别

对https://blog.csdn.net/weixin_46291251/article/details/117996591这哥们代码的一些修改 import cv2 import numpy as np import os import shutil import threading import tkinter as tk from PIL import Image, ImageTkchoice 0# 首先读取config文件&#xff0c;第一行…...

九、idSpanMap使用基数树代替原本的unordered_map 十、使用基数树前后性能对比

九、idSpanMap使用基数树代替原本的unordered_map 我们原本的idSpanMap用的是STL容器中的unordered_map哈希桶&#xff0c;因为STL的容器本身是不保证线程安全的&#xff0c;所以我们在访问时需要加锁保证线程安全&#xff0c;这也就是我们写的内存池的性能的瓶颈点。因为我做…...

政府科技项目验收全流程分享

科技验收测试 &#xff08;验收申请→主管部门初审→科技厅审核→组织验收→归档备案→信用管理&#xff09;&#xff1a; &#xff08;一&#xff09;验收申请 项目承担单位通过省科技业务管理系统提交验收申请。 按期完成的项目&#xff0c;项目承担单位应当在项目合同书…...

基于Matlab实现生活中的图像信号分类(附上源码+数据集)

在我们的日常生活中&#xff0c;我们经常会遇到各种各样的图像信号&#xff0c;例如照片、视频、图标等等。对这些图像信号进行分类和识别对于我们来说是非常有用的。在本文中&#xff0c;我将介绍如何使用Matlab来实现生活中的图像信号分类。 文章目录 介绍源码数据集下载 介…...

YOLOv5算法改进(12)— 替换主干网络之Swin Transformer

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。Swin Transformer是一种基于Transformer的深度学习模型&#xff0c;它在视觉任务中表现出色。与之前的Vision Transformer&#xff08;ViT&#xff09;不同&#xff0c;Swin Transformer具有高效和精确的特性&#xff0c;并…...

php 权限节点的位运算

一&#xff0c;概述 在 PHP 中&#xff0c;位运算可以用来进行权限节点的判断。通常&#xff0c;每个权限节点都会用一个不同的位表示&#xff08;2的n次方&#xff0c;从0开始&#xff09;&#xff0c;可以将这些位组合成一个权限值。然后&#xff0c;可以使用位运算符来检查…...

ClickHouse进阶(六):副本与分片-2-Distributed引擎

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &#x1f4cc;订阅…...