目錄
- 1 數學建模的任務分配
- 2 簡介
- 3 模型介紹
- 3.1 評價類問題
- 3.2 拿到建模問題
- 3.3 推薦搜索網站
- 3.4 確定好指標
- 3.5 確定指標權重
- (1)采用分而治之的思想
- (2)分而治之的思想
- (3)得到判斷矩陣
- (4)再對每個指標進行填寫判斷矩陣
- (5)解決判斷矩陣中不一致現象
- (6)計算判斷矩陣的權重
- (7)Excel可以方便計算矩陣權重
- 4 層次分析法完整建模程序
- 4.1 第一步-建立層次結構圖
- 4.2 第二步-構造判斷矩陣
- 4.3 第三步-計算判斷矩陣相對權重
- 4.4 第四步-計算合成權重排序
- 5 層次分析法的局限性
- 6 模型拓展
- 7 代碼實作層次分析法
- 8 全國大學生數學建模競賽論文模版下載
1 數學建模的任務分配
(1)數學建模三大塊:建模+編程+寫作
(2)模型講解
? 簡單例子
? 寫作訓練
2 簡介
層次分析法(The analytic hierarchy process 簡稱AHP)建模比賽中最基礎的模型之一,其主要用于解決評價類問題(例如:選擇哪種方案最好、哪位運動員或者員工表現得更優秀)
AHP的主要特點是通過建立遞階層次結構,把人類的判斷轉化為若干因素兩兩之間重要度的比較上,從而把難于量化的定性判斷轉化為可操作的重要度的比較上面,在許多情況下,決策者可以直接使用AHP進行決策,極大的提高了決策的有效性、可靠性和可行性,但其本質是一種思維方式,它把復雜問題分解成多個組成因素,又將這些因素按支配關系分別形成遞階層次結構,通過兩兩比較但方法確定決策方案相對重要度但總排序,整個程序體現來人類決策思維的基本特征,即分解、判斷、綜合,克服來其他方法回避決策者主觀判斷的缺點,
3 模型介紹
3.1 評價類問題
高考畢業了,小明選擇去哪個學校
思考問題的思路如下:






3.2 拿到建模問題
優先在知網(萬方、百度學術、谷歌學術)上搜一下相關文獻
如果沒有找到相關文獻,則和小組成員來場頭腦風暴+在平臺上搜索別人或者專家的看法,
3.3 推薦搜索網站
蟲部落-快搜
優先級:
? 谷歌搜索
? 微信搜索
? 知乎搜索
例如本題我們可以搜索關鍵字:
旅游選擇因素、根據什么因素來選擇旅游景點、旅游景點評價指標,
3.4 確定好指標

3.5 確定指標權重
(1)采用分而治之的思想
問題:一次性考慮五個指標之間的關系,往往考慮不周
解決方法:兩兩指標進行比較,最終根據兩兩比較的結果進行推算權重,
(2)分而治之的思想

(3)得到判斷矩陣



(4)再對每個指標進行填寫判斷矩陣

(5)解決判斷矩陣中不一致現象

? 先介紹一下什么叫一致矩陣

? 一致矩陣特點:各行和各列成倍數關系

? 一致矩陣的定義

? 一致性檢驗
原理:檢驗我們構造的矩陣和一致性矩陣是否有太大的差別


? 一致性檢驗的步驟

如果一致性檢驗大于0.1,那就需要修正矩陣,

? 兩個小問題

? 計算一致矩陣的權重

(6)計算判斷矩陣的權重

方法一:算術平均化求權重

? 算術平均法求權重的步驟:

? 步驟的數學表示(可放到論文中)

方法二:幾何平均法

方法三:特征值法求權重

? 將計算結果填入權重表(特征值法最常用)

? 代碼實作求權重矩陣
%層次分析代碼
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>p
i=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('權向量');disp(w);
disp('最大特征值');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.10
disp('此矩陣的一致性可以接受!');
disp('CI=');disp(CI);
disp('CR=');disp(CR);
else
disp('此矩陣的一致性不可以接受!');
end
(7)Excel可以方便計算矩陣權重
F4可以鎖定單元格,往后拖動計算公式,那鎖定的那個單元格不會變,

4 層次分析法完整建模程序
4.1 第一步-建立層次結構圖

生成層次結構圖方法
方法一:PPT的SmartArt來生成層次結構圖
方法二:專業 畫圖軟體億圖圖示(或processon)

4.2 第二步-構造判斷矩陣

因為評價矩陣有主觀性(能搜資料,參考專家的就參考專家的,沒有也不要亂寫),在論文撰寫時,可以直接給出權重矩陣,例如別人的優秀論文

4.3 第三步-計算判斷矩陣相對權重

4.4 第四步-計算合成權重排序

5 層次分析法的局限性

6 模型拓展
(1)層次分析法還適用于最后一層是1對2(這里的2表示大于1小于方案層所有的方案數量),但不是上面舉例中1對3(3表示方案層中所有方案數量)

(2)還適用于一個準則對應自己的多個方案,

