WindowsXP SP2

とりあえず入れてみた。オセロ直前に復元不能になると怖いから待っていました。 まぁ・・・特に大きく何が変わるわけでもない。 ・DEP機能追加。うちのCPUはDEP機能(いわゆるNXビット?)対応なので、時々アプリケーションを危険だといって終了してくれます。が、幸いなことにウィルスだったことはありません。 ・ワイアレスネットワークの設定が分かりやすく。まぁ今までの方がおかしいでしょう。 ・アイコンが変わった。なんか妙にうれしい。WiredLANとWirelessLanのアイコンが違うものになった。電波が飛んでるっぽいアイコン。 ・セキュリティセンターの追加やらファイアウォールの既定化。一番宣伝されているけど、ある程度自分のパソコンの状態がわかっている人には意味ないね。でも世の中的にはかなり意味はあるんじゃないかと。 ・ドライバがWindowsUpdate提供?一応今までもできたはずだけど、現実的にはほとんど配布されてない気が。これを機にWinUpdateで配布してくれるとありがたい。 あとWindowsUpdateもver5になるのではないかと。

Boost.PP

Boostのプリプロセッサ関係ライブラリBoost.PPをちょっと使ってNtoehc3を書き換えてみた。おぉこれは便利だ。いいね。もうちょっと使い方を勉強しておこう。 Boost.MPLは、すごそうだったけどよく読んだらすごいけど実用性はあまりない気がしたが、Boost.PPは実用的に便利そう。

オセロ翌日

学校で起きたら昼。まぁ当たり前か。 HがNtoehc3に搭載した枝刈りアルゴリズムCPCの統計的検証を行ったりしてくれた。かの有名なMPCと似たり寄ったりらしい。ちゃんと統計をとることの重要性を痛感。 家に帰って寝た。

オセロ大会

上野でラーメンを昼食にから散歩をしながら学校へ行き、優雅な気分でオセロ大会に望もう。 と、思っても起きたらもう出発時間。急がないと開始時刻に間に合わない。昼食を食べているヒマすらない。 さて、オセロ大会。 プレゼン: いろいろな人のアプローチを余すところなく(?)紹介。Neotehc3の開発中に思いついたいくつかのアルゴリズムなどを紹介。他の人のでもなるほどーと思うアルゴリズムもいくつか。統計データをグラフなどで示している人も。ほほー。 初心者リーグ: 初心者リーグは手動対戦。棋譜を取るために合計3つのソフトで同じ局面を進めていく。結局、Oxelon,Arkth,Ragus,Yathellomanの順。Yathelloは開発が間に合わなかったため、開発者本人が打った。すなわちYahthelloman。 一般リーグ: ぼくのNeothec3はこちらに出場。初戦相手のOxelonにはぎりぎりで勝利したが、次のThellには大敗。しかし相手の時間切れによりスコア上は引き分け。vsOthaには普通に負け。よって3位。全体でも3位かな? 日本で4位だとか6段だとかいうすごいオセロ屋さんも登場。一般リーグのソフト全部と戦ってくれた。一応どのソフトも勝利。6段以上の実力ありということか?とも思えるが、時間が短いことはコンピュータより人間にとって大きな不利となるのでは・・・という気も。まぁ、このリーグのレベルが結構高いという程度の意味にはとれるのではないかと。 その後は、夕食に行った後、飲み。作った際の考え方や、新しいアイディアなどを話したりした。正規表現を簡単に表現するためのGUIとかについても語ったり・・・。 今回ほかの人のと比べて思ったことは、みんなしっかりとしたアプローチで望んでいるということ。ぼくは結構適当に作っていて、あるアルゴリズムを搭載するかどうかは適当に戦わせてみて、その場の感覚でさっきより速かった「気がする」といった判断基準で決めていた。ところが、多くの人はちゃんと何試合もした統計を取って、その値によって判断していた。 時間がないのはみんな同じだったと思う。そこでぼくは統計を取ったりする判断のフェーズを簡略化して、より多くのアルゴリズムをテストしたりした。しかし、みんなは実装するものを減らしてでもちゃんと統計をとって判断していた気がする。 そこら辺にこの成績の原因があったと思う。 とりあえず、参加者の人たちは結構楽しんでくれたみたいなので、大会を一応企画したぼくとしては喜ばしい限り。そして、ぼく自身もすごく楽しめたし、為になったことも多いのでやって正解だった。1位でなかったのは残念だけど、得るものが多かったからよしとしよう。

