Code Monkey home page Code Monkey logo

fujigokorouecda's Introduction

This program was dedicated to MK, a gentle wind to me.

コンピュータ大貧民プログラム FujiGokoro (藤心)

UECコンピュータ大貧民大会(UECda)ルール・プロトコルに準拠した大富豪(大貧民)の思考プログラムです。

Daifugo Program for UEC Computer Daihinmin Contest (UECda)

UECda2014, 2015, 2016, 2017 無差別級で優勝しています。

2016/5/19深夜放送の日本テレビ系「変ラボ」にてタレントの手越祐也さんと対決させていただきました。

使用方法

git clone https://github.com/YuriCat/FujiGokoroUECda
cd FujiGokoroUECda

(この際、パラメータファイルがGit-LFS経由でparam/下にダウンロードされたことをご確認ください)

make -j4

でビルドし、

./out/server -g 100 &

./out/client &
./out/client &
./out/client &
./out/client &
./out/client &

のように5体の自己対戦を行うことができます。

./out/server -g 100 -bc -l tmp.dat

としてサーバーを起動すると試合内容をコンソールで表示し、tmp.datに棋譜を保存することができます。

注意

過去に大会出場したバージョンは

http://www.tnlab.inf.uec.ac.jp/daihinmin/2023/download.html

からダウンロードできます。

こちらは開発版なので、弱かったり大会の時間制限を満たしていないことがあります。

ルール等 公式のドキュメント

http://www.tnlab.inf.uec.ac.jp/daihinmin/2023/document.html

大会での利用について

コンピュータ大貧民大会では基本的に公開されている過去の出場プログラムを自由に改変して出場可能のはずですが、

特に私の製作プログラムについては、こちらの開発版コードの利用しての出場も許可します。

(出場申し込みの際に、コード利用の旨を運営方に伝えたほうがよいかとは思います)

fujigokorouecda's People

Contributors

yuricat avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

cllightz

fujigokorouecda's Issues

学習時に読み込んだ棋譜でメモリオーバーにならないようにする

1500万試合弱で16GBを超えて動かせなくなったので、

  • 棋譜の省メモリ化
    または
  • 棋譜を使用時に読み込むようにする

前者は、moveとtimeを16ビットにするなどして構造体を半分くらいにできる、
あとは試合棋譜を連続試合ごとではなく全体で1つの配列に収めればもっと効率は上がる

棋譜のファイルからの読み込みは現状高速にはしていないし、
1試合ごとに細切れで無いので色々無駄が多いので使用時読み込みはすぐにはできない

学習用に一回新しいバイナリに落とすか?

READMEの記述とGPL3ライセンスの矛盾

READMEに

ただし、大会出場以外での利用は要相談でお願い致します。

とありますがGPL-3と矛盾した内容に思えますがどういう意図でしょうか?

任意の棋譜から着手決定できるようにする

現状態の局面表現と棋譜を分けて持っていたが、
デバッグやテストのため棋譜ベースで思考開始できるようにしたい

ただしサーバーの試合進行等バグにはまらないように
いちおう現状態も別に進行させておく必要があるか

合法手生成等いじって方策プレイが弱くなった原因を調べる

少なくとも方策単体では弱くなっているみたい
生成される着手が減った影響か、他の原因か

色々書き換え前
--------- total point
296832 (2.968) 0.piccoloGlcn
295596 (2.956) 1.piccoloGlcn
308827 (3.088) 2.kleinBlauw
299736 (2.997) 3.piccoloGlcn
299009 (2.990) 4.piccoloGlcn
kleinBlauw Change Time : 4385101 micsec / Play Time : 190436069 micsec
average of card strength: 5.706775
average of shibari: 0.158476
average of fukusuu(done/chance): 0.330933
average of kaidan(done/chance): 0.058891
average of joker turn: 40
average of 8giri turn: 47
average of spe3: 1774
average of kakumei: 3496

書き換え後
--------- total point
300367 (3.004) 0.piccoloGlcn
299681 (2.997) 1.piccoloGlcn
300311 (3.003) 2.kleinBlauw
299982 (3.000) 3.piccoloGlcn
299659 (2.997) 4.piccoloGlcn
kleinBlauw Change Time : 3029925 micsec / Play Time : 151011407 micsec
average of card strength: 5.557445
average of shibari: 0.164093
average of fukusuu(done/chance): 0.326414
average of kaidan(done/chance): 0.059387
average of joker turn: 41
average of 8giri turn: 47
average of spe3: 1787
average of kakumei: 3191

パーツの性能評価等test/下の実行ファイル統一すれば?

引数とかログ読みとかの共通の処理を毎回書くのは地味に面倒なので、
諸々の実行ファイルをまとめてもいいのでは?
gitベースならビルドできない状態が残ることはあまりなさそうだし、
引数によるパラメータ設定も現状の方式だと全部のファイルに書く必要が出て無駄

世界生成の構造化

今の世界生成が全く確率に従っていないので、
尤度計算ベースにしたい

あと終盤や流した後の世界作成において前の結果を再利用したい

学習並列化とエポックの定義変更

パラメータ数が増えたので、学習前の特徴量解析+ パラメータ更新を並列化しないと遅い

あと棋譜数が増えたので、データ全体を見るのを1エポックとして制御する必要はないのでそこも柔軟に変更する

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.