目录
十大模型,涉及近三十种算法
数学建模的任务分配
编程讲解
第一讲:层次分析法
一致性检验
一致性检验的步骤
两个小问题
方法1:算术平均法求权重
方法2:几何平均法求权重
方法3:特征值法求权重
建模步骤
层次结构模型
具体举例与代码
数学建模三大块:建模+编程+写作
不需要MATLAB基础,先讲基础语法和函数,再讲模型的实现(注释详细)
建模比赛中最基础的模型之一,其主要用于解决评价类的问题(例如:选择哪种方案最好、哪位运动员或者员工表现的更优秀)
评价类问题可用打分解决。
原理:检验我们构造的判断矩阵和一致矩阵是否有太大的差别。
运用层次分析法建模,大体上可按下面四个步骤进行:
层次分析法是用来根据多种准则,或是说因素从候选方案中选出最优的一种数学方法
问题结构如图。首先做一个归一处理,给目标层(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