7 代碼實作層次分析法
ccfx_Learn.m
%% 注意:在論文寫作中,應該先對判斷矩陣進行一致性檢驗,然后再計算權重,因為只有判斷矩陣通過了一致性檢驗,其權重才是有意義的,
%% 在下面的代碼中,我們先計算了權重,然后再進行了一致性檢驗,這是為了順應計算程序,事實上在邏輯上是說不過去的,
%% 因此大家自己寫論文中如果用到了層次分析法,一定要先對判斷矩陣進行一致性檢驗,
%% 而且要說明的是,只有非一致矩陣的判斷矩陣才需要進行一致性檢驗,
%% 如果你的判斷矩陣本身就是一個一致矩陣,那么就沒有必要進行一致性檢驗,
%% 輸入判斷矩陣
clear;clc
disp('請輸入判斷矩陣A: ')
% A = input('判斷矩陣A=')
A =[1 1 4 1/3 3;
1 1 4 1/3 3;
1/4 1/4 1 1/3 1/2;
3 3 3 1 3;
1/3 1/3 2 1/3 1]
% matlab矩陣有兩種寫法,可以直接寫到一行:
% [1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1]
% 也可以寫成多行:
[1 1 4 1/3 3;
1 1 4 1/3 3;
1/4 1/4 1 1/3 1/2;
3 3 3 1 3;
1/3 1/3 2 1/3 1]
% 兩行之間以分號結尾(最后一行的分號可加可不加),同行元素之間以空格(或者逗號)分開,
%% 方法1:算術平均法求權重
% 第一步:將判斷矩陣按照列歸一化(每一個元素除以其所在列的和)
Sum_A = sum(A)
[n,n] = size(A) % 也可以寫成n = size(A,1)
% 因為我們的判斷矩陣A是一個方陣,所以這里的r和c相同,我們可以就用同一個字母n表示
SUM_A = repmat(Sum_A,n,1) %repeat matrix的縮寫
% 另外一種替代的方法如下:
SUM_A = [];
for i = 1:n %回圈哦,這一行后面不能加冒號(和Python不同),這里表示回圈n次
SUM_A = [SUM_A; Sum_A]
end
clc;A
SUM_A
Stand_A = A ./ SUM_A
% 這里我們直接將兩個矩陣對應的元素相除即可
% 第二步:將歸一化的各列相加(按行求和)
sum(Stand_A,2)
% 第三步:將相加后得到的向量中每個元素除以n即可得到權重向量
disp('算術平均法求權重的結果為:');
disp(sum(Stand_A,2) / n)
% 首先對標準化后的矩陣按照行求和,得到一個列向量
% 然后再將這個列向量的每個元素同時除以n即可(注意這里也可以用./哦)
%% 方法2:幾何平均法求權重
% 第一步:將A的元素按照行相乘得到一個新的列向量
clc;A
Prduct_A = prod(A,2)
% prod函式和sum函式類似,一個用于乘,一個用于加 dim = 2 維度是行
% 第二步:將新的向量的每個分量開n次方
Prduct_n_A = Prduct_A .^ (1/n)
% 這里對每個元素進行乘方操作,因此要加.號哦, ^符號表示乘方哦 這里是開n次方,所以我們等價求1/n次方
% 第三步:對該列向量進行歸一化即可得到權重向量
% 將這個列向量中的每一個元素除以這一個向量的和即可
disp('幾何平均法求權重的結果為:');
disp(Prduct_n_A ./ sum(Prduct_n_A))
%% 方法3:特征值法求權重
% 第一步:求出矩陣A的最大特征值以及其對應的特征向量
clc
[V,D] = eig(A) %V是特征向量, D是由特征值構成的對角矩陣(除了對角線元素外,其余位置元素全為0)
Max_eig = max(max(D)) %也可以寫成max(D(:))哦~
% 那么怎么找到最大特征值所在的位置了? 需要用到find函式,它可以用來回傳向量或者矩陣中不為0的元素的位置索引,
% 那么問題來了,我們要得到最大特征值的位置,就需要將包含所有特征值的這個對角矩陣D中,不等于最大特征值的位置全變為0
% 這時候可以用到矩陣與常數的大小判斷運算
D == Max_eig
[r,c] = find(D == Max_eig , 1)
% 找到D中第一個與最大特征值相等的元素的位置,記錄它的行和列,
% 第二步:對求出的特征向量進行歸一化即可得到我們的權重
V(:,c)
disp('特征值法求權重的結果為:');
disp( V(:,c) ./ sum(V(:,c)) )
% 我們先根據上面找到的最大特征值的列數c找到對應的特征向量,然后再進行標準化,
%% 計算一致性比例CR
clc
CI = (Max_eig - 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]; %注意哦,這里的RI最多支持 n = 15
CR=CI/RI(n);
disp('一致性指標CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10
disp('因為CR < 0.10,所以該判斷矩陣A的一致性可以接受!');
else
disp('注意:CR >= 0.10,因此該判斷矩陣A需要進行修改!');
end
% % 注意:代碼檔案僅供參考,一定不要直接用于自己的數模論文中
% % 國賽對于論文的查重要求非常嚴格,代碼雷同也算作抄襲
% % 視頻中提到的附件可在售后群(購買后收到的那個有道云筆記中有加入方式)的群檔案中下載,包括講義、代碼、優秀的作業、我視頻中推薦的資料等,
% % 關注我的微信公眾號《數學建模學習交流》,后臺發送“軟體”兩個字,可獲得常見的建模軟體下載方法;發送“資料”兩個字,可獲得建模資料的獲取方法;發送“畫圖”兩個字,可獲得數學建模中常見的畫圖方法,另外,也可以看看公眾號的歷史文章,里面發布的都是對大家有幫助的技巧,
% % 購買更多優質精選的數學建模資料,可關注我的微信公眾號《數學建模學習交流》,在后臺發送“買”這個字即可進入店鋪(我的微店地址:https://weidian.com/?userid=1372657210)進行購買,
% % 視頻價格不貴,但價值很高,單人購買觀看只需要58元,三人購買人均僅需46元,視頻本身也是下載到本地觀看的,所以請大家不要侵犯知識產權,對視頻或者資料進行二次銷售,
% % 如何修改代碼避免查重的方法:https://www.bilibili.com/video/av59423231(必看)
8 全國大學生數學建模競賽論文模版下載
全國大學生數學建模競賽論文模版下載
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/208950.html
標籤:其他
