《ANP》

提供: ORWiki
2007年7月12日 (木) 21:29時点における122.17.2.240 (トーク)による版
ナビゲーションに移動 検索に移動

【えいえぬぴい (analytic network process) 】

 AHPの特徴は, 一対比較の情報に基づいて固有ベクトル法を用いて各対象の評価値を推定するという面と, いくつかの評価基準の下での評価値を総合化するという階層構造にあった. T. L. Saatyの提案したANPというのは, 簡単に言うと, その階層構造をネットワーク構造に拡張したものである. Saatyはこのネットワーク構造の解析の基本として, 超行列とよばれる行列を導入し, その行列としての性質, 既約性や原始性を利用して解析法を確立した.

[超行列]

 はじめに簡単な例を通して, ANPの特徴をつかもう. たとえば食品産業の3社$$を代替案とみて, これらを2つの評価基準$$(広告), $$(サービス)で評価するという問題を考えよう. $$の$$による評価値が$$であるとしてこれらを列挙すると表1のようになる. $$の企業戦略として広告とサービスにそれぞれ$$, $$の重要度を考えているとすると$$, $$, $$の重要度の評価は, AHPのように一組だけでなく, $$によって変化して表2のようになる.


表1: $$の$$による評価


表2: $$の$$による評価


 これは$$が$$を評価するだけでなく, $$自身が$$の重要度を評価することを示している. つまりANPでは, 評価者と被評価者の区別が固定したものでなく, 互いに他を評価するという一種の相互評価の構造がある.

 対象$$の$$による評価値(評価がない場合は0)を$$行$$列として得られる行列が超行列(super matrix)と呼ばれるものである. 上の例の超行列は


\begin{equation} S= \begin{array}{c|cccccc|} \multicolumn{1}{c}{} &\multicolumn{1}{c}{C_1} &\multicolumn{1}{c}{C_2} &\multicolumn{1}{c}{} &\multicolumn{1}{c}{A_1} &\multicolumn{1}{c}{A_2} &\multicolumn{1}{c}{A_3}\\ \cline{2-7} C_1 &0 &0 & &w_{11} &w_{12} &w_{13} \\ C_2 &0 &0 & &w_{21} &w_{22} &w_{23} \\ A_1 &u_{11} &u_{12} & &0 &0 &0 \\ A_2 &u_{21} &u_{22} & &0 &0 &0 \\ A_3 &u_{31} &u_{32} & &0 &0 &0 \\ \cline{2-7} \end{array} \label{A-H-08+eq:1st} \end{equation}


 ANPの解析の目的はこの超行列が与えられたとき, 各対象(上例では$$)の総合評価値を求めることである. またANPでは与えられる評価値はすべて正であり, 一つの対象が与える評価値の総和は1であるという規約がある. つまり超行列の各列の要素の和は1である. このことは超行列が(列)確率行列であることを示している.

[ネットワーク構造]

 対象$$が$$を評価するとき(つまり超行列の$$要素が非ゼロのとき)そしてそのときに限り, 点$$から点$$への矢線をもつ有向グラフが得られるが, これをこのANPのネットワーク構造と呼ぶ. 上例に対するネットワークは図1のようになる. このグラフ構造の特徴が超行列$$の行列としての性質に密接に関連していて, それがANPの解析を特徴づける.

 すでにAHPの中に外部従属法という解析法があるが, これはANPの特殊なもので, そのネットワーク構造が図1のように2部グラフの形をしたものである. ANPの新しさは, このネットワーク構造がどんなものであっても, 超行列を基本として一貫した解析法で総合評価値を求めることができることにある.


\begin{figure}[htbp] \begin{center}

\unitlength 0.1in \begin{picture}(26.25,8.00)(1.75,-11.15)

\put(10.0000,-4.0000){\makebox(0,0){$C_1$}}%

\put(22.0000,-4.0000){\makebox(0,0){$C_2$}}%

\put(4.0000,-12.0000){\makebox(0,0){$A_1$}}%

