TOP

多準則決策模型-TOPSIS評價方法-源碼(一)
2017-10-10 12:10:40 】 瀏覽:11228
Tags:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#多準則決策模型-TOPSIS評價方法
 
##R語言實現-代碼
 
MCDM = function (decision  =  NULL, weights  =  NULL, impacts  =  NULL)  #決策矩陣,權重向量,影響因子
{
     if  (missing(weights)) 
         stop( "缺少'權重向量-weights'" )
     if  (missing(impacts)) 
         stop( "缺少'影響因子-impacts'" )
     if  (! is .matrix(decision) |  is .data.frame(decision)) 
         stop( "'決策矩陣-decision'必須是矩陣或數據框" )
     if  (length(weights) ! =  ncol(decision)) 
         stop( "權重向量長度錯誤" )
     if  (length(impacts) ! =  ncol(decision)) 
         stop( "影響因子長度錯誤" )
     if  (! all (weights >  0 )) 
         stop( "權重必須大于零" )
     if  (! is .character(impacts)) 
         stop( "影響因子必須是字符型 '+'或'-' 符號" )
     if  (! all (impacts  = =  "+"  | impacts  = =  "-" )) 
         stop( "影響因子只能是字符型 '+'或'-' 符號" )
     weights < -  weights / sum (weights)
     N < -  matrix(nrow  =  nrow(decision), ncol  =  ncol(decision))  #建一個空矩陣
     for  (i  in  1 :nrow(decision)) {
         for  (j  in  1 :ncol(decision)) {
             N[i, j] < -  decision[i, j] / sqrt( sum (decision[, j]^ 2 ))
         }
     }                  #決策矩陣標準化
     =  diag(weights)  #建權重對角矩陣
     =  % % W       #構造加權規范化矩陣
 
 
#確定理想方案和負理想方案
    u <- as.integer(impacts == "+"&nbs

請關注公眾號獲取更多資料



首頁 上一頁 1 2 下一頁 尾頁 1/2/2
】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇R語言-妹子被追后的選擇分析 下一篇R初學,邊學邊寫博客。日常小應用..