问题标签 [openstv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2557 浏览

c# - 如何使用 C# 为 OpenSTV 选举生成 .BLT 文件?

在看到关于版主选举结果的最新 SO 博客文章后,我刚刚下载了 OpenSTV。Jeff 写道,他使用 OpenSTV 进行选举,并提供了一个包含投票数据的选票文件 (.blt)。

我的问题是:如何在 C# 中创建 .BLT 文件?

以下是我认为投票页面做到的两种方式:

  • 投票页面将每张选票添加到 SQL 数据库中,然后在投票结束后以某种方式将这些选票导出到 .BLT 文件中。怎么样?我怎样才能做到这一点?
  • 或者,投票页面创建文件,然后在每次有人投票时添加到该文件。我确定这不是投票页面的工作方式,因为它完全不可扩展,但我怎么能在 C# 中做到这一点?

我有兴趣了解这两种可能性如何工作以及如何在 C# 中做到这一点。提前致谢。哦,我希望杰夫看到这个问题,因为他可能会有一个很好的答案......

0 投票
1 回答
306 浏览

format - 将 rank-per-candidate 格式转换为 OpenSTV BLT 格式

我最近使用问卷收集了一组关于各种软件组件重要性的意见。考虑到某种形式的 Condorcet 投票方法将是获得总排名的最佳方式,我选择使用 OpenSTV 对其进行分析。


我的数据采用表格格式,以空格分隔,看起来或多或少类似于:

在这种格式中,数字表示排名,顺序表示候选。 每个“候选人”都有一个从 1 到 7 的等级(必需),其中 1 表示最重要,7 表示最不重要。不允许重复。

这种格式让我印象深刻,因为它是表示输出的最自然的方式,是选票格式的直接表示。


OpenSTV/BLT 格式使用不同的方法来表示相同的信息,概念上如下:

实际的数字文件格式使用候选的(基于 1 的)索引,而不是标签,因此更像:

在这种格式中,数字表示候选,序列顺序表示排名。实际的、真实的 BLT 格式还包括一个前导权重和一个后面的零,以指示每张选票的结束,对此我不太关心。


我的问题是,从第一种格式转换为(数字)第二种格式的最优雅的方法是什么?

0 投票
2 回答
3125 浏览

c# - 从 C# 调用 Python 应用程序/脚本

我正在构建一个 ASP.NET MVC (C#) 站点,我想在其中实现STV ( Single Transferable Vote ) 投票。我以前曾将 OpenSTV 用于投票场景,并取得了巨大的成功,但我从未以编程方式使用它。

OpenSTV Google Code 项目提供了一个 Python 脚本,允许从其他应用程序使用 OpenSTV:

有没有办法让我从我的 C# ASP.NET MVC 站点进行这样的 Python 调用?

如果是这样,怎么做?

提前致谢!

0 投票
2 回答
468 浏览

php - 计票脚本未正确加起来

我正在尝试计算每个选举候选人(特别是 Stack Overflow 2014 版主选举)的第一、第二和第三选择票数。我下载了数据文件并打开了它。根据我对文件格式的基本解释,我编写了一个 PHP 脚本来计算选票:

当我在命令行运行它时,它会打印这个表:

我的问题是当我在同一个文件上运行它时,我无法让它与 OpenSTV 所说的相匹配。“第一选择的数量”都略有不同:

我究竟做错了什么?或者 OpenSTV 有什么不同?


更新:我的脚本破坏了,因为它没有考虑到一些用第二或第三选择编码的行,而没有设置先前的选择。我猜这是由于选举中的用户有时会取消选择先前的选择造成的:在选择了两个候选人之后,取消选择第一选择的候选人应该将唯一剩余的选定候选人视为用户的首选。

固定版本: