日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数学建模:层次分析法实例以及代码

發(fā)布時間:2023/12/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数学建模:层次分析法实例以及代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

博主聯(lián)系方式:
QQ:1540984562
QQ交流群:892023501
群里會有往屆的smarters和電賽選手,群里也會不時分享一些有用的資料,有問題可以在群里多問問。

目錄

  • 層次分析法的思想
  • 層次分析法步驟
  • 具體案例(市政工程項目建設(shè)決策)
    • 1.問題提出
    • 2.建立遞階層次結(jié)構(gòu)
    • 3.構(gòu)造判斷矩陣(成對比較陣)并賦值
    • 4.層次單排序(計算權(quán)向量)與檢驗(一致性檢驗)
      • 計算權(quán)向量
      • 一致性檢驗
    • 5.層次總排序(組合權(quán)向量)與檢驗(一致性檢驗)
    • 6.結(jié)果分析
    • 7.層次分析法的優(yōu)缺點
  • 層次分析法的代碼實現(xiàn)(matlab)

層次分析法的思想

層次分析法的思想:將所有要分析的問題層次化;
根據(jù)問題的性質(zhì)和所要到達的總目標,將問題分為不同的組成因素,并按照這些因素間的關(guān)聯(lián)影響即其隸屬關(guān)系,將因素按不同層次聚集組合,形成一個多層次分析結(jié)構(gòu)模型;
最后,對問題進行優(yōu)劣比較排序.

層次分析法步驟

1、找準各因素之間的隸屬度關(guān)系,建立遞階層次結(jié)構(gòu)
2、構(gòu)造判斷矩陣,并賦值
3、層次單排序(計算權(quán)向量)與檢驗(一致性檢驗)
4、層次總排序(組合權(quán)向量)與檢驗(一致性檢驗)
5、結(jié)果分析

具體案例(市政工程項目建設(shè)決策)

1.問題提出

市政部門管理人員需要對修建一項市政工程項目進行決策,可選擇的方案是修建通往旅游區(qū)的高速路(簡稱建高速路)或修建城區(qū)地鐵(簡稱建地鐵)。除了考慮經(jīng)濟效益外,還要考慮社會效益、環(huán)境效益等因素,即是多準則決策問題,考慮運用層次分析法解決。

2.建立遞階層次結(jié)構(gòu)

1、明確決策目標:“合理建設(shè)市政工程,使綜合效益最高”。

2、為了實現(xiàn)這一目標,需要考慮的主要準則有三個,即經(jīng)濟效益社會效益環(huán)境效益
還必須考慮直接經(jīng)濟效益間接經(jīng)濟效益方便日常出行方便假日出行減少環(huán)境污染改善城市面貌等因素(準則),從相互關(guān)系上分析,這些因素隸屬于主要準則,因此放在下一層次考慮,并且分屬于不同準則。

3、解決方案,即建高速路或建地鐵,這兩個因素作為措施層元素放在遞階層次結(jié)構(gòu)的最下層。

這樣遞階層次就形成了:

3.構(gòu)造判斷矩陣(成對比較陣)并賦值

1、構(gòu)造判斷矩陣的方法:
每一個具有向下隸屬關(guān)系的元素(被稱作準則)作為判斷矩陣的第一個元素(位于左上角),隸屬于它的各個元素依次排列在其后的第一行和第一列。
如下圖所示:

2、如何對判斷矩陣進行賦值:
向填寫人(專家)反復詢問:針對判斷矩陣的準則,其中兩個元素兩兩比較哪個重要,重要多少,對重要性程度按1-9賦值。
(可以類比模糊PID中的隸屬程度,都是人為設(shè)定的,也是被人詬病的一個地方)

設(shè)填寫后的判斷矩陣為A=(aij)n×n,判斷矩陣具有如下性質(zhì):

(1) aij>0
(2) aji=1/ aji
(3) aii=1

判斷矩陣具有對稱性,因此在填寫時,通常先填寫aii=1部分,然后再僅需判斷及填寫上三角形或下三角形的n(n-1)/2個元素就可以了。
在特殊情況下,判斷矩陣可以具有傳遞性,即滿足等式:aij*ajk=aik .
當上式對判斷矩陣所有元素都成立時,則稱該判斷矩陣為一致性矩陣。
對于上述的例子,可以構(gòu)造出下面的判斷矩陣:

4.層次單排序(計算權(quán)向量)與檢驗(一致性檢驗)

計算權(quán)向量

