問題タブ [tic-tac-toe]

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.

0 投票する
4 に答える
2277 参照

machine-learning - 評価関数としての Tic Tac Toe ニューラル ネットワーク

多層パーセプトロンとバックプロパゲーションを使用して、三目並べの AI をプログラムしようとしています。私の考えでは、ニューラル ネットワークをトレーニングしてボードの状態を正確に評価できるようにしようと考えていましたが、問題は、何千ものゲームを分析した後でも、ネットワークが正確な評価を出力しないことです。

27 個の入力ニューロンを使用しています。3x3 ボードの各正方形は、正方形に x、o、または空白があるかどうかに応じて、0 または 1 の値を受け取る 3 つの入力ニューロンに関連付けられています。これらの 27 個の入力ニューロンは、10 個の隠れニューロンに信号を送信します (10 個を任意に選択しましたが、5 個と 15 個も試しました)。

トレーニングのために、現在の評価関数を使用して自分自身と対戦し、各側に最適な動きと見なされるものを選択することで、プログラムに一連のゲームを生成させました。ゲームを生成した後、NN は、特定のボード状態の正しい出力を (評価関数を使用して) ボード状態の値として取得することにより、(ボード状態と正しい出力で構成される) トレーニング例をコンパイルします。ゲームシーケンス。これは、ジェラルド・テサウロが TD-Gammon をプログラミングするときに行ったことだと思いますが、記事を誤解した可能性があります。(注: 重みを更新するための特定のメカニズムについては、この投稿の最後に記載しています)。

学習率のさまざまな値とさまざまな数の隠れニューロンを試しましたが、何も機能していないようです。何時間も「学習」した後でも、戦略に目に見える改善は見られず、評価関数はどこにも正確にはほど遠い.

三目並べをプログラムするもっと簡単な方法があることを認識していますが、後で接続 4 に適用できるように、多層パーセプトロンを使用して実行したいと考えています。これは可能ですか?妥当な量の隠れニューロンを備えた三目並べボードの信頼できる評価関数はないと考え始めています。

宿題のために提出するための簡単なコードを探しているわけではないことを保証します。私はしばらくうまくいっていませんでしたが、何が間違っているのか知りたいだけです。すべてのアドバイスをいただければ幸いです。


これは、NN に使用した特定のメカニズムです。

27 個の入力ニューロンのそれぞれは、微分可能なシグモイド関数 1/(1+e^(-x)) を通過する 0 または 1 を受け取ります。各入力ニューロン i は、この出力 (i.output) に何らかの重み (i.weights[h]) を掛けて各隠れニューロン h に送信します。これらの値の合計は、隠れニューロン h (h.input) によって入力として取得され、この入力はシグモイドを通過して、各隠れニューロン (h.output) の出力を形成します。すべての非表示ニューロンの (h.output * h.weight) の合計を lastInput とします。ボードの出力値は sigmoid(lastInput) です。

学習率をアルファ、エラーを正しい出力から実際の出力を差し引いたものとします。また、dSigmoid(x) を点 x でのシグモイドの微分に等しくします。

各非表示ニューロン h の重みは、値 (alpha*err*dSigmoid(lastInput)*h.output) によって増分され、指定された入力ニューロン i から指定された非表示ニューロン h への信号の重みは、値によって増分されます。 : (alpha*err*dSigmoid(lastInput)*h.weight*dSigmoid(h.input)*i.output)。

バックプロパゲーションに関するこの講義からこれらの式を取得しました: http://www.youtube.com/watch?v=UnWL2w7Fuo8 .

0 投票する
1 に答える
1228 参照

machine-learning - 時間差学習の更新

Tesauro の TD-Gammon プログラムについて読み、三目並べに実装したいと思っていますが、専門用語がわからないため、高校生の私にはほとんどすべての情報にアクセスできません。

ここの最初の方程式http://www.stanford.edu/group/pdplab/pdphandbook/handbookch10.html#x26-1310009.2

「一般的な教師あり学習パラダイム」を提供します。式の左辺の w sub t は、タイム ステップ t でのパラメーター ベクトルであると言えます。「タイムステップ」とは正確にはどういう意味ですか?ボードの状態の値を出力するように設計された三目並べニューラル ネットワークのフレームワーク内で、タイム ステップは、特定のゲームでプレイされたピースの数を参照しますか? たとえば、文字列「xoxoxoxox」で表されるボードはタイム ステップ 9 にあり、ボード「xoxoxoxo」はタイム ステップ 8 にあるでしょうか? それとも、タイム ステップは、トレーニングが開始されてからの経過時間を指しますか?

