使用到了特徵向量的和積法求出了數值解,避免了使用numpy自帶函式產生複數解的缺點。因為在大部分情況下,決策者得到的判斷矩陣都不是對稱的,必然會執行出複數解。
算例使用的是《決策理論和方法》的例5-2。
step1,計算總矩陣的特徵向量,最大特徵值和一致性檢驗。
step2,五個子方案的特徵向量,最大特徵值和一致性檢驗。將父子判斷矩陣分別錄入excel,使用函式呼叫不同的sheet頁**。
step3,一致性檢驗,如何小於給定閾值,就返回true。
完整**如下。
import pandas as pd#ahp方法實現
import numpy as np
import myio
np.set_printoptions(suppress=
true
)def
elga
(df)
:#和積法求近似解的特徵值特徵向量
df1=df/df.
sum(
) df2 = df1.
sum(1)
df3 = df2/
sum(df2)
df4 =np.dot(df,df3)
df5 = df4/
(len
(df3)
*df3)
return df3,df5.
sum(
)def
test
(lamda,n)
: ci =
(lamda-n)
/(n-1)
print
('ci '
,ci)
cr = ci/ri[n]
print
('cr '
,cr)
if cr<
0.1:
return
true
if __name__ ==
'__main__'
: ri = pd.series(
[0.58
,0.9
,1.12
,1.24
,1.32
,1.41
,1.45
], index=[3
,4,5
,6,7
,8,9
])url=
'd:\study\\test\data\\t7.xlsx'
df1= myio.getdef(url,0)
df2,df3=elga(df1)
print
('總方案矩陣為\n'
,df1)
print
('總方案的特徵向量為\n'
,df2)
print
('最大特徵值為\n'
,df3)
print
('是否滿足一致性檢驗\n'
,test(df3,5)
)for i in
range(1
,6):
df4= myio.getdef(url,i)
df5,df6= elga(df4)
print
('子方案矩陣為\n'
, df4)
print
('子方案的特徵向量為\n'
,df5)
print
('最大特徵值為\n'
,df6)
print
('是否滿足一致性檢驗'
,test(df6,3)
)
github倉庫在 層次分析法
ahp分析方法,其基本步驟可歸納為 1 建立遞階層次結構 建立遞階層次結構是ahp法中關鍵一步,如圖所示。首先,把複雜問題中所包含的因素分解為不同層次。同一層次的因素作為準則對下一層次的某些因素起支配作用,同時,它又受上乙個層次因素的支配。這種從上到下的支配關係形成了乙個遞階層次結構,處於最上層的是...
層次分析法
此方法的步驟 1.建立有目標層 準則層 方案層等構成的層次結構 2.構造下層各元素對上層每一元素的成對比較矩陣 3.計算各個成對比較矩陣的特徵根和特徵向量,做一致性檢驗,通過後將特徵向量取做權向量 4.用分層加權和法計算最下層元素對最上層元素的權重 即逐層矩陣相乘 關於一致性檢驗,n階成對比較矩陣的...
層次分析法
層次分析法是對難以完全定量的複雜系統作出決策的模型和方法。層次分析法的結構如下。建立層次結構模型 構造判別矩陣 正反交矩陣 層次單排序及其一致性檢驗 層次總排序及其一致性檢驗 這裡使用乙個例子,比如我們的目標是選出學校附近最好的餐館,這裡我們就會考慮每個餐館的衛生 口味 服務這個幾個方面,而候選的餐...