\put(16.0000,-12.0000){\makebox(0,0){$A_2$}}%

\put(28.0000,-12.0000){\makebox(0,0){$A_3$}}%

\special{pn 8} \special{pa 1000 500} \special{pa 400 1100} \special{fp} \special{sh 1} \special{pa 400 1100} \special{pa 461 1067} \special{pa 438 1062} \special{pa 433 1039} \special{pa 400 1100} \special{fp} \special{pa 400 1100} \special{pa 1000 500} \special{fp} \special{sh 1} \special{pa 1000 500} \special{pa 939 533} \special{pa 962 538} \special{pa 967 561} \special{pa 1000 500} \special{fp} \special{pa 1000 500} \special{pa 1600 1100} \special{fp} \special{sh 1} \special{pa 1600 1100} \special{pa 1567 1039} \special{pa 1562 1062} \special{pa 1539 1067} \special{pa 1600 1100} \special{fp} \special{pa 1600 1100} \special{pa 2200 500} \special{fp} \special{sh 1} \special{pa 2200 500} \special{pa 2139 533} \special{pa 2162 538} \special{pa 2167 561} \special{pa 2200 500} \special{fp} \special{pa 2200 500} \special{pa 2800 1100} \special{fp} \special{sh 1} \special{pa 2800 1100} \special{pa 2767 1039} \special{pa 2762 1062} \special{pa 2739 1067} \special{pa 2800 1100} \special{fp} \special{pa 2800 1100} \special{pa 2200 500} \special{fp} \special{sh 1} \special{pa 2200 500} \special{pa 2233 561} \special{pa 2238 538} \special{pa 2261 533} \special{pa 2200 500} \special{fp} \special{pa 2200 500} \special{pa 1600 1100} \special{fp} \special{sh 1} \special{pa 1600 1100} \special{pa 1661 1067} \special{pa 1638 1062} \special{pa 1633 1039} \special{pa 1600 1100} \special{fp} \special{pn 8} \special{pa 1000 500} \special{pa 2800 1100} \special{fp} \special{sh 1} \special{pa 2800 1100} \special{pa 2743 1060} \special{pa 2749 1083} \special{pa 2730 1098} \special{pa 2800 1100} \special{fp} \special{pa 2800 1100} \special{pa 1000 500} \special{fp} \special{sh 1} \special{pa 1000 500} \special{pa 1057 540} \special{pa 1051 517} \special{pa 1070 502} \special{pa 1000 500} \special{fp}

VECTOR 2 0 3 0
4 2200 900 400 1500 400 1500 2200 900

\special{pn 8} \special{pa 2200 500} \special{pa 400 1100} \special{fp} \special{sh 1} \special{pa 400 1100} \special{pa 470 1098} \special{pa 451 1083} \special{pa 457 1060} \special{pa 400 1100} \special{fp} \special{pa 400 1100} \special{pa 2200 500} \special{fp} \special{sh 1} \special{pa 2200 500} \special{pa 2130 502} \special{pa 2149 517} \special{pa 2143 540} \special{pa 2200 500} \special{fp} \end{picture}


図1: ネットワーク構造


[ANPの解法]

 SaatyのANPの解法は, 超行列の累乗$$の$ $での極限を利用するものであるが, $$の行列としての性質によって, その収束状態が異なってくる.

 一般に行列の性質はそれに対応する有向グラフの特性と密接に関連する. 行列論でいう行列の既約性 (irreducibility)は, 対応する有向グラフが強連結であることと同値である. (有向グラフの任意の2点$$に対して$$から$$への有向パスがあれば, このグラフを強連結という).

 また非負の既約行列$$が原始(primitive)であるとは, 適当な自然数$$に対して$$の要素がすべて正となることであるが, これはこの行列に対応する有向グラフの周期が1であることと同値である [1]. 周期とはすべての有向サイクル(ある点からその点にはじめて戻る有向パス)の長さの最大公約数$$である. 図1での有向サイクルの長さは, $ $であるので周期は$$である.

 超行列$$に対応する有向グラフの周期$$がANPの解法に重要な役割を果たす. SaatyによるANP解法の基本はつぎの定理に要約される [1]:

