2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

tweet

  • tweets

« 2008年4月 | トップページ | 2008年6月 »

2008年5月

Commentarii de Bello Kazusso カズサ戦記(後編)

前回までのあらすじ:無事1次予選を突破したA級リーグ指し手1号。明日の戦闘に備えるその夜、訪れてきた玲子から熱い想いを打ち明けられる。秘かに好意を寄せてきた相手からの思いがけぬ告白に、心乱れる指し手1号。しかし運命の歯車は既に廻り始めているのだった…  <いやそんな話じゃなかったべさ。てか玲子って誰よ?

[2次予選]

対戦相手は竜玉、マイムーブ、備後、ゆうちゃん、dos、WILDCAT、K-Shogi、棋理、山田。
棋譜は1次予選のと同じURLで見えます。

竜玉:言わずと知れた決勝進出ソフトで、もうはなっから諦めていたのですが。話してるうちにいつの間にか千日手になっていました。まだ仕掛け早々くらいで、むこう振飛車、こっちが馬を作ったものの四間の飛車先が破られる寸前、という状況で馬が飛車を追っかけまわしてました。まあこちらとしてはラッキーで、竜玉さんは残念がってました。
竜玉さんの本業は、えー何というか、私のいる会社の隣の業界でしたね。彼のとこの作ってる製品が私の近くにあるんじゃないかと思います。FPGAも仕事で関係あるそうで、よくご存じでした。

マイムーブ:また負け。対マイムーブ戦連敗記録更新中です。1次と2次両方当たったのはここだけです。
私は局面表示がテキスト(「v銀」)であまり見やすくないので、相手がGUIのときはだいたい相手のとこに行って見せてもらってます。今回も見せてもらってたのですが、局面以外にもいろいろ情報表示してるのであれこれ聞いてました。時間の使い方はすごく工夫されてましたね。私のは超原始的で、最低限の制御しかしてないのですが、これだと1局に2分しか使わなかったかと思えば、1手4,5分長考したり。相手時間なんて当然(?)寝てるし。ここはちゃんとやるだけで深さ1くらい増やせそうな気がするので、大会後のTODOリストNo.1です。てか実はもうやってたりして。

備後:大会少し前のレーティングで、floodgate最強対最弱の決戦。ここは我が軍としては撤退あるのみです。備後さんは「決勝常連のソフトは、詰みとかものすごいいろいろ工夫してるんやで~」と(備後弁?で)話しておられましたが、備後さんもそこに負けないようにがんばってるようですね。というのは小宮日記でもうかがえましたね。
この将棋では備後側の飛車が2八~2六~5六~5八~2八、と動く回転飛車!が登場しまして、私は幻惑されてました。私の方も穴熊からはい出たりと怪しげなことやってましたが、華麗さで回転飛車にはかないません。試合に負けるのはしかたないけど、華麗さで負けるのはくやしい。こうなったらもうこっちも対抗して、来年は定跡仕込んで、王さんにバック転させたるで!と決意を燃やしてます(嘘)
次もうわかりますよね:

♪I'm dazed and confused...

ゆうちゃん:「例の」対局です^^; ワタシ的にはある意味今大会のハイライト(?)。こちらが徐々にリードを拡大していき、圧倒的駒得に。ゆうちゃん側の王手ラッシュが始まったな、などと言ってたときに、会場の大盤解説が本局になりました。えーこれってネット中継してるんだっけ、と思ったちょうどそのとき。暴走モードに入りました。1手詰があるのに、関係ないただ捨ての手とかをぼろぼろ指す。まあそれでも元々が超駒得なのでこっちが負けになるというわけではないのですが、そうこうしているうちに同局面4回で千日手になってしまいました。原因については、その後考えていちおう判明しているので、後で書きます。大盤なので会場はこの一局をかなりの人が見ていましたが、一同あきれるばかり。まそりゃそうでしょう。「顔から火の出る王手飛車」状態でした。中継もされてたはずなので、あとでネット上の大会情報(2ちゃんの実況とか)見てましたが、いやいや、案の定だいぶ失笑を買ってましたね^^;;; まあ千日手対策もまったくやってないので、王手千日手で負けにならなかっただけマシだったかも。