w sub t は特定の時間ステップの重みベクトルなので、これはすべての時間ステップに独自の評価関数 (ニューラル ネットワーク) があることを意味しますか? では、たった 1 つの手でボードの状態を評価するには、2 つの手でボードの状態をフィードするのとは異なる NN にフィードする必要がありますか? 私が知る限り、Tesauro はすべてのボードの状態を評価するために 1 つの NN しか使用しなかったため、ここで何かを誤解していると思います (ただし、TD-Gammon に関する信頼できる情報を見つけることは困難です)。

出力の勾配が w sub t ではなく w に関して取得されるのはなぜですか?

これらのアイデアを明確にしていただきありがとうございます。私のプロジェクトに関するアドバイスや、アクセシブルな読み物に関する提案をいただければ幸いです。

0 投票する
1 に答える
776 参照

tic-tac-toe - Tic Tac Toe を解決するために利用できるアルゴリズムはどれですか?

Tic Tac Toe を解決するために利用できるアルゴリズムは何ですか? 特にボードのサイズが 3 * 3 ではなく 4 * 4 以上の場合は? Minimax & alpha-beta pruning で 4 * 4 を試しましたが、PC がハングしているようで、スタック オーバーフローで例外がスローされます。これらのソース コードが JavaScript で書かれているのを見ましたが、どのアルゴリズムを使用しているのかわかりません。 http://js-x.com/page/javascripts__example.html?view=153

0 投票する
1 に答える
4294 参照

java - TicTacToeのミニマックスアルゴリズムのバグ

私は現在、ミニマックスアルゴリズムを自分自身に教えようとしており、それをJavaの三目並べで実装しようとしています。ただし、私のアルゴリズムにはバグがあり、その原因を特定できません。

以下は完全なソースコードです(テキストの壁でごめんなさい!):

プログラムを実行したときの出力は次のとおりです(コンピューターは円です)。

あなたが最初の動きの後に見ることができるように、コンピュータはそれがどんな動きをしてもそれが引き分けを得ることができると考えます(スコア= 0)。

2番目の動きで、列0、行1にクロスを置きます。何らかの理由で、コンピューターは、引き分けに到達するための2つの可能な動き(スコア= 0)と負けるための4つの動き(スコア= -1)があると考えます。 。その後、引き分けになると考えて間違った動きをします。

hasWonメソッドに何か問題があると最初に思いましたが、3つ続けて取得する8つの方法すべてをテストし、すべてtrueを返しました。

findBestMove、max、またはminメソッドのどこかに問題が存在するのではないかと思いますが、何が原因であるかを正確に把握することはできませんでした。

誰かがバグの原因を教えてくれたり、再帰的アルゴリズムをより適切にデバッグする方法について提案してくれたら、本当にありがたいです。

0 投票する
3 に答える
27710 参照

python - TypeError: Python 3.2 で「int」オブジェクトは呼び出し可能ではありませんか?

だから私はPython 3.2で三目並べゲームをコーディングしています.これを修正しようと昼夜を問わずコード、スクリプト、またはあなたがそれを呼びたいものは何でも調べましたが、何度もそれを見つけることができません. . 私はそれをグーグルで検索しましたが、すべての答えが混乱を招くものであるか、その人が私の三目並べゲームとは異なる方法でスクリプトを作成しています. 注意してください、私はpythonの初心者です。実行しようとすると、エラーが表示されます:

どういう意味ですか?問題があると言っているコードは次のとおりです。

あなたが私を助けることができれば、それはとても意味があります。それはとても迷惑で、私はそれを修正するために一生懸命努力してきました.

0 投票する
1 に答える
1643 参照

python - TypeError:Tic TacToeゲームではリストインデックスは整数でなければなりません-Python3.2?

だから私は自分が作っている三目並べゲームで複数の問題を抱えていましたが、ほとんどの問題の解決策を見つけました。しかし、今の問題は、読み取りエラーが発生することです

私がそれを実行しようとすると。問題が発生しているコードは次のとおりです。

