1
我是一名地理空間專業人員,而不是數學家或程序員。所以請不要因爲不正確的措辭或編碼不當而對我進行懲罰。我只是在尋求幫助。如何使用(Python AHP)numpy.linalg來派生最大特徵值(似乎沒有收斂?)
我使用下面的代碼從一個判斷矩陣得出排名:
A = numpy.array(matrix)
"Define vector of weights based on eigenvector and eigenvalues"
eigenvalues, eigenvector=numpy.linalg.eig(A)
maxindex=numpy.argmax(eigenvalues)
eigenvalues=numpy.float32(eigenvalues) #float32
eigenvector=numpy.float32(eigenvector) #float32
weights=eigenvector[:, maxindex]
weights.tolist() #convert array(numpy) to vector
weights=[ w/sum(weights) for w in weights ]
print "Layer Weights: " + str(numpy.around(weights,3))
的問題是,派生的排名(權重)不匹配來自其他第三方AHP計算器。也就是說,它們似乎來自第一次迭代,而不是通過多次迭代收斂而得到的值。
例如,可以從以下兩兩相互矩陣:
[[1.0, 0.333, 0.2, 1.0, 0.333, 0.111],
[3.0, 1.0, 0.25, 3.0, 1.0, 0.111],
[5.0, 4.0, 1.0, 3.0, 2.0, 0.111],
[1.0, 0.333, 0.333, 1.0, 0.333, 0.111],
[3.0, 1.0, 0.5, 3.0, 1.0, 0.111],
[9.0, 9.0, 9.0, 9.0, 9.0, 1.0]]
我收到以下排名:
[ 0.035 0.074 0.15 0.038 0.08 0.623]
當我希望得到:
[ 0.056 0.074 0.106 0.057 0.076 0.631]
有誰有什麼想法?提前致謝。