1.1python解決數學建模之席位分配問題
二:
1.比例分配 :公平而又簡單
2.Q值法:(摘自:數學模型-姜啟源-)
設兩方人數分別 p1 和 p2 ,佔有席位分別是 n1 和 n2 ,則兩方每個席位代表的人數分別為 p1/n1 和 p2/n2 .顯然僅當 p1/n1 = p2/n2 時席位的分配才是公平的.但是因為人數和席 位都是整數,所以通常 p1/n1 ≠ p2/n2 ,這時席位分配不公平,並且 pi ni (i= 1, 2)數值較大的一方吃虧,或者說對這一方不公平.
不妨假設 p1/n1 > p2/n2 ,不公平程度可用數值 p1/n1 - p2/n2 衡量.如設 p1 = 120, p2 = 100, n1 = n2 = 10,則 p1/n1 - p2/n2 = 12 - 10 = 2,它衡量的是不 公平的絕對程度,常常無法區分兩種程度明顯不同的不公平情況.例如上述雙方 人數增加為 p1 = 1 020 和 p2 = 1 000,而席位 n1 , n2 不變時, p1/n1 - p2/n2 = 102 - 100 = 2,即絕對不公平程度不變.但是常識告訴我們,後面這種情況的不公 平程度比起前面來已經大為改善了.
為了改進上述絕對標準,自然想到用相對標準.仍記 p1 , p2 為 A, B 兩方的 固定人數, n1 , n2 為兩方分配的席位(可變),若 p1/n1 > p2/n2 ,則定義
rA ( n1 , n2 ) =(p1 /n1 - p2 /n2)/( p2 /n2) (1) 為對 A 的相對不公平度.
若 p2 n2 > p1 n1 ,則定義
rB ( n1 , n2 ) =(p2 /n2 - p1/ n1 )/(p1 n1) (2) 為對 B 的相對不公平度
建立了衡量分配不公平程度的數量指標 rA ,rB 後,制定席位分配方案的原 則是使它們儘可能小. 確定分配方案 假設 A, B 兩方已分別佔有 n1 和 n2 席,利用相對不公平 度 rA 和 rB 討論,當總席位增加 1 席時,應該分配給 A 還是 B. 不失一般性可設 p1 /n1 > p2 /n2 ,即對 A 不公平.當再分配 1 個席位時,關 於 pi ni (i= 1,2)的不等式可能有以下 3 種情況: 1 . p1/ ( n1 + 1) > p2 /n2 ,這說明即使 A 方增加 1 席,仍然對 A 不公平,所以 這一席顯然應分給 A 方. 2 . p1 /(n1 + 1) < p2 /n2 ,說明當 A 方增加 1 席時將變為對 B 不公平,參照 (2)式可計算出對 B 的相對不公平度為
rA ( n1 , n2 + 1) =p1 (/ n2 + 1) (p2/ n1) - 1 (4) (不可能出現 p1 /n1 < p2 /( n2 + 1)的情況.為什麼 ?) 因為公平分配席位的原則是使得相對不公平度儘可能地小,所以如果 rB ( n1 + 1, n2 ) < rA ( n1 , n2 + 1) (5) 則這 1 席應分給 A 方;反之則分給 B 方.根據(3),(4)兩式,(5)式等價於 (p2 ^2) /(n2 (n2 + 1) )< (p1^2 )/ n1 ( n1 + 1) (6) 還不難證明,上述第 1 種情況的 p1 /( n1 + 1) > p2 /n2 也會導致(6)式.於是我們 的結論是:當(6)式成立時增加的 1 席應分給 A 方,反之則分給 B 方.或者,若記 Qi =( p i^2)/ (ni( ni + 1)),i= 1,2,則增加的 1 席應分給 Q 值較大的一方. 上述方法可以推廣到有 m 方分配席位的情況.設第 i 方人數為 pi,已佔有 ni 個席位,i= 1,2,⋯, m.當總席位增加 1 席時,計算Qi =(pi^2)/(ni( ni + 1)), i= 1,2,⋯, m (7)應將這一席分給 Q 值最大的一方.這種席位分配方法稱 Q 值法.
3.d’ Hondt 方法:
將各組人數用正整數 n = 1, 2, 3,⋯相除,將所得商數從大到小取前 n個(n 為席位數)