数学建模笔记——层次分析法

news2024/11/15 14:01:14

数学建模笔记——层次分析法

  • 数学建模笔记——层次分析法
    • 1. 层次分析法的基本原理和步骤
    • 2. 层次分析法的建模过程
      • 2.1 问题的提出
      • 2.2 模型原理
      • 2.3 为该问题建立层次结构模型
      • 2.4 构造判断矩阵
        • 1. 判断矩阵的含义
        • 2. 为该问题构造判断矩阵
      • 2.5 一致性检验
        • 1. 一致性检验方法
        • 2. 对上述判断矩阵进行一致性检验
      • 2.6 求权重
        • 1.算术平均法求权重
        • 2. 几何平均法求权重
        • 3. 特征值法求权重
      • 2.7 求评分
    • 3. 层次分析法的python实现代码
      • 3.1 一致性检验代码
      • 3.2 求权重代码
        • 1. 算术平均法求权重
        • 2. 几何平均法求权重
        • 3. 特征值法求权重

数学建模笔记——层次分析法

层次分析法( Analytic Hierarchy Process,简称 AHP)是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。

1. 层次分析法的基本原理和步骤

人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。

运用层次分析法建模,大体上可按下面四个步骤进行:

  1. 建立递阶层次结构模型;
  2. 构造出各层次中的所有判断矩阵;
  3. 层次单排序及一致性检验;
  4. 层次总排序及一致性检验。

下面说明这四个步骤的实现过程

2. 层次分析法的建模过程

2.1 问题的提出

新浪微博要选出一个明星作为微博之星,现在有三个候选明星A、B、C,该选择哪位明星呢?
考虑一个明星的成就可以看其粉丝数、颜值、作品数量、作品质量(考虑用作品某瓣平均评分代替)
A、B、C的相关数据如下

表 1 明星成就表
明星粉丝数颜值作品质量作品数量
A6000w106.525
B3400w68.146
C5500w87.531

2.2 模型原理

应用 AHP分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用。这些层次可以分为三类:

  1. 最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。
  2. 中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。
  3. 最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。

递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。每一层次中各元素所支配的元素一般不要超过 9 个。这是因为支配的元素过多会给两两比较判断带来困难。

image-20240827113013782
图 1 层次结构模型

2.3 为该问题建立层次结构模型

建立的递阶层次结构模型如下

image-20240827113312693
图 2 建立递阶层次结构模型

2.4 构造判断矩阵

1. 判断矩阵的含义
  • 对指标的重要性进行两两比较,构造判断矩阵,从而科学求出权重
  • 矩阵中元素 a i j a_{ij} aij的意义是,第 i i i个指标相对第 j j j个指标的重要程度

定义 1 若矩阵 A = ( a i j ) n × n A=(a_ij)_{n\times n} A=(aij)n×n满足

  • a i j > 0 a_{ij}>0 aij>0
  • a j i = 1 a i j a_{ji}=\frac1{a_{ij}} aji=aij1( i , j = 1 , 2 , ⋯   , n i,j=1,2,\cdots,n i,j=1,2,,n)

则称之为正互反矩阵(易见 a i i = 1 , i = 1 , ⋯   , n a_{ii}=1,i=1,\cdots,n aii=1,i=1,,n )。

关于如何确定 a i j a_{ij} aij 的值,Saaty 等建议引用数字 1~9 及其倒数作为标度。表 7- 1 列出了 1~9 标度的含义:

表 2 标度的含义
标度含义
1表示两个因素相比 具有相同重要性
3表示两个因素相比,前者比后者稍重要
5表示两个因素相比,前者比后者明显重要
7表示两个因素相比,前者比后者强烈重要
9表示两个因素相比,前者比后者极端重要
2, 4, 6, 8表示上述判断的中间值
倒数若因素 i 与因素 j 的重要性之比为 a i j a_{ij} aij,那么因素 j 与因素 i 的重要性之比为 a j i = 1 / a i j a_{ji}=1/a_{ij} aji=1/aij
2. 为该问题构造判断矩阵

