GithubHelp home page GithubHelp logo

tanukicoliseum's People

Contributors

mizar avatar nodchip avatar windfall-shogi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

tanukicoliseum's Issues

千日手の判定を行う

現在の実装では、最大手数まで延々と同じ手を繰り返してしまう。千日手判定を実装し、即座に対局を終了できるようにする。

残り物理メモリ量

halfKPE9、評価関数だけで600MB程度消費するのですけど、皆さん、tournamentビルドで棋力計測されているようです。そうすると、EvalHashが1024がデフォルト値なので、USI_Hash 128MBだとしても、エンジン本体が2GBほど消費します。

これを3990Xで1スレッド128並列で対局させるとエンジンだけで12822 = 512GB必要でOSやら何やらで530GBぐらいのメモリがないといけないことになります。

3990Xが普通になってきたこの時代、わりと簡単に上のように棋力計測で物理メモリをうっかり使い切ってしまうことは珍しくもなく、論理スレッド数いっぱいまで使っているとタスクマネージャーを開くのもままならないので、物理メモリが残り何%であるかぐらいは表示があってほしい気はします。(残り少ないときは、それが赤い文字になるとかも)

引き分けにする手数

たぬころ内では、Engine.csにて、private const int MaxMoves = 320; と定義する一方、
エンジン側には、Coliseum.csにて、{"MaxMovesToDraw", "256"} を送っているため、
256手目付近からの挙動に問題が起こるようです。

一旦、どちらか(個人的には320手が好み)で統一した上で、
機会があれば、MaxMovesToDrawとResignValueを、ユーザー側で設定できるようにしてはいかがでしょうか。

EVAL名について

計測結果、テキストで掲示板等に貼り付ける人は少なくて、SS(スクリーンショット)で貼り付けるのが普通であるかと思います。

そのときに使用したエンジン、評価関数がまずわかって欲しいというのはあります。

使用したエンジンについてはすでに対応済みかと思うのですが、評価関数名は、普通は評価関数ファイルごとにフォルダに名前をつけて、

eval/tanuki-wcsc28/nn.bin
eval/yaneuraou-wcsc29/nn.bin

のように配置されているのではないかと思います。(単にevalのままにしている人もいるでしょうけども..)

それでまあ、前者だとして、このフォルダ名(nn.binの親フォルダ名)を結果のところに出力してあってほしいように思うのです。(SSに写っていてほしい)

なので一例として対局結果として、以下のように実行ファイル名、評価関数名と戦績がSSに映るようになんとかならないものかと。

例)
engine1 = YaneuraOu2018NNUE_V530.exe , eval = tanuki2018_nnue
engine2 = YaneuraOu2018NNUE_V531.exe , eval = tanuki2018_nnue
200 - 22 - 178(52.91% R20.24[-9.16,49.65])

// もしかするとエンジンと評価関数、それぞれを事前に登録しておけて、対局するときに表示名は「水匠0504」のように自由に変更できて、評価関数は、その表示名でドロップダウンリストから選べるといいのかも知れません…が、作るの面倒くさそうですね😥

エンジンオプションThreadIdOffsetが適切に設定されてほしい

3990Xでの計測、ThreadIdOffsetをそれぞれのエンジンに対して適切に(PC全体として見たときのエンジンのスレッド番号みたいなのを)設定してやらなければならないと思うんですけど、この処理いりますね。

// やねうら王系とそうでないものとを戦わすことを考えると、エンジン選択の時に「やねうら王系」のチェックボックスもいる感じですかね。

対局結果にエンジン名と、EVAL名の出力が欲しい

TANUKICOLISEUM、exeパスと評価関数フォルダパス、末尾しか出てないので何と何を戦わせてるのかすらわかりません:disappointed_relieved:

対局結果に、エンジンに対してusiコマンドを投げた時に返ってきたエンジン名と、EVAL名の出力が欲しい感じです。

バージョンナンバーがウインドウのタイトルにほしい

誰かがたぬこの戦績をスクショで公開したときに、それが最新のたぬこであるかどうか判断つかないので、ウインドウのタイトルのところ、

TANUKICOLISEUM V1.02
のように バージョンナンバー的な何かが入っていてほしいです。

綴り難しすぎ

単語書き取り帳に1000回ぐらい書いてもcoliseumが綴れるようになる気が全くしません。

Colosseumのほうはかろうじて綴れます。普通、ローマ帝国時代のコロセウム(円形大演技場)は、後者の単語で綴るほうが多いように思います。

それで、いまさら名前を変更してほしいということではなく、愛称をつけてあげると良いのではないでしょうか。

私がつけて差し上げましょう。(勝手に)

愛称は、「たぬこ」です。

とっても可愛いですね!😍

LargePageを使わない

