2012-07-28 64 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