私は、Minimaxアルゴリズムを使って設計したTic Tac Toe AIが無敵になるように、良い評価関数を考えることでした。私たちが持っていた制限は、残りのゲームのソースコードを変更しないこと、AIが完全に機能するはずだったゲームツリーの最低の深度が3でなければならないという制限でした。例えば、minimax関数を3の深さは8の深さで呼び出すのと同じように動作するはずです。私の質問は、ティックタックのつま先AIがその深さの浅い部分でも機能することができますか?これは私のアルゴリズムでしたが、いくつかの非常に特殊なケースで殴られたので、欠陥がありました。ティックタックトーンのAI Minmax関数を3の深さで無敵にすることはできますか?
public int Evaluate()
{
int count = 0;
if (CurrentState.Field(0, 0) != 0)
count += (CurrentState.Field(0, 0) == 1) ? 1 : -1;
if (CurrentState.Field(0, 2) != 0)
count += (CurrentState.Field(0, 2) == 1) ? 1 : -1;
if (CurrentState.Field(2, 0) != 0)
count += (CurrentState.Field(2, 0) == 1) ? 1 : -1;
if (CurrentState.Field(2, 2) != 0)
count += (CurrentState.Field(2, 2) == 1) ? 1 : -1;
if (CurrentState.Field(1, 1) != 0)
count += 4 * ((CurrentState.Field(1, 1) == 1) ? 1 : -1);
if (CurrentState.over != 0)
count += (CurrentState.over == 1) ? 20 - Current State.SpotsTaken() : -20 + CurrentState.SpotsTaken();
return count;
}
アイデアは、コーナーは少なくとも「ポイント」の価値があるということですが、いくつかはそれにもかかわらず、センターは最も「ポイント」の価値があること勝つと、「ポイント」より価値があります。 CurrentStateは評価中の状態で、CurrentState.Fieldはゲームボードです。ゲームボードのセルの値は、スポットが取られていない場合は0、Xがある場合は1、Oがある場合は2です.CurrentState.overは、ゲームが終了した場合は1、勝ったプレーヤーがXならば2です。勝利した選手がOだった場合は0、引き分けの場合は0になります。私はゲームが殴られているのを見て5点中1点を得て、それが正当なものかどうかを見たいと思っています。
This is the series of events in which the game doesn't work with a depth of 3
あなたの質問は何ですか? – maccettura
私は本当にお金を払っていません。ここに質問がありません。私が見ているのは、あなたが持っているものと、できないことです。 – MethodMan
最初の段落の最後の2番目の文が表示されますか? –