公平席位分配问题拓展

数模课作业2

Posted by Algebra-FUN on March 1, 2020

公平的席位分配

一. 提出问题

席位分配在具体实践时常有不公平现象,怎样分配才是相对公平的?应按什么分配标准?

二. 符号释义

符号 释义
\(i\) 自然数列
\(p_i\) 第\(i\)方的人数
\(n_i\) 第\(i\)方的席位数
\(r\) 相对不公平度

三. 建立模型

  人数 席位
A方 \(p_1\) \(n_1\)
B方 \(p_2\) \(n_2\)

模型假设

  • 席位分配以人数作为唯一影响因素进行分配

  • 每一个个体对于席位分配的影响是完全等同的,即不存在群体之间的加权分配的情况

模型的建立

1. 绝对不公平度定义

想要进行公平的分配,首先本文需要定义衡量公平的指标,在本文引入经典的绝对不公平度的定义:

若\(p_1/n_1>p_2/n_2\),称为\(p_1/n_1>p_2/n_2\)对A的不公平度

2. 相对不公平度定义

鉴于现实生活中公平往往是相对的,因而绝对公平度作为分配依据会因为数据的容量改变而产生偏颇,因此本文引入相对不公平度的定义。

选取主要分数法的定义:

当\(n_j/p_j>n_i/p_i\)时,称为对\(i\)的\(r_i(n_i,n_j)=\frac{n_j}{p_j}-\frac{n_i}{p_i}\)相对不公平度。

3. 分配原则

将席位逐一分配给各方,分配方式为将每个席位分给相对不确定度最大的一方。

4. 分配方法

考虑\(r_A(n_1,n_2+1)\)与\(r_B(n_1+1,n_2)\)

当\(r_A(n_1,n_2+1)<r_B(n_1+1,n_2)\)时, \(\frac{n_2+1}{p_2}-\frac{n_1}{p_1}<\frac{n_1+1}{p_1}-\frac{n_2}{p_2}\)

\[\frac{2 n_2+1}{p_2}<\frac{2 n_1+1}{p_1}\] \[\frac{p_1}{n_1+0.5}<\frac{p_2}{n_2+0.5}\]

此时应分配给\(B\)

同理,当\(r_A(n_1,n_2+1)>r_B(n_1+1,n_2)\)时, \(\frac{p_1}{n_1+0.5}>\frac{p_2}{n_2+0.5}\) 此时应分配给\(A\)

5. Q值的定义

鉴于上文推导,为了方便比较,本文定义\(Q\)值: \(Q_k=\frac{p_k}{n_k+0.5}\) \(k=1,2\)

\(Q_k\)大者得到席位。

推广到\(m\)方分配席位,计算\(Q_k=\frac{p_k}{n_k+0.5},k=1,2,3\dots,m\),该席位分给\(Q\)值大的一方。

四. 案例应用举例

任意取8个被分配方,人数分别为

被分配方 1 2 3 4 5 6 7 8
人数 42 45 33 12 35 80 67 34

将20个席位按照”主要除数法”公平分配给这个8个被分配方

下面我们写一个程序来模拟这个过程:

from numpy import argmax

# 总席位数
s = 20
# 各方人数情况
ps = [42,45,33,12,35,80,67,34]
# 初始化席位分配
ns = [0 for _ in ps]

# 定义Q函数
def Q(p,n):
    return p/(n+.5)

print('下面将{}个席位分配给{}个方面'.format(s,len(ps)))
print('各方人数情况:',ps)
print('-----------------------------------------------')

for r in range(s):
    print('现在进行第{}个席位的分配'.format(r+1))
    qs = [Q(*x) for x in zip(ps,ns)]
    print('Q值:',qs)
    i = argmax(qs)
    print('第{i}方的Q值最大,将席位分给第{i}方'.format(i=i+1))
    ns[i] += 1
    print('目前各方的席位情况:',ns)
    print('-----------------------------------------------')
    
'''
Distribution.py
用于公平指标分配问题的模拟脚本
Copyright 2020 by Algebra-FUN(樊一飞)
ALL RIGHTS RESERVED.
'''

程序模拟的输出结果:

