工作岗位的挑选决策
摘要:本文是关于工作岗位的最优选择问题,对于某位即将毕业的学生通过分析其对目标的重要性,建立层次模型来决定其最优决策方案。
一 问题重述 1 问题的提出
一位四年级大学生正从若干个招聘单位中挑选合适的工作岗位,他考虑的主要因素包括发展前景、经济收入、单位信誉、地理位置等,给出决策建议,为其选择一个最满意的单位。 2 问题分析:对于这个问题,我们其实通过主观臆断,可以为该毕业生选择一个我们认为合适的单位,这种方法被称为定性分析。但这并不一定是最好的,随意性较大,并不具有严格意义上的道理,有时可能还会造成很大的失误。这时我们可以通过层次分析方法来解决,它把定性分析与定量研究结合在一起,能较好的解决问题。建立三个层次,目标层、准则层、方案层。
二 符号说明
1假设三个单位可供选择, 单位p1,单位p2,单位p3;
2考虑的4个主要因素,发展前景B1、经济收入B2、单位信誉B3、地理位置B4 3 随机一致性指标RI,一致性比例CI, 4 主特征值maxnumbta,主特征向量W
三 模型假设
1 假如该生对目标层4个因素进行比较(相对目标层而言)的结果为
B1 B2 B3 B4 B1 1 1 1/2 1/2 B2 1 1 4 2 B3 1/2 1/4 1 2 B4 2 1/2 1/2 1 (如a13=1/2表示该位同学对目标B1与B2的重要性之比为1:2)
2 假设方案层有三个单位可供选择, 单位p1,单位p2,单位p3,并假设这位学生对方案层的3个因素相对于准则层的每一个因素进行两两比较的结果为 针对B1 P1 P2 P3 针对B2
P1 1 1/2 1 P2 2 1 1 P3 1 1 1 P1 P2 P3 针对B3 P1 P2 P3 针对B4 P1 P2 P3 P1 1 2 2 P2 1/2 1 1/2 P3 1/2 2 1 P1 1 2 3 P2 1/2 1 1 P3 1/3 1 1 P1 1 2 1/2 P2 1/2 1 1/3 P3 2 3 1 四 模形的建立 建立层次结构
目标层O:选择工作单位;
准则层C:发展前景B1、经济收入B2、单位信誉B3、地理位置B4; 方案层P:单位p1,单位p2,单位p3。
五 模形的求解
1 构造准则层对目标层次的比较矩阵A,进行一致性检验并求权向量。 得到判断矩阵 A=[ 1 1 1/2 2 1 1 1/4 1/2 1/2 4 1 1/2
1/2 2 2 1]
通过编写Matlab程序(见附录M文件objecyion.m)可以得到一致性检验结果CR = 0.0974<0.1,这说明判断矩阵A的一致性是可以接受的 主特征向量w =(0.2735 0.1510 0.2733 0.3023)’
2 构造方案层对准则层各因素的成对比较矩阵,进行一致性检验并求出各相应的权向量 可得方案层3个因素针对于准则层每个准则的成对比较矩阵 B1=[1 2 1 1/2 1 1 1 1 1] B2=[1 1/2 1/2 2 1 2 2 1/2 1] B3=[1 1/2 1/3 2 1 1 3 1 1] B4=[1 1/2 2 2 1 3 1/2 1/3 1]
通过编写Matlab程序(见附录b1.m,b2.m,b3.m,b4.m)对于上述每个矩阵进行一致检验并求相应的权向量 对B1
CR =0.0509<0.1,这说明判断矩阵B1的一致性是可以接受的 主特征向量:w1 =(0.4125 0.2600 0.3275)’ 对B2
CR = 0.0546<0.1,这说明判断矩阵B2的一致性是可以接受的 主特征向量:W2 =( 0.1958 0.4934 0.3109)’ 对B3
CR =0.0200<0.1,这说明判断矩阵B3的一致性是可以接受的 主特征向量:w3 =(0.1692 0.3874 0.4434)’ 对B4
CR =0.0039<0.1,这说明判断矩阵B4的一致性是可以接受的 主特征向量:w4 =(0.2969 0.5397 0.1634)’ 3 求各方案的综合得分
用C=(C1,C2,C3)’表示方案层中3个备选方案在目标层中所占的比重,则有 (C1,C2,C3)’=(w1,w2,w3,w4)*w 用Matlab(见附录inter.m)求解得 C=(0.2784 0.4146 0.3071)’
即单位P1得分为0.2784,P2得分为0.4146, P3得分为0.3071,故这位大学生应该选择单位P2
六 模型分析与评价
通过建立层次分析模型,利用层次分析法求解,我们实际上得到了一个决策方案的排序结果,综合评价,单位P1得分为0.2784,P2得分为0.4146, P3得分为0.3071,该位大学生应按照这种方式选择,即首先选择p2,其次p3,最后p1,如果该学生在选择p2单位时由于某种原因而没有被聘用,这时他就应该选择p3,最后才选择p1。通过观察该学生对方案层相对于准则层的每一个因素进行两两比较的结果即矩阵B1,B2,B3,B4,我们可以看到学生对单位p2判断的重要性,在B2中p1:p2=1:2,p3:p2=1:2,在B3中p1:p2=1:2,在B4中p1:p2=1:2,p3:p2=1:3。所以通过层次分析方法求解的结果,我们建议该学生优先选择P2,是符合实际的,说明我们建立的模型和求解过程具有很大的可靠性。
参考文献
1 周义仓,赫孝良,《数学建模实验》,第二版,西安交通大学出版社,2007.8 2 李志林,欧宜贵,《数学建模及典型案例分析》,化学工业出版社,2007.4 3 刘锋,葛照强,《数学建模》,南京大学出版社,2005.9 附录
1平均随机一致性指标RI表 矩阵阶数n RI 1 0 2 0 3 0.52 4 0.89 5 1.12 6 1.26 7 1.36 8 1.41 矩阵阶数n RI 9 1.46 10 1.49 11 1.52 12 1.54 13 1.56 14 1.58 15 1.59 2求解过程中的Matlab程序 %objection.m
clear; clc;
fprintf(' 判断矩阵:\\n'); % A为判断矩阵 A=[ 1 1 1/2 2 1 1 1/4 1/2 1/2 4 1 1/2 1/2 2 2 1] x0=[1:4]';% 任意初始向量 m0=max(x0); y0=x0./m0;
flag=1;m=100; % m设初值是为了使第一次迭代能进行
while abs(m-m0)>=0.01 % 迭代法求主特征根和主特征向量,允许误差0.01 if flag==1 % flag==1表示第一次迭代 flag=0; x=A*y0; m=max(x); y=x./m; else
m0=m;y0=y; x=A*y; m=max(x); y=x./m;
end end
maxnumbta=m0; s=0; for i=1:4 s=s+y0(i); end w=y0./s;
fprintf(' 主特征根:\\n'); maxnumbta
fprintf(' 主特征向量:\\n'); w
n=4; % CI=(maxnumbta-n)/(n-1) RI=0.89; CR=CI/RI ±.m
clear; clc; fprintf(' 判断矩阵:\\n'); A=[1 2 1 1/2 1 1 1 1 1]
x0=[1:3]'; % 任意初始向量 m0=max(x0); y0=x0./m0;
一致性检验 % A为判断矩阵
flag=1;m=100; % m设初值是为了使第一次迭代能进行
while abs(m-m0)>=0.01 % 迭代法求主特征根和主特征向量,允许误差0.01 if flag==1 % flag==1表示第一次迭代 flag=0; x=A*y0; m=max(x); y=x./m; else
m0=m;y0=y; x=A*y; m=max(x); y=x./m; end end
maxnumbta=m0; s=0; for i=1:3 s=s+y0(i); end w1=y0./s;
fprintf(' 主特征根:\\n'); maxnumbta
fprintf(' 主特征向量:\\n'); w1
n=3; % 一致性检验
CI=(maxnumbta-n)/(n-1) RI=0.52; CR=CI/RI 2.m
clear; clc;
fprintf(' 判断矩阵:\\n'); % A为判断矩阵 A=[1 2 1 1/2 1 1 1 1 1]
x0=[1:3]';% 任意初始向量 m0=max(x0); y0=x0./m0;
flag=1;m=100; % m设初值是为了使第一次迭代能进行
while abs(m-m0)>=0.01 % 迭代法求主特征根和主特征向量,允许误差0.01 if flag==1 % flag==1表示第一次迭代 flag=0; x=A*y0; m=max(x); y=x./m; else
m0=m;y0=y; x=A*y; m=max(x); y=x./m; end
end
maxnumbta=m0; s=0; for i=1:3 s=s+y0(i); end w1=y0./s;
fprintf(' 主特征根:\\n'); maxnumbta
fprintf(' 主特征向量:\\n'); w1
n=3; % 一致性检验 CI=(maxnumbta-n)/(n-1) RI=0.52; CR=CI/RI 3.m
clear; clc;
fprintf(' 判断矩阵:\\n'); % A为判断矩阵 A=[1 1/2 1/3 2 1 1 3 1 1]
x0=[1:3]';% 任意初始向量 m0=max(x0); y0=x0./m0;
flag=1;m=100; % m设初值是为了使第一次迭代能进行
while abs(m-m0)>=0.01 % 迭代法求主特征根和主特征向量,允许误差0.01 if flag==1 % flag==1表示第一次迭代 flag=0; x=A*y0; m=max(x); y=x./m; else
m0=m;y0=y; x=A*y; m=max(x); y=x./m; end end
maxnumbta=m0; s=0; for i=1:3 s=s+y0(i); end w3=y0./s;
fprintf(' 主特征根:\\n'); maxnumbta
fprintf(' 主特征向量:\\n'); w3
n=3; % CI=(maxnumbta-n)/(n-1)
一致性检验 RI=0.52; CR=CI/RI ′.m
clear; clc;
fprintf(' 判断矩阵:\\n'); % A为判断矩阵 A=[1 1/2 2 2 1 3 1/2 1/3 1] x0=[1:3]';% 任意初始向量 m0=max(x0); y0=x0./m0;
flag=1;m=100; % m设初值是为了使第一次迭代能进行
while abs(m-m0)>=0.01 % 迭代法求主特征根和主特征向量,允许误差0.01 if flag==1 % flag==1表示第一次迭代 flag=0; x=A*y0; m=max(x); y=x./m; else
m0=m;y0=y; x=A*y; m=max(x); y=x./m; end end
maxnumbta=m0; s=0; for i=1:3 s=s+y0(i); end w4=y0./s;
fprintf(' 主特征根:\\n'); maxnumbta
fprintf(' 主特征向量:\\n'); w4
n=3; % 一致性检验 CI=(maxnumbta-n)/(n-1) RI=0.52; CR=CI/RI %inter.m clear;clc;
w =[0.2735 0.1510 0.2733 0.3023]'; w1 =[0.4125 0.2600 0.3275]'; w2 =[ 0.1958 0.4934 0.3109]'; w3 =[0.1692 0.3874 0.4434]'; w4 =[0.2969 0.5397 0.1634]'; C=[w1,w2,w3,w4]*w