3

私は正式な離散数学のトレーニングをほとんどまたはまったく受けておらず、ちょっとした問題に遭遇しました。私は、人間のプレイヤーの(任意の)スコアを読み取り、頻繁にポイントを獲得するエージェントを作成しようとしています。エージェントは頻繁に「遅れ」て「追いつく」必要があります。そうすれば、人間のプレイヤーは何らかの競争が起こっていると信じることができます。次に、エージェントは人間に対して(条件に応じて)勝つか負ける必要があります。

私は、不安定な確率的ループ(ひどく失敗した)を含む、いくつかの異なる手法を試しました。この問題は放出隠れマルコフモデル(HMM)のようなものを必要とすると思っていましたが、それをどのように実装するか(またはこれが最良のアプローチであるかどうかさえ)わかりません。

私は要点を持っていますが、繰り返しますが、それはひどいです。

__main__この関数がこのエージェントの目標に関する洞察を提供することを願っています。pygameで呼ばれる予定です。

4

2 に答える 2

2

あなたはこれを考えすぎているのではないかと思います。単純な確率を使用して、コンピューターのスコアが「追いつく」頻度と量を見積もることができます。さらに、コンピューターのスコアと人間のスコアの差を計算し、これをシグモイドのような関数に入力して、コンピューターのスコアが増加する度合いを知ることができます。

例示的なパイソン:

#!/usr/bin/python
import random, math
human_score = 0
computer_score = 0
trials = 100
computer_ahead_factor = 5 # maximum amount of points the computer can be ahead by
computer_catchup_prob = 0.33 # probability of computer catching up
computer_ahead_prob = 0.5 # probability of computer being ahead of human
computer_advantage_count = 0
for i in xrange(trials):
    # Simulate player score increase.
    human_score += random.randint(0,5) # add an arbitrary random amount
    # Simulate computer lagging behind human, by calculating the probability of
    # computer jumping ahead based on proximity to the human's score.
    score_diff = human_score - computer_score
    p = (math.atan(score_diff)/(math.pi/2.) + 1)/2.
    if random.random() < computer_ahead_prob:
        computer_score = human_score + random.randint(0,computer_ahead_factor)
    elif random.random() < computer_catchup_prob:
        computer_score += int(abs(score_diff)*p)
    # Display scores.
    print 'Human score:',human_score
    print 'Computer score:',computer_score
    computer_advantage_count += computer_score > human_score
print 'Effective computer advantage ratio: %.6f' % (computer_advantage_count/float(trials),)
于 2010-06-27T03:11:59.997 に答える
0

私は、人間がコンピュータ エージェントがゲームをプレイしているのを見ることができないと仮定しています。そんなときは、ぜひ試してみてほしいアイデアがあります。

任意の移動で獲得できるすべての可能なポイントの組み合わせのリストを作成します。移動ごとに、現在のターンの後にエージェントが最終的に収まるスコア範囲を見つけます。可能な移動値のセットを、その特定の範囲内でエージェントを終了させる値のみに減らし、ランダムに 1 つを選択します。エージェントにどれだけ遅れてもらいたいか、または進んでもらいたいかという条件が変化するので、範囲を適切にスライドさせてください。

もしあなたが、人間に対するある種の組み込みの、そして研究された心理的効果を備えた何かを探しているなら、私はそれを手伝うことはできません. これよりも具体的な状況が必要な場合は、より多くのルールを定義する必要があります。

于 2010-06-25T18:30:06.337 に答える