依次对矩阵进行两两比较,得到完整的判断矩阵,如表3所示

表 3 判断矩阵
粉丝数颜值作品质量作品数量
粉丝数1235
颜值1/211/22
作品质量1/3211/2
作品数量1/51/221

由于两两比较的过程中忽略了其他因素,最后导致最后结果可能出现矛盾

a 23 = 1 2 a_{23}=\frac{1}{2} a23=21说明作品质量比颜值重要

a 24 = 2 a_{24}=2 a24=2说明颜值比作品数量重要

由上面两个结果可以推出作品质量比作品数量重要

而由 a 34 = 1 2 a_{34}=\frac{1}{2} a34=21推出作品数量比作品质量重要,产生了矛盾

因此我们需要进行一致性检验避免上述情况

2.5 一致性检验

1. 一致性检验方法

判断矩阵 A A A对应于最大特征值 λ m a x \lambda_\mathrm{max} λmax的特征向量 W W W ,经归一化后即为同一层次相应因素对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序。
上述构造成对比较判断矩阵的办法虽能减少其它因素的干扰,较客观地反映出一对因子影响力的差别。但综合全部比较结果时,其中难免包含一定程度的非一致性。如果比较结果是前后完全一致的,则矩阵 A A A的元素还应当满足:
a i j a j k = a i k , ∀ i , j , k = 1 , 2 , ⋯ n a_{ij}a_{jk}=a_{ik},\quad\forall i,j,k=1,2,\cdots n aijajk=aik,i,j,k=1,2,n
定义 2 满足上述关系式的正互反矩阵称为一致矩阵。

需要检验构造出来的(正互反)判断矩阵 A A A是否严重地非一致,以便确定是否接受 A A A
定理 1 正互反矩阵 A A A的最大特征根 λ m a x \lambda_\mathrm{max} λmax必为正实数,其对应特征向量的所有分量均为正实数。 A A A的其余特征值的模均严格小于 λ m a x \lambda_\mathrm{max} λmax
定理 2 A A A为一致矩阵,则

  1. A A A必为正互反矩阵。
  2. A A A的转置矩阵 A T A^T AT也是一致矩阵。
  3. A A A 的任意两行成比例,比例因子大于零,从而 rank ⁡ ( A ) = 1 \operatorname{rank}(A)=1 rank(A)=1(同样, A A A 的任意两列也成比例)。
  4. A A A的最大特征值 λ m a x = n \lambda_\mathrm{max}=n λmax=n ,其中 n n n为矩阵 A A A的阶。 A A A的其余特征根均为零。
  5. A A A的最大特征值 λ m a x \lambda_\mathrm{max} λmax 对应的特征向量为 W = ( w 1 , ⋯   , w n ) T W=(w_1,\cdots,w_n)^T W=(w1,,wn)T,则 a i j = w i w j a_{ij}=\frac{w_i}{w_j} aij=wjwi, ∀ i , j = 1 , 2 , ⋯   , n \forall i,j=1,2,\cdots,n i,j=1,2,,n,即

A = [ w 1 w 1 w 1 w 2 ⋯ w 1 w n w 2 w 1 w 2 w 2 ⋯ w 2 w n ⋯ ⋯ ⋯ ⋯ w n w 1 w n w 2 ⋯ w n w n ] A=\begin{bmatrix}\frac{w_1}{w_1}&\frac{w_1}{w_2}&\cdots&\frac{w_1}{w_n}\\\frac{w_2}{w_1}&\frac{w_2}{w_2}&\cdots&\frac{w_2}{w_n}\\\cdots&\cdots&\cdots&\cdots\\\frac{w_n}{w_1}&\frac{w_n}{w_2}&\cdots&\frac{w_n}{w_n}\end{bmatrix} A= w1w1w1w2w1wnw2w1w2w2w2wnwnw1wnw2wnwn