下面将20个席位分配给8个方面
各方人数情况: [42, 45, 33, 12, 35, 80, 67, 34]
-----------------------------------------------
现在进行第1个席位的分配
Q值 [84.0, 90.0, 66.0, 24.0, 70.0, 160.0, 134.0, 68.0]
第6方的Q值最大将席位分给第6方
目前各方的席位情况 [0, 0, 0, 0, 0, 1, 0, 0]
-----------------------------------------------
现在进行第2个席位的分配
Q值 [84.0, 90.0, 66.0, 24.0, 70.0, 53.333333333333336, 134.0, 68.0]
第7方的Q值最大将席位分给第7方
目前各方的席位情况 [0, 0, 0, 0, 0, 1, 1, 0]
-----------------------------------------------
现在进行第3个席位的分配
Q值 [84.0, 90.0, 66.0, 24.0, 70.0, 53.333333333333336, 44.666666666666664, 68.0]
第2方的Q值最大将席位分给第2方
目前各方的席位情况 [0, 1, 0, 0, 0, 1, 1, 0]
-----------------------------------------------
现在进行第4个席位的分配
Q值 [84.0, 30.0, 66.0, 24.0, 70.0, 53.333333333333336, 44.666666666666664, 68.0]
第1方的Q值最大将席位分给第1方
目前各方的席位情况 [1, 1, 0, 0, 0, 1, 1, 0]
-----------------------------------------------
现在进行第5个席位的分配
Q值 [28.0, 30.0, 66.0, 24.0, 70.0, 53.333333333333336, 44.666666666666664, 68.0]
第5方的Q值最大将席位分给第5方
目前各方的席位情况 [1, 1, 0, 0, 1, 1, 1, 0]
-----------------------------------------------
现在进行第6个席位的分配
Q值 [28.0, 30.0, 66.0, 24.0, 23.333333333333332, 53.333333333333336, 44.666666666666664, 68.0]
第8方的Q值最大将席位分给第8方
目前各方的席位情况 [1, 1, 0, 0, 1, 1, 1, 1]
-----------------------------------------------
现在进行第7个席位的分配
Q值 [28.0, 30.0, 66.0, 24.0, 23.333333333333332, 53.333333333333336, 44.666666666666664, 22.666666666666668]
第3方的Q值最大将席位分给第3方
目前各方的席位情况 [1, 1, 1, 0, 1, 1, 1, 1]
-----------------------------------------------
现在进行第8个席位的分配
Q值 [28.0, 30.0, 22.0, 24.0, 23.333333333333332, 53.333333333333336, 44.666666666666664, 22.666666666666668]
第6方的Q值最大将席位分给第6方
目前各方的席位情况 [1, 1, 1, 0, 1, 2, 1, 1]
-----------------------------------------------
现在进行第9个席位的分配
Q值 [28.0, 30.0, 22.0, 24.0, 23.333333333333332, 32.0, 44.666666666666664, 22.666666666666668]
第7方的Q值最大将席位分给第7方
目前各方的席位情况 [1, 1, 1, 0, 1, 2, 2, 1]
-----------------------------------------------
现在进行第10个席位的分配
Q值 [28.0, 30.0, 22.0, 24.0, 23.333333333333332, 32.0, 26.8, 22.666666666666668]
第6方的Q值最大将席位分给第6方
目前各方的席位情况 [1, 1, 1, 0, 1, 3, 2, 1]
-----------------------------------------------
现在进行第11个席位的分配
Q值 [28.0, 30.0, 22.0, 24.0, 23.333333333333332, 22.857142857142858, 26.8, 22.666666666666668]
第2方的Q值最大将席位分给第2方
目前各方的席位情况 [1, 2, 1, 0, 1, 3, 2, 1]
-----------------------------------------------
现在进行第12个席位的分配
Q值 [28.0, 18.0, 22.0, 24.0, 23.333333333333332, 22.857142857142858, 26.8, 22.666666666666668]
第1方的Q值最大将席位分给第1方
目前各方的席位情况 [2, 2, 1, 0, 1, 3, 2, 1]
-----------------------------------------------
现在进行第13个席位的分配
Q值 [16.8, 18.0, 22.0, 24.0, 23.333333333333332, 22.857142857142858, 26.8, 22.666666666666668]
第7方的Q值最大将席位分给第7方
目前各方的席位情况 [2, 2, 1, 0, 1, 3, 3, 1]
-----------------------------------------------
现在进行第14个席位的分配
Q值 [16.8, 18.0, 22.0, 24.0, 23.333333333333332, 22.857142857142858, 19.142857142857142, 22.666666666666668]
第4方的Q值最大将席位分给第4方
目前各方的席位情况 [2, 2, 1, 1, 1, 3, 3, 1]
-----------------------------------------------
现在进行第15个席位的分配
Q值 [16.8, 18.0, 22.0, 8.0, 23.333333333333332, 22.857142857142858, 19.142857142857142, 22.666666666666668]
第5方的Q值最大将席位分给第5方
目前各方的席位情况 [2, 2, 1, 1, 2, 3, 3, 1]
-----------------------------------------------
现在进行第16个席位的分配
Q值 [16.8, 18.0, 22.0, 8.0, 14.0, 22.857142857142858, 19.142857142857142, 22.666666666666668]
第6方的Q值最大将席位分给第6方
目前各方的席位情况 [2, 2, 1, 1, 2, 4, 3, 1]
-----------------------------------------------
现在进行第17个席位的分配
Q值 [16.8, 18.0, 22.0, 8.0, 14.0, 17.77777777777778, 19.142857142857142, 22.666666666666668]
第8方的Q值最大将席位分给第8方
目前各方的席位情况 [2, 2, 1, 1, 2, 4, 3, 2]
-----------------------------------------------
现在进行第18个席位的分配
Q值 [16.8, 18.0, 22.0, 8.0, 14.0, 17.77777777777778, 19.142857142857142, 13.6]
第3方的Q值最大将席位分给第3方
目前各方的席位情况 [2, 2, 2, 1, 2, 4, 3, 2]
-----------------------------------------------
现在进行第19个席位的分配
Q值 [16.8, 18.0, 13.2, 8.0, 14.0, 17.77777777777778, 19.142857142857142, 13.6]
第7方的Q值最大将席位分给第7方
目前各方的席位情况 [2, 2, 2, 1, 2, 4, 4, 2]
-----------------------------------------------
现在进行第20个席位的分配
Q值 [16.8, 18.0, 13.2, 8.0, 14.0, 17.77777777777778, 14.88888888888889, 13.6]
第2方的Q值最大将席位分给第2方
目前各方的席位情况 [2, 3, 2, 1, 2, 4, 4, 2]
-----------------------------------------------

最终分配结果:

被分配方 1 2 3 4 5 6 7 8
人数 42 45 33 12 35 80 67 34
分配到的席位 2 3 2 1 2 4 4 2

因为分配过程的公平而实现分配结果的公平,这也是除法分配法严谨过程的体现。