问题标签 [tournament]
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.
algorithm - 开放式锦标赛配对算法
我正在为虚拟城市商业游戏 ( Urbien.com ) 开发锦标赛模型,并希望获得一些算法建议。这是场景和当前的“基本”实现:
设想
- 参赛作品以决斗风格配对,就像在原始的 Facemash 或 Pixoto.com 上一样。
- “玩家”是一名裁判,他得到一系列决斗对,并且必须为每一对选择一个获胜者。
- 比赛永无止境,人们可以随时提交新的参赛作品,并根据该日期的数据选择日/周/月/千年的获胜者。
需要解决的问题
- 评分算法 - 如何对锦标赛参赛作品进行评分以及如何在每场比赛后调整其评分?
- 配对算法 - 如何选择下一对来喂玩家?
当前解决方案
- 评分算法 - 目前在国际象棋和其他锦标赛中使用的 Elo 评分系统。
- 配对算法——我们当前的算法承认两个必要条件:
- 对迄今为止决斗次数较少的条目给予更多的决斗
- 以更高的概率匹配具有相似评分的人
给定:
N = 锦标赛中的参赛
总数 D = 迄今为止所有玩家在锦标赛中进行的决斗总数
Dx = 玩家 x 到目前为止进行了多少决斗
为了选择玩家 x 和 y 进行决斗,我们首先选择玩家 x 的概率:
p(x) = (1 - (Dx / D)) / N
然后按照以下方式选择玩家 y: 按等级对玩家进行排序 让在排序列表中的索引 jIdx 处选择玩家 j 的概率为: p(j) = ... 0, if (j == x) n*r^ abs(jIdx - xIdx) 否则
其中 0 < r < 1 是要选择的系数,n 是归一化因子。
基本上,从 x 的任一方向的概率形成一个几何级数,归一化,因此它们总和为 1。
关注点
- 最大化决斗的信息价值 - 将评分最低的条目与评分最高的条目配对不太可能为您提供任何有用的信息。
- 速度——我们不想为了选择一对而进行大量的计算。一种替代方法是使用类似瑞士配对系统的系统,一次配对所有参赛作品,而不是一次选择一个新的决斗。这有一个缺点 (?),即在给定时间范围内提交的所有参赛作品将经历大致相同数量的决斗,这可能是可取的,也可能不是可取的。
- Equilibrium - Pixoto 的 ImageDuel 算法会检测条目何时不太可能进一步提高其评分,并从那时起减少他们的决斗。这种检测的好处是有争议的。一方面,如果你“暂停”一半的条目,你可以节省计算量。另一方面,具有既定评级的条目可能是新条目的完美匹配,以建立新手的评级。
- 条目数 - 如果只有几个条目,比如 10 个,也许应该使用更简单的算法。
- 赢/输 - 如果有的话,玩家的赢/输比如何影响下一次配对?
- 存储 - 每个条目和锦标赛本身要存储什么?当前存储: 锦标赛条目:到目前为止 # 次决斗,# 胜,# 负,评级 锦标赛:到目前为止 # 次决斗,# 项
algorithm - 有向循环图或锦标赛(图)中的边消除
我想要一种算法来消除循环有向图或主要是锦标赛的边,并输出一种边数最少的树状结构。
消除应基于侧面的重量,如下面的简单现实示例所述。
如果有三个朋友 A,B,C。以彼此之间借钱和还钱为例。
A 人必须转移 B 人 - 10 美元。B 人必须转移 C 人 - 20 美元。个人 C 必须转移个人 A - 20 美元。
在最终结算中,为了尽量减少彼此之间的转账次数,我们可以将上述内容重新安排为“B 人将向 A 人转账 - 10 美元”,一切都已解决。
我正在寻找一些算法,当给定每边的权重和方向时,它适用于任意数量的节点。
鉴于该图可以重新排列,并且该图很可能是一个“锦标赛”,其中每个节点都连接到图中的所有节点,那么我遵循的最佳方法是什么。
android - 在 Android 中绘制锦标赛支架的最佳方法
我需要在 Android 中绘制一个锦标赛支架。我已经计算了所有游戏的位置(即一个 (x,y) 元组,它定义了在类似电子表格的结构中放置团队的位置)。但是,我不知道绘制支架的首选方式。我找到了一个显示我需要的示例:示例
我的第一个想法是以编程方式创建和填充TableLayout
. 但是,实际上并不支持边框,并且需要大量的TextView
s 来填充游戏之间的空间。所以我不确定这是否是最好的方法。
有没有人有更好的建议,或者甚至是类似的例子?
ruby-on-rails - Ruby On Rails 和挑战 API
我很新,但了解 Ruby on Rails 的概念。我正在努力让锦标赛开始并运行。我在 Gem 文件中添加了 gem 作为依赖项;但是,我不确定在哪里添加我的用户名和 API 密钥。这是 API - https://bitbucket.org/corneldm/challonge-api/wiki/Home - 在视图“Challonge::Tournament.find(:all)”中显示过滤后的列表怎么样。我不确定如何连接预配置的 ActiveResource 类。有没有人体验过 Challonge API for Ruby?或者我可以使用的另一个支架系统?
tournament - 巡回赛任务
我正在制定具有整数规划的足球锦标赛的时间表。使用 LINGO 软件作为工具来处理它。最小化旅行距离是我的目标。有 12 支球队,我已经有了每支球队之间的距离矩阵。在我看来,会有二次分配。
这是目标函数:
![目标函数] >>> ( http://i.imgur.com/ZucsJ.png )
Dij 是本垒球队 i 和 j 之间的物理距离。索引 k(客队本垒)作为代表 i 队在 j 队本垒进行客场比赛的位置。最后,t 作为比赛日的代表 (1..(n-1)),n = 参与的球队。
这是集合和数据(LINGO):
![集合和数据] >>> ( http://i.imgur.com/HONK0.png )
数据集有什么问题吗?因为我觉得二次方应该分配给(也许)团队,团队,比赛日和团队,团队,索引k?你能帮我写剧本吗?
我是 LINGO 软件的初学者,非常感谢任何帮助。谢谢。
mysql - 各种锦标赛/竞赛类型(联赛、天梯、单/双淘汰等)的数据结构
我正在尝试构建一个系统,让用户可以轻松地创建各种类型的锦标赛并与其他用户一起参与。它不是针对特定游戏的,而是一种通用工具,用于尽快从任何设备查看和更新锦标赛结果,且交互最少,因此实际应用程序不会妨碍聚会等。
用户资料、锦标赛和结果保存在数据库中,但锦标赛中的更改应立即反映在客户端的视图中,以动画方式显示且无需页面重新加载 (JavaScript),然后通过 ajax 发送到服务器、验证并保存到数据库中 ( PHP,MySQL)。客户端不断监听服务器并在进行任何更新时更新所有客户端的视图(从参赛者重命名、匹配结果和退出等)
我找到了一些单淘汰赛或双淘汰赛的数据模型,但这个模型应该支持多种锦标赛类型,如联赛、天梯、单/双淘汰赛和循环赛。
那么对于这样的项目,我应该使用什么样的数据(基础)模型,基本上是一个 Google Docs 电子表格,但每个锦标赛类型都有预定义的外观和控件?
我应该选择适合所有锦标赛的模型,还是为所有不同的锦标赛类型创建单独的表格?任何可能对这样的项目有用的资源?
selection - 锦标赛选择的一般算法
我有一个关于如何在 GA 中使用锦标赛选择的问题。假设我有 100 个人作为初始种群,然后我想对 n 代应用锦标赛选择,所以每次迭代我最终只有 20% 的染色体。我想出的算法是:
这个架构正确吗?谢谢
javascript - JavaScript 对锦标赛种子进行排序
我在这里使用了一些帖子来创建一个使用 JavaScript 和 Jquery 来显示括号的锦标赛括号系统。
我有 16 支球队 1-16 号种子。目前我排序的种子如下:
[1,8],[4,5],[2,7],[3,6]
如您所见,它在某种程度上有效,但半决赛将是 1v4 和 2v3,这是不正确的。我希望半决赛是 1v3 和 2v4,但无论我尝试什么,我似乎都无法将其打印出来。所以应该是:
[1,8],[3,6],[5,4],[7,2]
这也使得当您查看纸上的括号时,1 和 2 在括号的两端是正确的,但无论我尝试什么,它都不起作用。
编辑:我也希望这适用于更多团队,因此是 16/32 团队锦标赛,但是当我尝试使用此算法时,我似乎根本没有得到正确的种子。
这是我的代码:
python - 比赛项目
我们需要创建一个程序,为项目设置第一轮锦标赛。如果参赛者人数不均,则要求节目添加轮空。这是我的代码:
错误?
php - 计算可能的锦标赛结果
我正在尝试用 PHP 编写一段代码,它将为每个团队制定循环赛类型锦标赛的最佳和最差结果。
此代码将在每轮比赛后执行,因此将查找每支球队的当前 WLT 记录以及每支球队未来的比赛时间表(所有这些信息都已存储在数据库中)。
我最初的想法是遍历每支球队的排名排列,并记住每支球队表现的极限。然而,经过进一步思考,我意识到对于这种情况下的 12 个团队,这将导致超过 4.79 亿个排列(这可能需要一点时间来计算,更不用说简洁的代码了)。
不幸的是,我担心我在设计一个逻辑系统来处理这个问题时已经达到了我的想象力的极限,所以任何人都可以提供的任何帮助都会很棒。
提前干杯爱德华