2012-07-28 46 views
5

我想测试一些针对彼此的纸牌游戏战术,我的目标是要知道女巫的战术会在现实生活中更好。要做到这一点,我做了一个模拟,但我不知道我是否做了一个好的。所以我想知道如何创建一个很好的模拟。寻找最好的游戏策略对其他策略,例如在纸牌游戏Toepen

您无法模拟现实生活中所有因素,例如虚张声势。还有一些可以消除的因素,我尽可能地消除了。剩下的因素,如诈唬,都超出了范围。模拟这些是不可能的。

我用我的模拟项目来比较一些对方的战术。这样你就可以看到你可以用什么策略来对付其他战术。这个缺点是你只有知道其他玩家的战术时才能使用它。当你不知道什么策略可以用来对付它时,你需要有一台计算机来测试它。所以你只能使用这个项目来检查你的演奏风格。

这个问题不是关于创建一个“上帝战术”,而是关于编写好的模拟软件,可以用来模拟例如纸牌游戏。所以我想知道你怎样才能做出好的模拟:

  • 我需要采取什么措施?
  • 你怎么能知道你的模拟是一个很好的模拟?
  • 我应该如何处理情况?生成例如一些随机的手,或尝试所有的可能性。
+0

你可能会重写你的问题到更一般的方法吗?我想了解更多关于如何进行良好的模拟。 – Dagob 2013-01-02 08:17:19

回答

4

回答您的三个问题:

  1. 因素,如卡粘在一起,不同洗牌技术不应真正的问题。我假设你将使用伪随机噪声源(如rand())对随机化卡的顺序对混洗进行建模。大多数洗牌技术可能足够好,这对于您的目的来说是一个完美的模型。

  2. 我不了解游戏的情况,知道如何简单地描述策略。你所描述的测试应该回答这些战术中的哪一个会在他们进行正面交锋时获胜的问题。如果这些是唯一的两种策略,并且它们非常简单并且可以完全实施,那么是的,您的测试会告诉您哪个更好。如果这款游戏就像大多数这样的游戏一样,并且涉及许多不同的策略和微妙之处,那么当这两种策略正面交锋时,知道这两种策略中的哪一种会取胜,可能不会告诉你有关哪种策略更好。

  3. 我基本上在第二个问题的答案中已经介绍了这一点,但是如果您已经正确编写了100%的策略,那么机器人对峙的结果将非常有用,因为他们会告诉您这两个中的哪一个当他们正面交锋时,战略会赢得更多。不过,我认为在大多数这样的游戏中,单凭这一点并不能告诉你有多大的战略总体优势。再一次,我对这款游戏的确定性还不够了解,但如果游戏涉及许多可能的策略,测试可能不会告诉你这很有用。

2

你不能用这种模拟来证明任何东西。你真正倾向的是模拟A比B好,但不是他们在真实世界中的工作方式,或者与其他策略不同。

你可以得到一些可能会更好或更糟的工作的一般概念,但就是这样。

+2

你甚至不知道这一点。如果您有一次运行模拟A与模拟B运行并获胜,那么您只有现在才能模拟A赢得一次。这可能是因为模拟A是优越的或者是偶然的。这些运行是[非确定性](http://en.wikipedia.org/wiki/Deterministic_algorithm#What_makes_algorithms_non-deterministic.3F)。你必须重复他们并做一些统计。 – 2013-01-06 11:55:50

1

我的答案不是基于研究,而是我如何看待小范围内的模拟战术。

这是我做我的模拟:

,你需要做的就是确保你可以实现你想要比较战术的第一件事。如果你没有办法对它们进行编程,那么你无法自己测试它们。

写下测试范围,你可以在每次有新想法时扩展你的项目。当你这样做时,你正在创建一个永远不会完成的项目。因此,请标记您想要做的事情,并且考虑每个选项。虚张声势就是一个很好的例子。实施虚张声势模拟几乎是不可能的,你可以计算你有多少机会获胜,但是一个普通人会在他认为其他人会通过或他会获胜时虚张声势。在计划中实施“感受”是很多工作。 不是每个人都有同样的感觉关于诈唬。但是你可以制造不同的虚张声势(感觉),并让机器人使用他们的每一个策略。这将是很多工作,对我来说这不值得。

了解如何比较战术。你想知道你必须赢得多少%的变化吗?还是因为其他原因想要做一些随机游戏?

还有每个游戏的更多方言,找出你想要遵循的规则集。实施这些规则。如果不这样做,模拟将会不正确。

实施所有策略,并且使用尽可能相同的功能。这样你就可以自动测试核心功能。通过这种方法,你可以更快地完成,你会发现你永远不会找到的错误。

测试系统。测试对于模拟非常重要。 一个小问题可能导致错误结果。用调试器遍历你的代码,以了解它是否适​​合搭车。 制作一个“调试模式”,在这种模式下显示每场比赛的结果并查看它们。还让让其他人回顾游戏的玩法

0

在您的详细信息,请你问:

什么是重要的?

你怎么能做出好的模拟?

你怎么知道它在真实的现场环境中是相关的。

第一个问题的答案只能由专家在游戏中回答;创建人工智能不是一件容易的事情,为了创造出伟大的人工智能,你需要知道游戏中的所有策略,并且需要对这些策略进行编程。然后,您需要知道何时使用这些策略,或者您想要确定计算机是否在所有组合中循环。

做一个好的模拟很大程度上取决于你想要达到的目标。你可以使用国际象棋方法,让人工智能发挥出所有可能的场景并选择最好的场景。这实际上完全消除了游戏中的策略,但它也可能会提出一些新的策略;但好的国际象棋程序使用开放的书籍和什么不是。为了模拟现实生活,你可能会想要使用一些策略组合,并根据情况进行所有可能的动作。

此外,你说你不能虚张声势,但这不一定是真的。如果它是游戏中的策略,那么你应该编程虚张声势,并尝试通过虚张声势进行编程。如果你打算这么做,你需要实施一个虚张声势的技能并检测虚张声势的技巧以及虚张声势的比例。有了这一点,你还可以了解虚张声势对于一个给定的真实生活技能水平有多大用处。如果你确实实施虚张声势,你可能希望能够开启或关闭你的模拟。

为了测试你的模拟器,并确保它对现实生活是准确的,我建议让电脑面对所有已知的组合/结果,并确保结果与你在现实生活中看到的结果相同。在开始循环之后,慢慢地进行测试,只需运行一些策略,然后检查结果,然后再添加一些。如果你从一开始就把所有的策略都放进去,你将很难发现其中一个策略不能正常工作。

+0

但是你会如何实施虚张声势呢?你可以做出几种虚张声势,但是在某种情况下有人会虚张声势有很多原因。除此之外,在现实生活中还有很多其他原因会导致你虚张声势。例如:当他“说谎”时,你可以检测到他做了什么。我知道一个非常好的机构需要有一个“虚张声势的实施”。但是当你真的想要实现这个时,你需要做很多工作才能实现良好的实现。我想你需要做一个关于虚张声势来检测游戏风格的长篇研究。 – Laurence 2013-01-08 18:08:20

+0

非常真实 - 我不知道你所指的游戏细节,但是如果你对扑克AI进行一些研究,你应该能够找到一些很好的信息,并且能够以此作为出发点,如果/当你决定在混音中加入虚张声势。 – 2013-01-09 05:28:47