首页IT科技modeling python(DEMATEL-ISM模型的Python实现——方法介绍以及代码复现)

modeling python(DEMATEL-ISM模型的Python实现——方法介绍以及代码复现)

时间2025-04-30 00:44:35分类IT科技浏览9099
导读:前言 本文源于笔者的《系统工程》课程的小组作业,笔者尝试运用DEMATEL-ISM方法来进行分析,建模求解,但在网络上并没有找到相应的,特别是集合DEMATEL-ISM方法的代码。因此自己码了DEMATEL-ISM模型的Python代码,并作为第一个博客发布~...

前言

本文源于笔者的《系统工程》课程的小组作业              ,笔者尝试运用DEMATEL-ISM方法来进行分析                      ,建模求解       ,但在网络上并没有找到相应的       ,特别是集合DEMATEL-ISM方法的代码              。因此自己码了DEMATEL-ISM模型的Python代码                      ,并作为第一个博客发布~

参考文献中              ,笔者主要参考了李广利等1的研究       ,本文也将依此论文进行方法解读和代码复现                      。

网上查找资料的过程中                      ,笔者发现了一个MCDA方法的python代码库2              ,里面有很多多准则决策分析模型的相关代码,其中就有DEMATEL的代码                      ,笔者做了一定的参考       。

DEMATEL-ISM分析方法

方法简介

DEMATEL(Decision Making Trial and Evaluation Laboratory)                      ,全称为“决策试验和评价实验法              ”,是一种运用图论与矩阵工具进行系统要素分析的方法              ,通过分析系统中各要素之间的逻辑关系与直接影响关系                      ,可以判断要素之间关系的有无及其强弱评价       。ISM(Interpretative Structural Modelling)法全称为“解释结构模型                      ”       ,其特点是把复杂的系统分解为若干子系统(要素)              ,通过代数运算将系统构造成一个多级递阶的结构模型                      。

DEMATEL 模型可利用矩阵运算求出因素间的因果关系和影响强度                      ,通过可视化因素间的因果关

系       ,得以揭示复杂问题中的关键影响因素及影响程度;但该方法无法有效识别系统中因素的层级结

构              。ISM 法则通过分析构成系统的各子系统( 因素或要素) 之间的直接二元相关关系       ,基于布尔代数运算等                      ,构造多级递阶有向拓扑图              ,但无法确定要素对系统的影响程度       。

将两种方法结合       ,可以识别系统中关键要素及其影响程度                      ,并构建要素的层级结构                      。DEMATEL-ISM方法的过程如下:

步骤

明确系统要素

明确分析系统所构成的要素              ,将构成系统的要素标记为

x

1

x_1

x1,

x

2

x_2

x2
,

x

3

x_3

x3
,

\ldots

,

x

n

x_n

xn
              。 确定直接影响矩阵

采用专家打分法,比较

x

i

x_i

xi

x

j

x_j

xj
的影响                      ,由于因素与自身比较为没有影响                      ,直接影响矩阵的对角线值为0。通过比较得到直接影响矩阵

A

A

A

                      。

A

=

[

x

12

x

1

n

x

21

x

2

n

x

m

1

x

m

2

]

\begin{align} A= \begin{bmatrix} 0&x_{12}&\cdots&x_{1n}\\ x_{21}&0&\cdots&x_{2n}\\ \vdots &\vdots&\ddots &\vdots \\ x_{m1}&x_{m2}&\dots &0 \end{bmatrix} \end{align}

A=0x21xm1x120xm2x1nx2n0
式中因素

x

i

j

(

i

=

1

,

2

,

,

m

;

j

=

1

,

2

,

,

n

;

i

j

)

x_{ij}(i=1,2, \ldots, m;j=1,2, \ldots,n;i\neq j)

xij(i=1,2,,m;j=1,2,,n;i=j)
表示因素

x

i

x_i

xi

x

j

x_j

xj
的直接影响                      。

i

=

j

i=j

i=j
时,

x

i

j

=

x_{ij}=0

xij=0
。 规范影响矩阵

归一化原始关系矩阵得到规范影响矩阵              。归一化方法有很多种              ,这里可以采用行最大值法进行归一化                      ,即将矩阵

A

A

A的每一行求和       ,在这些值中取最大值              ,将矩阵

A

A

A
中元素除以最大值                      ,得到规范直接影响矩阵

B

B

B

                     。

B

=

x

i

j

m

a

x

(

j

=

1

n

x

i

j

)

\begin{align} B=\frac{x_{ij}}{max(\sum\limits_{j=1}^n x_{ij})} \end{align}

B=max(j=1nxij)xij
计算综合影响矩阵

综合系统矩阵体现系统中各个元素间的影响的综合效应       ,规范影响矩阵不断自乘后矩阵的所有值会趋近于0       ,即

lim

k

B

k

=

\lim\limits_{k \to \infty} B^k=0

klimBk=0

       。计算综合影响矩阵时                      ,得到

T

=

(

B

+

B

2

+

+

B

k

)

=

k

=

1

B

k

=

B

(

I

B

)

1

\begin{align} T=(B+B^2+\dots +B^k)=\sum\limits_{k=1}^\infty B^k=B(I-B)^{-1} \end{align}

T=(B+B2++Bk)=k=1Bk=B(IB)1
式中为

I

I

I
单位矩阵              。 计算各个要素的影响度              、被影响度                      、中心度和原因度

