stv轮询方法
STVPoll的Python项目详细描述
stvpoll自述文件
用于执行stv轮询计算的库。 这个包是作为voteit项目的一部分创建的,专门用来处理更大的 用马库斯-舒尔茨的stv方法很难计算的选举。
典型的用法是初选或有许多胜利者的选举 从众多候选人中脱颖而出。结果是成比例的。
完全支持:
- 苏格兰STV
正在进行的工作:
- CPO机顶盒
示例
案例来源: https://en.wikipedia.org/wiki/Single_transferable_vote
fromstvpoll.scottish_stvimportScottishSTVexample_ballots=((('orange',),4),(('pear','orange',),2),(('chocolate','strawberry',),8),(('chocolate','bonbon',),4),(('strawberry',),1),(('bonbon',),1),)poll=ScottishSTV(seats=3,candidates=('orange','chocolate','pear','strawberry','bonbon'))for(candidates,bcount)inexample_ballots:poll.add_ballot(candidates,bcount)result=poll.calculate()
这将返回一个electionresult对象,该对象包含结果和一些有用的元数据。 selected属性包含当选的候选人。
左边的候选人有更高的偏好,因此: ['pear','orange']在'orange'之前的意思是'pear'。 数字是有多少这样的选票。
result.elected[<Candidate:chocolate>,<Candidate:orange>,<Candidate:strawberry>]
更改
0.2.0(偏差)
- 修正了在苏格兰电视台多选时决定先转移哪张选票的错误。[schyffel][robinharms]
- 苏格兰电视台:解决关系,使赢家总是在正确的排名顺序(极端情况)。[schyffel]
- 现在可以在python 3上工作了。[schyffel]
- 测试覆盖率100%。[schyffel]
0.1.4(2018-05-12)
-
修正了一轮不存在初选候选者的情况。[schyffel][robinharms]
0.1.3(2018-03-22)
- 排除空票,使其不影响配额。[schyffel]
0.1.2(2017-11-24)
- 修正了空选票的例外情况。[schyffel]
0.1.1(2017-11-24)
- 修复了随机化导致异常的情况。[schyffel]
0.1.0(2017-11-03)
- 初始版本