dos:1次のときに作者の小日向さんに話しかけられまして、いろいろ話してたんですが。こっちがFPGAというので「すごいですねぇ」などと言われ、いえいえ、とか言ってて。ところでそちらはハードどんなのですか?「PS3です。」…は?ぴーえすすりー、って…?一瞬意味がわかりませんでしたが、そう、あのプレステ3でした。ちょ、ちょっと見せてくださいよ!で彼の席に行くと、机の上に黒光りするPS3が。思わずのけぞってしまいました。私のも見た目は相当インパクトあるぞと自負してたんですが、これにはクロス・カウンターを食らいました。
Cellというのは私は漠然と「ベクトルマシンみたいなもん」と思ってたんですが、ちょっと違いましたね。PPE*1とSPE*8があり、PPEはPowerPC相当、SPEはそれぞれがLocal Storeというメモリ上で独自に命令列を走らせるSIMDプロセサとのこと。Local Storeは各256KBで、それでもハッシュ持ってるというので「外れたらどうすんですか?」と聞いたところ、「DMAみたいなことやってメインメモリからロードします。」えぇえ~~!これにはまた圧倒されました。さすがにDMAでは速度はそんなに出ないそうですが。まあ本業もPS3関連とのことなのでCellのプログラミングには慣れておられるようでしたが、いやー私にはできそうにないなと思いました。
本大会の「ゲテモノハード部門」では、大賞は不肖わたくしがいただいていきますが、次点の優秀賞は小日向さんに差し上げたいと思います。いやもらっても迷惑かと思いますが。しかし来年あたり、誰か携帯とかDSとかで大会出ないですかね。有志諸君、目指せゲテモノハード大賞!!!しかし携帯で大会出て、対局中電話かかってきて、電話とって話しはじめたら審判さんから「あー勝手にいじっちゃだめですよ~はい失格」とかなったらかなり笑えるでしょうね。ってなんでそう人の不幸を喜ぶかな。
さて対戦の方は、定跡の巡り合わせか何かなのか、なぜか私の方が序盤から攻め続けて、そのまま勝ちきってしまいました。dosは1次みさきにも勝ってるので、こりゃ苦しいかなと思ってたんですが。相性とかあるんでしょうかね。

WILDCAT:ずっと接戦でした。長手数になり、最後CATが時間切れになって勝ちを拾いました。予測読みの時間設定にミスがあった、とかブログに書かれてましたね。実力的にはたぶんほぼ互角だろうと思います。この将棋も後半大盤解説の対象となり、また公衆の面前で変なことしないかとヒヤヒヤしてました^^;

KShogi:ここまで2勝2敗2分となり、まあまあの星となったためまた上位陣と当たってしまいました。KShogiは愛用させていただいてます。強さもさることながら、ユーザインタフェースとか細かいところまで対応できていてほんと商品レベルのクォリティなので、感心しています。ふだんのスパーリングはKShogi*初級*とやってて負け越してるくらいなので、リミッタ解除のKShogiとではちょっと勝負になりません。本田さんには「初級でお願いしますね」と対局前にお願いしてました^^;(するなよ) この回から勝又先生の解説が始まりまして、私は最前列だったのであまり解説無視するのもあれかと思ったので聞いてたところ、こっちの対局はあまりちゃんと見ないうちに負けてました。

棋理:floodgateで2、3ランク上だったので、予想通りいいところなく敗れました。佐藤さんのブログはよく見てまして、参考にさせていただいています。しかし彼は若いのにしっかりしてますねー。fruitやcraftyのソースは「熟読してる」というあたり、なかなかできることではないです。現に私はろくに読んでません--; やっぱ基本をしっかりせんと。
ハードは、ブレードサーバからひっこぬいてきたブレードをでんと置いてました。プログラム的にはPCといっしょのはずですが、これもなかなかの迫力。そういえば1次のあいちゃんもブレードでした。あいちゃんのはファン(?)の音が大迫力で、存在感ありました。

山田:これも大接戦に。途中負けたと思う場面もありましたが、何か粘って逆転してしまいました。山田将棋ともおそらく実力ほぼ互角と思います。この将棋も、解説とかちあってあまり見れませんでした。(棋理のときは最後列だったんで自分たちのを見てたんですが。)まあ2日め最終戦ともなるともう意識がもうろうとしてきて、頭が働いてません。

以上で3勝4敗2分。2次予選15位で、2次シード獲得となりました。いちおう事前予想では「1次はなんとか通過、2次でぼろ負け」と思っていたので、望外の成果です。ほぼ実力互角だったであろう dos, CAT, 山田にことごとく勝てた、のがラッキーでした。確率1/8?4敗はすべて順当。2分は1つラッキー、1つアンラッキーなのでチャラ?

