数学建模-层次分析法模型部分

目录

十大模型,涉及近三十种算法

数学建模的任务分配

编程讲解

第一讲:层次分析法

 一致性检验

 一致性检验的步骤

 两个小问题

 方法1:算术平均法求权重

 方法2:几何平均法求权重

 方法3:特征值法求权重

 建模步骤

层次结构模型

具体举例与代码


十大模型,涉及近三十种算法

数学建模-层次分析法模型部分_第1张图片

数学建模的任务分配

数学建模三大块:建模+编程+写作

编程讲解

不需要MATLAB基础,先讲基础语法和函数,再讲模型的实现(注释详细)

数学建模-层次分析法模型部分_第2张图片

第一讲:层次分析法

建模比赛中最基础的模型之一,其主要用于解决评价类的问题(例如:选择哪种方案最好、哪位运动员或者员工表现的更优秀)

评价类问题可用打分解决。

数学建模-层次分析法模型部分_第3张图片

 数学建模-层次分析法模型部分_第4张图片

 数学建模-层次分析法模型部分_第5张图片

 数学建模-层次分析法模型部分_第6张图片

 数学建模-层次分析法模型部分_第7张图片

 数学建模-层次分析法模型部分_第8张图片

 一致性检验

原理:检验我们构造的判断矩阵和一致矩阵是否有太大的差别。

数学建模-层次分析法模型部分_第9张图片

 数学建模-层次分析法模型部分_第10张图片

 一致性检验的步骤

数学建模-层次分析法模型部分_第11张图片

 两个小问题

数学建模-层次分析法模型部分_第12张图片

 方法1:算术平均法求权重

数学建模-层次分析法模型部分_第13张图片

 数学建模-层次分析法模型部分_第14张图片

 方法2:几何平均法求权重

数学建模-层次分析法模型部分_第15张图片

 方法3:特征值法求权重

数学建模-层次分析法模型部分_第16张图片

 建模步骤

运用层次分析法建模,大体上可按下面四个步骤进行: 

  • 建立递阶层次结构模型; 
  • 构造出各层次中的所有判断矩阵; 
  • 层次单排序及一致性检验; 
  • 层次总排序及一致性检验。

层次结构模型

层次分析法是用来根据多种准则,或是说因素从候选方案中选出最优的一种数学方法

 

问题结构如图。首先做一个归一处理,给目标层(choose a leader)分配值为1或0,然后将这一值作为权重,分配给不同因素(Age,Experience,Education,Charisma),对应因素的权重大小代表该因素在整个选择过程中的重要性程度。

之后对于候选方案,每一个标准再将其权重值分配给所有的候选方案,每一方案获得权重值,来源于不同因素分得的权重值的和。最终获得的各个方案的的权重值的和依然为1。

 例如选工作时,待遇所占的比重为0.8,有工作1,2,3候选, 如果工作1的待遇最高,工作2的待遇次之,工作3最差,则可将0.8的值按0.4,0.3,0.1分给工作1,2,3。

具体举例与代码

有一个毕业生为挑选合适的工作。经双方恳谈,已有三个单位表示愿意录用某毕业生,该毕业生考虑的因素有6个,研究课题、发展前途、待遇、同事情况、地理位置和单位名气。 
那么这六个因素就是准则层,三个单位就是方案层,最后要求的就是应该去哪个单位。 
1)准则层判断矩阵(主观性) 

2)方案层判断矩阵(主观性) 
分别针对每一个B,判断C1、C2、C3之间的相对大小

clc,clear 
fid=fopen(‘txt3.txt’,’r’); 
n1=6;n2=3; 
a=[]; 
for i=1:n1 
tmp=str2num(fgetl(fid)); 
a=[a;tmp]; %读准则层判断矩阵 
end 
for i=1:n1 
str1=char([‘b’,int2str(i),’=[];’]); 
str2=char([‘b’,int2str(i),’=[b’,int2str(i),’;tmp];’]); 
eval(str1); 
for j=1:n2 
tmp=str2num(fgetl(fid)); 
eval(str2); %读方案层的判断矩阵 
end 
 
end
ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标 
[x,y]=eig(a); 
lamda=max(diag(y)); 
num=find(diag(y)==lamda); 
w0=x(:,num)/sum(x(:,num)); 
cr0=(lamda-n1)/(n1-1)/ri(n1) 
for i=1:n1 
[x,y]=eig(eval(char([‘b’,int2str(i)]))); 
lamda=max(diag(y)); 
num=find(diag(y)==lamda); 
w1(:,i)=x(:,num)/sum(x(:,num)); 
cr1(i)=(lamda-n2)/(n2-1)/ri(n2); 
end 
cr1, ts=w1*w0, cr=cr1*w0

数学建模-层次分析法模型部分_第17张图片

 数学建模-层次分析法模型部分_第18张图片

 

你可能感兴趣的:(笔记,学习,矩阵,线性代数)