|
这段代码实现了熵权法模型的权重计算。下面是代码的解释: 函数定义:
* S8 i( o: y) r- 函数名为shang,接受三个输入参数:x(决策矩阵),standard(是否已经处理化),flag(判断类型)。
- 返回权重向量w。% v) A; M6 U6 L# A, i% ]/ j
变量初始化:
& j, G2 C- D6 O& U9 X4 L- 获取决策矩阵x的最小值a和最大值b。
- 获取决策矩阵的行数rows和列数cols。
- 如果函数调用时只提供两个参数,并且standard为0(表示尚未进行处理),则将flag设置为全1向量(表示所有指标都是高优指标)。, @; T4 T" |9 H9 b4 |: |4 G3 J$ F
标准化指标:
& |+ ~, y/ q2 F3 M- 如果参数standard为0,表示决策矩阵尚未进行处理化。
- 使用循环将决策矩阵x的每个元素进行标准化处理。! g$ u) H" W. q( w3 ?0 a2 U: N
- 如果flag(j)为1,表示该指标为高优指标,使用线性映射将值映射到0到1之间。
- 否则,表示该指标为低优指标,使用线性映射将值映射到1到0之间。
/ Y9 a5 \# v$ A; N
计算概率矩阵p:
: h7 v' G& t% [' A- 计算标准化矩阵x每列的和he。
- 使用循环计算概率矩阵p,即将标准化矩阵x的每个元素除以对应列的和he(j)。* _) W% U5 \ }* v+ U6 }3 R# W( N
指标归一化: 6 T$ i: u# B2 f( `1 V5 e
- 使用循环将概率矩阵p的每个元素进行指标归一化处理。
7 X$ A( T+ c0 l9 P1 ]& q% Z- 如果p(i,j)等于0,将z(i,j)设置为0。
- 否则,将z(i,j)设置为p(i,j)的自然对数log(p(i,j))。
- V4 F& A( Q6 B8 p) x) V. ?
计算e值: . _' O1 g+ g) ~7 R5 ?: R
- 初始化e为大小为1 x cols的零向量。
- 对概率矩阵p和归一化矩阵z进行逐元素乘积得到矩阵Q。
- 使用循环计算e值,即对Q的每列求和,乘以常数k。6 Y7 e3 T) ^& k. u
计算权重w:
" [% O1 a% w1 A% |% W9 w- x- 计算e值的和he。
- 使用循环计算权重w,即将(1 - e(i))除以(cols - he)。该步骤将权重归一化,使得所有权重之和为1。6 e$ A( Q& L+ o% D. ]6 O3 v5 \' `; g& F
该函数的作用是根据熵权法模型,计算决策矩阵中每个指标的权重。熵权法模型是一种多指标决策方法,通过标准化指标和概率计算,得到每个指标的权重,用于综合评价和决策分析。 4 |6 N2 ^2 A/ f: ~& C
% l% h V/ o8 X) Y2 d0 f V
3 M$ z. v* S& j* s- K |