[キサラヅ市街地攻防戦]

西村さんが弁当総括をされてましたが、私は会場ではどうも落ち着かないので弁当は頼まず、試合終わってからゆっくり木更津市街で食べようかな、と考えてました。ところが、木更津駅近くって、夜7時も過ぎるとあんまり店開いてないんですよねー。閉まるの早いのか、昼間も閉まってるシャッター商店街なのか。木更津経済まずいんじゃないの?まあまったくないというわけではないんですが。
5/2 夜ホテルのある東口側をしばし歩きまわり、あまりないので西口の方にも行ってみましたが、ちょっと歩いたくらいではやはりあまり見当たらず。この日は西口すぐのAQUA(だっけ?)の上の中華料理。まあ可もなく不可もなし。
5/3 は、ただ歩いたのでは探すの大変そうなのでホテルでマップをもらったところ、西口の証誠寺付近がいちおう繁華街のようで。そちらへ向ってみましたが、やはり閉まってるところが多く。あきらめてコンビニ弁当を買って帰る途中、ようやくそこそこにぎわっているエリアに出ました。来年はこの辺まで足をのばしますか。「宝家」は門構えがすごく、メニュー等も店の前に出てません。入ってみたい気もしますが予算不明ではちょっとこわい。誰か入ったことあります?あと気になったのは、普通の店はほとんど閉まってるのに、ラブホだけ妙に目についたのは私だけでしょうか。4,5軒あったかな。しかもどこもけっこう賑わってたし。うーん恐るべしキサラヅ。
5/4は帰ったのが遅かったので歩きまわる気もせず、東口から線路沿い南へすぐのパスタ屋…といいつつ中華もしょうが焼き定食もある、という妙な店に入りました。でもここはまあまあ。
話は変わりますが、木更津のさびれぶりを見ると、かずさアークの方も心配になってしまうんですが。あそこもどうなんでしょう。運営費稼げてるのかなあ。公営(おそらく)のイベント会場はともかく、ホテルは経営成り立ってるんでしょうかね。千葉南部の結婚式はみなあそこでやる、とかいうのでもないと採算取れないような、などと余計な心配をしております。市か県かから補助金でも出てんのかな。
ところで総括といえば赤軍を思い出す私はやっぱ変でしょうか。

[情報戦]

大会のたびに主に対戦相手の方とはいろいろお話しさせていただいてましたが、今回はまあ初のFPGAということでもの珍しがられたのか、けっこう多くの方から話しかけられたというのもありまして、かなりいろんな方々と情報交換ができました。大きな収穫だったです。

FPGAのことを説明してて、「ハッシュないんですよ」と言うと「えーっ!」という感じの反応が多くて。柿木さんやうさ親さんからは具体的なハッシュの作りについてもいろいろ教えていただき。ハード的にちょっと面倒なので二の足を踏んでたんですが、これもまじめに考えてみることにしました。てことでこれもTODOリスト上位。

会う人ごとに「ソフトどんな作りなんですか」などとずうずうしく聞いてまして。ベテラン勢は前向き枝刈り派が多く、最近参入組は全幅派が多いようですね。やはりこの辺はBonaの影響が大きいようです。奈良さんも書いてましたが、自分がコン将を始めたころに「流行っていた」方式に影響受けるんでしょう。ま私などは比較的昔からやってるくせに途中から全幅に宗旨変えしたりしてますが。
深さはだいたい6~10くらいでしょうか。ま「基本」深さなので、延長でもっと行くみたいですが。いちばん意外だったのは習甦の竹内さん。ここで書くのもあれなので具体的な数字はあげませんが、あんまり読んでないんですよね。それであんなに強ぇのかよ?!三味線じゃないの?などとつい思ってしまうくらいだったんですが、ほんとなら深く読みゃいいってわけでもなさそうです。
あと、将棋世界の田名後さんからもインタビュー(?)されてました。まあ記事になるかはわからないですが。私は20世紀の終わり頃将棋世界毎月買ってまして。最近あまり読んでないんですが。でその頃は大崎編集長で、その頃新人で入った(?らしい)田名後さんを大崎さんがいろいろ「いじって」まして。「『僕の東大将棋がぁぁぁっ!』いや君のじゃないんだってば田名後くん、」てな感じ。あの田名後さんですよね、などといらぬことを聞いたら「今は編集長です」。ひぇええ!もしかしたらむっとされたかも。十数年前の新人のころのこととか言われたら、あまりいい気分でないかもですね。今は編集長が板についておられました。今後できるだけ読むようにしますんでご勘弁を。