定理 $$超行列$$が既約であってかつ原始($$に対応する有向グラフの周期が1)であれば, $$で$$は収束しその極限値$$はすべての列が同一ベクトル$ 構文解析に失敗 (構文エラー): {\displaystyle \mbox{\boldmath x}\, } $となる. つまり


構文解析に失敗 (構文エラー): {\displaystyle lim_{t\to\infty}S^t=S^{\infty}=[ \mbox{\boldmath x} \mbox{\boldmath x} \cdots \mbox{\boldmath x} \mbox{\boldmath x}]\, }  (2)


そしてこの$ 構文解析に失敗 (構文エラー): {\displaystyle \mbox{\boldmath x}=[x_1x_2\cdots x_n]^{\top}\, } $の要素$$を対象$$の総合評価値とみることができる.

定理 超行列$$が既約であって, 対応する有向グラフの周期を$$とするとき$$で$$が収束し, その極限値で行と列を適当に並べかえたものを$$とすると, これは$$位のブロック対角行列となり, 各ブロック内ではすべての列が同一ベクトルとなる.

たとえば$$なら


構文解析に失敗 (不明な関数「\begin{eqnarray}」): {\displaystyle \begin{eqnarray} \begin{array}{ccc} S^{\infty}= \left[ \begin{array}{cc} S_1 & O \\ O &S_2 \\ \end{array} \right] & , & \begin{array}{c} S_1=[ \mbox{\boldmath x}_1 \mbox{\boldmath x}_1\cdots \mbox{\boldmath x}_1] \\ S_2=[ \mbox{\boldmath x}_2 \mbox{\boldmath x}_2\cdots \mbox{\boldmath x}_2] \\ \end{array} \end{array}\, } (3)


となり, $ 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle \mbox{\boldmath x}_i\, } $の各成分が対象の総合評価値を与える.

[超行列の固有ベクトル]

 最近, 高橋, 関谷 [2], [3] は, $$が既約ならば, $$の主固有ベクトルが(2)等の収束ベクトル$ 構文解析に失敗 (構文エラー): {\displaystyle \mbox{\boldmath x}\, } $に一致することを示している. $$が確率行列であるから, その主固有値は1であり, $$の主固有ベクトル$ 構文解析に失敗 (構文エラー): {\displaystyle \mbox{\boldmath x}\, } $は


構文解析に失敗 (構文エラー): {\displaystyle S \mbox{\boldmath x}= \mbox{\boldmath x}\, }  (4)


の解であるが, これが(2)の$ 構文解析に失敗 (構文エラー): {\displaystyle \mbox{\boldmath x}\, } $と(定数倍を除いて)一致することが示されたのである. $$が原始でない場合でも(4)の解はたとえば(3)の$ 構文解析に失敗 (構文エラー): {\displaystyle \mbox{\boldmath x}_1, \mbox{\boldmath x}_2\, } $をそのまま縦に並べたものと一致する.

 これによるとANPの解法は極めて簡単で超行列の主固有ベクトルを求めればよいということになる. また「非負の既約行列の主固有ベクトルは(定数倍を除いて)一意であり, その成分はすべて正である」 [4] というフロベニウスの定理から, (4)の解の一意性とその値がすべて正となることが保証される.

 以上の解法はいずれも超行列が既約であること, つまりネットワーク構造が強連結であることを前提としている. しかし [2] には必ずしも強連結でない場合についてもその解法が提案されている.



参考文献

[1] T. L. Saaty, The Analytic Network Process, RWS Publication, 1996.

[2] K. Sekitani and I. Takahashi, " Unified Model and Analysis for AHP and ANP," Journal of the Operations Research Society of Japan, 44 (2001), 67-89.

[3] 高橋磐郎, 『AHPからANPへの諸問題』, オペレーションズ・リサーチ, 43 (1998), 289-293.

[4] 古屋茂, 『行列と行列式』, 培風館, 1957.