オセロ前夜

明日はオセロ大会。 OxelonやvsOthaは20代後半手まで定石通りに打つらしいNeothec3は定石にはほとんど当てはまらない。独特な学習形式のせいか、棋譜から直接的な影響は受けにくいっぽい。 これが吉と出るか凶と出るか?もし学習によって定石が記録されているだけなら、Neothec3が定石から外れた手を打つためNeothec3に対しては序盤は苦手ということになるだろう。しかし、もし本当に定石をその場で編み出しているとしたら、定石から外れる(すなわち悪手)を打つNeothec3は序盤は不利ということになるだろう。 評価関数に関しては、Neothec3は1段下なのでは?という印象を受ける。学習アルゴリズム,評価関数は一般的に使われているものに少し手を加えたものにしてみたが、結果としてあまりよくないようだ。着手可能数による評価は明らかにルールから導出されるものではない。これを評価関数に取り込むのはどうしても気が進まない。しかし、最善手を選ぶにあたってよい指標であるのは間違いないらしく、その結果Neothec3の評価関数は他者より1段下ということになってしまったようだ。 探索速度に関しては、Neothec3は比較的速い方だろう。それが評価関数の簡単さによるものなのか、ボード実装によるものなのか分からないが、前向き枝刈りがない状態で5分ゲームにおいて平均10手程度読める。 前向き枝刈りを採用しているのはNeothec3とvsOthaのみのようだ。枝刈りについては独自アルゴリズムCPCが比較的良く機能している。しかし、前向き枝刈りの効果はせいぜい2手程度であり、勝敗に対してどの程度影響を与えられるかは不明。 全体として、既存のアルゴリズムに独自の考えを加えてみた成果物という形になった。実験的な要素が多いため、不安な部分も多いがまぁ仕方ないだろう。 明日の試合では数をこなすわけではないので相当な力の差がない限り確実に勝つというのは無理だろう。しかし、独自に考案したアルゴリズムなどが他の研究された方法に匹敵する効能を持っている事が確認されればそれで満足といえば満足である。もちろん、試合会場で他のソフトに勝ってくれれば文句なしに喜ばしいが。

前向き枝狩りとタイムマネージメント

あぁオセロをしなくちゃいけないのに、バイトに行っている場合ではない。 さて前向き枝狩り。効果は期待したほどではないにしろ12手読みはいけそう。さて、枝狩の精度がどれくらいあるのか・・・。 タイムマネージメント。5分をちゃんと管理してできるだけ5分ぴったりまで使ってできるだけ読む。終盤時間がなくなって読めなくなったりしたら一大事だ。だいたい4:40-5:00の間に入るので、こっちはなかなか上出来。

体が痛い・・・というほどでもないがとりあえずオセロ

前向き枝狩りをしないわけにはいけない。なぜなら、敵はしているのだ。 ProbCutっぽいものは実装しても速度がぜんぜん上がらないので、猪突猛進の如く枝狩りをしまくるルーチンを開発、合宿中はこれで試してみてた。が、とりあえず一般的な人間より強いことが分かったのみ。 14-17手読みほど可能だが・・・。 合宿から戻ってきて-A Quantative Approach-でいこうと思って、BruteForceと枝狩りの手の一致度を調べてみた。60%!!!!終わっている。あぁBearに負けたりするわけだ。あれはたまたまなどではなかったのだ。 というわけで、夢の平均16手読みはあきらめ。 現在BruteForce5分ゲームで10-11手読み程度なので、前向き枝狩りであと1,2手くらい伸ばしたい。vsOtha20手読みの噂はあるが、それはせいぜい終盤くらいだろう。でも中盤15手くらいはありえる・・・。