住房分配问题
数 学 建 模
期末作业
姓名 解朝家
学号 [1**********]
学院 机电学院
住房分配问题
一. 摘要
该问题为研究多重影响因素下针对住房分配的合理方安。根据题目所
给的条件,影响住房分配的有职称、工龄、教学情况、学历以及科研,一般会采用“分档次分配”的方式,如:“先按工龄分档次,处在同一档次的按职称先后排队分配住房,职称相同的再按其他因素排队”,但是这样的分配方法存在不合理性。如:若首先按照工龄排队,则任职晚的就会排在后面,而无论他的职称或是对公司做出的突出贡献,这样显然不能体现多劳多得,先劳先得的公平法则。但同时也考虑到各个影响因素确实也有主次大小之分,即不同因素对住房分配的影响程度是不同的,故住房分配是一个多指标,多成员,多不定因数的决策问题,是多属性决策在现实中的具体应用。而解决多属性决策问题关键的环节就是确定各指标的相对权重。在确定权的方法上目前主要有层次分析法中的最大特征根法、近似计算方法中的幂法、方根法、求积法,加权平方和法以及来自信息论的熵技术等。一定的原则指导下,寻求一种较为合理、有效的方法对住房分配也就显得十分必要。层次分析法是解决多属性决策的一种行之有效的方法。本文通过分析住房分配要素的性质和成员在各指标下的数据,利用层次分析法,结合具体实例给出了分配方案需要的排序。并在文末,检验了方案的合理性,并对个例进行了推广,使这种方法更具有通用性。
又按照层次分析法以及题意可知:目标层为住房分配;准则层为五大
因素,且按权重依次为职称、工龄、教学情况、学历及科研,再根据权重构造比较矩阵,对其进行一致性检验,可以接受,进一步求出最大特征值,然后在对矩阵进行归一化,得到相应的特征向量。方案层为50位老师,依据每位老师对5个因素的不同量化数据,构造出5个50阶一致性矩阵,其特征值为50,进一步对每个矩阵进行归一化,得到相应的特征向量,据此计算出方案层对目标层的组合权向量,并作组合一致性检验。通过检验,则按照组合权向量表示的结果进行决策。某中学现有30套福利房欲分配给该校老师,该校有50位教师。学校经过全体老师讨论决定,分房只考虑下列因素:职称,工龄,学历,教学情况。
关键词:层次分析法;主成分分析法;归一化;一致性检验
二.问题的重述
某中学现有30套福利房欲分配给该校老师,该校有50位教师。学校经过全体老师讨论决定,分房只考虑下列因素:职称,工龄,学历,教学情况。具体情况如下表1,请设计一个数学模型,合理分配这30套住房。现在要综合考虑各个方面因素,即职称,工龄,学历,教学情况。找到一种更合理、更人性化、更公平、公正的分配方法。
表1
三.问题的分析
该问题按照层次分析法需要建立目标层、准则层、决策层:目标层为住房分配;准则层为五大因素,且按权重依次为:1职称:2工龄、3教学情况、4学历、5科研,再根据权重构造比较矩阵,对其进行一致性检验,可以接受,进一步求出最大特征值,然后在对矩阵进行归一化,得到相应的特征向量,不能接受,则需要重新分配权重,进一步求出最大特征值,然后在对矩阵进行归一化,
得到相
应的特征向量。方案层为50位老师,依据每位老师对5个因素的不同量化数据,构造出5个50阶一致性矩阵,其特征值为50,进一步对每个矩阵进行归一化,得到相应的特征向量,据此计算出方案层对目标层的组合权向量,并作组合一致性检验。
四.模型假设
1、假设分配住房只考虑下列5个因素:职称、工龄、学历、教学、科研情况,而不考虑是否已有住房或住房的挑选等问题 。
2、假设该中学主要遵循“按劳分配,兼顾科研”的住房分配原则。
3、假设每位教师至多分得1套住房。
4、假设住房分配选择的指标、计算各属性值时采取的量化方法及确定指标的相对重要程度都具有权威性,各成员对此没有异议。
5、当总权重一样时,以工龄为优先权,接着以职称,教学,学历,科研
五.模型设计
1、建立递阶层次结构模型
据题意,住房分配问题的考虑因素有1职称:2工龄、3教学情况、4学历、5科研,本文以这五项为准则层,住房分配为目标层,50个老师为决策层,构造了如图1:
目标层: 住房分配
准则层: 职称 工龄 学历 教学 科研
方案层: …
2、构造判断矩阵
层次结构反映了因素之间的关系,但准则层中的各准则在目标衡量中所占的比重并不一定相同,在决策者的心目中,它们各占有一定的比例。Saaty等人建议可以采取对因子进行两两比较建立成对比较矩阵的办法。即每次取两个因子xi和xj,以aij表示xi和xj对Z的影响大小之比,全部比较结果用矩阵A=(aij)nxn表示,称A为ZX之间的成对比较判断矩阵(简称判断矩阵)。容易看出,若xi与xj对Z的影响之比为aij,则xj与xi对Z的影响之比应为aji1/aij。
aij值的确定,可用1-9数的倒数表示如下
对准则层的尺度比较如下所示:
则可以得到非一致性矩阵如下:
C=
3 4 5 6
1/3 1 2 3 4
1/4 1/2 1 2 3
1/5 1/3 1/2 1 2
1/6 1/4 1/3 1/2 1
职称 学历 工龄 科研 教学
3 、对准则层判断矩阵进行一致性检验并求其权向量
(1)计算一致性指标CI
公式:CI=(λmax-n)/(n-1)
λmax为矩阵对应的最大特征根,n为矩阵维数
(2)查找相应的平均随机一致性指标RI。RI的值,如下所示:
RI值是用随机方法构造500个样本矩阵,随机地从1~9及其倒数中抽取数字构 造正互反矩阵,求得最大特征根的平均值λ'max,并用如下定义得到的:
RI=λ'max-n/n-1
(3) 计算一致性比例CR:
对准则层的尺度比较如下所示:
则可以得到非一致性矩阵如下:
C=
3 4 5 6 1/3 1 2 3 4 1/4 1/2 1 2 3 1/5 1/3 1/2 1 2 1/6 1/4 1/3 1/2 1
职称 学历 工龄 科研 教学
3 、对准则层判断矩阵进行一致性检验并求其权向量 (1)计算一致性指标CI
公式:CI=(λmax-n)/(n-1)
λmax为矩阵对应的最大特征根,n为矩阵维数
(2)查找相应的平均随机一致性指标RI。RI的值,如下所示:
RI值是用随机方法构造500个样本矩阵,随机地从1~9及其倒数中抽取数字构 造正互反矩阵,求得最大特征根的平均值λ'max,并用如下定义得到的:
RI=λ'max-n/n-1
(3) 计算一致性比例CR:
CR=CI/RI
计算CI应该先计算出λmax,即矩阵C的最大特征向量 在matlab中输入:
则
λmax=5.0988,代入CI,可求出CI=(5.0988-5)/(5-1)=0.0247,当n=5时,RI=1.12,所以CR=CI/RI=0.0221,小于0.1,满足一致性检验。
计算准则层最大特征值对应的权向量
公式方法如下:
用MATLAB计算结果
输入程序 a=ones(5) a(1,2)=3; a(1,3)=4; a(1,4)=5; a(1,5)=6; a(2,3)=2; a(2,4)=3; a(2,5)=4; a(3,4)=2; a(3,5)=3; a(4,5)=2; for i=1:5 for j=1:5 a(j,i)=1/a(i,j) end end
[v,d]=eig(a) g=max(max(d)') for i=1:5 b(i)=0 for j=1:5
b(i)=a(i,j)+b(i) j+1 end end m=0 for k=1:5 m=b(k)+m end m ;
for i=1:5 n(i)=b(i)/m end n
结果如下
权重 职称 学历 工龄 科研 教学
4、 量化所有教师在5项因素中的程度并求各项权向量,量化方案如下
职称 高级8 中级5 初级3
学历 博士8 硕士6 本科4 专科2 工龄 实际工龄/5+1
科研 好10 一般7 差4 教学 好10 一般7 差4
则各教师量化结果如下:
教师编号 职称 学历 工龄 科研 教学 1 8 10 4 10 10 2 8 3 8 4 8 5 8 6 8 7 5 8 5 9 5 10 5 11 5 12 5 13 5 14 5 15 5 16 5 17 5 18 5 19 5 20 5 21 5 22 5 23 5 24 3 25 3 26 5 27 5 28 3 29 3 30 3 31 3 32 3 33 3 34 3 35 3 36 3 8 6 7 6 7 4 5 8 6 6 5 8 5 6 4 6 4 6 4 6 4 6 3 6 3 6 4 6 4 6 4 6 3 6 4 4 4 4 4 4 3 4 3 4 2 8 2 8 3 4 3 4 2 8 3 6 3 6 2 6 2 6 2 6 2 6 1 6 2 6 7 7 7 7 7 10 4 4 4 7 7 7 10 7 10 7 10 7 10 7 7 7 7 10 10 4 4 7 4 7 4 7 7 7 10 4 4 10 7 4 7 10 7 10 10 10 10 7 4 7 4 4 4 10 7 7 4 10 10 4 7 10 7 10 7 10 10 10 7 7
37 3 2 6 7 7 38 3 1 6 10 7 39 3 1 6 10 7 40 3 2 6 4 10 41 3 2 6 4 10 42 3 3 4 7 7 43 3 1 6 7 7 44 3 1 6 7 7 45 3 2 4 10 4 46 3 2 2 4 7 47 3 1 2 7 7 48 3 1 2 7 4 49 3 1 2 4 7 50 3 1 2 4 7
计算各项权向量
1、求职称因素影响的最大特征根值及所对应的归一化特征向量: 输入程序
b1=[8,8,8,8,8,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3] for i1=1:1:50 for i2=i1:1:50
c1(i1,i2)=b1(i1)/b1(i2) c1(i2,i1)=1/c1(i1,i2) i2+1 end end
[v1,d1]=eig(c1) g1=max(max(d1)') for i=1:50 f1(i)=0 for j=1:50
f1(i)=c1(i,j)+f1(i) j+1 end end m1=0
for k1=1:50 m1=f1(k1)+m1 end m1
for i=1:50 n1(i)=f1(i)/m1
n1
输出结果
2、求学历因素影响的最大特征根及所对应的归一化特征向量
输入程序
b2=[4,6,6,4,6,8,8,6,6,6,4,4,6,6,4,6,4,6,4,4,6,6,6,6,4,6,6,6,6,8,6,6,2,6,6,4,4,6,6,6,2,6,6,2,8,2,6,8,6,2]
for i1=1:1:50
for i2=i1:1:50
c2(i1,i2)=b2(i1)/b2(i2)
c2(i2,i1)=1/c2(i1,i2)
i2+1
end
end
[v2,d2]=eig(c2)
g2=max(max(d2)')
for i=1:50
f2(i)=0
for j=1:50
f2(i)=c2(i,j)+f2(i)
j+1
end
m2=0
for k2=1:50
m2=f2(k2)+m2
end
m2
for i=1:50
n2(i)=f2(i)/m2
end
n2 输出结果
3、求工龄因素影响的最大特征根值及所对应的归一化特征向量 输入程序
b3=[10,8,7,7,6,5,5,5,4,3,4,3,3,4,4,4,4,3,3,3,4,4,4,4,3,3,2,3,2,2,2,1,1,2,2,2,3,2,1,2,1,2,1,1,2,2,1,2,1,1]
for i1=1:1:50
for i2=i1:1:50
c3(i1,i2)=b3(i1)/b3(i2)
c3(i2,i1)=1/c3(i1,i2)
i2+1
end
end
[v3,d3]=eig(c3)
g3=max(max(d3)')
g3
for i=1:50
f3(i)=0
for j=1:50
f3(i)=c3(i,j)+f3(i)
j+1
end
end
m3=0
for k3=1:50
m3=f3(k3)+m3
end
m3
for i=1:50
n3(i)=f3(i)/m3
end
n3 输出结果
4、求科研因素影响的最大特征值及所对应的归一化特征向量
输入程序
b4=[10,7,7,7,4,4,7,10,4,7,10,7,10,7,4,10,7,7,7,4,4,4,10,10,4,4,7,7,10,10,7,7,4,4,7,10,7,7,10,4,4,7,10,7,4,4,10,10,7,7]
for i1=1:1:50
for i2=i1:1:50
c4(i1,i2)=b4(i1)/b4(i2)
c4(i2,i1)=1/c4(i1,i2)
i2+1
end
end
[v4,d4]=eig(c4)
g4=max(max(d4)')
g4
for i=1:50
f4(i)=0
for j=1:50
f4(i)=c4(i,j)+f4(i)
j+1
end
end
m4=0
for k4=1:50
m4=f4(k4)+m4
end
m4
for i=1:50
n4(i)=f4(i)/m4
end
n4 输出结果
5、求教学因素影响的最大特征值及所对应的归一化特征向量
输入程序
b5=[10,7,7,10,7,4,7,7,7,10,4,10,4,7,10,7,4,7,10,7,7,7,7,7,4,10,7,7,4,7,10,7,7,10,7,4,7,10,7,10,7,10,7,4,10,7,10,10,7,7]
for i1=1:1:50
for i2=i1:1:50
c5(i1,i2)=b5(i1)/b5(i2)
c5(i2,i1)=1/c5(i1,i2)
i2+1
end
end
[v5,d5]=eig(c5);
g5=max(max(d5)');
g5
for i=1:50
f5(i)=0
for j=1:50
f5(i)=c5(i,j)+f5(i)
j+1
end
end
m5=0
for k5=1:50
m5=f5(k5)+m5
end
m5
for i=1:50
n5(i)=f5(i)/m5;
end
n5
输出结果 即b=[n1’,n2’,n3’,n4’,n5’]如下
b=
0.0367 0.0149 0.0633 0.0288 0.0270 0.0367 0.0224 0.0506 0.0202 0.0189 0.0367 0.0224 0.0443 0.0202 0.0189 0.0367 0.0149 0.0443 0.0202 0.0270 0.0367 0.0224 0.0380 0.0115 0.0189 0.0367 0.0299 0.0316 0.0115 0.0108
0.0229 0.0299 0.0316 0.0202 0.0189 0.0229 0.0224 0.0316 0.0288 0.0189 0.0229 0.0224 0.0253 0.0115 0.0189 0.0229 0.0224 0.0190 0.0202 0.0270 0.0229 0.0149 0.0253 0.0288 0.0108 0.0229 0.0149 0.0190 0.0202 0.0270 0.0229 0.0224 0.0190 0.0288 0.0108 0.0229 0.0224 0.0253 0.0202 0.0189 0.0229 0.0149 0.0253 0.0115 0.0270 0.0229 0.0224 0.0229 0.0149 0.0229 0.0224 0.0229 0.0149 0.0229 0.0149 0.0229 0.0224 0.0229 0.0224 0.0229 0.0224 0.0229 0.0224 0.0229 0.0149 0.0138 0.0224 0.0138 0.0224 0.0138 0.0224 0.0138 0.0224 0.0138 0.0299 0.0138 0.0224 0.0138 0.0224 0.0138 0.0075 0.0138 0.0224 0.0138 0.0224 0.0138 0.0149 0.0138 0.0149 0.0138 0.0224 0.0138 0.0224 0.0138 0.0224 0.0138 0.0075 0.0138 0.0224 0.0138 0.0224 0.0138 0.0075 0.0138 0.0299 0.0138 0.0075 0.0138 0.0224 0.0138 0.0299 0.0138 0.0224 0.0138 0.0075 0.0253 0.0288 0.0253 0.0202 0.0190 0.0202 0.0190 0.0202 0.0190 0.0115 0.0253 0.0115 0.0253 0.0115 0.0253 0.0288 0.0253 0.0288 0.0190 0.0115 0.0190 0.0115 0.0127 0.0202 0.0190 0.0202 0.0127 0.0288 0.0127 0.0288 0.0127 0.0202 0.0063 0.0202 0.0063 0.0115 0.0127 0.0115 0.0127 0.0202 0.0127 0.0288 0.0190 0.0202 0.0127 0.0202 0.0063 0.0288 0.0127 0.0115 0.0063 0.0115 0.0127 0.0202 0.0063 0.0288 0.0063 0.0202 0.0127 0.0115 0.0127 0.0115 0.0063 0.0288 0.0127 0.0288 0.0063 0.0202 0.0063 0.0202 0.0189 0.0108 0.0189 0.0270 0.0189 0.0189 0.0189 0.0189 0.0189 0.0108 0.0270 0.0189 0.0189 0.0108 0.0189 0.0270 0.0189 0.0189 0.0270 0.0189 0.0108 0.0189 0.0270 0.0189 0.0270 0.0189 0.0270 0.0189 0.0108 0.0270 0.0189 0.0270 0.0270 0.0189
0.0189
职称 学历 工龄 科研 教学
求总权重 输入程序
输出结果
将之按从大到小排列并输出编号 在c++中输入程序如下 #include void main() {double
a[50]={0.0344,0.0329,0.0319,0.0305,0.0301,0.0305,0.0255,0.0245,0.0219,0.0221,0.0213,0.0203,0.0221,0.0227,0.0205,0.0235,0.0205,0.0217,0.0203,0.0191,0.0219,0.0219,0.0235,0.0235,0.0186,0.0172,0.0166,0.0176,0.0170,0.0192,0.0170,0.0156,0.0111,0.0162,0.0166,0.0151,0.0158,0.0170,0.0164,0.0162,0.0111,0.0170,0.0164,0.0115,0.0180,0.0121,0.0168,0.0196,0.0156,0.0119}; double
c[50]={0.0344,0.0329,0.0319,0.0305,0.0301,0.0305,0.0255,0.0245,0.0219,0.0221,0.0213,0.0203,0.0221,0.0227,0.0205,0.0235,0.0205,0.0217,0.0203,0.0191,0.0219,0.0219,0.0235,0.0235,0.0186,0.0172,0.0166,0.0176,0.0170,0.0192,0.0170,0.0156,0.0111,0.0162,0.0166,0.0151,0.0158,0.0170,0.0164,0.0162,0.0111,0.0170,0.0164,0.0115
,0.0180,0.0121,0.0168,0.0196,0.0156,0.0119}; int x, y,m=0; int b[100]; double z; for(x=1;xprintf("输出结果如下:\n"); for(x=0;x
结果如下
从该结果可以看出
没被选上的老师应该为41、33、44、50、46、36、49、32、37、40、43、35、27、47、42、38、31、29、39、26
六、模型的分析
该模型运用层次分析法,求各权重值,综合起来,再作比较,从而选出合理的方案,层次分析法在考虑权重时必须把各因素的要考虑到,这样才能做到正真的公平公正,让人无话可说,该文就教师的职称、学历、工龄、科研、教学,,较全面的考虑了多方面因素,选出了最终让除41、33、44、50、46、36、49
、
32、37、40、43、35、27、47、42、38、31、29、39、26以外的其他30为教室得到住房。但毕竟个人对各因素权重理解不一样,该论文的分析只能做一个参考,具体情况还得具体分析。