私は何をすべきかわからないので、木曜日にpythonを始めたばかりで、あまり賢くありません。しかし、すべての助けに感謝します(:ああ、私はpython3.2を持っています。

0 投票する
1 に答える
242 参照

c++ - C++ の if ステートメントが正しくテストされていない

私は三目並べのゲームを作ろうとしていますが、X を挿入できる範囲で機能しますが、コンピューターは O を 1 つしか挿入できません。これは三目並べのゲームなので、さらに挿入できるコンピューターが必要です。ゼロよりも。値 o の変数が既に存在する場合、このコードが実行されるたびに、別の変数が値 o に変更されることはありません。問題はif文だと思います。私の質問を明確に述べておらず申し訳ありません。それでも意味がない場合は、残りのコードをコンパイルできます。そうすれば、私の言いたいことがわかるかもしれません。

残りはこちら

ここに私が問題だと思うものがあります。

0 投票する
3 に答える
2110 参照

c++ - tictactoe game これらのオペランドに一致する演算子「==」はありません

それはおそらく非常に非効率的で面倒ですが、ここに私の問題があります-「zz == defo && zo == defo」のようなものを言いますここに投稿するには長すぎるエラーが表示されます - http://pastebin.com/KTEM0MZK

私は何を間違っていますか?前もって感謝します

これが私のコードです-

0 投票する
1 に答える
996 参照

neural-network - Tic-Tac-Toe エンドゲームを分類するための ANN の設定

Tic-Tac-Toe ボードの状態 (最終または中間) を「X 勝」、「O 勝」、または「引き分け」に分類するニューラル ネットワークの設定に苦労しています。

現在の解決策と結果について説明します。アドバイスをいただければ幸いです。

* データ セット * データセット = 958 の可能なエンド ゲーム + 958 のランダム ゲーム = 1916 のボード状態 (ランダム ゲームは不完全かもしれませんが、すべて合法です。つまり、両方のプレイヤーが同時に勝つことはありません)。

トレーニング セット = データセットの 1600 のランダム サンプル テスト セット = 残りの 316 ケース

私の現在の疑似ランダム開発シナリオでは、データセットには次の特徴があります。トレーニング セット: - "X" で 527 勝 - "O" で 264 勝 - 809 引き分け テスト セット: - "X" で 104 勝 - "O" で 56 勝 - 156 引き分け

* モジュレーション * 入力層: 18 個の入力ニューロンがあり、それぞれがボードの位置とプレーヤーに対応しています。したがって、ボード (B=空白): xxo ox B B o X は次のようにエンコードされます: 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0

出力層: 各結果 (X 勝、O 勝、引き分け) に対応する 3 つの出力ニューロン。

* 建築 *

基づく: http://www.cs.toronto.edu/~hinton/csc321/matlab/assignment2.tar.gz

1 つの隠れ層 隠れ層の活性化関数: ロジスティック出力層の活性化関数: Softmax エラー関数: Cross-Entropy

* 結果 *

100% の正しい分類率を達成するパラメーターの組み合わせはないようです。いくつかの例:

重要 - 次のいずれかを改善できると思われる場合: - データセットの特性 (トレーニングとテスト ケースのソースと量) が最適ではありません。- 別の問題の変調がより適しています (入力/出力ニューロンのエンコード) - より優れたネットワーク アーキテクチャ (隠れ層の数、活性化/エラー関数など)。

この点に関する私の現在のオプションは、最適ではないにしても、システムが 100% の正しい分類率を持つことを妨げるべきではないと仮定して、他の考えられる問題に焦点を当てたいと思います。

言い換えれば、ゲームの単純さを考えると、このデータセット/変調/アーキテクチャでそれを行う必要があるため、パラメータに関して何が間違っているのでしょうか?

私は ANN の経験があまりなく、私の主な質問は次のとおりです。16 個の隠れニューロンを使用して、ANN は各隠れユニットを「特定の方法で勝利した特定のプレイヤー」に関連付けることを学習できます (3 つの異なる行 + 3 つの異なる列 +対角2本)※2人プレイ

この設定では、重みの「最適な」セットは非常に簡単です。各非表示ユニットには、3 つの入力ユニット (プレーヤーの行、列、または対角線に対応する) からの「より大きな」接続重みと、「より大きな」接続重みがあります。出力ユニットの 1 つに (そのプレイヤーの「勝利」に対応します)。

上の表が示すように、何をしてもテストエラーの数を減らすことはできません。

アドバイスをいただければ幸いです。

0 投票する
2 に答える
2338 参照

java - JavaのTic Tac Toeリセットボタン

ゲームを停止するボタンを追加しましたが、リスナーを追加する方法や、ボタンをクリックしたときにメソッドを呼び出す方法がわかりません。リセットボタンを有効にする方法を教えてください。ありがとうございました。