题目
奖学金、助学金分配问题的优化模型》姓名: 1111111 学号: 09102126 专业: 信息与计算科学 学院: 数学与信息科学 指导老师: 熊思灿 时间: 2011/3/24
《
奖学金、助学金分配问题的优化模型
摘要
奖学金、助学金分配方案涉及每个学生的切身利益, 一直是学生关注的热点问题之一。因此,分配结果是否合理,对调动学生的积极性及优秀学生的正确评选都有着重要意义。本文主要通过采取Q 值法和目标函数法来建立模型实施名额及奖金的分配。
针对问题一,我们首先将待分配参数从整体上单独分配,即将待分配总名额与待分配总金额分开考虑,依据Q 值法模型分配给三个专业,用MATLAB 编程求解得到结果一。为了尽量使分配各类奖项所对应的待分配名额公平,先将每类奖项作为一个整体,用Q 值法模型分配给各专业,并依据各专业所得各类奖项名额可求出所分配的金额,即得到结果二。最后将结果二与结果一比较,对不同种类奖金名额进行人为对调,使得总名额与总金额保持相对公平。各专业所得名额为:37、44、48;各专业所得金额:123000、146000、160000。
由于问题二是问题一的细化,以对数应专业的班级进行分配为例,我们假设问题一的分配结果公平,在问题一的分配基础上依据问题二的要求进行再分配。此次我们首先采取比例法实施分配,把最终分配结果的数据做成表格。经分析此结果,发现此法并不公平,因为071011班只比081011班多2人,而该班却多出两个名额和8000元。故我们使用Q 值法按问题二的要求再进行分配,求得数应各班所得名额为:8、8、8、6、7;所得出金额为:28000、26000、26000、19000、24000。
针对问题三,由于国家奖学金金额很大,我们应当结合分配金额及分配名额来处理这个分配。故我们使用目标函数法来解决此问题。用LINGO 编程求解得各专业名额分配为:37、44、49;各金额分配结果为:125000、148000、164000。由于问题一已经分配出了除特等奖以外的名额和奖金,所以通过对数据的对比我们可以知道加入特等奖之后的分配相当于信管增加了一个名额,而其他两个专业名额没有变化。但考虑到不确定三个专业中符合国家级奖学金这一奖项评选条件的同学的在哪个专业,故将国家级奖学金一一分给三的专业后再对结果进行修正,便可问题三的最终分配结果。
关键词: Q 值法 比值法 目标函数法 奖学金、助学金分配问题
一、问题重述
2010年数信学院各类奖学金、助学金的总数与金额如下表:
数信学院具有评优条件的各专业人数如下表:
(1) 不考虑国家奖学金的分配,请根据各个专业的人数与各奖金金额大小确定分配方案,使分配方案尽量公平合理。 (2) 不考虑国家奖学金的分配,请根据各个班级的人数与奖学金金额大小确定分配方案,使分配方案尽量公平合理。 (3) 考虑国家奖学金与其他奖学金一起分配,请确定分配方案。 二、问题分析
(一) 问题1的分析
问题1的要求是在不考虑国家奖学金的分配的前提下,将剩下的奖金与名额分配给各专业。求解出问题1便能大体上将各专业分配所得名额的总体情况给出,从而有利于问题2的求解。问题1属于典型的席位分配问题,对于解决此类问题我们采取最大Q 值法进行求解和分析。 (二) 问题2的分析
问题2的要求是在不考虑国家奖学金的分配的前提下,将剩下的奖金与名额分配给各个班。该问题与问题1类似,只是分配工作具体到了每个班。求解出此问题会使得分配结果更加清晰明朗,从而让分配工作顺利进行。在求解问题二时,假设问题1中的求解结果公平,再用Q 值法将各专业所得的名额及金额分配给各班,即可得到问题2分配的结果。 (三) 问题3的分析
问题3要求考虑国家奖学金与其他奖学金一起分配。由于国家奖学金的金额数目较大,且只有一个名额。故无论将这个名额给哪个专业,都会造成该专业对另两个专业的不公平度在金额分配上大大增加。由于考虑到实际分配执行过程中学校是将国家级奖学金分配给待评选人中综合素质最高的学生,故分配情况有三种可能。
三、模型假设
1. 假设题目所给的数据真实可靠;
2.假设各专业都具有符合各评选条件的学生;
3. 假设所有的相对不公平度最小时,便视为分配结果公平; 4.假设上文求解的结果对下文都可以利用且视为真实可靠的; 5. 假设各专业都有可能具有获得国家奖学金的的学生。
四、定义与符号说明
五、模型的建立与求解
5.1 问题一最大Q 值法模型
5.1.1 最大Q 值法模型的建立过程:
用Q 值法来衡量是否公平是基于这样一条原则:如果两个数相同,那么它们的比值是零。即如果两个数相等,它们的比值是1。即如果
P x R x
P x R x
P x R x
=
P y R y
,则
() /(
P y R y
P y R y
) =1。并且上述比值越大,对x 来说,这种分配方案就越不公平。用
() /(
) 作为衡量x 不公平的值。假定把名额给y ,计算x 的不公平程度,然后
假定把名额给x ,计算y 的不公平程度。我们的分配方案将使不公平程度最低。在这种情况下,当(
P y R y
) /(
P x R x +1
)
P x R x
) /(
P y R y +1
) 时,x 获得额外名额。做一下简化,
我们可得到:当
(P x )
2
R x (R x +1)
>
(P y )
2
R y (R y +1)
时,x 获得额外名额。记:Q x =
(P x )
2
R x (R x +1)
,
则把名额分配给Q 大的一方。
将该方法推广到n 个专业的名额分配情况。设各专业分配的人数R x 已经确定,当再增加1名额时,计算各专业的Q 值。其中Q 值为:
Q x =
(P x )
2
R x (R x +1)
, x =1, 2, , n
将该名额分配给Q 值最大的一方,这样可使造成的不公平程度最小。 5.1.2相对公平度评判标准:
设各专业分配的名额为x i ,则各专业名额代表的人数为a i /x i ,平均每个名额代表的人数为S /P 。对每个专业来说,尽量的使a i /x i 与S /P 接近。因此有:
n
Z =
∑(x
i =1
a i
i
-
S P
2
)
若分配后,将结果代入上式能使Z 值最小,则认为该分配方案是相对公平的。 5.1.3模型求解:
首先将总金额和总名额分开考虑,用最大Q 值法分给各专业,用MATLAB 求解(程序见附录),整理数据得到下表:
,则各专业所分配的名额及奖金,整理后如下表所述:
别,即表二中信计总名额数比表一中少一个,金额也少3000元;而与之对应的数应却多一个名额,奖金也多4000元。又根据公平度评判标准可知道,将表一中总名额数和总金额数数据代入公式运算(求解见附录)得:Z =0.2800362E-03同理,表二中对应数据代入求得:Z =0.2830362E-03。因此, 可知按表一中数据分配相对更公平。所以对表二中不同种类奖助学名额进行人为调整,使得表二中总名额数和总金额数与表一中一样,这样可以保证分配给各专业总名额数和总金额数相对公
平,而不同种类奖项分配也有一定公平度。
人为调整具体是:从表二中很容易发现只要数应给信计一个B 等助学金的名额,三个专业的总名额数就能达到相对公平,再对比表一与表二的总金额数就可知,数应拿一个C 等助学金名额与信管换一个B 等助学金名额即可使三个专业奖金总数达到相对公平。整理数据得出下表:
(表三)
据一致,即可以认为我们的分配方案是相对公平的。 5.2 问题二 比例法模型
5.2.1 比例法分配模型的一般数学表达式:
R x =P *P x /
-R ,尚未分配完的名额为:
设各班级分得名额的小数部分为:r x =
n
P *P x
S
k =P -
∑R ,则将k 个尚未分配完的名额依次分给小数部分最大的班级。即比例
x
i =1
法的思想就是按比例分配给各班级名额及奖金。
5.2.2 模型求解:
我们按比值法的思想来编写求解程序(程序见附录),将表三中数应专业的名额及奖金具体分配到各班,求解得到分配结果整理如下表所示:
得到数据整理后如下表所示:
通过比较表四和表五的数据,两表中总名额与总金额相差较大。通过评判标准Z 值比较,发现代入表五中总名额和总金额数据时比代入表四中对应数据时Z 值更小,说明按表五中数据分配相对更公平一点。因此,在保持总名额和总金额与表五中一致的前提下,使用与模型一中相同的方法,对表四中的数据进行人为调整,由此可得出数应的分配结果如下表所示:
(表七)
(表八)
5.3 问题三 目标函数法模型 5.3.1 目标函数法模型的建立:
设各专业分配的名额为x i ,则各专业名额代表的人数为a i /x i ,平均每个名额代表的人数为S /P 。对每个专业来说,尽量的使a i /x i 与S /P 接近。因此,目标函数为:
n
min Z =
∑(x
i =1
a i
i
-
S P
2
)
满足的约束∑x i =p ,x i 取整,i =1,2,3,…,n。且各
i =1
n
取整数。
i
5.3.2目标函数法模型的求解: 对模型进行lingo 编程求解可知道:
1、当输入总名额p=130时,目标函数值为Z=0.4261468E-03;专业分得的名额为:x1=37,x2=44,x3=49
2、当输入总金额p=437时,目标函数值为Z= 0.8734697E-05;专业分得的金额为:x1= 125,x2= 148,x3= 164 所以即有分配情况如下表九所示:
九的数据对比我们可以知道加入特等奖之后的分配相当于只是信管增加一个名额,而其他两个专业名额并没有变化,再由问题一分配数据为依据(如下表十所示),可以进行假设讨论特种奖的分配可能性。
如果将特等奖分给信管专业,通过对数据的调整就有如下表所示:
如果将特等奖分给信计专业,同理可以对数据调整后如下表所示:
如果特等奖分给数应专业,同理可以对数据调整后如下表所示:
六、问题的三种数学模型的比较
6. 1模型的优点分析
模型一中,通过采用最大Q 值法,将总金额和总名额分别分配给三个专业,通过公平度标准评判发现这样可以保证总金额数和总名额数分配给三个专业是相对比较公平的,也与问题一的要求很吻合,这就使得我们在接下来的具体各种奖学金与助学金名额分配上可以进行人为调整而对结果影响不大增加了说服力。即使某一种奖学金名额分配存在问题,但是我们总能保证其大的前提合理即分配给各专业的总金额与总名额是相对公平合理的。
模型二与模型三均用到模型一的思维,即都先控制总的金额与名额相对公平,然后再进行进一步的分配,这样也就使得分配方在总的分配利益上是相对公平。与此同时我们在分配具体奖金种类名额时采用了人为对调的方法,具有一定的创新;同时也使得分配结果更加合理,与现实实际情况能够吻合。这也加大了本模型的可信度。
通过模型结果的分析,我们发现模型的结果还是比较符合实际情况的,说明该模型具有一定的科学合理性和参考价值。 6. 2模型的缺点分析:
虽然我们采取的方法相对比较科学,但是我们的模型求解结果还是不完善的,在模型一中我们在具体分配不同种类奖金时就存在不科学性,观察程序分配后的数据发现在份额越小的情况下,相差较少人数的不同专业可能分到的名额却具有较大的差异,这也充分的说明了,该模型的灵敏度比较大,所以程序求解的结果具有的说服力有限。再者我们在分配结果中进行人为的对调不同奖金的名额以达到总名额与总金额相对更加公平,这只适合数据量较小且所分配数据较小的模型求解,具有较强的局限性。
模型二与模型三中都是利用了模型一的结果数据作为基础,这就说明在模型二、三中存在理想化,即假设模型一所求得的数据是完全可靠的,这就使得模型的说服力大大降低,偶然性增大,在不同的数据下稳定性差。
本文中所有模型虽然都采用较科学的席位分配模型中的Q 值法和目标函数法等数学研究方法,但是这些方法并不能同时满足一个模型,所以还需要继续完善的和寻找更加科学合理的数学分配方法。
七、模型评价与推广
7. 1模型的评价:
本文主要研究的是对奖学金与助学金的分配问题。由于涉及各专业甚至各班的利益问题,所以要求所定的分配公平度评判标准值Z 尽可能小即才能使大家更好地接受。因此本文采用了数学建模中通用的公平席位分配模型加以改进,充分利用比例法和最大Q 值法并结合MATLAB 和LINGO 等数学软件的优越运算功能进行求解,相对而言模型求出的结果还是比较科学合理,对现实情况的解决具有一定的参考意义。与此同时本文中还结合实际对求解的结果进行了人为的小幅度调整使之不但更加合理,而且更加贴近实际。 7. 2模型的推广:
在现实生活中,我们常常会遇到一些对资源难以分配的问题,比如本文的奖学金分配问题。由于不同年级的人数不一样,每年新招的新生也不一样,这样每年都需要制定奖学金的分配方案,即便制定了较为合理的分配方案,但还是会有人抱怨分配对他们不公平,为什么他们班的名额就比其他班级少几个而人数却相差无几。诸如此类问题在我们生活中比比皆是,像会议席位的合理分配、人员升迁名额合理分配等问题都或多或少具有一定的争议。
本文就我们院奖学金、助学金分配问题进行建模研究。在本文中,所建模型由于是基于公平席位分配模型加以改进得到了的,所以它具有一定地科学依据,通过结果与实际对比发现相差无几,因此本模型对我院奖学金、助学金分配有一定的参考性。同样该模型也适应于我们现实生活中实际问题的解决,比如会议席位的合理分配、人员升迁名额合理分配等或多或少具有一定争议性的问题。该模型在现实生活中解决一些简单的分配问题是具有一定参考价值的,在分配思路和方法上都具有一定的借鉴意义。
参考文献
[1] 谢金星、薛毅、优化模型与LINGO/LINGO软件 [M].北京:清华大学出版社; [2] 岳林, 关于Q 值法的一种新定义[J]系统工程1995 13(4):70-72; [3] 华勇, 实用数学建模与软件应用第1版. 西北工业大学出版社,2008; [4] 姜启源, 数学模型第3版. 高等教育出版社,2003; [5] 徐玖平、胡知能、李军,运筹学(II 类),北京:科学出版社,2004。 [6] Ishizuka Y, AiyoshiE. Double penalty method for bilevel optimization problems. Annals of Operations Research, 24: 73- 88,1992。
附件
模型一的求解程序:
clc;clear
a=[149,177,196];%各专业人数 n=length(a);
p=input('输入名额的总数')%需要输入的数值是37与123 S=sum(a);%总人数 x=ones(1,n);
Q=zeros(1,n); %各专业初始名额数 L=sum(x);
while(L
Q(i)=a(i)^2/(x(i)*(x(i)+1));%计算各单位的Q 值 end
[u,k]=max(Q);%求最大Q 值和相对应单位k x(k)=x(k)+1;
L=L+1;%已分配名额加1 end
fprintf('各专业分配名额:') for i=1:n
fprintf('%2d\n',x(i)); end
fprintf('\n');
公平度评判: model: sets:
depart/1..3/:a,x; endsets data:
a=37,44,48; p=130; enddata
s=@sum(depart(i):a(i));
min=@sum(depart(i):(a(i)/x(i)-s/p)^2); @sum(depart(i):x(i))=p; @for(depart(i):@gin(x(i))); End
运行结果:
① Local optimal solution found.
Objective value: Objective bound: Infeasibilities: Extended solver steps: Total solver iterations: ② Local optimal solution found.
Objective value: Objective bound: Infeasibilities: Extended solver steps: Total solver iterations: 模型二的求解程序:
(一)clc;clear
a=[34 32 30 23 30] A=a/149 m=37*A
0.2800362E-03 0.2800362E-03
0.000000 7 715 0.2830362E-03 0.2830362E-03 0.000000 7 696 11
LZ=6*A ZA=8*A ZB=15*A ZC=8*A sum(fix(LZ)) sum(fix(ZA)) sum(fix(ZB)) sum(fix(ZC)) sum(fix(m)) sum(fix(j)) (二)clc;clear
a =[34 32 30 23 30];%各专业人数
n=length(a);
p=input('输入名额的总数')%需要输入的数值是37与123 S=sum(a);%总人数
x=ones(1,n);
Q=zeros(1,n);%各专业初始名额数 L=sum(x);
while(L
for i=1:n
Q(i)=a(i)^2/(x(i)*(x(i)+1));%计算各单位的Q 值 end
[u,k]=max(Q);%求最大Q 值和相对应单位k x(k)=x(k)+1;
L=L+1;%已分配名额加1 end
fprintf('各专业分配名额:') for i=1:n
fprintf('%2d\n',x(i));
end
fprintf('\n');
结果:输入金额的总数123
p =123 各专业分配名额:28 26 25 19 25 输入名额的总数37
p =37 各专业分配名额: 8 8 8 6 7、 输入名额的总数6
p =6 各专业分配名额: 2 1 1 1 1 输入名额的总数8
p =8 各专业分配名额: 2 2 2 1 1 输入名额的总数15
p =15 各专业分配名额: 4 3 3 2 3 clc;clear a=[34 32 30 23 30];%各专业人数 n=length(a);
12
p=input('输入名额的总数')%需要输入的数值是37与123 S=sum(a);%总人数
x=ones(1,n);
Q=zeros(1,n);%各专业初始名额数 L=sum(x);
while(L
for i=1:n
Q(i)=a(i)^2/(x(i)*(x(i)+1));%计算各单位的Q 值 end
[u,k]=max(Q);%求最大Q 值和相对应单位k x(k)=x(k)+1;
L=L+1;%已分配名额加1 end
fprintf('各专业分配名额:') for i=1:n
fprintf('%2d\n',x(i)); end
fprintf('\n');
结果:输入金额的总数123
p =123 各专业分配名额:28 26 25 19 25 输入名额的总数37
p =37 各专业分配名额: 8 8 8 6 7、 输入名额的总数6
p =6 各专业分配名额: 2 1 1 1 1 输入名额的总数8
p =8 各专业分配名额: 2 2 2 1 1 输入名额的总数15
p =15 各专业分配名额: 4 3 3 2 3 模型三的求解程序:
当输入p=130时运行结果:
Local optimal solution found at iteration: Objective value: 0.4261468E-03 Variable Value Reduced Cost P 130.0000 0.000000 S 522.0000 0.000000 A( 1) 149.0000 0.000000 A( 2) 177.0000 0.000000 A( 3) 196.0000 0.000000 X( 1) 37.00000 -0.1191685E-02 X( 2) 44.00000 0.000000 X( 3) 49.00000 0.3854397E-02 Row Slack or Surplus Dual Price 1 0.000000 0.5534826E-04
555 13
2 0.4261468E-03 -1.000000 3 0.000000 0.1342799E-02
当输入p=437时运行结果:
Local optimal solution found at iteration: 491
Objective value: 0.8734697E-05 Variable Value Reduced Cost P 437.0000 0.000000 S 522.0000 0.000000 A( 1) 149.0000 0.000000 A( 2) 177.0000 A( 3) 196.0000 X( 1) 125.0000 X( 2) 148.0000 X( 3) 164.0000 Row Slack or Surplus 1 0.000000 -0.2091388E-05 2 0.8734697E-05 3 0.000000 0.8952355E-05
0.000000 0.000000 0.5677926E-04 -0.1429148E-04 0.000000 Dual Price -1.000000 14
题目
奖学金、助学金分配问题的优化模型》姓名: 1111111 学号: 09102126 专业: 信息与计算科学 学院: 数学与信息科学 指导老师: 熊思灿 时间: 2011/3/24
《
奖学金、助学金分配问题的优化模型
摘要
奖学金、助学金分配方案涉及每个学生的切身利益, 一直是学生关注的热点问题之一。因此,分配结果是否合理,对调动学生的积极性及优秀学生的正确评选都有着重要意义。本文主要通过采取Q 值法和目标函数法来建立模型实施名额及奖金的分配。
针对问题一,我们首先将待分配参数从整体上单独分配,即将待分配总名额与待分配总金额分开考虑,依据Q 值法模型分配给三个专业,用MATLAB 编程求解得到结果一。为了尽量使分配各类奖项所对应的待分配名额公平,先将每类奖项作为一个整体,用Q 值法模型分配给各专业,并依据各专业所得各类奖项名额可求出所分配的金额,即得到结果二。最后将结果二与结果一比较,对不同种类奖金名额进行人为对调,使得总名额与总金额保持相对公平。各专业所得名额为:37、44、48;各专业所得金额:123000、146000、160000。
由于问题二是问题一的细化,以对数应专业的班级进行分配为例,我们假设问题一的分配结果公平,在问题一的分配基础上依据问题二的要求进行再分配。此次我们首先采取比例法实施分配,把最终分配结果的数据做成表格。经分析此结果,发现此法并不公平,因为071011班只比081011班多2人,而该班却多出两个名额和8000元。故我们使用Q 值法按问题二的要求再进行分配,求得数应各班所得名额为:8、8、8、6、7;所得出金额为:28000、26000、26000、19000、24000。
针对问题三,由于国家奖学金金额很大,我们应当结合分配金额及分配名额来处理这个分配。故我们使用目标函数法来解决此问题。用LINGO 编程求解得各专业名额分配为:37、44、49;各金额分配结果为:125000、148000、164000。由于问题一已经分配出了除特等奖以外的名额和奖金,所以通过对数据的对比我们可以知道加入特等奖之后的分配相当于信管增加了一个名额,而其他两个专业名额没有变化。但考虑到不确定三个专业中符合国家级奖学金这一奖项评选条件的同学的在哪个专业,故将国家级奖学金一一分给三的专业后再对结果进行修正,便可问题三的最终分配结果。
关键词: Q 值法 比值法 目标函数法 奖学金、助学金分配问题
一、问题重述
2010年数信学院各类奖学金、助学金的总数与金额如下表:
数信学院具有评优条件的各专业人数如下表:
(1) 不考虑国家奖学金的分配,请根据各个专业的人数与各奖金金额大小确定分配方案,使分配方案尽量公平合理。 (2) 不考虑国家奖学金的分配,请根据各个班级的人数与奖学金金额大小确定分配方案,使分配方案尽量公平合理。 (3) 考虑国家奖学金与其他奖学金一起分配,请确定分配方案。 二、问题分析
(一) 问题1的分析
问题1的要求是在不考虑国家奖学金的分配的前提下,将剩下的奖金与名额分配给各专业。求解出问题1便能大体上将各专业分配所得名额的总体情况给出,从而有利于问题2的求解。问题1属于典型的席位分配问题,对于解决此类问题我们采取最大Q 值法进行求解和分析。 (二) 问题2的分析
问题2的要求是在不考虑国家奖学金的分配的前提下,将剩下的奖金与名额分配给各个班。该问题与问题1类似,只是分配工作具体到了每个班。求解出此问题会使得分配结果更加清晰明朗,从而让分配工作顺利进行。在求解问题二时,假设问题1中的求解结果公平,再用Q 值法将各专业所得的名额及金额分配给各班,即可得到问题2分配的结果。 (三) 问题3的分析
问题3要求考虑国家奖学金与其他奖学金一起分配。由于国家奖学金的金额数目较大,且只有一个名额。故无论将这个名额给哪个专业,都会造成该专业对另两个专业的不公平度在金额分配上大大增加。由于考虑到实际分配执行过程中学校是将国家级奖学金分配给待评选人中综合素质最高的学生,故分配情况有三种可能。
三、模型假设
1. 假设题目所给的数据真实可靠;
2.假设各专业都具有符合各评选条件的学生;
3. 假设所有的相对不公平度最小时,便视为分配结果公平; 4.假设上文求解的结果对下文都可以利用且视为真实可靠的; 5. 假设各专业都有可能具有获得国家奖学金的的学生。
四、定义与符号说明
五、模型的建立与求解
5.1 问题一最大Q 值法模型
5.1.1 最大Q 值法模型的建立过程:
用Q 值法来衡量是否公平是基于这样一条原则:如果两个数相同,那么它们的比值是零。即如果两个数相等,它们的比值是1。即如果
P x R x
P x R x
P x R x
=
P y R y
,则
() /(
P y R y
P y R y
) =1。并且上述比值越大,对x 来说,这种分配方案就越不公平。用
() /(
) 作为衡量x 不公平的值。假定把名额给y ,计算x 的不公平程度,然后
假定把名额给x ,计算y 的不公平程度。我们的分配方案将使不公平程度最低。在这种情况下,当(
P y R y
) /(
P x R x +1
)
P x R x
) /(
P y R y +1
) 时,x 获得额外名额。做一下简化,
我们可得到:当
(P x )
2
R x (R x +1)
>
(P y )
2
R y (R y +1)
时,x 获得额外名额。记:Q x =
(P x )
2
R x (R x +1)
,
则把名额分配给Q 大的一方。
将该方法推广到n 个专业的名额分配情况。设各专业分配的人数R x 已经确定,当再增加1名额时,计算各专业的Q 值。其中Q 值为:
Q x =
(P x )
2
R x (R x +1)
, x =1, 2, , n
将该名额分配给Q 值最大的一方,这样可使造成的不公平程度最小。 5.1.2相对公平度评判标准:
设各专业分配的名额为x i ,则各专业名额代表的人数为a i /x i ,平均每个名额代表的人数为S /P 。对每个专业来说,尽量的使a i /x i 与S /P 接近。因此有:
n
Z =
∑(x
i =1
a i
i
-
S P
2
)
若分配后,将结果代入上式能使Z 值最小,则认为该分配方案是相对公平的。 5.1.3模型求解:
首先将总金额和总名额分开考虑,用最大Q 值法分给各专业,用MATLAB 求解(程序见附录),整理数据得到下表:
,则各专业所分配的名额及奖金,整理后如下表所述:
别,即表二中信计总名额数比表一中少一个,金额也少3000元;而与之对应的数应却多一个名额,奖金也多4000元。又根据公平度评判标准可知道,将表一中总名额数和总金额数数据代入公式运算(求解见附录)得:Z =0.2800362E-03同理,表二中对应数据代入求得:Z =0.2830362E-03。因此, 可知按表一中数据分配相对更公平。所以对表二中不同种类奖助学名额进行人为调整,使得表二中总名额数和总金额数与表一中一样,这样可以保证分配给各专业总名额数和总金额数相对公
平,而不同种类奖项分配也有一定公平度。
人为调整具体是:从表二中很容易发现只要数应给信计一个B 等助学金的名额,三个专业的总名额数就能达到相对公平,再对比表一与表二的总金额数就可知,数应拿一个C 等助学金名额与信管换一个B 等助学金名额即可使三个专业奖金总数达到相对公平。整理数据得出下表:
(表三)
据一致,即可以认为我们的分配方案是相对公平的。 5.2 问题二 比例法模型
5.2.1 比例法分配模型的一般数学表达式:
R x =P *P x /
-R ,尚未分配完的名额为:
设各班级分得名额的小数部分为:r x =
n
P *P x
S
k =P -
∑R ,则将k 个尚未分配完的名额依次分给小数部分最大的班级。即比例
x
i =1
法的思想就是按比例分配给各班级名额及奖金。
5.2.2 模型求解:
我们按比值法的思想来编写求解程序(程序见附录),将表三中数应专业的名额及奖金具体分配到各班,求解得到分配结果整理如下表所示:
得到数据整理后如下表所示:
通过比较表四和表五的数据,两表中总名额与总金额相差较大。通过评判标准Z 值比较,发现代入表五中总名额和总金额数据时比代入表四中对应数据时Z 值更小,说明按表五中数据分配相对更公平一点。因此,在保持总名额和总金额与表五中一致的前提下,使用与模型一中相同的方法,对表四中的数据进行人为调整,由此可得出数应的分配结果如下表所示:
(表七)
(表八)
5.3 问题三 目标函数法模型 5.3.1 目标函数法模型的建立:
设各专业分配的名额为x i ,则各专业名额代表的人数为a i /x i ,平均每个名额代表的人数为S /P 。对每个专业来说,尽量的使a i /x i 与S /P 接近。因此,目标函数为:
n
min Z =
∑(x
i =1
a i
i
-
S P
2
)
满足的约束∑x i =p ,x i 取整,i =1,2,3,…,n。且各
i =1
n
取整数。
i
5.3.2目标函数法模型的求解: 对模型进行lingo 编程求解可知道:
1、当输入总名额p=130时,目标函数值为Z=0.4261468E-03;专业分得的名额为:x1=37,x2=44,x3=49
2、当输入总金额p=437时,目标函数值为Z= 0.8734697E-05;专业分得的金额为:x1= 125,x2= 148,x3= 164 所以即有分配情况如下表九所示:
九的数据对比我们可以知道加入特等奖之后的分配相当于只是信管增加一个名额,而其他两个专业名额并没有变化,再由问题一分配数据为依据(如下表十所示),可以进行假设讨论特种奖的分配可能性。
如果将特等奖分给信管专业,通过对数据的调整就有如下表所示:
如果将特等奖分给信计专业,同理可以对数据调整后如下表所示:
如果特等奖分给数应专业,同理可以对数据调整后如下表所示:
六、问题的三种数学模型的比较
6. 1模型的优点分析
模型一中,通过采用最大Q 值法,将总金额和总名额分别分配给三个专业,通过公平度标准评判发现这样可以保证总金额数和总名额数分配给三个专业是相对比较公平的,也与问题一的要求很吻合,这就使得我们在接下来的具体各种奖学金与助学金名额分配上可以进行人为调整而对结果影响不大增加了说服力。即使某一种奖学金名额分配存在问题,但是我们总能保证其大的前提合理即分配给各专业的总金额与总名额是相对公平合理的。
模型二与模型三均用到模型一的思维,即都先控制总的金额与名额相对公平,然后再进行进一步的分配,这样也就使得分配方在总的分配利益上是相对公平。与此同时我们在分配具体奖金种类名额时采用了人为对调的方法,具有一定的创新;同时也使得分配结果更加合理,与现实实际情况能够吻合。这也加大了本模型的可信度。
通过模型结果的分析,我们发现模型的结果还是比较符合实际情况的,说明该模型具有一定的科学合理性和参考价值。 6. 2模型的缺点分析:
虽然我们采取的方法相对比较科学,但是我们的模型求解结果还是不完善的,在模型一中我们在具体分配不同种类奖金时就存在不科学性,观察程序分配后的数据发现在份额越小的情况下,相差较少人数的不同专业可能分到的名额却具有较大的差异,这也充分的说明了,该模型的灵敏度比较大,所以程序求解的结果具有的说服力有限。再者我们在分配结果中进行人为的对调不同奖金的名额以达到总名额与总金额相对更加公平,这只适合数据量较小且所分配数据较小的模型求解,具有较强的局限性。
模型二与模型三中都是利用了模型一的结果数据作为基础,这就说明在模型二、三中存在理想化,即假设模型一所求得的数据是完全可靠的,这就使得模型的说服力大大降低,偶然性增大,在不同的数据下稳定性差。
本文中所有模型虽然都采用较科学的席位分配模型中的Q 值法和目标函数法等数学研究方法,但是这些方法并不能同时满足一个模型,所以还需要继续完善的和寻找更加科学合理的数学分配方法。
七、模型评价与推广
7. 1模型的评价:
本文主要研究的是对奖学金与助学金的分配问题。由于涉及各专业甚至各班的利益问题,所以要求所定的分配公平度评判标准值Z 尽可能小即才能使大家更好地接受。因此本文采用了数学建模中通用的公平席位分配模型加以改进,充分利用比例法和最大Q 值法并结合MATLAB 和LINGO 等数学软件的优越运算功能进行求解,相对而言模型求出的结果还是比较科学合理,对现实情况的解决具有一定的参考意义。与此同时本文中还结合实际对求解的结果进行了人为的小幅度调整使之不但更加合理,而且更加贴近实际。 7. 2模型的推广:
在现实生活中,我们常常会遇到一些对资源难以分配的问题,比如本文的奖学金分配问题。由于不同年级的人数不一样,每年新招的新生也不一样,这样每年都需要制定奖学金的分配方案,即便制定了较为合理的分配方案,但还是会有人抱怨分配对他们不公平,为什么他们班的名额就比其他班级少几个而人数却相差无几。诸如此类问题在我们生活中比比皆是,像会议席位的合理分配、人员升迁名额合理分配等问题都或多或少具有一定的争议。
本文就我们院奖学金、助学金分配问题进行建模研究。在本文中,所建模型由于是基于公平席位分配模型加以改进得到了的,所以它具有一定地科学依据,通过结果与实际对比发现相差无几,因此本模型对我院奖学金、助学金分配有一定的参考性。同样该模型也适应于我们现实生活中实际问题的解决,比如会议席位的合理分配、人员升迁名额合理分配等或多或少具有一定争议性的问题。该模型在现实生活中解决一些简单的分配问题是具有一定参考价值的,在分配思路和方法上都具有一定的借鉴意义。
参考文献
[1] 谢金星、薛毅、优化模型与LINGO/LINGO软件 [M].北京:清华大学出版社; [2] 岳林, 关于Q 值法的一种新定义[J]系统工程1995 13(4):70-72; [3] 华勇, 实用数学建模与软件应用第1版. 西北工业大学出版社,2008; [4] 姜启源, 数学模型第3版. 高等教育出版社,2003; [5] 徐玖平、胡知能、李军,运筹学(II 类),北京:科学出版社,2004。 [6] Ishizuka Y, AiyoshiE. Double penalty method for bilevel optimization problems. Annals of Operations Research, 24: 73- 88,1992。
附件
模型一的求解程序:
clc;clear
a=[149,177,196];%各专业人数 n=length(a);
p=input('输入名额的总数')%需要输入的数值是37与123 S=sum(a);%总人数 x=ones(1,n);
Q=zeros(1,n); %各专业初始名额数 L=sum(x);
while(L
Q(i)=a(i)^2/(x(i)*(x(i)+1));%计算各单位的Q 值 end
[u,k]=max(Q);%求最大Q 值和相对应单位k x(k)=x(k)+1;
L=L+1;%已分配名额加1 end
fprintf('各专业分配名额:') for i=1:n
fprintf('%2d\n',x(i)); end
fprintf('\n');
公平度评判: model: sets:
depart/1..3/:a,x; endsets data:
a=37,44,48; p=130; enddata
s=@sum(depart(i):a(i));
min=@sum(depart(i):(a(i)/x(i)-s/p)^2); @sum(depart(i):x(i))=p; @for(depart(i):@gin(x(i))); End
运行结果:
① Local optimal solution found.
Objective value: Objective bound: Infeasibilities: Extended solver steps: Total solver iterations: ② Local optimal solution found.
Objective value: Objective bound: Infeasibilities: Extended solver steps: Total solver iterations: 模型二的求解程序:
(一)clc;clear
a=[34 32 30 23 30] A=a/149 m=37*A
0.2800362E-03 0.2800362E-03
0.000000 7 715 0.2830362E-03 0.2830362E-03 0.000000 7 696 11
LZ=6*A ZA=8*A ZB=15*A ZC=8*A sum(fix(LZ)) sum(fix(ZA)) sum(fix(ZB)) sum(fix(ZC)) sum(fix(m)) sum(fix(j)) (二)clc;clear
a =[34 32 30 23 30];%各专业人数
n=length(a);
p=input('输入名额的总数')%需要输入的数值是37与123 S=sum(a);%总人数
x=ones(1,n);
Q=zeros(1,n);%各专业初始名额数 L=sum(x);
while(L
for i=1:n
Q(i)=a(i)^2/(x(i)*(x(i)+1));%计算各单位的Q 值 end
[u,k]=max(Q);%求最大Q 值和相对应单位k x(k)=x(k)+1;
L=L+1;%已分配名额加1 end
fprintf('各专业分配名额:') for i=1:n
fprintf('%2d\n',x(i));
end
fprintf('\n');
结果:输入金额的总数123
p =123 各专业分配名额:28 26 25 19 25 输入名额的总数37
p =37 各专业分配名额: 8 8 8 6 7、 输入名额的总数6
p =6 各专业分配名额: 2 1 1 1 1 输入名额的总数8
p =8 各专业分配名额: 2 2 2 1 1 输入名额的总数15
p =15 各专业分配名额: 4 3 3 2 3 clc;clear a=[34 32 30 23 30];%各专业人数 n=length(a);
12
p=input('输入名额的总数')%需要输入的数值是37与123 S=sum(a);%总人数
x=ones(1,n);
Q=zeros(1,n);%各专业初始名额数 L=sum(x);
while(L
for i=1:n
Q(i)=a(i)^2/(x(i)*(x(i)+1));%计算各单位的Q 值 end
[u,k]=max(Q);%求最大Q 值和相对应单位k x(k)=x(k)+1;
L=L+1;%已分配名额加1 end
fprintf('各专业分配名额:') for i=1:n
fprintf('%2d\n',x(i)); end
fprintf('\n');
结果:输入金额的总数123
p =123 各专业分配名额:28 26 25 19 25 输入名额的总数37
p =37 各专业分配名额: 8 8 8 6 7、 输入名额的总数6
p =6 各专业分配名额: 2 1 1 1 1 输入名额的总数8
p =8 各专业分配名额: 2 2 2 1 1 输入名额的总数15
p =15 各专业分配名额: 4 3 3 2 3 模型三的求解程序:
当输入p=130时运行结果:
Local optimal solution found at iteration: Objective value: 0.4261468E-03 Variable Value Reduced Cost P 130.0000 0.000000 S 522.0000 0.000000 A( 1) 149.0000 0.000000 A( 2) 177.0000 0.000000 A( 3) 196.0000 0.000000 X( 1) 37.00000 -0.1191685E-02 X( 2) 44.00000 0.000000 X( 3) 49.00000 0.3854397E-02 Row Slack or Surplus Dual Price 1 0.000000 0.5534826E-04
555 13
2 0.4261468E-03 -1.000000 3 0.000000 0.1342799E-02
当输入p=437时运行结果:
Local optimal solution found at iteration: 491
Objective value: 0.8734697E-05 Variable Value Reduced Cost P 437.0000 0.000000 S 522.0000 0.000000 A( 1) 149.0000 0.000000 A( 2) 177.0000 A( 3) 196.0000 X( 1) 125.0000 X( 2) 148.0000 X( 3) 164.0000 Row Slack or Surplus 1 0.000000 -0.2091388E-05 2 0.8734697E-05 3 0.000000 0.8952355E-05
0.000000 0.000000 0.5677926E-04 -0.1429148E-04 0.000000 Dual Price -1.000000 14