nodchip / tanukicoliseum Goto Github PK
View Code? Open in Web Editor NEWコンピュータ将棋USIエンジン自己対戦ソフトウェア
License: GNU General Public License v3.0
コンピュータ将棋USIエンジン自己対戦ソフトウェア
License: GNU General Public License v3.0
LargePage対応について、これをエンジンオプションでオフにできないと、自己対局のときに片側のエンジンだけLargePageを使うことがあって、不公平なのでエンジンオプションでオフにできるようにとの要望を、やねうら王のブログのコメントで頂戴致しました。
まあ、自己対局のときはオフにしておくのが無難かなと思いました。それで、↓のようにその機能を追加したので、やねうら王系のエンジンの場合、このオプションをfalseに設定していただけないでしょうか。
yaneurao/YaneuraOu@24613c7
isreadyを送らないとやねうら王系では置換表がクリアされないので対局を繰り返すうちに置換表が汚れて、それのせいで弱くなるです😥
対局設定や対戦結果を保存したり再度読み込んだり出来れば部分的な変更で再戦したりするのに便利です。
また,WebなどにUpする際も画像ではない方が利用しやすいと思いますのでテキスト形式の保存なども有用かと思います。
加えて例外的かもしれませんが,戦型分類などを事後行うことを考えればフォルダなどを作成し棋譜を残すようなオプションもあると助かります。
計測結果、テキストで掲示板等に貼り付ける人は少なくて、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」のように自由に変更できて、評価関数は、その表示名でドロップダウンリストから選べるといいのかも知れません…が、作るの面倒くさそうですね😥
誰かがたぬこの戦績をスクショで公開したときに、それが最新のたぬこであるかどうか判断つかないので、ウインドウのタイトルのところ、
TANUKICOLISEUM V1.02
のように バージョンナンバー的な何かが入っていてほしいです。
たぬころ内では、Engine.csにて、private const int MaxMoves = 320;
と定義する一方、
エンジン側には、Coliseum.csにて、{"MaxMovesToDraw", "256"}
を送っているため、
256手目付近からの挙動に問題が起こるようです。
一旦、どちらか(個人的には320手が好み)で統一した上で、
機会があれば、MaxMovesToDrawとResignValueを、ユーザー側で設定できるようにしてはいかがでしょうか。
https://github.com/nodchip/TanukiColiseum/blob/master/TanukiColiseum/MainModel.cs#L115
固定文字列 "TanukiColiseum.setting.xml"
のディレクトリを作成しようとしているようですが、この文字列からではディレクトリ名が含まれていないため、ディレクトリの作成に失敗して測定開始時に例外エラーが発生するようです。
単語書き取り帳に1000回ぐらい書いてもcoliseumが綴れるようになる気が全くしません。
Colosseumのほうはかろうじて綴れます。普通、ローマ帝国時代のコロセウム(円形大演技場)は、後者の単語で綴るほうが多いように思います。
それで、いまさら名前を変更してほしいということではなく、愛称をつけてあげると良いのではないでしょうか。
私がつけて差し上げましょう。(勝手に)
愛称は、「たぬこ」です。
とっても可愛いですね!😍
現在の実装では、最大手数まで延々と同じ手を繰り返してしまう。千日手判定を実装し、即座に対局を終了できるようにする。
測定開始時に自動保存される TanukiColiseum.setting.xml
が何らかの原因で壊れていると(例:ファイルが空)、次回からGUIが起動できなくなるようです。
やねうら王は詰みの局面に対し、 "mate -0" を返す。手数が分からない罪の場合 "mate -" を返す。
将棋所:USIプロトコルとは http://shogidokoro.starfree.jp/usi.html
コマンドラインオプションのパラメータ名が、TanukiColiseum/README.md で記載されているものと相違があるようです(ハイフンとアンダーライン、--engine1
と --engine1-file-path
など)。また、GUIで設定項目が表示されている「開始手数」がコマンドライン版の説明には無く、代わりにコマンドライン版ではGUI版にはない --num-book-moves <num-book-moves>
についての説明があるようです。
コマンドラインオプション
オプション 説明 --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 互角の局面集の何手目から対局を開始するか
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
halfKPE9、評価関数だけで600MB程度消費するのですけど、皆さん、tournamentビルドで棋力計測されているようです。そうすると、EvalHashが1024がデフォルト値なので、USI_Hash 128MBだとしても、エンジン本体が2GBほど消費します。
これを3990Xで1スレッド128並列で対局させるとエンジンだけで12822 = 512GB必要でOSやら何やらで530GBぐらいのメモリがないといけないことになります。
3990Xが普通になってきたこの時代、わりと簡単に上のように棋力計測で物理メモリをうっかり使い切ってしまうことは珍しくもなく、論理スレッド数いっぱいまで使っているとタスクマネージャーを開くのもままならないので、物理メモリが残り何%であるかぐらいは表示があってほしい気はします。(残り少ないときは、それが赤い文字になるとかも)
TANUKICOLISEUM、exeパスと評価関数フォルダパス、末尾しか出てないので何と何を戦わせてるのかすらわかりません:disappointed_relieved:
対局結果に、エンジンに対してusiコマンドを投げた時に返ってきたエンジン名と、EVAL名の出力が欲しい感じです。
3990Xでの計測、ThreadIdOffsetをそれぞれのエンジンに対して適切に(PC全体として見たときのエンジンのスレッド番号みたいなのを)設定してやらなければならないと思うんですけど、この処理いりますね。
// やねうら王系とそうでないものとを戦わすことを考えると、エンジン選択の時に「やねうら王系」のチェックボックスもいる感じですかね。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.