影响度指矩阵

T

T

T中各行值和              ,表示各行要素对其他所有要素的综合影响值       ,记作

D

i

D_i

Di

                      ,有:

D

i

=

j

=

1

n

x

i

j

,

(

i

=

1

,

2

,

,

n

)

\begin{align} D_i=\sum\limits_{j=1}^n x_{ij},(i=1,2,\dots,n) \end{align}

Di=j=1nxij,(i=1,2,,n)
被影响度指矩阵

T

T

T
中各列值和              ,表示各列要素对其他所有要素的综合影响值,记作

C

i

C_i

Ci

                      ,有:

C

i

=

j

=

1

n

x

j

i

,

(

i

=

1

,

2

,

,

n

)

\begin{align} C_i=\sum\limits_{j=1}^n x_{ji},(i=1,2,\dots,n) \end{align}

Ci=j=1nxji,(i=1,2,,n)
中心度表示因素在评价体系中的位置及其所起作用的大小                      ,某要素的中心度为其影响度于被影响度之和,记作

M

i

M_i

Mi

              ,有:

M

i

=

D

i

+

C

i

\begin{align} M_i=D_i+C_i \end{align}

Mi=Di+Ci

原因度由某要素的影响度和被影响度相减得到                      ,记作       ,有:

R

i

=

D

i

C

i

\begin{align} R_i=D_i-C_i \end{align}

Ri=DiCi
当原因度大于0时              ,表示该要素对其他要素的影响程度大                      ,称其为原因要素       ,当原因度小于0时       ,该要素为结果要素                      。 绘制因果图

将中心度

M

i

M_i

Mi为横坐标                      ,将原因度

R

i

R_i

Ri
作为纵坐标              ,绘制因果关系图       。该图可以直观体现因果关系       。 确定整体影响矩阵

整体影响矩阵由综合影响矩阵和单位矩阵相加得到                      。

确定可达矩阵

确定可达矩阵时需要引入一个阈值

λ

\lambda

λ以剔除因素之间影响程度较小的关系       ,从而明确层级结构的划分              。引入阈值

λ

\lambda

λ
对整体影响矩阵

E

E

E
进行处理                      ,可以得到可达矩阵

F

F

F

       。则有:

f

i

j

=

{

1

e

i

j

λ

(

i

,

j

=

1

,

2

,

,

n

)

e

i

j

<

λ

(

i

,

j

=

1

,

2

,

,

n

)

\begin{equation} f_{ij}= \begin{cases} 1 & & {e_{ij}\geq\lambda(i,j=1,2,\dots,n)}\\ 0 & & {e_{ij}<\lambda(i,j=1,2,\dots,n)} \end{cases} \end{equation}

fij={10eijλ(i,j=1,2,,n)eij<λ(i,j=1,2,,n)
划分层级

由可达矩阵

F

F

F的第

i

i

i
行上值为1的列对应的因素求得可达集

R

(

x

1

)

=

{

x

i

F

i

j

=

1

}

R(x_1)=\{x_i|F_{ij} =1\}

R(x1)={xiFij=1}
              ,表示从因素

x

i

x_i

xi
出发可以达到的全部因素的合集,由可达矩阵

F

F

F
的第

i

i

i
列上值为1的行对应的因素求得先行集

S

(

x

1

)

=

{

x

i

F

j

i

=

1

}

S(x_1)=\{x_i|F_{ji} =1\}

S(x1)={xiFji=1}
,表示可以达到因素的全部因素的合集                      。如果

R

(

x

1

)

R(x_1)

R(x1)

S

(

x

1

)

S(x_1)

S(x1)
满足

R

(

x

1

)

S

(

x

1

)

=

R

(

x

1

)

R(x_1)\cap S(x_1)=R(x_1)

R(x1)S(x1)=R(x1)
                      ,则表示中对应的元素均能在中找到前因                      ,将该元素称为高层级的元素              。然后从可达矩阵中去除对应的行和列,再从矩阵中抽取最高级的因素              ,不断重复该过程                      ,直到所有的行和列均被去除。 绘制因素之间的递阶层次结构

根据去除因素的顺序       ,绘制系统要素间多级递阶有向拓扑图                      。

实例与代码

DEMATEL-ISM计算

这里笔者直接给出一组数据              ,10项因素                      ,直接影响矩阵

A

A

A

如下                      。

下面是DEMETAL-ISM计算的Python代码:

#导入所需库 import numpy as np import pandas as pd #直接影响矩阵A A = np.array([[0, 2, 0, 2, 3, 2, 3, 2, 3, 2], [0, 0, 0, 1, 3, 2, 0, 1, 1, 2], [0, 1, 0, 0, 2, 1, 0, 0, 0, 1], [0, 2, 0, 0, 3, 2, 0, 0, 0, 1], [1, 3, 0, 2, 0, 1, 1, 0, 1, 1], [0, 2, 0, 2, 1, 0, 1, 1, 0, 2], [2, 2, 0, 0, 2, 1, 0, 1, 2, 1], [0, 2, 0, 0, 1, 1, 1, 0, 1, 2], [3, 2, 0, 1, 2, 2,

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
如何提高网站的曝光量的方法(SEO技巧SEO排名优化-提升网站曝光率的秘密武器) 如何让自己的网站快速收录文章(网页链接快速收录的5个有效方法)