問題タブ [minimax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
artificial-intelligence - 評価関数の重みの調整
connect-4 用にいくつかの AI をコーディングしました。特定の評価関数の重みを調整したいと考えています。時間とハードウェアが限られているので、私の質問は次のとおりです。「トレーニング」を実行し、次の場合に使用されるものよりも深さの低い検索を使用して得られた結果に基づいて重みを調整することは、評価の質に関して非常に悪いですか? AI は、より時間があり、ゲーム ツリーをより深いレベルで検索できる状況で、後で最善を尽くす必要がありますか?
algorithm - 2 人のプレイヤー間の戦闘をシミュレートする方法は?
2 人のプレーヤーがいて、それらの間のゲームをシミュレートしたいと考えています。どちらもいくつかの属性 (力、知性...) と異なるアクションを持っています。一部のアクションの結果は、属性値と運の要素に基づいています。
アルゴリズム:
- 両方のプレイヤーの可能なすべての動きのゲーム ツリーを構築する
- ゲームツリーの深さはおそらく限られているでしょう
- すべてのレベルは異なるプレイヤーに属します
- 葉ノードでいくつかのヒューリスティックを使用して、移動する必要があるプレーヤーが勝つ確率を見つけます
- 確率を上に伝播します (ミニマックス アルゴリズムのように)
- 最も確率の高い手を選ぶ
- このアルゴリズムの最初に続く
つまり、基本的にこれはミニマックスアルゴリズムです。ただし、いくつか質問があります。
- 運要素を考慮するには?
- 1 つの動きをしたときに、アルゴリズム全体をもう一度実行する必要がありますか? (+1 の深さと新しいルート ノードでツリーを構築し、新しい確率を計算します...)
- 戦闘をシミュレートするための他のアイデアはありますか?
ありがとう。
java - 五目並べの良いミニマックス表現?
五目並べ(5列)ゲームをJavaで個別のプロジェクトとしてコーディングしようとしています。AIの場合、アルファベータプルーニングでミニマックス関数を使用することがこれに取り組む良い方法であることを理解しています。ただし、これがどのように機能するかを想像するのに少し問題があります。
私の質問はこれです:ミニマックスツリーのノードの良い表現は何ですか?
私の評価関数は、ボード上のすべての空きスペースを「重み付け」すると思います。次に、そのボードから最小値決定木のノードとして最良の値を取得します。私は正しい方向にいますか?
そして、他のヒントも大歓迎です!前もって感謝します!
minimax - ミニマックス/アルファベータアルゴリズム-五目並べでAIの動きを見つける
ミニマックス決定木は、ボードゲームにAIを実装するための優れたアプローチであることを理解しています。現在、五目並べというゲームを実装しようとしています。しかし、私が混乱していることが1つあります。
私は周りを見回しましたが、ほとんどすべてのMinimax/AlphaBetaアルゴリズムが整数を返すようです。特に私にとっては、eval(bestGomokuBoard)の戻り値です。優勝ボードの座標をどのように見つけるのですか?
これまでに行ったことは次のとおりです。空のスペース(0)、コンピューター(1)、およびプレーヤー(2)を表す整数の20x20配列があります。オーバーヘッドを削減するために、ミニマックスツリーの各ノードは、より大きな配列(より小さな参照フレーム)の9x9配列表現です。私のeval関数はintを返し、minimax/alphabetaアルゴリズムはintを返します。AIの動きの座標を見つけるにはどうすればよいですか?
そして、よろしくお願いします!
java - すべてを台無しにする参照渡し:(
ねえ、私は検索ツリーにこの構造を持っています
これはルートノードの定義です
最大値関数での再帰の終了後、rootNode の配列は最初の状態であるため編集しないでください。ただし、表示すると配列がいっぱいになり、rootNode.state が最大値への参照によって渡されます。関数 :(
//MiniMax アルゴリズムを実装しようとしています。
artificial-intelligence - ユーティリティ関数 ミニマックス検索
こんにちは、ミニマックス探索で効用関数を決定する方法がわかりません。ミニマックス探索を使用できるゲームで説明してください。基本的には、効用関数を決定する方法を尋ねています。
algorithm - ミニマックスアルゴリズムについて理解していないのは何ですか
ミニマックスアルゴリズムについて質問があります。
次のゲームツリーがあり、それにランダムなヒューリスティック値を追加したとします。

ミニマックスアルゴリズムを理解したので、グリーンパスを選択します。ただし、これは状況に応じて選択するのに最適な方法ではない場合があります。最上位ノードの右の子は、取得できる最高の値を持っているため、最善の方法ではありません...
他のプレイヤーが他の動きをした場合、私の勝利のチャンスははるかに少ないので...
申し訳ありませんが、この質問で私が何を意味するのかを表現するのに苦労しています。しかし、私はここでどのように間違っていると思いますか?
algorithm - negamax アルゴリズムのこの実装は正しいですか
私はnegamaxアルゴリズムを実装しようとしていますが、これは私がそうあるべきだと思った方法です:
そして対応する negamax 関数
ええ、コンパイルしていないことは知っていますが、少し擬似コード化しようとしています。
編集
calculateBoardFunction(Board board) は常に、最良の動きが計算される色についてボードを評価します。
また、私はそれを一般的にしようとしたので、すべてのゲーム(チェス、リバーシ、囲碁)などで同じように機能します...(しかし、それは問題の一部ではありません)
また、ウィキペディアの negamax 疑似コードを例として使用しました。しかし、そのコードを使用して >>思う<< 正しいヒューリスティック値を使用して、ゲーム ツリーを非常にうまく作成できました。しかし、関数にコードを入れた理由は、getBestMoveどの動きが実際に最適かを理解するためです。
しかし、それができるかどうかはわかりません。
c++ - Tic Tac Toe C++ アルゴリズムのデバッグのヘルプ
これが機能しない理由を理解するのを手伝ってください。コードにバグがあるのか、アルゴリズムに根本的な論理的な欠陥があるのか どうかはわかりません。
私のアルゴリズムは minimax に基づいていますが、より単純な手法のためにヒューリスティック評価関数を使用しませんでした。単純な 3x3 tic tac toe は単純であるため、考えられる手ごとに考えられるすべてのゲーム結果を計算し、「スコア」が最も高いものを選択したいと思います。有効な動きの「トップ レベル」のベクトルと、対応する「スコア」の一致するサイズのベクトルを作成します。つまり、その動きに続くすべての可能な結果について、勝ちの場合は ++、損失の場合は -- です。
しかし、移動スコアのベクトルが奇妙な非対称値を取得しています。コードが機能したとしても、論理的には、最大の勝利と最小の損失につながるように計算された動きが、フォークなどの単純な戦術に盲目になる可能性はありますか? 私の本能はイエスと言っていますが、詳細な計算はしていません。
artificial-intelligence - ミニマックス: 最小プレイ数が最適でない場合はどうなりますか
ミニマックスアルゴリズムの説明によると、アルゴリズムが最適になるように、両方のプレーヤーが最適にプレイする必要があります。直感的に理解できます。しかし、最小プレイが最適でない場合に何が起こるかを具体化または証明してくれる人はいますか?
どうも