♪ 惑星のちからと 死の魔術が必要

[敗因分析会議]

暴走の原因については、大会前に初めて見つかったときから考えてたんですが。最初は評価値がオーバフローしたのかな、と予想してたのですが、実は大会前に、根本的ではないがまあちょっとした対策を組み込んだのですが、効果なし。でまた考え直し。
事例としては4回出ました:yowa_usa(floodgate)、あうあう、なり金、ゆうちゃん。
症状としては次のよう:
 ・圧倒的駒得の状態になったとき出る
 ・明らかな詰めがあるのに、関係ないただ捨て等を指す
 ・駒を取る手が多い(駒損でも)
 ・悪手を指すが、それで負けるわけではない(千日手を除けば)
以上から、今のところ次のように考えています。まだ検証してはいませんが、脳内SIMLで再現できるので、たぶん間違いないと思うんですが。

今までのAリーグでは、詰みが見つかったら+∞(正確には、14bitのオール1)を返してました。ルートではβ=+∞-1としていて、1手でも+∞を返したら(βカットで)探索を終了してその手を返す、というふうにしてました。これで問題ないだろ、と思ってましたが、どうもこれがまずそう。

これだと、たとえば全幅8手読みで、圧倒的優勢で、「1手変な手を指しても、次相手が何を指しても、その後5手以内に詰む」という状況だとしましょう。その「変な1手」も、結局探索の評価値は+∞になるので、そこで探索終了してそれを指してしまいます。たとえ1手詰みの手があっても、手生成の順番しだいで、それが後の方にあればそこまで行きません。まあ仮に行ったとしても、評価値は同じ+∞なので、それが最初の(変な)手より良い、ということがわかりません。
駒を取る手が多いのは、最初に生成するから。千日手の1一馬も、最初の方に生成する手です。

だとすれば、対策はいくつか考えられるのですが、

案1)詰将棋ルーチンを持つ
 たとえば反復深化の詰将棋をやればもちろん問題ないわけです。がAリーグにはありません。

案2)ルートで深さ1、2、…で反復深化する
 これをやってれば、最初に+∞が見つかったとこで終わっても問題ないわけです。最短手数の詰みのはずなので。ただこれもAリーグはやってないです。

案3)詰めの評価値を一律+∞でなく、「+∞ - (詰むまでの手数)」とする
 このアイデアはCraftyのソースのコメントを読んでて気づきました。ただ、これを読んだ当時は「何でそんなことすんの?別に+∞でいーじゃん」と思っておりました^^; この意味がようやくわかりました。これだと5手詰めが見つかってもルートでβカットになりません。3手詰めがあったら5手詰めよりそちらを優先します。1手詰みならβカットで終了します。

というわけで、大会終わってからまっさきにこの案3を入れました。その後検証してないですが、たぶん直ってる…んじゃないかな…

他のソフトはおそらく案1か2のいずれかをやってるんですよね。だからこの問題現れないんだと思います。この話、私の知るかぎりCraftyソース以外で見かけたことないです。
またこれ、自分より弱い相手とやらないと出てこない。KShogi初級やyowai_gpsくらいだと、勝つときも全駒にはならないので、気づくのが遅れたというのも敗因。強弱とりまぜていろんな相手と指さないと、と思いました。

[戦後統治]

大会終了後は燃え尽きてまして、しばらく何もする気が起きませんでした。上のバグ修正だけは気になってたので入れましたが、あとは小森霧状態。最近ようやく社会生活に復帰したところ。大会中にいろいろ情報を仕入れて、だいぶ改善ネタもたまってるので、TODOリストの検討からはじめたところです。来年までに何をするか?はまた次回。

…というわけで2回にわたりましてお送りしてまいりました「カズサ漫遊記」、いかがでしたでしょうか。次回からまた普通の開発日誌に戻る予定。

Commentarii de bello Kazusso カズサ戦記(前編)

コンピュータ将棋のシステムは三種類に分けられる。一つめは前向き枝刈りを用いる古典派ソフト、二つめはBonanza以降の全幅+Pruningのソフト、そして三つめはFPGA上で動くシステムである。