LargePage対応について、これをエンジンオプションでオフにできないと、自己対局のときに片側のエンジンだけLargePageを使うことがあって、不公平なのでエンジンオプションでオフにできるようにとの要望を、やねうら王のブログのコメントで頂戴致しました。

まあ、自己対局のときはオフにしておくのが無難かなと思いました。それで、↓のようにその機能を追加したので、やねうら王系のエンジンの場合、このオプションをfalseに設定していただけないでしょうか。
yaneurao/YaneuraOu@24613c7

記録が残ると嬉しいな

対局設定や対戦結果を保存したり再度読み込んだり出来れば部分的な変更で再戦したりするのに便利です。
また,WebなどにUpする際も画像ではない方が利用しやすいと思いますのでテキスト形式の保存なども有用かと思います。

加えて例外的かもしれませんが,戦型分類などを事後行うことを考えればフォルダなどを作成し棋譜を残すようなオプションもあると助かります。

コマンドラインオプションのパラメータ名の相違

コマンドラインオプションのパラメータ名が、TanukiColiseum/README.md で記載されているものと相違があるようです(ハイフンとアンダーライン、--engine1--engine1-file-path など)。また、GUIで設定項目が表示されている「開始手数」がコマンドライン版の説明には無く、代わりにコマンドライン版ではGUI版にはない --num-book-moves <num-book-moves> についての説明があるようです。

TanukiColiseum/README.md:

コマンドラインオプション

オプション 説明
--no_gui GUIを表示せずコンソール上で動きます。下記のオプションが利用可能です。
--engine1 作業フォルダから思考エンジン1への相対パス
--engine2 作業フォルダから思考エンジン2への相対パス
--eval1 作業フォルダから思考エンジン1に読み込ませる評価関数フォルダへのパス
--eval2 作業フォルダから思考エンジン1に読み込ませる評価関数フォルダへのパス
--num_concurrent_games 同自対局数(物理コア数い合わせることをおすすめします)
--num_games 合計対局数
--hash 置換表サイズ(単位はMB)
--time 思考時間(単位はミリ秒)
--num_numa_nodes NUMAノード数
--num_book_moves1 思考エンジン1で何手目まで定跡データベースを使用するか
--num_book_moves2 思考エンジン2で何手目まで定跡データベースを使用するか
--book_file_name1 思考エンジン1に使用する定跡データベースファイル名
--book_file_name2 思考エンジン2に使用する定跡データベースファイル名
--num_book_moves 互角の局面集の何手目から対局を開始するか

Commandline usage information:

Usage:
  TanukiColiseum [options]

Options:
  --engine1-file-path <engine1-file-path>                    engine1FilePath
  --engine2-file-path <engine2-file-path>                    engine2FilePath
  --eval1-folder-path <eval1-folder-path>                    eval1FolderPath
  --eval2-folder-path <eval2-folder-path>                    eval2FolderPath
  --num-concurrent-games <num-concurrent-games>              numConcurrentGames
  --num-games <num-games>                                    numGames
  --hash-mb <hash-mb>                                        hashMb
  --nodes1 <nodes1>                                          nodes1
  --nodes2 <nodes2>                                          nodes2
  --time1 <time1>                                            time1
  --time2 <time2>                                            time2
  --num-book-moves1 <num-book-moves1>                        numBookMoves1 [default: 0]
  --num-book-moves2 <num-book-moves2>                        numBookMoves2 [default: 0]
  --book-file-name1 <book-file-name1>                        bookFileName1 [default: no_book]
  --book-file-name2 <book-file-name2>                        bookFileName2 [default: no_book]
  --num-book-moves <num-book-moves>                          numBookMoves [default: 0]
  --sfen-file-path <sfen-file-path>                          sfenFilePath [default: records2016_10818.sfen]
  --num-numa-nodes <num-numa-nodes>                          numNumaNodes [default: 1]
  --progress-interval-ms <progress-interval-ms>              progressIntervalMs [default: 3600000]
  --num-threads1 <num-threads1>                              numThreads1 [default: 1]
  --num-threads2 <num-threads2>                              numThreads2 [default: 1]
  --book-eval-diff1 <book-eval-diff1>                        bookEvalDiff1 [default: 30]
  --book-eval-diff2 <book-eval-diff2>                        bookEvalDiff2 [default: 30]
  --consider-book-move-count1 <consider-book-move-count1>    considerBookMoveCount1 [default: false]
  --consider-book-move-count2 <consider-book-move-count2>    considerBookMoveCount2 [default: false]
  --ignore-book-ply1 <ignore-book-ply1>                      ignoreBookPly1 [default: false]
  --ignore-book-ply2 <ignore-book-ply2>                      ignoreBookPly2 [default: false]
  --gui                                                      gui [default: True]
  --version                                                  Show version information
  -?, -h, --help                                             Show help and usage information

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.