對于專家填寫后的判斷矩陣,利用一定數(shù)學方法進行層次排序。
層次單排序是指每一個判斷矩陣各因素針對其準則的相對權(quán)重,所以本質(zhì)上是計算權(quán)向量。
這里簡要介紹和法:
對于一致性判斷矩陣,每一列歸一化后就是相應的權(quán)重。
對于非一致性判斷矩陣,每一列歸一化后近似其相應的權(quán)重,在對這n個列向量求取算術(shù)平均值作為最后的權(quán)重。

公式:
在層層排序中,要對判斷矩陣進行一致性檢驗。判斷矩陣可以具有傳遞性和一致性。一般情況下,并不要求判斷矩陣嚴格滿足這一性質(zhì)。

但從人類認識規(guī)律看,一個正確的判斷矩陣重要性排序是有一定邏輯規(guī)律的,例如若A比B重要,B又比C重要,則從邏輯上講,A應該比C明顯重要,若兩兩比較時出現(xiàn)A比C重要的結(jié)果,則該判斷矩陣違反了一致性準則,在邏輯上是不合理的。

因此在實際中要求判斷矩陣滿足大體上的一致性,需進行一致性檢驗。只有通過檢驗,才能說明判斷矩陣在邏輯上是合理的,才能繼續(xù)對結(jié)果進行分析。

一致性檢驗

第一步,計算一致性指標CI

第二步,查表確定相應的平均隨機一致性指標RI
據(jù)判斷矩陣不同階數(shù)查下表,得到平均隨機一致性指標RI:

第三步,計算一致性比例CR并進行判斷:

當C.R.<0.1時,認為判斷矩陣的一致性是可以接受的,C.R.>0.1時,認為判斷矩陣不符合一致性要求,需要對該判斷矩陣進行重新修正。

圖1 圖2
可以看出,所有單排序的C.R.<0.1,認為每個判斷矩陣的一致性都是可以接受的。

5.層次總排序(組合權(quán)向量)與檢驗(一致性檢驗)

總排序是指每一個判斷矩陣各因素針對目標層(最上層)的相對權(quán)重。這一權(quán)重的計算采用從上而下的方法,逐層合成。
文字性描述公式如下:

計算過程如下,更好理解過程:
P(C1/A) = P(C1/B1) * P(B1/A) = 0.5 * 0.1429 = 0.07145
CR(C1/A) = CR(C/B) * CR(B/A) = 0 * 0 = 0
P(D1/A) = P(D1/C1) * P(C1/B1) * P(B1/A)
+ P(D1/C2) * P(C2/B1) * P(B1/A)
+ P(D1/C3) * P(C3/B2) * P(B2/A)
+ P(D1/C4) * P(C4/B2) * P(B2/A)
+ P(D1/C5) * P(C5/B3) * P(B3/A)
+ P(D1/C6) * P(C6/B3) * P(B3/A)
=0.8333 * 0.5 * 0.1429
+0.75 * 0.5 * 0.1429
+0.1667 * 0.75 * 0.4286
+0.8750 * 0.25 * 0.4286
+0.1667 * 0.75 * 0.4286
+0.8333 * 0.25 * 0.4286

6.結(jié)果分析

從方案層總排序的結(jié)果看,建地鐵(D2)的權(quán)重(0.6592)遠遠大于建高速路(D1)的權(quán)重(0.3408),因此,最終的決策方案是建地鐵。
根據(jù)層次排序過程分析決策思路:

1、對于準則層B的3個因子,直接經(jīng)濟效益(B1)的權(quán)重最低(0.1429),社會效益(B2)和環(huán)境效益(B3)的權(quán)重都比較高(皆為0.4286),說明在決策中比較看重社會效益和環(huán)境效益。
2、對于不看重的經(jīng)濟效益,其影響的兩個因子直接經(jīng)濟效益(C1)、間接帶動效益(C2)單排序權(quán)重都是建高速路遠遠大于建地鐵,對于比較看重的社會效益和環(huán)境效益,其影響的四個因子中有三個因子的單排序權(quán)重都是建地鐵遠遠大于建高速路,由此可以推出,建地鐵方案由于社會效益和環(huán)境效益較為突出,權(quán)重也會相對突出。
3、從準則層C總排序結(jié)果也可以看出,方便日常出行(C3)、減少環(huán)境污染(C5)是權(quán)重值較大的,而如果單獨考慮這兩個因素,方案排序都是建地鐵遠遠大于建高速路。

由此我們可以分析出決策思路:
即決策比較看重的是社會效益和環(huán)境效益,不太看重經(jīng)濟效益;(總結(jié)準則層B)
因此對于具體因子,方便日常出行和減少環(huán)境污染成為主要考慮因素,對于這兩個因素,都是建地鐵方案更佳,(總結(jié)準則層C)由此,最終的方案選擇建地鐵也就順理成章了。