…というわけで、伊藤は第18回世界コンピュータ将棋選手権に参戦した。本稿はその戦闘の記録である。

[開戦前夜]

floodgateに参入したのが4/19から。4/19,20の戦闘を見ていて、玉まわりの評価がぜんぜん足りないのがわかり、あわてて修正。またfloodgate連続対戦対応を入れて、4/26,27 再参加。まだ弱いので更に修正(評価辺り)を入れ、4/29,30 またfloodgate。評価辺りはだいぶよくなったものの、暴走するバグが発覚(「直前にこれかよ…」参照)して、というところで開発時間切れ。FPGAのコンパイルに6時間かかるため、5/1会社行ってたらコンパイル結果の検証ができないので見切り発車、というどたばた状態でした。

ところが、今回はハードとソフトがあるので、ハード(FPGA)のファイルの.sofは検証したんですが、ソフトの方は25分対応にするのを忘れてました。それまでfloodgate用に15分にしてたんで。これだけはしょうがないんで、#defineを900->1500に変えて再コンパイル。結局このバイナリは検証なしでぶっつけ本番で使いました。まあこのくらいの変更なら大丈夫だろうとは思いましたが、甚だ気持ち悪かったです。仕事での習性か、私は未検証のバイナリは使う気にならない、というタチなので。

4/27に気づいたのは、玉辺りの評価に係数をかけたあと「8で割る」つもりが、割る8を2か所でやってしまって実質64で割ってたことが判明。道理で過小評価なはずです。ここに気づいた後は、まだチューン不十分ながらも何とか玉に向かっていくようになってくれました。これはかなり大きかったと思います。

[兵站の確保]

♪Supercalifralogisticexpialidocious...      (ちょっと違う)

宿は3週間ほど前に木更津駅近くのロイヤルガーデンを予約。これまでは02年はオークラに泊まり(でも高いからもうやだ)、05年はぎりぎりに予約しようとしたら木更津はどこもいっぱいで、君津かどっかに泊まるはめになったので、今年は早めに予約しました。皆さんエクセルが多かったみたいですね。Yahooの旅行だかで宿探したのですが、エクセルはレビューがあまりよくなかったんですよね。なのでロイヤルにしたんですが。でもまあみんな泊まってるんなら大丈夫なのか。

5/2,3の2泊予約を入れ、チェックインのとき「もしかしたらもう1泊するかもしれないんですけど…」と言ったら、禁煙は満杯だが、喫煙でよければおさえておきましょうか、と言われ、お願いしました。「5/3の夜には延泊するかしないかはっきりします」とか言って。この辺の融通きいたあたりは、ワタシ的には合格点です。しかし、コン将関係者以外で、GWの木更津で何やるんですかね。隣でやってたSJなんとか?フラワーなんとか?でも泊まってる層はちょっと雰囲気違ったような。

次回どうしようかな。実は好み的には日本旅館にしたかったんですが。でも予選終わって帰ったんじゃ夕食の時間に間に合わなくて。いやしかし温泉というのもいいかも。養老渓谷あたりにいくつかあるな。…などと考えていたら小宮日記に不穏な記述が。また綿密なプランニングが崩れるんでしょうか。

交通手段は、FPGAボードがかさばるため車に決定。ボード自体はまあ小さいんですが、クッションの入った箱に入れてったので。私は多摩ニュータウン在住なので、若葉台付近まで行き、そこから縦に長い川崎市に沿う形で南下し、浮島からアクアラインのルート。5/2も会社さぼって、半日かけて行きました。途中海ほたるで昼食(佐世保バーガー)。

ちなみに竜玉の中谷さんは5/3朝にやはりアクアラインで来たら、渋滞に会って遅刻したと言ってました。5/2昼間はがらがらでしたけど。いやまっとうな人間は仕事してるんだって。車で来る方は気をつけませう。

なお帰りのルートですが、私は行きと帰りで同じルートを通るのはプライドが許さない、というほうで。で、空いてるかぎり16号を行き、千葉過ぎたあたりで混んできたら京葉道路へ。いったん篠崎で降り、平井大橋から中央環状線をぐるんとまわって、池袋から最近開通の山手通り地下(初体験です (*^_^*))を通って新宿経由国立府中へ。道路オタクなんです。いいよ道路じゃんじゃん作って。暫定税率?今の倍くらいでいいんじゃない?

[我が軍の陣容]

大会参加バージョンの概要を以下にまとめます。普通のソフトの感覚からすれば「何でこんな変なことするの?!」という部分もあるかと思いますが、ハードではソフトのように何でもできるわけではないので、ハードでもできるように、ということで一部妥協した実装になっています。また、「とにかく大会に間に合わせよう」と焦って作っていたので、後で直すつもりでとりあえず入れ込んだものが修正の時間なくて結局そのまま、という部分も。

・ハード:Altera社製 CycloneIII 開発キット DK-DEV-3C120N。搭載FPGAはEP3C120。動作周波数 15.6MHz (7.8Mnps)。FPGAチップ内は大きくNios IIプロセサと思考エンジンに分かれています。Niosで動くソフトは、以前に公開したパッケージに入れたものと大差ありません。

・PVS探索
・多重反復深化。といっても各ノードでのループは2回。そのノードの残り深さがNとすると、子ノードははじめのループではN-3で、次のループはN-1で探索する、という超いいかげんバージョンです。
 ハッシュがないので、ほぼすべてのノードで反復深化します。ただし、はじめのループでのベスト手を次のループ(の最初)でトライするときは、その下のノードは(allノードだろう、との予想で)反復深化しません。…って、今書いてて気づきましたが、これPVノードでも反復深化してないですね。だめじゃん…あと、onereplyなら反復しません。
・延長:recapture 0.5手、王手防ぎ 0.5手、onereply 1手、です。ただし常時延長するのではなく、前半ループのベスト手を後半ループの最初で試すとき、その手がrecapture等である場合のみ延長します。
・静止探索はStandPat方式
・詰め探索:なし

・手生成
 ルートから深さ7まで … 全幅
 深さ8        … 移動手のみ生成(「打つ手なし(;_;)」)
 深さ9-12     … 静止探索で、取る手+パスのみ。ただし「自分より下位の
              駒を取る手で、取る先に自分からの他の利きがなく、相手
              の利きがある」なら生成しません。たとえば、飛車で銀を
              取って、すぐ取り返されて終わり、になるなら生成せず。
 深さ13-14    … 直前に動いた駒を取る手のみ生成。
 深さ15       …  王手がかかっているときのみ、王手回避の手すべてを生成

 深さ9から先はいわゆる静止探索なので、私はこれを称して「(全幅)深さ8」と呼んでます。まあ8手めは全幅じゃないですが、固いこと言わないで。あそうそう、深さ7、8(全幅残り深さ2,1)では、「終盤、両方の王からx or yで5以上離れたマスへの、金銀桂歩の打ち」は生成しません。
・Nullmove Pruning
 全幅残り深さ≧6ならR=3、それ以下はR=2で、再帰的にやります。静的評価値がβ以上のときしかやりません。
・(Extended) Futility Pruning(もどき)
 (全幅)残り深さ2か1で、静的評価がαより一定以上下なら、手生成を全幅から「取りのみ」に切り替えます。
・move ordering:ハッシュなし、Historyなし、Killerなし。優先度は
  A 反復深化の後半ループで、前半ループでのベスト手
  B 直前の駒を取る
  C 駒を取る手すべて(深さ9以降 i.e. 静止探索では上述の制限あり)
  D 'refutation table'の行き先マスへ行く/打つ手
  E その他すべて
の順。各カテゴリ(A-E)の中では順序は機械的で、ソートしたりはしてません。たとえばEなら、行き先マスが1一から9九まで順番に、という感じ。
'refutation table'というのは、最善応手手順の三角配列のこと(とどっかの論文読んで解釈してたのですが、間違ってるかも…)
なお王手のときは、深さにかかわらず王手防ぎすべてを生成します。このときの順番は
  F 王手をかけている駒を取る
  G 王が逃げる
  H 合駒(移動手->打ち、の順)
になります。

・序盤はれさぴょんv3が指します。24手めまではれさぴょん。その後は、定跡がヒットするかぎりれさぴょんが指します。それ以降は、ルートからすべてFPGAが考え、れさぴょんは通信を担当するだけになります。
・打ち歩詰めチェック:やります。
・千日手チェック:やってません。最悪、王手千日手で負けを食らいます。
・相手時間は寝てます。ハッシュもないので、とにかく1手ごとにまっさらから「次の1手問題」を解いてるのといっしょです。
・時間制御:残り時間が少なくなったら深さを減らす、くらいはやります。ただし、いったん決めた深さで、とにかくその深さ読み切るまで延々と考えます。なので1手1秒以下のことも1手5分のこともあります。

