python實(shí)現(xiàn)AHP層次分析法
01AHP方法過程
層次分析法是指將一個復(fù)雜的多目標(biāo)決策問題作為一個系統(tǒng),將目標(biāo)分解為多個目標(biāo)或準(zhǔn)則,進(jìn)而分解為多指標(biāo)(或準(zhǔn)則、約束)的若干層次,通過定性指標(biāo)模糊量化方法算出層次單排序(權(quán)數(shù))和總排序,以作為目標(biāo)(多指標(biāo))、多方案優(yōu)化決策的系統(tǒng)方法。
層次分析法是將決策問題按總目標(biāo)、各層子目標(biāo)、評價準(zhǔn)則直至具體的備投方案的順序分解為不同的層次結(jié)構(gòu),然后用求解判斷矩陣特征向量的辦法,求得每一層次的各元素對上一層次某元素的優(yōu)先權(quán)重,最后再加權(quán)和的方法遞階歸并各備擇方案對總目標(biāo)的最終權(quán)重,此最終權(quán)重最大者即為最優(yōu)方案。
層次分析法比較適合于具有分層交錯評價指標(biāo)的目標(biāo)系統(tǒng),而且目標(biāo)值又難于定量描述的決策問題。
02Python實(shí)現(xiàn)
數(shù)據(jù)樣例,判斷矩陣請參考判斷矩陣標(biāo)度定義。
import numpy?as?np data?=?np.array([[1,2,7,7],[1/2.0,1,6,8],[1/7.0,?1/6.0,?1,3],[1/7.0,1/8.0,1/3.0,1]]) eigenvalues,?vector?=?np.linalg.eig(data) eigenvalue_max?=?max(list(eigenvalues)) index_max?=?list(eigenvalues).index(eigenvalue_max) weights?=?vector[:,?index_max] weights?=?np.real(weights) weights?=?weights/np.sum(weights) print(weights) >>array([0.51247524,?0.35654443,?0.08503711,?0.04594321])
參考文獻(xiàn):孫曉瑞. 基于GIS的內(nèi)蒙古森林雪災(zāi)風(fēng)險評估與區(qū)劃[D]. 內(nèi)蒙古農(nóng)業(yè)大學(xué).
鏈 ? ? 接:http://www.doc88.com/p-3357858894228.html
標(biāo)簽: