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

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

  • 数学建模笔记——层次分析法
    • 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.rhkb.cn/news/420216.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相机内存卡格式化了照片怎么恢复?格式化恢复详解

摄影爱好者们都知道&#xff0c;相机内存卡是记录我们美好瞬间的重要媒介。然而&#xff0c;在使用过程中&#xff0c;有时我们会因操作不当或设备故障&#xff0c;不小心格式化了内存卡&#xff0c;从而导致珍贵的照片丢失。面对这种情况&#xff0c;我们该如何恢复这些被格式…

电脑pe是什么意思_电脑pe系统作用详细分析

有些小白很好奇&#xff0c;电脑pe是什么意思?所谓的电脑pe系统其实就是当我们的电脑出现问题而不能进入正常系统时候的一种“紧急备用”系统。如果需要重装操作系统的话&#xff0c;以往采用光盘使用的比较多&#xff0c;随着技术的进步&#xff0c;用u盘制作一个pe启动盘去安…

【自然语言处理】实验一:基于NLP工具的中文分词

目录 前言 1. 导入jieba分词器 2. 用精确模式进行中文分词 3. 用全模式进行中文分词 4. 用搜索引擎进行中文分词 5. 利用 lcut返回结果列表(list) 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &a…

避免在C#循环中使用await

在C#中&#xff0c;异步编程因其能够提升应用程序性能和响应能力而变得越来越流行。async和await关键字使得编写异步代码变得更加容易&#xff0c;但如果使用不当&#xff0c;它们也可能引入一些陷阱。一个常见的错误是在循环中使用await&#xff0c;这可能导致性能瓶颈和意外行…

直播相关01-录制麦克风声音,QT上 .pro 将 linux,mac和windows上配置为三种可以共享, 在.pro文件中 message 的作用

一 QT 上的 .pro 文件 将 linux&#xff0c;mac和windows上配置设置为可以共享 1. 先来看文件夹布局 2. 再来看 QT 中的 .pro文件 .pro 文件的写法 QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler …

Spring框架的核心模块有哪些

Spring框架的核心模块构成了其基础架构&#xff0c;并为开发者提供了丰富的功能。以下是一些主要的Spring核心模块&#xff1a; Spring Core&#xff1a; 这是Spring框架中最基础的模块&#xff0c;提供了依赖注入&#xff08;DI&#xff09;功能&#xff0c;这是Spring的基石。…

职场答案薄

公司做大的过程就是创始人把职责一层层分摊下去的过程&#xff0c;公司里的各级领导在招聘时的原始诉求都是一样的&#xff0c;就是招到可以帮自己分担一部分工作的人&#xff0c;然后自己好集中精力去做更重要的工作 如何去做运营 1.流程制度&#xff08;三个目的&#xff1a;…

MyBaits的初理解

一.Mybaits的简介 Mybaits就是对JDBC的简化&#xff0c;就是对持久化的实现。 二.基础 需要导的dependencies <dependencies><!-- mybatis依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId>&l…

STM32 HAL freertos零基础(二)-通过STM32CubeMX配置Freertos后在程序中进行任务创建,便于任务管理与识别。

1、简介 通过STM32CubeMX配置Freertos后&#xff0c;建立的任务都在freertos.c文件中&#xff0c;不易于观察&#xff0c;并且每次生成新任务还需要打开STM32CubeMX&#xff0c;本次教程讲解一种通过STM32CubeMX配置Freertos后在程序中进行任务创建&#xff0c;起到类似添加传…

【android10】【binder】【2.servicemanager启动——全源码分析】

系列文章目录 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录 …

C语言 | Leetcode C语言题解之第394题字符串解码

题目&#xff1a; 题解&#xff1a; #define N 2000typedef struct {int data[30];;int top; } Stack;void push(Stack *s, int e) { s->data[(s->top)] e; }int pop(Stack *s) { return s->data[--(s->top)]; }//多位数字串转换成int int strToInt(char *s) {cha…

MySQL表操作

目录 查看表 ​查看指定表的结构 ​删除表 小试牛刀 MySQL表的增删改查&#xff08;CRUD&#xff09; 插入操作 新增 指定列插入 多行插入 查询表中数据 全列查询 指定列查询 ​编辑查询字段为表达式 ​编辑别名 时间日期的处理 插入一个时间 获取当前时间 查…

批量创建文件夹和文件——excel VBA实现

当需要创建大量文件夹及文件时&#xff0c;可借助excel vba 实现&#xff0c;如下图&#xff1a; 批量创建文件名为1-10的文件夹&#xff0c;每个文件夹内有个与文件名相同的txt文件&#xff0c;txt文件内的数字也跟文件名相同。 附代码&#xff1a; Sub CreateFoldersAndFile…

30年期国债期货合约介绍

30年期国债期货合约 30年期国债期货合约主要条款解读 合约标的 30年期国债期货采用名义标准券设计&#xff0c;一篮子可交割国债均可用于交割。30年期国债期货合约标的是面值为100万元人民币、票面利率为3%的名义超长期国债。 可交割国债范围 30年期国债期货合约可交割国债…

【Power Compiler手册】9.时钟门控(6)

使用安全寄存器插入时钟门控 你可以使用同一个时钟门控来门控三模冗余(TMR)寄存器,对所有安全寄存器进行操作,而不需要触碰或修改投票逻辑。 Design Compiler NXT 工具会自动检测是否使用了安全寄存器,并相应地插入时钟门控。该工具始终确保同一安全组内的安全寄存器共享…

在连通无向图中寻找正反向各通过每条边一次的路径(中国邮递员问题)

在连通无向图中寻找正反向各通过每条边一次的路径(中国邮递员问题) 引言问题定义算法思路具体步骤第一步:找出所有奇度顶点第二步:将奇度顶点配对,并添加最短路径第三步:构造欧拉回路伪代码C语言实现引言 在图论中,中国邮递员问题(Chinese Postman Problem, CPP)是一…

VuePress搭建个人博客(手动安装)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【信创】推荐一款在龙芯CPU终端上使用的WiFi接收器 _ 统信 _ 麒麟

原文链接&#xff1a;【信创】推荐一款在龙芯CPU终端上使用的WiFi接收器 | 统信 | 麒麟 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在龙芯CPU架构的台式机上如何安装和使用无线WiFi接收器的文章。对于使用龙芯CPU的台式机用户来说&#xff0c;安装并配置WiF…

Word文档的读取(1)

读取一个班的答题卡 解决方法&#xff1a; 导入os模块后&#xff0c;将乔老师的文件夹路径 /Users/qiao/answerKey 赋值给变量allKeyPath。使用os.listdir()函数获取该路径下所有的答题卡名称列表&#xff0c;并赋值给变量allItems。最后使用for循环遍历所有答题卡&#xff0c…

Python机器学习——利用Keras和基础神经网络进行手写数字识别(MNIST数据集)

Python机器学习——利用Keras和基础神经网络进行手写数字识别&#xff08;MNIST数据集&#xff09; 配置环境创建虚拟环境安装功能包并进环境 编程1. 导入功能包2. 加载数据集3. 数据预处理4. 构建神经网络5. 神经网络训练6. 测试模型训练效果 配置环境 首先安装Anaconda&…