・評価:考慮してる要素は以下
  駒割 歩64点、香64*4.25点、… 駒種によって定数
  成りのボーナス  小駒のは、進行度によって重みが減ります。大駒は一定
  持ち駒のボーナス 歩のみ枚数によってサチュります。それ以外は枚数比例
  各マスへの利き 各マスに、両王からの距離によって重みをつけます。また各マス
   ごとに自分と相手の利き数によって点数をつけます。各マスごとの(重みX点数)
   を81マスぶん足したものに進行度をかけます。
  金銀の自由度
  王の8近傍の金銀桂香歩の配置
  金銀の浮きペナルティ
  飛角香の前方への利き
  飛角香の自由度
  飛香の前の歩(あれば)のy座標
です。ただ、後の6つは重みたぶんすごく少ないでしょう。大会直前に項目だけ入れたものの、重みのチューンが全然できませんでした。学習?何ですかそれ?

以上です。上に書いてないことは<一切>やってないはずです(私が忘れてないかぎりは)。「書いてないけど、XXXくらいは当然やってるんだろうなぁ」とか思ったら、たぶん大間違い。
まじめにこつこつソフト作ってきた方から見ると「何じゃそりゃー?!やる気あんのかゴルァ!!!」だと思いますが、はいすいません。まあいいじゃないすか旦那。FPGA化するだけで大変だったんスよ。

アルゴリズム的な面では、独自の工夫とかはほとんどなく、「Bonaの完コピ」路線で行ってます。2006年8月「情報処理」の記事を参考に、その中でハードでできるものは(必要なら適当に変更して)パクる、できないものはあっさり諦める、というスタンス。とにかくFPGAというだけでイヤというほど苦労したので、他の面ではできるだけ頭も手も使わない、を目指しました^^;

2次シードのソフトの中で、過去まで含めても、大会2か月前に自動対局もできてない、市販/フリーソフトの最低レベルにも勝てない、という状況だったのはおそらく私くらいではないでしょうか。開発スピードの点でもかなり速い部類に入ると思います。これはもちろん、でたらめな納期を連発されながらも、何とか100点満点ではないながらそこそこの結果を出す、という鍛錬をいやというほど積まされてきた賜物かと思います。ってどういう業界やねん。まとにかく、パクれるものはとにかくすべてパクり、自分のリソースは「ウリ」の部分(私の場合FPGA化)に注力する、という作戦が当たった形です。ま基本っちゃ基本ですが。パクらせていただいた保木さん、うさ親さん(序盤のれさぴょん)には足を向けて寝られません。ちなみに、Deep Purpleの最初のバージョン(InRock, 1999年)は、進歩本②のYSS記事の完コピから始まりました。こちらも足を向けられないので、だんだん立ったまま寝る他なくなりつつあります。

[1次予選]

対戦相手はあうあう、あいちゃん、マイムーブ、うさぴょん、白砂、HIT、なり金。
棋譜は以下のURLで見えます。(右下の「X回戦 Aリーグ対何とか」をクリック)

http://homepage.mac.com/junichi_takada/wcsc18/

あうあう:全般に押し気味で進めてたと思いましたが、最後の方勝勢になったところで、また暴走バグが。大会第1号です。まあこのときはちょっと出ただけで結局すぐ詰ましたのですが。(放送もされてなかったし。)後の波乱を暗示した幕開けでした。

あいちゃん:かなり混戦でしたが、何とか勝ちました。オペレータの方が農工大の学生さん2人で、うちお一人はかなりお強くて、彼の解説を聞きながら見てました^^; 寄せ合いの段階で、若干優勢ながらもこちらの玉もかなり危うく、ちょっと攻めあぐねてる感じで、もたもたしてると逆転されるなー、と思いつつ見ていた100手め。解説者さん(?)が「ここでAリーグが△7七金とかやるともうだめですよね」…!私はまったく見えてなかった手なのでびっくり。ですが、これならたしかに勝勢でしょう。と言いつつ、でもちゃんと指してくれるかなぁ…と思いながら戦々恐々としていましたが、指してくれました(涙)。この後は危なげなく寄せ切りました。
まあ後で冷静に考えてみると、コン将的にはそう難しい手ではなかったかもしれませんが(「全幅7手読めりゃ当然わかるだろ」)、自分にまったく見えなかった正解手を指してくれた、というのが泣かせるポイントでした。まぁAちゃんたらもうこんなに立派になって。もうお母さん出る幕ないわよね。うるうる。

