【数理モデリング学習】Matlabが評価モデルを実現 - Analytic Hierarchy Process (AHP)

目次

1。概要 

2 アルゴリズム実装プロセス

3 つのインスタンス

 4matlab は分析階層プロセスを実現します

5 計算結果


1。概要 

AHPと呼ばれる分析階層プロセスは、評価モデルにおけるアルゴリズムであり、意思決定に関わる要素を目標、基準、プログラムに分解し、これに基づいて定性的・定量的な分析を行う意思決定手法を指します。 。AHPの欠点は、判断マトリクスが主観的に決定され客観的な評価が得られないことと、指標の数が多すぎてはいけない(15以下)ことです。この記事では、AHP を使用して観光都市の選択を実現する方法を説明します。

モデリングの主流は Matlab で、次に Python、R などが続きます。Python よりも Matlab の方が機能が豊富で便利ですが、Python は必要なライブラリを自分でダウンロードする必要があります。しかし、MATLABはソフトウェアが大きすぎて起動速度が遅いのが欠点です。しかし、ご存知のとおり、MATLAB には子を持つことができないだけでなく、他の機能もあります。MATLAB を使用して AHP を実装する方法を見てみましょう。

2 アルゴリズム実装プロセス

まず、対象層、基準層、プログラム層に分けた評価体系を定め、重要度に応じてプログラムの評価指標や判定マトリクスを定める必要があります(参考)。次の表) を使用し、それぞれ算術平均法、幾何平均法、固有値法を使用し、各スキームの指標の重み (重要度) とスコアを個別に解決します。3 つの方法で計算された重みとスコアは平均化されるため、固有値法のみを使用して重みとスコアを計算するよりもコンテストの論文がより完全になります。

スケーリング 意味
1 等しく重要である
3 少し重要な
5 明らかに重要な
7 非常に重要な
9 かなり重要
2、4、6、8 上記2つの隣接する判定の中央値
相互 A は B と比較して 5、B は A と比較して 1/5

3 つのインスタンス

適切な指標を選択して、Xiao Mingに最も適した観光都市を選択してください。

この質問では、最適な観光都市を選択する必要がありますが、まずインターネットで情報を収集し、私の主観で最も重要な指標、つまり費用、景観、交通手段を決定し、行きたい都市を選択します。武漢、アモイ、南昌。主観的に判断マトリクスを決定し、そのマトリクスが一貫しているかどうかを判断するために整合性をチェックします。算術平均法、幾何平均法、固有値法を使用して、各都市の指数重みとスコアを計算します。最後に、指標の重みと各指標における各都市のスコアに応じてスコアリングが行われます。

Step1:指標判断マトリクスの策定

xy の比重は、これらの指標を踏まえてご自身の判断で決めてください(例:景観-費用の相対比重(景観の重要度/費用の重要度)を1/2、費用-視点の相対比重(費用の重要度)) /費用の重要性)景観の重要性)は2です

払う 景色 交通機関
払う 1 2 1/3
景色 1/2 1 1/5
交通機関 3 5 1

上の表によると、対角位置の 2 つの重みが 1 に乗算されていることがわかります。これは、シーナリーの相対コストが 1/2 であり、シーナリーの相対コストが 2 であるためです。

Step2:都市判定マトリクスの確立

コストの観点から、各都市の判断マトリックスは次のように設定されます。

払う 武漢 アモイ 南昌
武漢 1 1/3 4
アモイ 3 1 5
南昌 1/4 1/5 1

景観に関して、各都市の判断マトリクスは以下のように設定されています。

景色 武漢 アモイ 南昌
武漢 1 1/3 2
アモイ 3 1 5
南昌 1/2 1/5 1

交通に関して、各都市の判断マトリクスは以下のように設定されています。

交通機関 武漢 アモイ 南昌
武漢 1 2 5
アモイ 1/2 1 3
南昌 1/5 1/3 1

Step3: 判定マトリクスの整合性を確認する

(1) 一貫性指数の計算

判定行列の最大固有値を示し、nは行列のサイズを表します。つまり、判定行列はn行n列の行列です 

 (2) 一貫性指標 CR の計算

 RI は、次の表で指定される平均ランダム一貫性指数であり、RI の値は判定行列のサイズに応じて決定されます。

n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
RI 0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59

CR が <0.1 未満の場合、判定マトリックスの一貫性は許容範囲内であるとみなされます。そうでない場合は、判定マトリックスを再調整する必要があります。整合性テストに合格しない場合は、各行と各列の比率が比例しているかどうかを確認し、比例していない場合は各行と各列の比率を調整するという非常に簡単な方法で調整できます。

コンセンサス マトリックスの例は次のとおりです。

景色 杭州 西安 桂林
杭州 1 2 4
西安 1/2 1 2
桂林 1/4 1/2 1

上記の行列の行と列は比例していることがわかります。たとえば、2 列目の要素は 1 列目の要素の 2 倍です。整合性チェックに合格しない場合は、次の方向に調整する必要があります。各行と列は比例します。

