囲碁
囲碁
とりあえずプログラム関連のメモを書くので技術的なメモから。
雑多なリンク
- パオ碁
- 囲碁エンジン評価
- GNU Go - GNU Project - Free Software Foundation (FSF)
- Go-Up! - 初心者向け 囲碁対局Webアプリ
- Fuego
- ligi/gobandroid: A Goban for Android 昔のAndroid用。結構大掛かりでGnuGoとかをプラグインとして組み込めそう
- icehong/gobandroid: A Goban for Android 一応まぁまぁ最近のASでビルドしたっぽいfork、PR用に作られていて放置されている
- lightvector/KataGo: GTP engine and self-play learning in Go
- BadukAI Android用のアプリでkatagoやleelazeroが動くらしい。これでいいのかもしれない。でもソースは無さそう。
- featurecat/lizzie: Lizzie - Leela Zero Interface Javaで書かれたleela zeroのGUIクライアント。これの移植をベースにしたいかもしれない。
- pasky/michi: Minimalistic Go MCTS Engine めちゃ小さいpython実装のMCTSエンジン。移植も出来そう。
- Sabaki/docs/guides/engines.md at master · SabakiHQ/Sabaki Sabaikiのエンジンの所にいろんなエンジンへのリンクがある。
- sanderland/katrain: Improve your Baduk skills by training with KataGo!
- breakwa11/GoAIRatings: Estimate Go AI ratings by real games 囲碁エンジンのレートなど
GnuGo 2.6
GnuGoの3系列は強すぎる。2系列は少し弱いらしいのだが、かなり古いのでビルドなどに多少手直しがいる(GTPサポートも無い)
ということで多少手直しして触ってみる。
GNU Go - GNU Project - Free Software Foundation (FSF)
追記: 以下はバグってた。-D 0でもamigoより強いし、-D 2と自分が同じくらい。(修行lv 3と同じか少し強いくらい)
2.6のコードをちょっといじってビルドを通し、ちょっといじってgtp対応してみる。 amigoよりも強いが、-D 3だとamigoに負ける。
そしてgnugo 2.6のD 4だと自分とだいたい五分くらいだ。たまに待ったすれば勝てるくらい。修行の3はこっちの方が近いかも。
いい感じになったので公開。
karino2/GnuGo2Fork: Fork for gnugo 2.6.
翌日試したらDを一つ間違っている気がする。D 2だとamigoといい勝負、D 3だと勝つ。D 3だと自分は勝てない。
さらに調べていて、どうも二回目以降はいろいろ前の状態を引き継いでバグっていた。 修正したらgnugo3とfinal_scoreが一致するようになった。
直したらD1でもamigoに負けなくなった…うーん、ちょっと強すぎるな。
AmigoGtp
手頃な弱さの囲碁エンジンを探していて、AmigoGtpというものを知る。 ビルドして触ってみるとGnuGo 2.6より一回りくらい弱い感じで、初心者でも勝てるがランダムという感じでもなく割といい相手。
オリジナルはSourceforgeだが、GithubでMacのビルドをして公開しておく。そのうちNDK対応したい。
karino2/AmigoGtpFork: Fork of AmigoGtp.
Ray
breakwa11/GoAIRatings: Estimate Go AI ratings by real gamesで、AmiGoとGnuGoの間で何か無いかなぁ、と眺めていたら、Rayの0.1kが6級相当でちょうど間くらいらしい。 Rayは上は2段くらいまで載っているので、かなり幅広く強さを調整出来そう。
kobanium/Ray: Computer go engine using Monte-Carlo Tree Search (MCTS)
ビルドはselectが無いと言われたくらいでincludeを足せば通った。 ただuctというのが30MBくらいあってまぁまぁでかい。
まぁいいか、と進めようと思ったが、よくみるとAIRatingsの方はニューラルネットのforkっぽいな。
とりあえずせっかくビルドしたのでRayを試してみるか。
パオ碁
自分用のAndroid版の囲碁アプリを書くことにする。