GithubHelp home page GithubHelp logo

reversi's Introduction

Hi there 👋

trophy

reversi's People

Contributors

nob-aoki avatar o-jill avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

nob-aoki

reversi's Issues

gh-pagesを更新する

gh-pagesに最新のmasterをマージする。
testディレクトリ以下は大半がは不要だけどevaltable.txtは必要。
タグ付けするか?
併せてworkerの接尾辞?も変えよう。

パスをするときの考え方

いまは、パスするときは200倍の評価値にしてしまっているが、普通に次の手を指せばよいのではないか?
末端(d=0)がパスのときはもう1手指せばええんちゃうん?(よく考えたら末端がパスになるわけがなく、評価値を返すだけ。)

checkreversi改善?

checkreversiからのreturnを
forの中でやっちゃったほうが速くなったりしないか?
行数は減りそうな予感。

マルチスレッドとかやりたい2

  • 3スレにするにはどうしたら良いか?
    yBrother, oBrotherの代わりに待ちqueueか何かが追加されるのかな?
    合法手が1個の時とかに孫まで展開して分配するとか?
    よく考えたら合法手が1個の時は分担せず即終了でもいいかもしれない。
    分担後に1個担当のときは後でマージが必要なので即終了は不可。
  • CPUコア数とスレ数?
    navigator.hardwareConcurrency で論理コア数が取れるって。
    https://stackoverflow.com/questions/3289465/get-number-of-cpu-cores-in-javascript

#6 の続き?

RFENに真面目に対応する

RFENの仕様をwikiに書いたのでそれに沿うように実装する。
手番だけ読み書き共に実装していない。

テストが2局ぐらいしか行われない

タイムアウトのせい(#29)かバグのせいかわからないが、githubactionsで2局ぐらいしかやってくれない。

コードだけ見るとタイムアウトのせいっぽいが。。。

最終評価値のカウント

終局近くで指し手がdepth程ない時にNaNがログに存在するので、
空きマスがゼロのときの計算ができていないのではないか?
条件分岐の優先順位付けとかがうまくいっていないのではないか?

保存した棋譜に何か識別子?を付けたい。

いまはオプションに-N0とか付けても全て一様にkifu0000000.txtになる。
あとから1箇所にまとめるときにリネームする手間がある。

-N3ならkifu3000000.txtみたいにしてはどうか?
-N3kifu000000.txtとかでも良い。
-N3じゃなくてもyyyymmddhhmmssでも良いかもしれないが、他のPCでの処理と時間がかぶると嫌なので-N3をもとに名前を付けるのが良い気がしている。

αβ探索やってみたい

  • いいところ:
    探索局面が少なくて済む
    →短時間で終わる or depthを増やせる
    同じ時間で倍の深さまで読めるらしい
  • 悪いところ:
    範囲外にいい手があったときに見つけられない

評価用、異なる評価関数同士の対戦

強くなったかどうかの確認をするのに2つの評価関数で対戦させて強さを計りたい。

  • 問題点
  • 1つの評価関数しか登録?出来ない。
  • 案1
    評価スクリプトにて1手指す毎に評価関数を入れ替えて先手:評価関数1,後手:評価関数2みたいになるようにする。
  • 案2
    先手用後手用を分けて持つ。それぞれ登録するコマンドの新設(or コマンドフォーマットの変更)が必要。workerは分けない。
  • 案3
    先手用後手用のWorkerを作る。使うメモリがちょっと増えるかも?

学習とかやりたい

  • 棋譜
    • 棋譜の読み込み
    • 棋譜の保存
  • 学習
    • 学習(係数の更新)
    • 学習(バッチ処理)
    • 学習(習熟度)の評価?
  • 評価関数?ファイル
    • 置き場所
    • 更新
    • 読み出し
  • 自動化
    • 棋譜の生成
    • 棋譜の保存
  • グラフ化
  • 先手後手勝率
  • 異なる評価関数同士の対戦? (#9)

SIMD.jsというものがあるらしい

NN型で評価関数を作ると掛け算と足し算の応酬なので使えば早くなる気がしている。

オセロのマスは8x8なので将棋とかよりは計算に有利なんじゃないか?

連続パスで終局確認処理

思考中に連続パスで対局終了のときに石の数の差を返していないんじゃないか?
パスを無限に繰り返す感じになっていないか?

棋譜に表示されるRFEN

棋譜に表示されてるRFENを指す前の局面を示すものにしたい。

今は指した後の局面が出ていて、最後の一手と終了の2行で同じものが出ていて無意味。

αβ探索中のメモリ解放

アルファカット?ベータカット?が起きたときにメモリ解放をする必要はあるか?
子ノードは展開されていないので解放しなくても大きく消費されるわけではない?
子ノード当たり{x: x, y: y, hyoka: null, child:null, best: null}分づつ残る感じ?
該当箇所:

// need freeing memory??

NN計算高速化案

  • NNで計算するときに
    w1x1 + w2x2 + ...をやる必要があるが、
    w1, w2, ...が小数を含むのでなんとか整数で出来ないか?
    W1 = int(w1 * 10000)としておいてシグモイドに通す前に1/10000するとかはどうか?
  • int x floatなやつを float x floatとすれば型変換を挟まないので実は速くなったりしないか?
  • などなど

指し手のオーダリング2

四隅→端→その他の順にやるといいらしいっすよ。
αβ探索で枝刈りされやすいらしい。
この順でgenmoveしてやればいいんじゃない?
兄弟に分けるときはinterleave?
一回評価値を求めて並び替えとかは要らないらしい。(ある程度正確な評価関数が必要?)

学習を繰り返すと遅くなる?

同じ棋譜を数百回学習をやると半分ぐらいの速度に落ちている気がする。
メモリはリークしてない気がする。
HW要因とか?

先手と後手の勝率

学習中の棋譜の先手と後手の勝率を出したい。

シンプルに棋譜から「●の勝ち」とかをカウントするだけでもいいし、
石の数の差を取り出してそれも並べてもいいかもしれない。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.