7.層次分析法的優(yōu)缺點

優(yōu)點:
(1)系統(tǒng)性:層次分析把研究對象作為一個系統(tǒng),按照分解、比較判斷、綜合的思維方式進行決策,成為繼機理分析、統(tǒng)計分析之后發(fā)展起來的系統(tǒng)分析的重要工具。
(2)實用性:層次分析把定性和定量方法結(jié)合起來,能處理許多許多用傳統(tǒng)的最優(yōu)化技術(shù)無法著手的實際問題,應用范圍很廣。同時,這種方法將決策者和決策分析者相互溝通,決策者甚至可以直接應用它,這就增加了決策者的了解和掌握。
(3)簡潔性:具有中等文化程度的人即可了解層次分析的基本原理和掌握它的基本步驟,計算也非常簡便,并且所得的結(jié)果簡單明確,容易為決策者了解和掌握。

缺點:囿舊:只能從原有方案中選優(yōu),不能生成新方案;粗略:它的比較、判斷直到結(jié)果都是粗糙的,不適于精度要求很高的問題;主觀:從建立層次結(jié)構(gòu)模型到給出成對比較矩陣,人的主觀因素的作用很大,這就使得決策結(jié)果可能難以為眾人接受。當然,采取專家群體判斷的辦法是克服這個缺點的一種途徑。

層次分析法的代碼實現(xiàn)(matlab)

disp('請輸入判斷矩陣A(n階)'); A=input('A='); [n,n]=size(A); x=ones(n,100); y=ones(n,100); m=zeros(1,100); m(1)=max(x(:,1)); y(:,1)=x(:,1); x(:,2)=A*y(:,1); m(2)=max(x(:,2)); y(:,2)=x(:,2)/m(2); p=0.0001;i=2;k=abs(m(2)-m(1)); while k>pi=i+1;x(:,i)=A*y(:,i-1);m(i)=max(x(:,i));y(:,i)=x(:,i)/m(i);k=abs(m(i)-m(i-1)); end a=sum(y(:,i)); w=y(:,i)/a; t=m(i); disp(w);disp(t);%以下是一致性檢驗 CI=(t-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=CI/RI(n); if CR<0.10disp('此矩陣的一致性可以接受!');disp('CI=');disp(CI);disp('CR=');disp(CR); end

使用示例:
將上面代碼保存名為test1,并在點運行的時候添加到路徑;
輸入的A矩陣是要以向量的形式輸入的;
之后按下回車即可,可以看到和之前的第4步得到的結(jié)果是一樣的。

通過不斷的使用這個式子計算相應矩陣(準則層B到準則層C、準則層C到方案層D)的權(quán)向量,最后可以得到最終的結(jié)果。
簡單的修改上面的程序,傳入?yún)?shù)為矩陣,免得每次都要打。

function w= test1(A) % disp('請輸入判斷矩陣A(n階)'); % A=input('A='); [n,n]=size(A); x=ones(n,100); y=ones(n,100); m=zeros(1,100); m(1)=max(x(:,1)); y(:,1)=x(:,1); x(:,2)=A*y(:,1); m(2)=max(x(:,2)); y(:,2)=x(:,2)/m(2); p=0.0001;i=2;k=abs(m(2)-m(1)); while k>pi=i+1;x(:,i)=A*y(:,i-1);m(i)=max(x(:,i));y(:,i)=x(:,i)/m(i);k=abs(m(i)-m(i-1)); end a=sum(y(:,i)); w=y(:,i)/a; t=m(i); disp(w);disp(t);%以下是一致性檢驗 CI=(t-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=CI/RI(n); if CR<0.10disp('此矩陣的一致性可以接受!');disp('CI=');disp(CI);disp('CR=');disp(CR); end

輸入:

Array1=[1 1/3 1/3;3 1 1;3 1 1]; Array2=[1 1;1 1]; Array3=[1 3;1/3 1]; Array4=[1 3;1/3 1]; Array5=[1 5;1/5 1]; Array6=[1 3;1/3 1]; Array7=[1 1/5;5 1]; Array8=[1 7;1/7 1]; Array9=[1 1/5;5 1]; Array10=[1 1/3;7 1];A=test1(Array1); B1=test1(Array2); B2=test1(Array3); B3=test1(Array4); C1=test1(Array5); C2=test1(Array6); C3=test1(Array7); C4=test1(Array8); C5=test1(Array9); C6=test1(Array10);

得到相應的矩陣:

總結(jié)

以上是生活随笔為你收集整理的数学建模:层次分析法实例以及代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。