最新 追記

(元)駒得少年の冒険

rating
(GPS将棋開発参加記録)
2004|12|
2005|01|02|03|04|05|06|07|08|09|10|11|
2006|01|04|05|06|07|08|09|10|
2007|02|04|05|08|10|11|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|
2011|01|03|04|05|06|07|11|12|
2012|01|03|04|05|

2009-02-01

_ CSA選手権の参加資格についての希望メモ

まとまってませんが、今の感じ方をメモしておきます。
  • オリジナリティには強さは含めない方が無難なような。例えば、モンテカルロ将棋+Bonanza評価関数とかは弱くても選手権に参加できてほしいな、と。
  • そもそもライブラリ委員会が弱いものだけ認可していれば面倒はないはずなので、運営に自信があるのかな?
  • 個人的には、指し手が同じプログラムが沢山参加していると気になるかも。逆に、それぞれ個性というか棋風が違ううちは中身の審査は特にしなくても良いような。
  • 昔int max(int,int); という関数すら他のプログラムと共通であってはならないという主張も耳にしたけど、将棋に関係ない(2/2 関係ないというと不正確ですが、将棋以外でも広く使われているという意図です)ライブラリは自由に使える現実的な路線はぜひこのままで。
本日のツッコミ(全2件) [ツッコミを入れる]

_ うさぴょんの育ての親 [CSAの公式見解ではないのですが。 ・オリジナリティに『強さ』は含めるつもりはないかと。私がわかりやすい例として、『..]

_ kaneko [コメントありがとうございます。 2番目は、問題が無さそうならgpsも自主規制:)を外して、gps_lの評価関数データ..]

[]

2009-02-13

_ Bonanzaの探索時間の制御方法のメモ

軽く読んだので紹介します。craftyと大枠は対応しているので、craftyを読んだ経験があれば容易に読めると思います。

  1. 思考時間の割り当て
    set_search_limit_time (time.c) で、手数に応じて、time_limitとtime_max_limitを割り当てる。基本的に前者の5倍が後者。
    craftyではTimeSet (time.c) に同様の関数があるが、少なくとも固定持時間に関してはbonanzaの方が凝っている。
  2. 打ち切り判定
    detect_signals (search.c) で時計をみて探索を止めるかどうかを決める。tcountが使った時間、tlimitとtmax が微調整したtime_limitとtime_max_limitで、終了条件は、
    1. tcount がtmax を越える
    2. stable && tcount > tlimit
    3. stable && (tmax_limit_count*3U<(time_last_search-time_start)*5U))
    4. stable && easy_abs > abs( last_value ) && easy_min > last_value - easy_value && easy_max > last_value - easy_value ) かつさらに条件
    stableの条件は
    • tlimit != UINT_MAX && (
      • ( root_alpha == root_value && ! root_nfail_low ) ||
      • last_pv.type == four_fold_rep ||
      • ( root_nfail_high && root_value + MT_CAP_DRAGON/8 >= last_value ) ) );
    (fail high/low は root でaspiration 探索をしている => iterate.c)。
    craftyの場合は TimeCheck (time.c) で同様の判定をしている。
  3. easy 関係 (当然と思われる手は浅い読みで指してしまう)
    make_root_move_list (=> root.c) rootで指し手を作った時に、各指手について静止探索を呼び値(asort[i])をつける。
    • ( asort[0] > asort[1] + ( MT_CAP_DRAGON * 3 ) / 8 )
    • ( asort[0] > asort[1] + ( MT_CAP_DRAGON * 2 ) / 8 )
    • ( asort[0] > asort[1] + MT_CAP_DRAGON / 8 && asort[0] > - MT_CAP_DRAGON / 8 && I2From(pmove[0]) < nsquare )
    の場合に、上記2-4.の判定を有効にする。3番目には、形勢がそれほど悪くなく(さらに駒打ちでない時?)という条件が入っていて興味深い。
    craftyの場合はRootMoveList (root.c)に同様のものがあるが、easyの判定はbonanzaの方がずっと凝っている。

_ Bonanzaの探索時間の制御感想

経過時間を見ることで、序盤は流して中盤に時間をかけることを実現しているようです。進行度を持っているプログラムは、進行度が使えるかもしれません。

難しそうな局面で時間をきちんと使っているようにみえるのは、stableやeasyの判定の効果でしょうね。パラメータが色々あるので、どのように決めたのか興味深いです。

ソースコードが綺麗で読みやすいです。

GPS将棋もそろそろ時間制御を頑張ると効果がでるのかも。

_ コンピュータ将棋同士の棋譜の類似性

コンピュータ将棋スレッドを見ていたら、gps_lはbonanza 1.2 と似ているというデータを見かけました。残念ながらその後特には盛り上がっていないようですが、コンピュータ将棋同士の棋譜の一致率の大規模な調査はまだ行われていないと思うので、統計データをとれると興味深いと思います。たとえば、仮説として学習で評価関数を作っているプログラム同士はそうでないプログラム同士よりも似ているか、とか、一致しなかった局面にそれぞれの個性は現れるか? (例えばBonanza4は3駒の関係が重要な局面で、gps_lは利きが重要な局面で評価が変わるとか)、色々調べてみたいことがありそうです。類似性に意味を持たせるためにはどのプログラムも一致率が高い局面は除いた方が良いでしょうが、定跡や詰み以外でそのような基準を作れるかどうかも面白そうですね。

