层次分析法例题及matlab程序
时间: 2023-05-13 11:03:55 浏览: 141
层次分析法是一种多准则决策方法,适用于解决多个因素、多目标的决策问题。其基本思想是将决策问题分解为层次结构,通过对各因素进行层次划分、权重分配和比较矩阵构建,最终确定最优方案。
例如,对于选择一所大学的问题,可以将其分解为多个因素,如学校排名、专业设置、教学质量、师资力量等。然后对这些因素进行层次划分,如将学校排名划分为世界、全国、地区三个级别。根据重要性确定各级别的权重,然后构建比较矩阵,比较各因素之间的相对重要性。最终得到各因素的权重,从而确定最优解。
下面是一个例题:
在一个公司的市场部门,需要选择一款适合公司内部通信的软件。主要考虑因素包括:功能性、安全性、稳定性、用户友好性和价格。其中,功能性为最重要因素,且比其他因素重要性高出三倍;安全性和稳定性重要性相同,且比用户友好性重要性高出两倍;价格为最不重要因素,其重要性比其他因素低五倍。请利用层次分析法选择一款最优软件。
首先将因素进行层次划分,得到如下层次结构图:
功能性
安全性
稳定性
用户友好性
价格
然后,确定各因素的权重,如下表所示:
因素 权重
功能性 0.5
安全性 0.2
稳定性 0.2
用户友好性 0.1
价格 0.02
接着,构建比较矩阵,比较各因素之间的相对重要性。如下表所示:
功能性 安全性 稳定性 用户友好性 价格
功能性 1 3 3 2 1/5
安全性 1/3 1 1 1/2 1/5
稳定性 1/3 1 1 1/2 1/5
用户友好性 1/2 2 2 1 1/5
价格 5 5 5 5 1
通过对比较矩阵进行层次分析,计算出各因素的最终权重。最终权重如下表所示:
因素 权重
功能性 0.486
安全性 0.196
稳定性 0.196
用户友好性 0.089
价格 0.033
最后,选择最优软件。根据各款软件在各因素上的表现,可得到最优软件为 "软件A"。
以下是matlab程序实现:
% 构建比较矩阵
A = [1 3 3 2 1/5;
1/3 1 1 1/2 1/5;
1/3 1 1 1/2 1/5;
1/2 2 2 1 1/5;
5 5 5 5 1];
% 计算判断矩阵
[n,~] = size(A);
RI = [0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45,1.49]; % RI值表
[R,~] = eig(A); % 计算矩阵的特征向量
max_eig = max(diag(R)); % 计算最大特征值
CI = (max_eig - n)/(n - 1); % 计算一致性指标
CR = CI/RI(n); % 计算一致性比例指数
if CR<0.1 % CR小于0.1,认为判断矩阵合理
disp('CR<0.1,通过一致性检验');
w = R(:,n)/sum(R(:,n)); % 根据特征向量计算权重
[~,p] = sort(w,'descend'); % 按权重大小降序排列
disp('最终权重为:');
disp(w');
disp('各因素权重从大到小的排序为:');
disp(p);
else
error('CR>=0.1,判断矩阵不合理');
end
% 选择最优解
software = {'软件A','软件B','软件C','软件D','软件E'};
score = [80,70,75,85,65];
price = [300,600,400,500,200];
performance = [3,2,4,5,1];
result = w(1)*performance + w(2)*score + w(3)*price; % 根据权重计算综合得分
[~,p] = sort(result,'descend'); % 按得分大小降序排列
disp('最优解为:');
disp(software{p(1)});
阅读全文