小山之王机器人的提示


12

对于创建机器人参加山王挑战赛,您有哪些一般技巧?从考虑挑战到创建机器人,您使用什么策略?您发现什么数据结构最有用?

请为每个答案发布一个提示。


16
我觉得这很大程度上取决于具体问题。
Fund Monica的诉讼

@QPaysTaxes我在许多其他技巧问题之后直接对此建模。有没有办法解决这个问题呢?此外,是否还需要解决那些较旧的提示问题?
mbomb007 '16

就我所知,较早的提示问题是基于语言的,这意味着这些提示是通用的,但您可能不使用它们。这个问题更类似于“挑战代码提示”,它完全取决于挑战。但是,正如下面的答案所证明的,有一些通用的东西。我很矛盾
Fund Monica的诉讼

2
我认为这在很大程度上取决于“打高尔夫球的技巧”的具体问题,因为无论如何,您在挑战中都使用了许多不同的语言功能
Destructible Lemon

Answers:


4

寻找纳什均衡

当KOTH涉及相对简单的决策集,仅涉及少数参与者(通常为2个)并且具有确定性时,这是一个非常重要的概念。纳什均衡描述了一个“僵局”位置:如果两个参与者决定了他们的两个策略,那么这两个参与者实际上就被锁定在那些位置:任何一个改变其策略的参与者都只会造成额外的漏洞。

纳什均衡很重要的游戏示例包括:

  • 剪刀石头布(-Lizard-Spock),其中“无与伦比”的策略是随机游戏
  • 莫拉(Morra)具有均衡的“频谱”。彼得泰勒(Peter Taylor)在这里的回答中写下了一个很好的例子。
  • 囚徒困境,一种以“所有人都输了”僵局而著称的合作游戏

如何找到平衡

实际上,对于大多数简单的游戏来说,找到一个平衡实际上非常简单,而且通常非常直观。一左右的各种方法的细节可以在互联网上找到。通常适用的基本概念是创建两个玩家可以使用的可能策略的列表(游戏提供的选项)。如果一种策略被另一种策略“支配”,则可以将该策略从列表中删除,然后重复该过程。所谓“支配”,是指如果策略A总是针对所有其余对手策略给出与策略B相同或更好的结果,则可以从列表中删除策略B。

示例:剪刀石头布

RPS具有所谓的“混合”平衡,这意味着要进行分配。平衡不是要反复打相同的动作(这将导致快速失败),而是要以随机分布玩1/3块石头,1/3纸和1/3剪刀。如果我随机比赛,那么我的对手就无能为力了。如果我的对手选择不随机比赛,那只会在他这一方面造成漏洞。

具有混合平衡的游戏可能是PPCG上最常见的游戏,因为它们可以采取多种形式(我能想到的具有纯平衡的唯一有趣的游戏是囚徒的困境)。我应该注意,混合均衡不必一定是随机的,只是每次都玩相同的举动之外的事情。

使用此信息

游戏的纳什均衡通常代表您应该尝试操作的“基线”。在RPS中,随机播放可确保在包的中间获得一个终点。为了升至最高点,您必须开始确定其他玩家的弱点。

为此,当不确定对手的弱点时,您应该坚持均衡。一旦发现了这些弱点(您已经检测到您的对手没有处于平衡状态),您就需要轻而易举地脱离平衡状态,以利用您的对手。反过来,此操作也会造成您自己的弱点。然后,您必须检测对手何时改变其策略,以便您可以停止攻击并恢复随机比赛。

从平衡中检测变化

这非常困难,我不是专家。变化可以有多种形式:

  • 无缘无故地偏爱某些选项之上/之下的其他选项,例如RPS播放器的摇滚频率是剪刀的两倍,或者是避免打纸的一种。一些相对简单的统计信息可以检测到这一点。
  • 以某种可预测的方式,将当前的移动从过去的移动中转移出来。这包括模仿猫,“击败最后一步的机器人”或“骑车”机器人。这需要额外的逻辑来检测,因为即使移动不是随机的,整体移动分布也可以均匀分布。您应该尝试记录移动的记录,并找到相关性,例如“我2圈前的移动和对手现在所进行的移动”和“他1圈前进行的移动以及他现在所进行的移动”等相关性。
  • 根据您的举动分配机器人。直到您从随机分布中改变出来,这些机器人中的漏洞通常才被创建(可测量的数量)。通常,您自己的机器人属于此类。

3

具体说明运行机器人的要求

Bot可以用多种语言(以及这些语言的版本)编写,因此当您:

  1. 在OP指定的环境中进行测试(或尽可能接近它)。
  2. 如果可能,在各种其他环境中进行测试(以帮助想要运行它的其他人)。
  3. 具体说明您使用的语言和版本,并说明如何运行您的漫游器。

另外一个好处是:如果您使用的是鲜为人知的语言,请链接到人们可以下载二进制文件/源代码以运行它的位置。


2

如果基于团队,请与您的团队一起工作

通常,您可以编写一个可以单独完成任务以帮助团队的机器人,但在游戏内外进行协调时,优势更大。一个很好的例子可以在Red vs. Blue-Pixel Team Battlebots中看到。

在开发过程中,团队能够聊天并讨论如何协调其机器人以使其比单独发挥更好的功能。SphiNotPi3000在技​​术上是同一个机器人,是与另一个机器人串联使用的,并且能够以某种方式移动,以解决如果单独使用它会遇到的缺点。最终结果是,即使是他们两个人对付整个其他团队,他们也几乎可以完全统治战场。

因此,在游戏之外,与队友计划和协调涵盖哪些策略。也许有人用机器人对角线扫描了地图?水平扫描(仅作为示例)。在游戏内部,如果挑战允许团队沟通,请利用它。例如,在战斗机器人游戏中,您可以向队友发送有关机器人在其视野之外的位置的信息,然后鼓励他们以兼容的方式编写机器人,以利用这些信号。


2

使用元策略

对于几乎每一个聪明的策略,都有另一种策略胜过它:例如,您的对手可能会使用与您完全相同的推理来预测您的下一步行动并加以抵消。现在您可以尝试再次猜测对手,但是很难知道何时停止

另一个问题是,擅长于猜测一个聪明对手的策略可能无法与更简单的对手相提并论。

你怎么解决呢?您让您的机器人即时决定使用哪种策略!

为此,您首先要为机器人提供一系列不同的策略。然后,在每次移动之前,您的机器人都会查看到目前为止已记录的游戏历史,并评估这些不同策略的表现。然后,它会标出最成功的照片。

首先包括强大的策略,将有助于为您的机器人提供很好的选择。但是,您还应该包括一些非常简单的控件,因为它们通常可以更好地对抗愚蠢的对手。

您可能会考虑在某些策略上施加偏见,以避免过度拟合(例如,尝试击败对手只是随机行动的模式),或者在一开始就没有太多信息的情况下偏向某些策略。

当然,这种方法仅适用于某些特定的挑战。在摇滚剪刀布,蜥蜴布,史波克的比赛中,这对我来说真的很好。在其他游戏中,几乎无法评估某个策略在未实际执行的情况下的表现。

这种元方法的一种极端形式(与作弊行为接壤)将把所有其他机器人的已知行为包含到您自己的机器人中,从而可以完美地预测其行为。


包括所有其他机器人的已知行为到自己的机器人不会对作弊只是边境,它欺骗。我相当确定这是一个不允许的漏洞。
mbomb007 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.