定理 3 n n n阶正互反矩阵 A A A为一致矩阵当且仅当其最大特征根 λ m a x = n \lambda_\mathrm{max}=n λmax=n ,且当正互反矩阵 A A A非一致时,必有 λ m a x > n \lambda_\mathrm{max}>n λmax>n

根据定理 3,我们可以由 λ m a x \lambda_\mathrm{max} λmax是否等于 n n n来检验判断矩阵 A A A是否为一致矩阵。由于特征根连续地依赖于 a i j a_{ij} aij,故 λ m a x \lambda_\mathrm{max} λmax n n n 大得越多, A A A的非一致性程度也就越严重, λ m a x \lambda_\mathrm{max} λmax对应的标准化特征向量也就越不能真实地反映出 X = { x 1 , ⋅ ⋅ ⋅ , x n } X=\{x_1,\cdotp\cdotp\cdotp,x_n\} X={x1,⋅⋅⋅,xn}在对因素 Z Z Z的影响中所占的比重。因此,对决策者提供的判断矩阵有必要作一次一致性检验,以决定是否能接受它。

对判断矩阵的一致性检验的步骤如下:

  1. 计算一致性指标 C I CI CI
    C I = λ max ⁡ − n n − 1 CI=\frac{\lambda_{\max}-n}{n-1} CI=n1λmaxn

  2. 查找相应的平均随机一致性指标 R I RI RI 。对 n = 1 , ⋯   , 9 n=1,\cdots,9 n=1,,9 ,Saaty 给出了 R I RI RI 的值如表 3所示。

表 4
n123456789
RI000.580.901.121.241.321.411.45

R I RI RI的值是这样得到的,用随机方法构造 500 个样本矩阵:随机地从 1~9 及其倒数中抽取数字构造正互反矩阵,求得最大特征根的平均值 λ m a x ′ \lambda_\mathrm{max}^{\prime} λmax,并定义
R I = λ max ⁡ ′ − n n − 1 RI=\frac{\lambda^{\prime}_{\max}-n}{n-1} RI=n1λmaxn

  1. 计算一致性比例 C R CR CR
    C R = C I R I CR=\frac{CI}{RI} CR=RICI

