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 = [ 0 x 12 ⋯ x 1 n x 21 0 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ x m 1 x m 2 … 0 ] \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=
0x21⋮xm1x120⋮xm2⋯⋯⋱…x1nx2n⋮0
式中因素 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 = 0 x_{ij}=0 xij