マイムーブ:順当に負け。まあfloodgateで何度かやって勝ったこと1度もないので、想定内でしたが。
マイムーブは例の「これまでの対戦成績」が受けてました。ym将棋さんも書かれてましたが、私も第一声「相撲みたいですね」でした。西村さんは「いや、将棋倶楽部24がこんなふうに出るんですよ」と言ってたのですが、あれは絶対大相撲ですよね。来年はぜひ、上手投げとか押し出しとか、決まり手も出してほしいと思います。これでfloodgateのリーグ戦が「春場所」とかいう名前になったら完璧です。

うさぴょん:これも順当に負け。うさぴょんにも勝ったこと1度もないです。こちらは序盤はれさぴょんそのまま、定跡もうさぴょんそのままなので、まあ同門対決みたいなもん?私は定跡はダウンロードして何も考えないで使ってるだけで、中身まったく知らないのですが、今まで振り飛車が多かった気がしたのだけどこのときはなぜか横歩になりまして。横歩ははじめて見たような気がします。

白砂:まあ無事勝てました。白砂さんはご本人が相当お強いので、プログラムって思うとおり指してくれないね、という話になってうなずきあっていました。私程度でもそう思うので、白砂さんあたりは相当フラストレーションあるんじゃないでしょうか。まあそこを押してプログラムに挑戦する姿勢はなかなか応援したくなるものがあります。あ、ちなみに私の棋力は、十年以上前に将棋世界の問題でとったペーパー四段ですが、実戦はだいぶ長いこと指してないので、今は初段あるかないか、というとこだと思います。(もっと弱いかも)

HIT:3年前は先読みまったくなしで、ちょっとだべってる間にあっという間に終盤になっててえらくびっくりしたという印象が強かったですが、今年は「知識ベースで手をしぼり、7手程度先読みする」とのことで、小刻みに考えていました。まあまだちょっとチューン不足だったようで割と簡単に勝ててしまいましたが、「知識で手をしぼって、深く先読み」というのは方向性として間違ってなさそうに思えるんですけどね。まあ私はPost-Bonaの全幅指向ですが、結局どっちが正しいんでしょうか。

なり金:これも押し気味で進め、最後の方勝勢になったところで、出るものが出ました^^; 今回はかなり危なっかしい指し方をけっこう長い手数指し、私も気が気でなかったですが、なんとか最後には詰ましました。なり金さんは目が点になってました。まあやられた方はさぞびっくりするでしょう。しかしなり金さんは2年連続で頭ハネとのことで、つくづく不運ですね。これにめげず来年は1次突破していただきたいと思います。私はロッキーよ。最後まであきらめないわ。(誰、あんた?)

以上で、5勝2敗。5位で予選通過です。もともと目標は「1次予選通過」だったので、この段階で目的は果たしたつもりになってました。まああと欲を言えば、今までの自己ベストが2次予選1勝だったので、2次で2勝できれば大成功だよね、くらい。ということで、かなり気楽に臨めるなぁ、と思っていたのですが。

…とここまで書いたところでもうかなりの分量になってしまったので、続きは次号にします。六千字もキーボード打つと持病の腱鞘炎が。無事1次予選を突破したA級リーグ指し手1号。2次予選に向けてふくらむ期待。が、暴走バグの影が行く手にさす…強敵揃いの明日は果たして通用するのか?次回、「恥はネットを駆ける」では更なる波乱が!(って、もうみんな結果知ってるんだけど…)

まっ白な灰に

選手権出てまいりました。結果は2次予選が3勝4敗2分で15位、2次シード獲得ということで、ちょっと実力以上にできすぎでした。まあ対戦相手とかソルコフとかで多少運不運があるのは毎度のことですが。

選手権記は近々書くつもりですが、今日はもう燃え尽きてて何もする気がしません。乞うご期待、ということで。全世界に恥をさらしたりとかいろいろあったんですが^^;;; この辺も後で詳しく書く予定です。

いろいろお世話になった方々、お話しさせていただいた方々、大変楽しかった&意義深かったです。どうもありがとうございました。あと、大会前後はこのブログのアクセスも跳ね上がりまして。応援いただいた方々にも超感謝です。あ、応援だけでなく、罵倒も歓迎ですよ^^;

« 2008年4月 | トップページ | 2008年6月 »