Step4: 指標の重みと各指標における都市のスコアを計算する

  1. 算術平均

ステップ 1: 判定行列を行ごとに加算して 1*n 行ベクトルを取得します

ステップ 2: 判定行列の最初の行のすべての要素を、最後の行が 1*n 行ベクトルで除算する操作が完了するまで、上記の 1*n 行ベクトルの対応する要素で除算し、最終的に n*n を取得します。マトリックス

3 番目のステップ: 2 番目のステップで得られた n*n 行列を列ごとに加算して n*1 行列を取得し、各要素を n で除算して算術平均法によって計算された重みベクトルを取得します。

例を挙げてみましょう。

コストを計算するための重量は、次の式を使用して計算されます。

他の指標に対する支出の比率を他の指標が配置されている列の合計で割ることによって得られる重み

最初の列要素を使用して重みを計算します。

1/(1+1/2+3)

使用第二列元素计算权重:
2/(2+1+5)

使用第三列元素计算权重:
1/3/(1/3+1/5+1)

再将这三个结果取平均值就得到归一化后的结果

(1/(1+1/2+3)+ 2/(2+1+5)+ 1/3/(1/3+1/5+1))/3

(2)几何平均法

第一步:将判断矩阵的元素按照行相乘得到一个新的列向量

第二步:将新的向量的每个分量开n次方

第三步:对该列向量进行归一化即可得到权重向量

 表示将判断矩阵的元素按行相乘得到一个新的列向量并开n次方,随后除以新的列向量所有元素之和得到归一化后的权重向量

(3)特征值法

第一步:求出矩阵A的最大特征值以及其对应的特征向量

第二步:对求出的特征向量进行归一化即可得到我们的权重

使用matlab 的eig()函数可以求特征向量矩阵

 4matlab实现层次分析法

注意,当只有两个指标或两个方案需要选择时不可以使用层次分析法。

%输入判断矩阵A
A=[1 1/3 4;
    3 1 5;
    1/4 1/5 1]
%判断判断矩阵A是否通过一致性检验,否则需要修改判断矩阵直到通过一致性检验
[n,n]=size(A)
    [v,d]=eig(A)
    %求最大特征向量
    %v表特征向量,d表示特征值构成的对角矩阵
    max_v=max(max(d))
    %求判断矩阵A是几行几列的矩阵
    %计算一致性指标CI
    CI=(max_v-n)/(n-1)
    RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59]
    %计算一致性比例CR
    disp("一致性比例为")
    CR=CI/RI(n)
    disp(CR)
    if CR<0.10
        disp("因为一致性比例CR<0.1,因此判断矩阵A通过一致性检验")
    else
        disp("因为一致性比例CR>0.1,因此判断矩阵A不通过一致性检验,请重新调整判断矩阵,直至通过一致性检验")
    end
%算数平均法求权重
%将判断矩阵按列求和
%n表示判断矩阵A有n行n列
%[n,n]=size(A)
if CR<0.1
    sum_a=sum(A,1)
    sum_A=repmat(sum_a,n,1)
    %计算未归一化的权重
    weight=A./sum_A
    %计算归一化后的权重
    sum_weight=sum(weight,2)
    weight=sum_weight/n
    disp("算数平均法求的权重或得分为:")
    disp(weight)
    
    %几何平均法求权重
    %判断矩阵按行相乘
    prod_A=prod(A,2)
    %将新的向量开n次方得到未归一化的权重
    prod_A=prod_A.^(1/n)
    %权重归一化
    disp("几何平均法求得权重或得分为:")
    weight_jihe=prod_A./sum(prod_A)
    
    %特征值法求权重
    %v表特征向量,d表示特征值构成的对角矩阵
    %[v,d]=eig(A)
    %max_v=max(max(d))
    %将特征向量归一化
    %find函数用于寻找最大特征值所在的位置
    %max_v表示最大特征值
    [max_r,max_c]=find(max_v,1)
    %v(:,max_c)找到最大特征值对应的列
    e=v(:,max_c)/sum(v(:,max_c))
    disp("特征值法求的权重或得分为:")
    disp(e)
end
%三种方法得出的平均权重
disp("三种方法得出的平均权重或得分为")
disp((e+ weight_jihe+weight)./3)

5计算结果

指标权重及各个城市在各方面的得分为:

指标权重 武汉 厦门 南昌
花费 0.2297 0.2812 0.6424 0.0946
景色 0.1221 0.2297 0.6482 0.1221
交通 0.6482 0.5815 0.3090 0.1095

各个城市的最终得分为:

得分
武汉 0.47
厦门 0.43
南昌 0.11

可以看到武汉得分最高,我主观认为最适合小明去的城市为武汉。

非常感谢各位小伙伴看到这里,有不对的地方欢迎各位小伙伴指正。我写到这里老辛苦了,可怜一下我给我个赞吧,谢谢各位大漂亮大帅逼~

おすすめ

転載: blog.csdn.net/denghls/article/details/126842244