C R = C I R I { 0 , 判断矩阵为一致矩阵 < 0.1 , 判断矩阵一致 ≥ 0.1 , 判断矩阵不一致 CR=\frac{CI}{RI}\quad\begin{cases}&0,&\text{判断矩阵为一致矩阵}\\&<0.1,&\text{判断矩阵一致}\\&\geq0.1,&\text{判断矩阵不一致}\end{cases} CR=RICI 0,<0.1,0.1,判断矩阵为一致矩阵判断矩阵一致判断矩阵不一致

2. 对上述判断矩阵进行一致性检验

当前判断矩阵的 λ m a x = 4.68 , n = 4 \lambda_{max} = 4. 68, n = 4 λmax=4.68,n=4, 求得 C I = 0.227 CI = 0. 227 CI=0.227, 查表 R I = 0.89 RI = 0. 89 RI=0.89, 得CR = 0. 255,CR$\geq$0.1需修改判断矩阵。

修改后的判断矩阵如表5

表 5 修改后的判断矩阵
粉丝数颜值作品质量作品数量
粉丝数1235
颜值1/211/22
作品质量1/3212
作品数量1/51/21/31

对修改后的判断矩阵进行一致性检验,求得 λ m a x = 4.1128 , n = 4 \lambda_{max} =4.1128, n = 4 λmax=4.1128,n=4, 求得 C I = 0.227 CI = 0. 227 CI=0.227, 查表 R I = 0.89 RI = 0. 89 RI=0.89, 得CR = 0.0418,CR$\textless$0.1,通过一致性检验

2.6 求权重

1.算术平均法求权重

一般步骤:

  1. 将判断矩阵按照列归一化(每个元素除以其所在列的和)
  2. 将归一化的各列相加(按行求和)
  3. 将相加后得到的向量中每个元素除以n即可得到权重向量

假设判断矩阵 A = [ a 11 ⋯ a 1 n ⋮ ⋱ ⋮ a n 1 ⋯ a n n ] A=\begin{bmatrix}a_{11}&\cdots&a_{1n}\\\vdots&\ddots&\vdots\\a_{n1}&\cdots&a_{nn}\end{bmatrix} A= a11an1a1nann ,那么算术平均法求得的权重向量
w i = 1 n ∑ j = 1 n a i j ∑ k = 1 n a k j ( i = 1 , 2 , 3 , . . . , n ) w_{i}=\frac{1}{n}\sum_{j=1}^{n}\frac{a_{ij}}{\sum_{k=1}^{n}a_{kj}} ( i=1, 2, 3, ..., n ) wi=n1j=1nk=1nakjaij(i=1,2,3,...,n)
由算术平均法求出微博之星的权重:

由表5的判断矩阵,进行列归一化得

表 6 进行归一化后的判断矩阵
粉丝数颜值作品质量作品数量
粉丝数0.4920.3640.6000.500
颜值0.2460.1820.1000.200
作品质量0.1640.3640.2000.200
作品数量0.0980.0910.1000.100

进行算术平均后求得权重

权重
粉丝数0.489
颜值0.182
作品质量0.232
作品数量0.097
2. 几何平均法求权重

一般步骤:

  1. 将判断矩阵的元素按照行相乘得到一个新的列向量
  2. 将新的向量的每个分量开n次方
  3. 对该列向量进行归一化即可得到权重向量

假设判断矩阵A= [ a 11 ⋯ a 1 n ⋮ ⋱ ⋮ a n 1 ⋯ a n n ] \begin{bmatrix}a_{11}&\cdots&a_{1n}\\\vdots&\ddots&\vdots\\a_{n1}&\cdots&a_{nn}\end{bmatrix} a11an1a1nann

那 么 算 术 平 均 法 求 得 的 权 重 向 量
w i = ( ∏ j = 1 n a i j ) 1 n ∑ k = 1 n ( ∏ i = 1 n a k j ) 1 n , ( i = 1 , 2 , … , n ) w_i= \frac {\left ( \prod _{j= 1}^na_{ij}\right ) ^{\frac 1n}}{\sum _{k= 1}^n\left ( \prod _{i= 1}^na_{kj}\right ) ^{\frac 1n}}, ( i= 1, 2, \ldots , n) wi=k=1n(i=1nakj)n1(j=1naij)n1,(i=1,2,,n)
用几何平均法求微博之星的权重:

由表5的判断矩阵,行相乘后开方,得

行相乘后开方
粉丝数2.34
颜值0.84
作品质量1.07
作品数量0.47

求出权重

权重
粉丝数0.495
颜值0.178
作品质量0.227
作品数量0.100
3. 特征值法求权重

一致矩阵有一个特征值n,其余特征值为0,同时我们很容易得到特征值为n时,对应的特征向量刚好为
k [ 1 a 11 , 1 a 12 , … , 1 a 1 n ] T ( k ≠ 0 ) k\left[\frac{1}{a_{11}} ,\quad\frac{1}{a_{12}} ,\quad\ldots ,\quad\frac{1}{a_{1n}}\right]^{T} ( k\neq0 ) k[a111,a121,,a1n1]T(k=0)
假如我们的判断矩阵一致性可以接受,我们可以仿照一致性矩阵权重的求法

  1. 求出矩阵A的最大特征值以及其对应的特征向量
  2. 对求出的特征向量进行归一化即可得到我们的权重

由表5的判断矩阵,求出特征向量如下

特征向量
粉丝数0.8487
颜值0.3076
作品质量0.3962
作品数量0.1676

求出权重

权重
粉丝数0.493
颜值0.179
作品质量0.230
作品数量0.097

2.7 求评分

3种方法的权重差不多,我们选用特征值法,结果如下

明星粉丝数颜值作品质量作品数量评分
A0.40*0.4930.42*0.1790.29*0.230.25*0.0970.363
B0.23*0.4930.25*0.1790.37*0.230.45*0.0970.287
C0.37*0.4930.33*0.1790.34*0.230.30*0.0970.349

由上可知,应当选A当选微博之星

3. 层次分析法的python实现代码

3.1 一致性检验代码

import numpy as np
# A为判断矩阵
A = np.array([[1, 2, 3, 5], [1/2, 1, 1/2, 2],
             [1/3, 2, 1, 2], [1/5, 1/2, 1/2, 1]])
n = A.shape[0]  # 获取A的行数

# 求出最大特征值和对应的特征向量,np.linalg.eig()函数可以求出矩阵的特征值和特征向量
eigvals, eigvecs = np.linalg.eig(A)
max_eigval = max(eigvals)  # 最大特征值
CI = (max_eigval-n)/(n-1)  # 一致性指标
RI = [0, 0.0001, 0.52, 0.89, 1.12, 1.26, 1.36, 1.41,
      1.46, 1.49, 1.52, 1.54, 1, 56, 1, 58, 1.59]  # 随机一致性指标
# 上述n=2时,一定是一致矩阵,为了避免分母为0,将第二个元素改为很接近0的正数
CR = CI/RI[n-1]  # 一致性比例
print("一致性指标CI=", CI)
print("一致性比例CR=", CR)
if CR < 0.1:
    print("一致性较好,判断矩阵可以接受")
else:
    print("一致性较差,判断矩阵不可接受")

输出:

一致性指标CI= (0.037610012730716846+0j)
一致性比例CR= (0.04225844127046837+0j)
一致性较好,判断矩阵可以接受

3.2 求权重代码

1. 算术平均法求权重
import numpy as np
# 定义判断矩阵A
A = np.array([[1, 2, 3, 5], [1/2, 1, 1/2, 2],
             [1/3, 2, 1, 2], [1/5, 1/2, 1/2, 1]])
# 计算每一列的和
Asum = np.sum(A, axis=0)
# 获取A的行数
n = A.shape[0]
# 归一化,二维数组除以一维数组,会自动将一维数组扩展为二维数组,然后再相除
Stand_A = A/Asum
# 各列相加到同一行
A_sum_row = np.sum(Stand_A, axis=1)
# 求出权重
weight = A_sum_row/n
print("权重为:", weight)

输出:

权重为: [0.48885991 0.18192996 0.2318927  0.09731744]
2. 几何平均法求权重
import numpy as np
# 定义判断矩阵A
A = np.array([[1, 2, 3, 5], [1/2, 1, 1/2, 2],
             [1/3, 2, 1, 2], [1/5, 1/2, 1/2, 1]])
# 将A中的每一行元素相乘得到一列向量
# np.prod()函数可以计算数组中所有元素的乘积
prod_A = np.prod(A, axis=1)
# 将新的向量的每个分量开n次方等价于求n次方根
prod_n_A = np.power(prod_A, 1/4)
# 归一化处理
re_prod_A = prod_n_A/np.sum(prod_n_A)
# 输出特征向量
print("特征向量为:", re_prod_A)

输出:

特征向量为: [0.49492567 0.17782883 0.22724501 0.1000005 ]
3. 特征值法求权重
import numpy as np
# 定义判断矩阵A
A = np.array([[1, 2, 3, 5], [1/2, 1, 1/2, 2],
             [1/3, 2, 1, 2], [1/5, 1/2, 1/2, 1]])
# 获取A的行数
n = A.shape[0]
# 求出特征值和特征向量
eigvals, eigvecs = np.linalg.eig(A)
# 找出最大特征值的索引,np.argmax()函数可以找出数组中最大值的索引
max_index = np.argmax(eigvals)
# 找出最大特征值对应的特征向量
max_eigvec = eigvecs[:, max_index]
# 归一化处理
weight = max_eigvec/np.sum(max_eigvec)
print("权重为:", weight)

输出:

权重为: [0.4933895 +0.j 0.17884562+0.j 0.230339  +0.j 0.09742588+0.j]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2117365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】HTTP协议中的cookie和session

一、B站的登录和未登录——一种登录场景的演示 我们现在上的是B站大学&#xff0c;所以对于B站&#xff0c;我们是很熟悉的。当我们打开浏览器&#xff0c;并访问B站网页时&#xff08;很熟悉&#xff09;&#xff0c;会发现我们会自动登录上B站&#xff0c;为什么呢&#xff1…

解锁 macOS 剪贴板历史记录,高效复制、粘贴技巧

在Mac上&#xff0c;我们经常需要在不同文档之间复制和粘贴内容。然而&#xff0c;macOS自带的剪贴板只能保存最后一个复制项&#xff0c;这大大限制了我们的工作效率。幸运的是&#xff0c;一些第三方应用程序可以帮助我们查看和管理剪贴板的历史记录&#xff0c;从而提升我们…

基于RP2350 MCU的树莓派Pico 2开发板及MicroPython编程使用

2021年1月21日,树莓派基金会同时发布了第1代RP2040 MCU芯片和基于RP2040 MCU的第1代树莓派Pico开发板(Raspberry Pi Pico/ Raspberry Pi Pico 1)。2024年8月8日,树莓派基金会又发布了第2代RP2350 MCU芯片并推出了基于RP2350 MCU的第2代树莓派Pico开发板(Raspberry Pi Pico 2)…

pandas:一个强大的数据处理Python库

我是东哥&#xff0c;一个热衷于探索Python世界的自媒体人。今天&#xff0c;我要为大家介绍一个在Python数据分析领域中非常强大的库——Pandas。如果你对数据分析充满好奇&#xff0c;或者正在寻找一个简单易用的库来处理和分析数据&#xff0c;那么Pandas绝对是你的不二之选…

MySQL——库操作

首先先来说一下MySQL中常见的操作&#xff1a; 1. 清屏 system clear; 2. 如果你使用的是腾讯云的Ubuntu&#xff0c;登陆的时候用户名可能是ubuntu&#xff0c;进入后可以使用 sudo -i 切换为高级用户 一、创建数据库 create database db_name; 示例&#xff1a; mysql> …

汽车测试展︱AUTO TECH 2025 广州国际汽车测试测量技术展览会

汽车测试展︱AUTO TECH 2025 广州国际汽车测试测量技术展览会 The China Guangzhou Automotive Test Expo 2025 2025年11月20-22日&#xff0c;专注于华南地区专业的汽车质量控制展览会&#xff0c;将在广州保利世贸博览馆继续举办。是关于各种汽车测试解决方案的专业展如汽车电…

[C高手编程] static与extern: 作用域、可见性与存储类全面解析

&#x1f496;&#x1f496;⚡️⚡️专栏&#xff1a;C高手编程-面试宝典/技术手册/高手进阶⚡️⚡️&#x1f496;&#x1f496; 「C高手编程」专栏融合了作者十多年的C语言开发经验&#xff0c;汇集了从基础到进阶的关键知识点&#xff0c;是不可多得的知识宝典。如果你是即将…

高职人工智能训练师边缘计算实训室解决方案

一、引言 随着物联网&#xff08;IoT&#xff09;、大数据、人工智能&#xff08;AI&#xff09;等技术的飞速发展&#xff0c;计算需求日益复杂和多样化。传统的云计算模式虽在一定程度上满足了这些需求&#xff0c;但在处理海量数据、保障实时性与安全性、提升计算效率等方面…

jenkins 部署应用到多个环境

在日常开发的过程中&#xff0c;我们经常会遇到将应用程序部署到多个环境的需求场景&#xff0c;如会先发布到测试环境&#xff0c;由测试人员进行测试&#xff0c;成功之后&#xff0c;会继续将当前应用部署到集成环境&#xff0c;进行集成测试&#xff0c;全部通过后&#xf…

单位权中误差 详细介绍

单位权中误差&#xff08;Unit Weight Error, UWE&#xff09;是用于描述测量数据不确定性的一个统计量&#xff0c;特别是在地理信息系统&#xff08;GIS&#xff09;、导航和定位系统中。它主要用于评估和比较不同测量系统或算法的精度。以下是对单位权中误差的详细介绍&…

C++第一节入门

一、历史 C是在C上继承拓展的&#xff01; java是一家公司&#xff08;甲骨文&#xff09;借鉴C生成的&#xff01; C#是微软借鉴java生成的&#xff01; 二、命名空间 当我们定义一个名叫rand的变量&#xff0c;但是由于stdlib头文件里面有个函数跟rand重名&#xff01;因此…

如何在 Linux 系统中禁用用户登录 ?

管理 Linux 系统上的帐户是系统管理员的一项重要任务。一个常见的任务是禁用帐户&#xff0c;由于各种原因可能需要禁用帐户&#xff0c;例如当员工离开公司或出于安全目的需要临时禁用访问时。 本指南将以简单易懂的步骤引导您完成在 Linux 系统上禁用帐户的过程。 Step 1: …

Ruoyi Cloud 本地启动

参考 http://doc.ruoyi.vip/ https://gitee.com/y_project/RuoYi-Cloud https://blog.csdn.net/cs_dnzk/article/details/135289966 https://doc.ruoyi.vip/ruoyi-cloud/cloud/seata.html#%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%BB%8D 拉取代码本地跑通 用 git 从 ruoyi 微服务版仓…

HCIA--实验十一:单区域OSPF路由实验

一、实验内容 1.需求/要求&#xff1a; 使用三个路由器互联&#xff0c;各自配置一个loopback接口&#xff0c;在三个路由器上配置ospf动态路由协议&#xff1b; 二、实验过程 1.拓扑图&#xff1a; 2.步骤&#xff1a; 1.router配置基本信息 各接口的ip地址、loopback接…

华为OD机试真题 - 特殊的加密算法 - 深度优先搜索DFS(Python/JS/C/C++ 2024 D卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

C++:priority_queue(优先级队列)的模拟实现

目录 一、什么是优先级队列 二、优先级队列的定义 三、优先级队列的常用接口 四、模拟实现一个优先级队列 1、posh接口 2、empty接口、size接口和top接口 3、pop接口 4、构造函数 五、整体代码 一、什么是优先级队列 首先优先级队列不是队列&#xff0c;C 中的优先队…

IP包头的总长度字段和UDP包头的长度字段之间的关系

IP包头的总长度字段和UDP包头的长度字段之间的关系&#xff0c;并通过实例加以说明。 IP包头的总长度字段 **总长度&#xff08;Total Length&#xff09;**字段是一个16位的字段&#xff0c;表示整个IP数据包的总长度&#xff0c;包括IP包头和数据部分。单位是字节。由于该字…

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人&#xff0c;是不是经常需要制作各种PPT来分享我的生活和想法。但是&#xff0c;你们知道&#xff0c;有时候灵感来了&#xff0c;时间却不够用了&#xff01;&#x1f629;直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手&#…

PID控制算法(二)

&#xff08;BIlibili借鉴&#xff09;PID参数整定连接&#xff1a;Webpack App (rossning92.github.io) C的基本程序代码&#xff1a; 借鉴链接&#xff1a;PID超详细教程——PID原理串级PIDC代码在线仿真调参-CSDN博客 #include <iostream>using namespace std;stru…