« 第17回コンピュータ将棋選手権のうさぴょんの戦いっぷり総括 | トップページ | ねこにゃにバグ発見ー。 »

2007年5月16日 (水)

囲碁ソフト開発中…

予告通り、囲碁ソフト「ねこにゃ」開発中です。

まずは、シンプルに、純碁ルールベースでモンテカルロ碁を実装してみていますが…。

…遅い(苦笑)。9路でも話にならないような遅さです。まぁ、この辺はまだ何も工夫をしていないのでいいかなぁ。真面目に最適化するとしたら、どういう構造がいいんだろうとか、頭の痛いことは沢山ありますが(--;

で、純碁ベースなので、自陣に石を打つのが大好き(苦笑)。

というか、そもそも自陣を2眼を残して埋め尽くすまで、終局しないんですよねー…。

いやー…ここから19路を打てるようにするとか、自陣に不必要に手を入れないようにするとか、地を数えられるようにするとか…考え始めると、色々課題が大きいですねぇ(--;

純碁→日本ルールの隔たりなんて、そんなにないんじゃないかと思ってましたが、思いの外壁が厚いようです…。

まぁ、こうやってぶちぶち書いていると、いきなり目の前がクリアになる瞬間がやってきたりするわけですけれど。<そんなわけでぶちぶち書いてます(w。

|

「ねこにゃ」開発」カテゴリの記事

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/148072/15096114

この記事へのトラックバック一覧です: 囲碁ソフト開発中…:

» 自作の詰将棋(その2)です。 [将棋(詰将棋)とか競艇とか法律とか囲碁とかホークスとか。]
この詰将棋を解いた人はコメントください☆ 実は、囲碁にも興味があるので、いつか [続きを読む]

受信: 2007年5月17日 (木) 20時35分

コメント

やはりまずはモンテカルロですか。
自分は終盤のヨセをモンテカルロでやろうかと思ったんですが、
やっぱり日本ルールがそれを邪魔するんですよねぇ…。
岐阜チャレンジで中国ルールが採用されない限り、
単純モンテカルロの出番は無さそうです(笑)
Mogoとかは上手くやってるんだろうなぁ…。

投稿 中尾@大碁算 | 2007年5月16日 (水) 23時48分

実は、お師匠様(勝也の作者の清さん)に、日本ルールへの対応方法は聞いたのですが、ハードルが高い&重そう、で手を付けてません(苦笑)。
簡単に聞いた範囲では、結局、(確定した)自陣とみなしている領域には打たない、というようなヒューリスティックスを入れるしかないみたいですね…。
また、19路では、パターンDBとの組み合わせで、パターンにある手だけ打つなどの方法を行っているようで、純粋に全幅探索というわけではないようです。(終盤はパターンDBを外すとかしてるかも?)

投稿 うさぴょんの育ての親 | 2007年5月17日 (木) 07時19分

>>うさ親さん
情報ありがとうございます。

>ヒューリスティックスを入れるしかないみたいですね…。
これは確かにハードル高そうですね(笑)
こちらでも少し調べてみます。
当たり前ですがモンテカルロもそこそこ精度を良くするためには結構な手間がかかるようですね。
モンテカルロの考え方はシンプルで好きなんですけどねぇ…。

投稿 中尾@大碁算 | 2007年5月18日 (金) 04時01分

とりあえず6月から開始します。
UI は 勝也GUI でなく cgfgoban にしようかと思っています。
最初なのでモンテカルロを使わずに(というか天邪鬼なので流行りモノには背を向けて)、コンピュータ囲碁の入門を参考にやっていこうかと。
(あとは I/O の連載とか)

投稿 かず | 2007年5月21日 (月) 02時17分

えー?囲碁ソフト??もう動くんですか?動くんですか?
うううううううらやましい・・・っ。

投稿 丸電 | 2007年5月21日 (月) 18時15分

>丸電さん
動くような動かないような(苦笑)。

囲碁は出来ません(w。
純碁なら出来ます。

というレベルかなぁ。

そして、本文にも書いてあるように、思っていた以上に壁が厚いです>囲碁と純碁の差。

投稿 うさぴょんの育ての親 | 2007年5月22日 (火) 00時32分

こんにちは、
本日から将棋を作り始めました。
まずは、昔作ったオセロのソースから将棋に改変しようとしています。
VS2005のVC++は型がうるさくて今日一日やっていましたが、
未だにオセロのコンパイラが通りません。
まずは自己流から始めてみます。

投稿 いしざき | 2007年5月22日 (火) 17時23分

VS2005のVC++は型がうるさいと言うよりも、変数のスコープが変わってた(標準C++と同じになった)ことで「ハマッタ」記憶が…。

投稿 うさぴょんの育ての親 | 2007年5月22日 (火) 18時08分

変数のスコープって for などのでしょうか?
VS2005 ならオプションで従来互換にできると思いますが・・・。
れさぴょんなら VC/BCC/GCC で確認しているから大丈夫ですねよ。
(gcc でも -fno-for-scope で変更できますが)

それとも別のスコープでしょうか? (わかりませんが namespace とか?)

投稿 かず | 2007年5月24日 (木) 12時24分

はい、forやwhileのスコープです。
れさぴょんは気を付けて書いたので大丈夫なのですが、うさぴょんは全くダメなのです(苦笑)。大分書き直した覚えがあります。
64ビット化の関係でインラインアセンブラで書いてたところも動きませんし、strxxx系の関数も警告が山盛りでますし、そんな感じです。
CSA将棋の64ビットバージョンを書く時も「…面倒くさい…」と思った記憶がありますね。

うさぴょんのUIも、コンパイルは通ったけれど変数のスコープの問題で「正常に動かない」攻撃を食らいましたし。

なお、従来互換にするオプションは…知りませんでした(苦笑)。

投稿 うさぴょんの育ての親 | 2007年5月24日 (木) 12時49分

インラインアセンブラはしょうがないですが、CSA 将棋64bit版はわりとあっさりできましたと思います。
よく覚えていませんが、警告内容に何かを定義したら無視してくれるとか出ていて、プロジェクトにそれを追加したら若干の問題はありましたが、面倒くさくなるほど問題は出なかったかと。

投稿 かず | 2007年5月24日 (木) 18時05分

えーと、CSA将棋ですが、私の手元にあったソースが、VisualStudio2005でのコンパイルエラーを回避するために、strxxx系の関数がわざわざアセンブラか何かで再定義して、STRXXXのように書いてあったような記憶が。
それを元の関数…strxxxに全置換して、strxxx系の関数で長さを指定しないモノに対しての警告を出さないオプションでコンパイル、とか、で通った記憶はあるんですが…いや、何かこう、遠回りしてるなぁという印象が強くて。

うさぴょんのUIは…コンパイルを通すのにマジで泣きが入りました(--;
こういう間抜けなループがあったりしたので…


for(int i=0;i<xx;i++) {
for(int j=0;j<yy;j++) {
for(int i=0;i<zz;i++) [
if (何かの条件) {
break;
}
}
if (i==yy) { ← このiはどのi?
何かの処理
}
}
}

…コンパイルは通るのですが、動作が変、ということで、泣きが入りました(苦笑)。

投稿 うさぴょんの育ての親 | 2007年5月25日 (金) 01時50分

コメントを書く