sakurapyon’s blog

sakurapyon’s blog

2012-01-01から1年間の記事一覧

一手詰を考える(銀による不成移動王手)

たぶん車輪の再発明だけど、メモしておく。一手詰で銀により不成移動王手する場合。 1. 玉の上側三箇所に銀が移動して王手する場合、銀成王手で詰まないなら不成でも詰まない。 この場合不成王手を削減でき、不成で王手するのは玉の斜め後ろに限る。 (NHK将…

クマ将棋の指し手生成

【将棋】指手を生成するコードを生成するコード2 - スズメレンダラー・クマ将棋の開発日記に、指し手生成のコードの高速化手法が書かれている。面白い!Lispを使ってプログラムの動的生成をやったことがあるけど、C++ でやるのが面白いと思う。 sakurapyon …

3手詰入れてみました

以前、中途半端に手をつけて放置していた簡易3手詰めを入れて、ついでに王手関連を修正した版を 021kpp として投入しました。3手詰は無駄合処理はしてない手抜き版です。 動かしてる環境は、例によって Bonanzaのfv.bin + bitboard + さくらのvpsのうち1スレ…

王手延長のその先は(2)

承前。ということで、2手前が王手であるような局面の処理を少し変更してみた。前回の考察とは逆に「2手前が王手であるような局面では、futility cut しない」というのを試している。 次の一手問題を解かせると、大駒を切って必至になるような局面で正解が出…

王手延長のその先は?

コンピュータ将棋リンリン開発日記さんのところで手生成の話をいろいろされてて、触発されたので少し探索をいじっています。 王手をかけられた場合、1手延長するというのは多くのソフトで行われているんだけど、延長した場合としない場合で探索方法は一緒で…

sakurapyon-2012-depth2.2

pishogiさんが居なくなってfloodgateの下のほうが寂しいので、sakurayon-2012-depth2とdepth2.2を常駐させています。 depth2 は探索深さ2(+静止探索8)、depth2.2 は探索深さ2(+静止探索2)です。さすがに弱いというか、意外に強いというか。 最初はsakurapyon…

sakurapyon-2012-depthN

sakurapyon-2012.015kpp を使って、探索深さを制限したらどれぐらい弱くなるのかを試しています。 探索部はαβ 静止探索 8手(+delta pruning) 王手延長・簡易一手詰あり という実装なので、深さ3でも7手詰ぐらいは解いてきます。fv.bin のおかげか、意外に強…

HIKARI_JavaScriptShogiさん

先週あたりから参戦しておられる新人さん。名前の通り JavaScriptで書かれているんでしょうね。勝てそうな対局を投了してたりするので(バグ?)、まだ実力は未知数です。何手ぐらい読んでいるんだろうな。ながとさんのHaskell将棋のように選手権に参加され…

成っても良さそうな局面で不成が指される場合

取らない手である 指した直後に取り返されるので成でも不成でも同じ評価値 成る手のうちSEE 上記の処理を仮定すると… 成りは Bad captures 扱いなので順序が後ろになり、不成は Non captures なので、成りよりも早く処理されることになりますね。もしこれを…

一手詰は何のためにあるのか2

先のエントリ「一手詰めは何のためにあるのか」にかずさんからコメントをいただいた。コメント欄で返事を書いていたら長くなりそうだったのでエントリを別に起こすことにします。かずさんのコメントは処理時間との兼ね合いで元が取れてるかどうか?という話…

一手詰めは何のためにあるのか

一手詰めのバグをチェックするために探索中の情報を表示させて見比べてわかったんだけど、「一手詰は詰のためにある」と思ってたのは認識不足だったようだ。確かに、一手詰を入れると入れる前よりも手数の長い詰みが読めるようになったり、詰めろをかけて勝…

評価値の異常な変化にバグがひそむ

SHEK絡みで評価値がぶれる場合もあるんだけど、そうじゃないときはバグかとんでもない読みぬけがあることが多い。 http://wdoor.c.u-tokyo.ac.jp/shogi/view/2012/06/09/wdoor+floodgate-900-0+bingo+sakurapyon-2012-0.015kpp+20120609043005.csa 90手目付…

bitboard版が ようやく配列版(れさぴょん改造版)に並んだかも

sakurapyon-2012.015kpp は bitboard + bonanza6のfv.bin sakurapyon-2012.015kkp は bitboard + bonanza6のfv.binからKKPを抜き出したもの sakurapypn-44 は 配列版 + bonanza6のfv.binからKKPを抜き出したもの KKP版同士のレーティングがようやく並びまし…

floodgate対局手合い考察

floodgateでは下記の方式にて手合いが付けられている。 floodgate shogi programming journal (2008-05-14) ・勝ち同士 レーティングにrandom(800)を加えてsortして、順に組み合わせる。 ただし、レーティング0の新規参加者はrandom(800)に代えてrandom(2500…

6月になってfloodgate新人さんが増えた

なんでだろ?ボーナスシーズン? なんにせよプレイヤーが増えるのは嬉しい。mumuファミリーは無明さんだろうか? Serinaさん強いなあ Seria rdfi (お久しぶりです) vps_mc Caffia mumu_jam_nana rgm_003 bonta chienowa(お久しぶりです) 追記:コメントい…

floodgateレーティングとアルゴリズム

以前も書いたけど、にちゃんねるにあった下記発言。かなり合ってると思う。このRにならない場合はバグか妙に遅い部分があると思っていいかも……ということで、sakurapyon-2012.014kppはたぶんどっかバグってる、と思う。それから、KKP版のsakurapyon-44とsak…

sakurapyon-2012-0.014kkp vs. rgm_003 (2012-06-05 20:30) 後手:rgm_003 後手の持駒: 歩二 9 8 7 6 5 4 3 2 1 +---------------------------+ | 馬 ・ ・ ・ ・ ・v玉v桂v香|一 | ・ ・ ・v飛 ・ ・v金 ・ ・|二 |v歩 ・v歩 ・v歩v金 ・v歩 ・|…

カウンター手 再考

Mate Killerの考察からすると、カウンター手も単にただやんキラーとして有効なだけなのかも?と思ったので、ちょっと実験してみた。 現在、sakurapyonのカウンター手の処理は下記のようになっている。 インデックスは [手番][From][To] ただし、駒打ち…

Mate じゃない Mate Killer と 駒得になる同一盤面

誰も教えてくれないKiller Moveが2個な理由 - 2012-06-02 - aki.の月記を読んでもやもやが晴れました。なるほど!そうだったのか… Killer Moveの1個目はそこそこβカットするけど2個目はほとんどβカットしない、でも2個必要な理由が腑に落ちました。追記:gps…

最善応手列(PV)の取得について(メモ)

わかってるようでわかってなかったので整理 末端で α

pishogiさんが5月一杯で参戦停止らしい

twitterにて教えていただきました。「現在floodgateに参戦しているpishogiとpinaniwaですが、当方のサーバー移転に伴い、2012年5月末で参戦を終了」とのことです。 floodgateのpishogi|道路上将棋!のブログ 道路上将棋さんのマシンだったのですね、pishogi…

プロファイリング

現バージョン(2012.010)のプロファイリング結果。Evaluate(評価関数)はKPP+差分評価無しなのでたぶんこんなもん。 Search(探索部)、isAttackAll(利きの算出、SEEで使う)、GenNext(1手持ってくる)あたりが遅い。GenNextが遅いのはsortのせい?ただ、このあたり…

綺麗な棋譜作りってどうすればできるんだろう?

sakurapyonは歩・飛・角の不成は生成しないんだけど、香桂銀の不成は生成する。成っても成らなくても取られる一手のときなどは、成らないこともあるんだけど、人間から見ると妙に見えることもある。もし、角不成も生成するとしたら、7六歩3四歩2二角不成…

静止探索内部で詰みが見つかった場合

以前から悩んでいる静止探索の問題。かずさんも悩まれているようだ (かずの心の贅肉 SEEのバグ)。これは静止探索に限った話じゃなくて 全指し手を生成していない(前向き枝刈りをしている)場合に問題になって、静止探索の手生成は前向き探索の最たるものなの…

将棋プログラムを理解するために1

書籍を読むとなんとなくわかった気になるんだけど、実際に実装しようとするとさっぱりわからなくなる過去の私へ。わかりやすい・短いソースコードを読もうbonanzaのソースは膨大なマクロや背景の考え方が理解できてしまえば簡単なんだろうけど、そこまで到達…

メモリ喰い

bitboardで何かやろうとすると、大抵の場合 位置情報*ビットボードサイズ分のメモリを喰う。下手すると位置情報^2*ビットボードサイズとか。前者の場合、81*32bit*3=972bytes、後者なら78,732bytes。今のところ最大なのは飛車や角の利きを求める配列で、81*1…

Kindergarten Bitboards マジ素晴らしい

Kindergarten Bitboardsの将棋への応用 - コンピュータ将棋開発中 ツツカナのkindergerten bitboardの飛車の縦利き - ながとダイアリー chessprogramming - Kindergarten Bitboards chessprogramming - Congruent Modulo Bitboards 苦心して作った rotated b…

bitboard版(0.003) 手法

とりあえず、落ちずにfloodgateで対戦できるようになったようだ(まだ非合法手が残ってるな…) 探索速度が20倍ぐらい遅いのと、sakurapyon-44の機能を全部もってこれてないのでヨワヨワである。 (まだ駒得バージョンにすら追いついていない(R200差)。フルバー…

将棋プログラムの作り方

2009-02-19 - お手軽に強い将棋プログラムを作る10の方法 - aki.の月記 ヘナチョコプログラマが一人でお手軽に強い将棋プログラムを作る10の方法 - 毎日がEveryDay! 将棋プログラムの作り方 いまさらながら先人は良いことを言っているのだなあ、と しみじみ…

難航中

全部作り直そうとしたのがハードル高かったかな。みなさん簡単に?作り換えされててすごいなーと思う。ようやく落ちない・非合法手を指さない状態で一局指せるようになったけど、NPSが激減してる(5Knpsとか@_@;) ここからどうやったら100倍ぐらい高速化でき…