席位分配问题的Dhondt模型和相对尾数模型.docx
- 文档编号:29424983
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:16
- 大小:19.82KB
席位分配问题的Dhondt模型和相对尾数模型.docx
《席位分配问题的Dhondt模型和相对尾数模型.docx》由会员分享,可在线阅读,更多相关《席位分配问题的Dhondt模型和相对尾数模型.docx(16页珍藏版)》请在冰豆网上搜索。
席位分配问题的Dhondt模型和相对尾数模型
席位分配问题的D’hondt模型和相对尾数模型
席位分配问题的D’hondt模型和相对尾数模型摘要:
讨论公平席位分配的模型已有很多。
本文首先用比例加惯例法、Q值法、D’hondt法对问题中名额进行了分配,再对D’hondt法的合理性进行了分析,并在Q值法对绝对尾数(绝对不公平度)的处理方式基础上,提出了相对尾数模型,并讨论了其满足Young公理的1,3,4条;在模型求解上,全部由MATLAB程序来实现名额分配。
关键词:
相对尾数Balinsky&Young不可能定理MATLAB
正文
1问题复述
公平的席位分配问题是一个非常有趣而重要的问题,它在政治学、管理学和对策论等领域具有广泛的应用价值。
处理这个问题的最早的方法是Hamilton法,即比例加惯例法;后来出现了Q值法;1974年M.L.Balinski和H.P.Young引入了席位分配问题的公理体系研究方法,并于1982年证明了同时满足五个公理的席位分配方法是不存在的;因此,我们只能根据实际建立在一定公平准则下成立并尽量多的满足Young公理的算法。
这里,我们需要理解并运用比例加惯例法、Q值法、D’hondt法对宿舍委员会名额进行分配,继而提出更优的公平分配席位的方法。
2模型假设
2.1合理假设
2.1.1比例加惯例法、Q值法等分配模型均为已知;
2.1.2各个宿舍相互独立互不影响,人数保持不变;
2.1.3委员分配以各宿舍人数为唯一权重。
2.2符号约定
符号意义
Q第个宿舍的Q值ii
n第个宿舍的人数ii
m第个宿舍分配的名额ii
n总人数
m总名额数
p第个宿舍的理想分配名额ii
个宿舍的理想分配名额总席位增加一个时第ipi
niq第个宿舍的分配比例,即miin
s第个宿舍的绝对尾数值ii
r第个宿舍的相对尾数值ii
个宿舍的相对尾数值总席位增加一席时第iri
t按比例分配后剩余名额
3模型的建立与求解
3.1按比例加惯例模型分配
根据比例加惯例分配模型的原理,编写MATLAB程序实现(附录-程序1,2,3,附录-输入及运行结果1),结果如表所示:
表1(比例加惯例法分配结果):
10个席位的分配15个席位的分配
宿舍学生人数比例分配惯例分配比例分配惯例分配
的席位的结果的席位的结果
A2352334
B3333345
C4324466
总数10009101315
3.2按Q值法模型分配
2ni首先用比例分配法对名额进行初步分配,再根据表达式i,A,B,CQ,im(m,1)ii对剩下的名额进行分配,编写MATLAB程序实现求解(附录-程序4,5,附录-输入及运行结果2):
表2(Q值法分配结果):
10个席位的分配15个席位的分配宿舍学生人数比例分配最终分配比例分配最终分Q值Q值名额名额名额配名额
A23529204.17234602.084
B33339240.75345544.455
C43249331.2564443.436总数10009101315
3.3D’hondt模型
3.3.1模型建立
设,分别表示宿舍总人数和总分配席位数,()表示各宿舍人数,令nnmi,1,2,3i
niaa,(),则得到一个数列,将该数列按递减顺序重新排列,得ij,,1,2,3,1,2,...,,ijijj
()k()k()k()kaaa到,其中表示中第大的项。
取中前项,则相应得到amk,,,,,,ijijijij
()k(),m,,m即为按p,1,2,3mmaip,,(k=1,2,...,m)中的元素的个数,,,,123pij
D’hondt模型分配的结果。
3.3.2按D’hondt模型分配
根据建立的D’hondt模型,编写MATLAB程序求出结果(附件-程序6,附录-输入及运
行结果3):
表3(D’hondt模型分配结果):
宿舍人数10个名额的分配15个名额的分配
A23523
B33335
C43257
总数10001015
3.4相对尾数模型
3.4.1模型准备
讨论一般情况:
个宿舍人数分别为n,,总人数为,待分配nnn,,,...kik,1,2,...,i1k
k的席位为个,理想化的分配结果是(),满足,记pmp,mik,1,2,...,,iii,1
ni()。
显然,若q全为整数,应有q=p(),当q不全为整数ik,1,2,...,ik,1,2,...,qm,iiiiin
时,需要确定同时满足下面公理的分配方案。
pqq公理一:
(),即取或之一,其中qpq,,ik,1,2,...,,,,,,,,,iiiiii,,,,
qqqqq=,=q,1,表示的整数部分。
,,,,,,,,,iiiiii,,
公理二:
,即总席位增加时,各pmnnnpmnnn(,,,...,)(1,,,...,),,ik,1,2,...,ikik1212
宿舍的席位数不应该减少。
公理一显然满足Balinsky&Young不可能定理(见附录)中的公理4(公平分摊性),公理
nn,,ii二满足其的公理1(人口单调性)和公理3(名额单调性)。
令,smmqq,,,,,,iii,,,nn,,,
si称其为对第个宿舍的绝对尾数值。
令,称其为对第个宿舍的相对尾数值。
ii,riq,,i,
3.4.2模型建立与求解
r由于人数都是整数,为使分配趋于公平,需所有的越小越好,所以趋于公平的分配方案i
rr应该是最大的达到最小,即所有的达到最小。
ii
qqnn,nnn,,为方便起见,首先考虑只有两个宿舍的情形,即,,且,和k,2121212
,
pr不全是整数(实际上,他们同为整数或小数)。
记,为总席位增加一席时的分配结果和相ii
对尾数。
给出定理:
定理:
以下分配方案满足公理一,二,
nn,,,,121)若,且,则取,,即按比例加惯例rr,ss,pm1,,pm,121212,,,,nn,,,,,,
法分配;
nn,,,,122)若,则取,;rr,pm1,,pm,1212,,,,nn,,,,,,
nn,,,,123)若,则取,。
rr,pm1,pm,,1212,,,,nn,,,,,,
定理证明见附录。
按照定理,对三个宿舍的情形进行讨论。
设,,全部为零(实际上,如果有一个为零,rrr123即是按两个宿舍分配),可以做以下分配:
1)当时,按比例分配取整后,剩余的席位分配给绝对尾数较大的宿舍,即按rrr,,123
比例加惯例法分配;
2)当时,按比例分配后,若剩余一个席位,则分配给第一个宿舍,若剩余两rrr,,123
个席位,则分配一席给第一个宿舍,另外一席分配给第二三个宿舍中绝对尾数值较大者;
3)当时,按比例分配后,若剩余一个席位分配给第一二个宿舍中绝对尾数rrr,,123
值较大者,若剩余两个席位,则分配给第一二宿舍各一席;
4)当时,按比例分配后,若剩余一个席位,则分配给第一个宿舍,若剩余两rrr,,123
个席位,则分配给第二个宿舍。
一般地,对个宿舍,设r,r,„,r不全为零,且,则当rr,时,rrr,,,...k12n12ktt,1
kn,,i将剩余的个席位分配给第一至第个宿舍各一席,当trrrr,,,tmm,,,tttt,,,112,,n,,i,1,
kn,,iss时,个席位分配给第一至第个宿舍及和较大的宿舍各一席,t,1tmm,,,tt,1,,n,,i,1,
kn,,i当()时,个席位分配给第一至第rrrr,,,t,11,,,skttmm,,,tttts,,,11,,n,,i,1,个宿舍及s,s,„中较大的宿舍各一席,当(),srrr,,1,',,,sskttt,1ts,tststs,,,,1'
kn,,iss个席位分配给第一至第个宿舍及,,„s中个较大的所sts,tmm,,,tt,1ts,,,n,,i,1,
对应的宿舍各一席。
最后,编写出尾数法的MATLAB程序,实现3本题中的名额分配(附录-程序7,附录-
输入及运行结果4)。
表4(尾数法分配结果):
宿舍人数10个名额的分配15个名额的分配
A23534
B33335
C43246
总数10001015
4模型检验及结果分析
席位分配的尾数模型满足Young公理的1、3、4条,是以严格证明了的定理形式给出。
对按上述四种分配模型分配的结果列表比较。
表5(各方法分配结果的比较1):
20个席位的分配21个席位的分配学生宿舍人数BQDRBQDR
A1031011111011111110
B6366667677
C3443343434总数2002020202021212121
表6(各方法分配结果的比较2):
10个席位的分配15个席位的分配学生宿舍人数BQDRBQDR
A23532234434
B33333335555
C43245546676总数10001010101015151515
表格中,B表示比例加惯例法,Q表示Q值法,D表示D'hondt法,R表示相对尾数法。
“比例加惯例”法用各团体人数占团体总人数的比例乘以总席位数,取其整数位为第一次分配,再次分配时,则按小数位的大小分,大的先分配,直到席位分完。
从表4看到,当总席位数增加时,C宿舍分得的席位却减少;
Q值法利用相对不公平度建立了衡量不公平程度的数量指标,进而将席位分给最不公平的一方。
D’hondt方法将各团体的人数用正整数相除,其商数组成一个表,将数从大到小取,直到取得的商数的个数等于总席位数,统计出每个团体被取到的商数的个数,即为该团体分得的席位数。
5优缺点分析及改进
从对模型的检验与分析可以看到,上面讨论的三个模型都有自身的不足:
比例加惯例法满足公理一,却不满足公理二;Q值法满足公理二但不满足公理一;D’hondt法也不能解决对每个宿舍成员公平的大小问题;尾数法虽然满足公理一和二,但由于两个公理本身只满足Young公理体系的部分,也不尽完美。
优点:
尾数模型打破Q值法的对绝对尾数的比较方法,以相对尾数来讨论,使得模型满足了Young公理体系中更多的公理,虽不尽完善,但相比之前的四种方法是很大的改进。
并
且,这种对已有方法改进的思想很有启发意义。
改进:
本文中只给出了尾数法对3个宿舍的名额分配程序,对不定数量宿舍的分配没能程序实现,是可以改进的。
参考文献
[1]姜启源等数学建模[M](第三版)北京高等教育出版社,2004.24—27.[2]岳林关于Q值法的一种新定义[J].系统工程.1995,13(4):
70—73.[3]高尚席位分配的最大熵法[J].数学的实践与认识,1996,26
(2):
73—75.[4]吴承祯,洪伟资源公平分配的遗传算法研究[J].运筹与管理,1998,7
(2):
23—28.
2[5]吴黎军名额分配问题中的拟合法[J].生物数学报,1995,10(3):
77—81.,
[6]严余松席位分配问题的0-1规划模型[J].系统工程,1996,14(5):
51—53.[7]林建良席位分配的最小极差法[J].华南理工大学学报,2001,29
(1):
21—23.[8]杜跃鹏杜太生席位分配的最大概率法[J].数学的实践与认识,2003,33(7):
15—19.[9]王秀莲席位分配问题的相对尾数法[J].数学的实践与认识,2007,37(9):
81—85.
附录
Balinsky&Young不可能定理
公理1(份额单调性)一个州人口的增加不会导致它失去席位。
公理2(无偏性)在整个时间上平均,每个州应得到它自己应分摊的份额。
公理3(席位单调性)总席位增加不会导致某个州名额减少。
公理4(公平分摊性)任何州的席位数都不会偏离其比例的份额数。
公理5(接近份额性)没有从一个州到另一个州的名额转让会使得这两个州都接近它们应得的份额。
程序:
1函数bili.m
function[me,m]=bili(n,N,M)me=n.*(M/N);
m=floor(me);
i=length(n);
fprintf('按比例分配的结果:
\n');
forj=1:
i
fprintf('第%g个宿舍的人数为:
%g\n',j,m(j));end
2函数guanli.m
functionguanli(e,m,M)
[maxe,j]=max(e);
fprintf('给第%g个宿舍再分一个名额',j);
m(j)=m(j)+1;
e(j)=0;
ifsum(m)==M
fprintf('\n\n\n按比例加惯例法分配的结果是:
\n');
fori=1:
length(m)
fprintf('第%g个宿舍名额为:
%g\n',i,m(i));
end
else
guanli(e,m,M);
end
3函数biliguanli.m
functionbiliguanli()n=input('各宿舍人数输入格式[number]:
');N=sum(n);
M=input('输入总席位数:
');
[me,m]=bili(n,N,M);
e=me-m;
ife~=0
guanli(e,m,M);
else
fprintf('\n\n\n按比例加惯例法分配的结果是:
\n');
fori=1:
length(m)
fprintf('第%g个宿舍名额为:
%g\n',i,m(i));
end
end
4函数qzhi.m
functionqzhi(q,m,M)[maxq,j]=max(q);
fprintf('给第%g个宿舍再分一个名额\n',j);m(j)=m(j)+1;
q(j)=0;
ifsum(m)==M
fprintf('\n\n\n按Q值法分配的结果是:
\n');
fori=1:
length(m)
fprintf('第%g个宿舍名额为:
%g\n',i,m(i));
end
else
qzhi(q,m,M);
end
5函数Qzhifa.m
functionQzhifa()
n=input('输入各宿舍人数格式为:
[number]:
');
N=sum(n);
M=input('输入总席位数:
');
[me,m]=bili(n,N,M);
fprintf('各宿舍的Q值为:
\n')
fori=1:
length(n)
q(i)=n(i)^2/(m(i)*(m(i)+1));
fprintf('%g\n',q(i));end
fprintf('按Q值分配的结果:
\n');ifme~=m
qzhi(q,m,M);
else
fprintf('\n\n\n按Q值法分配的结果是:
\n');
fori=1:
length(m)
fprintf('第%g个宿舍名额为:
%g\n',i,m(i));
end
end
6函数dhondt.m
functiondhondt()
n=input('各宿舍人数输入格式[number]:
');
N=sum(n);
M=input('输入总席位数:
');
nm=0;
k=length(n);
m(k)=0;
s=0;
fori=1:
M
forj=1:
k
s=(i-1)*k+j;
nm(s)=n(j)/i;
end
end
fprintf('按D''hondt分配顺序为:
\n\n')fori=1:
M
[maxd,j]=max(nm);
l=mod(j,k);
ifl==0
l=k;
end
fprintf('分给第%g个宿舍一个名额\n',l);
m(l)=m(l)+1;
nm(j)=0;
end
fprintf('分配结果:
\n');
fori=1:
k
fprintf('第%g个宿舍%g个名额\n',i,m(i));
end
7函数weishufa3.m
functionweishufa3()n=input('输入3个宿舍人数输入格式[number]:
');
N=sum(n);
M=input('输入总席位数:
');
[ms,m]=bili(n,N,M);s=ms-m;
r=s./m;
ifs~=0
fori=1:
3
[maxr,k]=max(r);
R(i,:
)=[r(k),s(k),k];
r(k)=0;
end
end
t=M-sum(m);
fori=1:
t
j=R(i,3);
m(j)=m(j)+1;end
fprintf('\n\n\n按相对尾数法分配的结果是:
\n');
fori=1:
3
fprintf('第%g个宿舍名额为:
%g\n',i,m(i));
end
输入及运行结果:
1表1结果
>>biliguanli
各宿舍人数输入格式[number]:
[235333432]
输入总席位数:
10
按比例分配的结果:
第1个宿舍的人数为:
2
第2个宿舍的人数为:
3
第3个宿舍的人数为:
4
给第1个宿舍再分一个名额
按比例加惯例法分配的结果是:
第1个宿舍名额为:
3
第2个宿舍名额为:
3
第3个宿舍名额为:
4
>>biliguanli
各宿舍人数输入格式[number]:
[235333432]
输入总席位数:
15
按比例分配的结果:
第1个宿舍的人数为:
3第2个宿舍的人数为:
4第3个宿舍的人数为:
6给第2个宿舍再分一个名额给第1个宿舍再分一个名额
按比例加惯例法分配的结果是:
第1个宿舍名额为:
4第2个宿舍名额为:
5第3个宿舍名额为:
6
2表2结果
>>Qzhifa
输入各宿舍人数格式为:
[number]:
[235333432]
输入总席位数:
10
按比例分配的结果:
第1个宿舍的人数为:
2第2个宿舍的人数为:
3第3个宿舍的人数为:
4各宿舍的Q值为:
9204.17
9240.75
9331.2
按Q值分配的结果:
给第3个宿舍再分一个名额
按Q值法分配的结果是:
第1个宿舍名额为:
2第2个宿舍名额为:
3第3个宿舍名额为:
5>>Qzhifa
输入各宿舍人数格式为:
[number]:
[235333432]
输入总席位数:
15
按比例分配的结果:
第1个宿舍的人数为:
3第2个宿舍的人数为:
4第3个宿舍的人数为:
6各宿舍的Q值为:
4602.08
5544.45
4443.43
按Q值分配的结果:
给第2个宿舍再分一个名额给第1个宿舍再分一个名额
按Q值法分配的结果是:
第1个宿舍名额为:
4第2个宿舍名额为:
5第3个宿舍名额为:
6
3表3结果
>>dhondt
各宿舍人数输入格式[number]:
[235333432]
输入总席位数:
10按D'hondt分配顺序为:
分给第3个宿舍一个名额分给第2个宿舍一个名额分给第1个宿舍一个名额分给第3个宿舍一个名额分给第2个宿舍一个名额分给第3个宿舍一个名额分给第1个宿舍一个名额分给第2个宿舍一个名额分给第3个宿舍一个名额分给第3个宿舍一个名额分配结果:
第1个宿舍2个名额第2个宿舍3个名额第3个宿舍5个名额>>dhondt
各宿舍人数输入格式[number]:
[235333432]
输入总席位数:
15按D'hondt分配顺序为:
分给第3个宿舍一个名额分给第2个宿舍一个名额分给第1个宿舍一个名额分给第3个宿舍一个名额
分给第2个宿舍一个名额分给第3个宿舍一个名额分给第1个宿舍一个名额分给第2个宿舍一个名额分给第3个宿舍一个名额分给第3个宿舍一个名额分给第2个宿舍一个名额分给第1个宿舍一个名额分给第3个宿舍一个名额分给第2个宿舍一个名额分给第3个宿舍一个名额分配结果:
第1个宿舍3个名额
第2个宿舍5个名额
第3个宿舍7个名额
4表4结果:
>>weishufa3输入3个宿舍人数输入格式[number]:
[1036334]
输入总席位数:
20
按比例分配的结果:
第1个宿舍的人数为:
10第2个宿舍的人数为:
6第3个宿舍的人数为:
3
按相对尾数法分配的结果是:
第1个宿舍名额为:
10第2个宿舍名额为:
6第3个宿舍名额为:
4>>weishufa3输入3个宿舍人数输入格式[number]:
[1036334]
输入总席位数:
21
按比例分配的结果:
第1个宿舍的人数为:
10第2个宿舍的人数为:
6第3个宿舍的人数为:
3
按相对尾数法分配的结果是:
第1个宿舍名额为:
10
第2个宿舍名额为:
7第3个宿舍名额为:
4>>weishufa3输入3个宿舍人数输入格式[number]:
[235333432]
输入总席位数:
10
按比例分配的结果:
第1个宿舍的人数为:
2第2个宿舍的人数为:
3第3个宿舍的人数为:
4
按相对尾数法分配的结果是:
第1个宿舍名额为:
3第2个宿舍名额为:
3第3个宿舍名额为:
4>>weishufa3输入3个宿舍人数输入格式[number]:
[235333432]
输入总席位数:
15
按比例分配的结果:
第1个宿舍的人数为:
3第2个宿舍的人数为:
4第3个宿舍的人数为:
6
按相对尾数法分配的结果是:
第1个宿舍名额为:
4第2个宿舍名额为:
5第3个宿舍名额为:
6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 席位 分配 问题 Dhondt 模型 相对 尾数