ところで、gps_lには飛車や角を切るのが大好きな印象を持っているのでbonanza 1.2と似ていると聞くとある程度なるほどと思います。floodgateのBonanzaはBonanza4とピッタリ一致するわけではなさそうだとか、十分な量のデータがない段階でも、あれこれ想像して楽しめそうです。

[]

2009-02-15

_ 評価値送信の微調整

gps将棋は合法手が一手しかない局面では探索しないで指しています。その際に今まではその手の評価値0をとしてサーバに伝えていましたが、そのような局面では評価値を送らないよう先ほど変更しました。評価値でグラフを描く際に0と扱うよりその手を飛ばした方が良いという、考えてみれば当たり前の話ですが指摘をいただくまで気づきませんでした。なお、gps_lだけは事情でもう少し後の更新になります。

(追記: なんかバグってますね。shogi-serverのバグのようです。読み筋を送っていない指手について変な読み筋がついてしまっています。http://wdoor.c.u-tokyo.ac.jp/shogi/logs/LATEST//2009/02/15/wdoor+floodgate-900-0+Bonanza+gps_normal+20090215200002.csa とか。)

(追記2: さっそく直してもらったので、wdoorのshogi-serverをいずれ再起動します。後日、予定を決めてアナウンスします。)

[]

2009-02-16

_ shogi-server@wdoor再起動(予定)

明日、2月17日(火)の11:00-13:00の間のどこかで、wdoorで運用中のshogi-serverを再起動します。棋譜の書式間違いと、読筋記録についての二つの不具合が直る予定です。

(2/17追記 11:00頃再起動しました。11:30現在うまく動いているように見えますが、不具合がありましたらお知らせください。)

[]

2009-02-18

_ shogi-server@wdoor再起動

昨日再起動したばかりですが、今朝wdoorのディスクが溢れて運用中のshogi-serverが異常状態になったため、再び再起動しました。抜本的な対策を取りましたので今後は問題ないと思います。これまでも同様のことがたまに起きては対策してきていますが、今回は空き領域を90倍程度にできたのでかなり安全になったと思います。

[]

2009-02-21 floodgate1周年

_ floodgate1周年

コンピュータ将棋の連続対局企画のfloodgate@wdoorがいつのまにか1周年を迎えていました。記録によると、昨年の2月9日に始まったようです。これまで沢山のプログラムの参加を得て有意義な企画になっていると思います。参戦されている方々、観戦プログラムを書いていただいている方々、blog等で取り上げていただいた方々に感謝いたします。

_ 人間プレイヤの参加

CSA00001こと山田@CSAさんをはじめ、何人かの方々がfloodgateで指されてます。過去には ningen, imaiと言った方々も指されていました。データが混ざるといった心配は特にありませんので、指していただけると嬉しいです。(名前に_humanをつけていただいたりblog等で表明していただければデータ処理の際に特別扱いすることもできますし、そもそも他のプログラムが本当にコンピュータかどうかも保証がないという側面もあります) 脱線すると、名前を_advancedにしてアドバンスト将棋で参加するというのも面白いかもしれませんね。

将来人数が増えた場合は_human同士が当たらないようになるべく試合を組む等、運営側でサポートするべきことがありそうに感じています。あとは、人間が指しながら形勢判断を送れるクライアントがあると、観戦者がより楽しいかもしれません。

_ gps_normal 10000勝

先ほど統計を見たところgps_normalが先手で5265勝、後手で5261勝をあげて10000勝を達成していました。Bonanzaとbingoの追い上げの中、何ヶ月か先に指し始めたという貯金をなんとか守って達成できたようです。

Bonanza (先) 4831勝1289敗 78.94% (後) 4740勝1295敗 78.54%

bingo (先) 4242勝1838敗 69.77% (後) 4021勝1980敗 67.01%

gps_normal (先) 5265勝3114敗 62.84% (後) 5261勝3481敗 60.18%

この1万勝という単位はコンピュータならではかと当初は考えていたのですが、この記事によるとそれ以上に勝たれている方もいらっしゃるようです。驚きました。

本日のツッコミ(全9件) [ツッコミを入れる]

Before...

_ 柿木 [1万勝は、凄いですね。 人間の参加は、僕も歓迎です。 floodgate の上位には、さすがに山田さんも苦労してい..]

_ kaneko [みなさま 短時間でどんな紹介をするとご要望にお応えできるか何か考えてみます。 保木さんがいらっしゃるなら、Bonan..]

_ 山田 剛@CSA [>保木さんがいらっしゃるなら、Bonanza読み会の方が需要が高いのではないかとも思うのですが:-) > 山田さん ..]

[]


  1. 山田 剛@CSA (02-23)
  2. kaneko (02-23)
  3. 柿木 (02-23)