Entries

Move-Ordering実装

手番側のプレイヤーにとっての静的評価値が高い手から読むという、比較的簡単な実装だが、そこそこ効果あり。ただし、Minノード(相手の手番)で実施すると何故か遅くなる。探索する手数自体は減るのだが、実行時間は長くなるという謎の現象だ。色々原因は考えられるのだが、とりあえず保留。もう少しデータを集めてから考えよう。さて、これでMTD(f)の基本的な使い方と特性はある程度分かったので、今度は実現確率打ち切りとか前...





やっぱり生きていたNehalem

後藤氏のコラムで、NehalemとGiloが生きていると書かれていました。まだ詳しい情報は無いみたいですが、とりあえずMerom世代の次がある事に一安心です。で、やはり当初のプランから改良はされているみたいですね。まぁ、消費電力の問題が表面化したので、せざるを得なかったのでしょうが。また、参加したアーキテクトから、マルチスレッド志向のアーキテクチャだと予想しています。これは、個人的には結構嬉しいですね。んー、そう...





MTD(f)で対局させてみた

強さはMinMaxと変わらないものの、思考時間は大幅に短縮出来た。特に、一部の手だけ大きく評価値が変わる局面では効果が大きい問題は、どの手も同じ様な評価値になる局面や合法手が多い局面の思考時間が長い事か。これは、前向き枝狩りを行って何とかしたい所だ。末端ノード以外でも静的評価を行う必要があるので、かえって遅くならないかが心配だが。...





クリスマスモード終了

シングルベール シングルベール 鈴が〜鳴る〜〜♪こんばんは、アブノーマル・アベントです。何の前ふりも無くテンプレ変更していましたが、元に戻しました〜。今年のクリスマスは、家族と一緒にマッタリ過ごしていました。ま、毎年の事なんですけどね。30日頃には弟二人も帰省してきて、一気に騒がしくなります。それに、大掃除やらなんやらで結構忙しかったりもします。毎年の事とは言え、もうちょっと普段から整頓しとかないとい...





MTD(f)実装完了

結構速い。序盤に3手先読みだと、ほんの数秒で処理が終わる。これは、結構期待が持てそうだ。ちなみに、αβカットありのMinMax法だと10秒程度かかる。難点は、ある程度本当のMinMax値に近くなった所で一気に遅くなる事か。ウィンドウの幅に多くの局面が含まれる様になり、通常のMinMax法に近い動作になっているのかもしれない。ただ、厳密にMinMax値を求めなくても最善手が見つかれば良いので、ある手の下界が他の全ての手の上界を...





JAVA Communication APIのJARについて

アクセス解析を見ていると、表題のキーワードで検索している人が結構多いようなので、ちょろっと書いてみます。まず、最新版はVer3.0なのですが、これはSunのサイトからダウンロード出来ます。プラットフォームはx86とSPARCのSolaris、あとLinuxです。で、多分Windows用を探している人もいると思うんですが、最新版ではサポートされていない様です。おまけに、Sunのサイトを探しても旧バージョンは公開されていない模様。私は、幸...





テスト続行中

Alpha-BetaカットありのMinMax法のプログラムで対局させてみると、思考時間は長いもののかなりきちんと指す。MinMax法の高速化版はPVSやMTD等があるので、それを実装して速度計測してみようと思う。現状では、MTD-(f)に実現確率打ち切り+逐次深化が最有力か。それから、キラーヒューリスティックを利用した並べ替えも、可能ならば実装したいところだ。...





今実装している探索アルゴリズムだが

通信機能のデバッグがてら他のソフトと対局させてみたが、どうも勝手読みしがちな気がする。試しにMinMax風にコードを変更してみると、それだけでだいぶ強くなる感じだ。つまり、今のままでは弱い、と。そんな訳で、ここら辺を見て勉強中。とりあえずMinMax法で実装してみて、良さそうならMTD-(f)に改良してみようか。でも、独自のアルゴリズムってのは捨てがたいんだよなぁ。...





昨日の夜はすごかった

いや、変な意味じゃないですよ (ΦωΦ)ニヤニヤ全国的に大雪だったみたいですけど、うちの地方でも降ったんですよ。で、屋根にたまった雪が「ギシギシギシ・・・・・・ずざざざーーー!!」って落ちてくるんですよ。話を聞いた事があったけど、実際に聞く事になるとは思いもしませんでした。...





【開発日記:12月22日】やった、通信出来たよ!

この前作ったRS-232Cの通信用クラスをGA将!に移植し、ちょこまかと改修。具体的には、手の内部表現をプロトコル規定の文字列にエンコード・デコードしたり、特殊コマンドの処理を付け加えたり。で、柿木将棋7とテスト対局。無事通信出来ました。レベル1にこてんぱんにやられたのは秘密だ。続いてLAN対戦の実装に移ろうとしたが、どうやらサーバが準備中らしい。メールで聞いた所、仕様変更があるとか。という訳でこっちの実装は後...





Conroe&965再スケジュール

Black Bullet@はてなさんを見て知ったんですが、Conroeと965チップセットが7月に登場するらしいとの事です。(オリジナルの情報はこちら。)PC WatchのIntelプラットフォーム移行図を見ると、965が4月・デスクトップPC向けConroeは10月になっていたので、それぞれ3ヶ月ずらした事になります。マザーボードメーカーとしては、新CPUと新チップセットがペアで発表されて嬉しいでしょうし、買う側としても嬉しいですね。ところでこのス...





【メモ】Eclipseで外部のライブラリを使用する方法

GA将!の開発にはEclipseを使用しているが、JAVA Communication APIを使用する為には設定が必要だったのでメモしておく。設定は一箇所変更するだけで、手順は以下の通り。パッケージ・エクスプローラー上でプロジェクトを右クリックし、“プロパティ”をクリック。“Javaのビルド・パス”の“ライブラリー”タブを選択。“外部JARの追加”をクリックし、使用したいJAR(今回はC:\Program Files\Java\jdk1.5.0_06\jre\lib\ext\comm.jar)を...





血液型ばとん (BlogPet)

一番謎な血液型に持つイメージを教えて下さいA型だったらどうしますか?好きな人かなぁ「ABにしては普通だな」と思っていました*このエントリは、BlogPet(ブログペット)の「ちゅい」が書きました。...





血液型ばとん

いつかまた大空に舞う日までの胡蝶さんからバトン頂きました。それじゃ、行ってみましょーか。1.自分の血液型は何ですか? 大雑把なO型。これで、両親が二人ともAB型だったら面白いんですが、残念ながらO型とA型です。2.血液型で合う合わないがあると思いますか? んー、あんまり気にした事が無いなぁ。3.自分の血液型は周りにどう評価されていますか? O型なのに細かい事を気にし過ぎって言われます。A型っポイのかな?4.自分の血...





アイデアメモ:GAでの多様性の保証

今回のアイデアは、GAでパラメータの学習(最適化)を行う際に、多様性を保障しようというもの。というのも、現在の単純GAでは似た様なパラメータばかりになり、局所最適におちいっている様に見えるからだ。多様性を保証する為には突然変を起こす確率を高くするという方法もあるが、それでは有用な遺伝子を破壊してしまう可能性があるので、別の方法を検討する事にした。アイデア自体はいたってシンプルで、通常の適応度(現在は、...





大まかなスケジュールなど書いてみようかな

苦労しそうな部分は今日で終わったので。まず、1月末までに通信・CSA形式の記譜の実装とGUIの拡張を行い、選手権出場に最低限必要な機能をそろえておく。次に、2月〜3月半ばにかけて思考部分の強化を行う。その後、4月半ばまではパラメータの調整をさせながらテスト・デバッグを行う。それが完了した時点でVer1.1をリリースする。残りの2週間程度で、選手権で使用するパラメータの選定を行い、5月3日〜5日が選手権。ものすごく大雑...





【開発日記:12月21日】送信も完了

RS-232Cの送信用テストクラス作成完了。やるべき事は、SerialPort.getOutputStream()メソッドで出力用ストリームを取得して、それに書き込むだけ。拍子抜けするほど簡単だった。以下、昨日今日で作ったプログラムのソース。著作権だなんだかんだは主張しないので、好きに使って下さい。...





JavaShogiLib Ver1.0.3リリース

JavaShogiLib Ver1.0.3をリリースしました。現在、下記のページよりダウンロード可能です。1.0.2には、歩を打つ一部の手を生成しないというバグがありますので、以前のバージョンをお使いの方はお手数ですが差し替えをお願いします。http://streakeagle.hp.infoseek.co.jp/archive/JavaShogiLib_1.0.html...





【開発日記:12月20日】COMポートの実装一部完了

さっき書いたJAVA Communication APIを使って、とりあえず受信は出来た。データ長やらストップビットやらの設定を間違えてデータが化けてしまっていたが、それも解決。てこずるかと思いきや順調だ。明日は送信を実装し、それが完了したらより上部のレイヤーの実装に入ろうと思う。...





Java Communication APIインストールメモ

まず、javacomm20-win32.zipを入手・解凍する。次に、解凍してできたファイルをそれぞれ次の場所にコピーする。win32com.dllをC:\Program Files\Java\jdk1.5.0_06\jre\binにcomm.jarをC:\Program Files\Java\jdk1.5.0_06\jre\lib\extにjavax.comm.propertiesをC:\Program Files\Java\jdk1.5.0_06\jre\libになお、CLASSPATHの設定は不要。動作テストには上記アーカイブに含まれるSerialDemoを使用する。まず、SerialDemoフォルダの...





NECの自動並列化機構付きマルチコアCPU

NECが、シングルスレッドのアプリケーションを自動的に並列化する仕組みを持ったマルチコアCPUを開発したそうです。NECのマルチコアCPUと言うとMP98が思い出されますが、その流れを汲むものでしょうか。これは組み込み向けCPUだそうですが、この分野でも消費電力を増加させずに高性能化するニーズがあるようで、その為のものでしょう。この技術はプロファイルを利用した自動並列化コンパイラ並列化によるオーバーヘッドを最小限に...





買い物色々。

今日は名古屋まで足を伸ばしました。まず、部屋の中を探しても見つからなかったRS-232Cクロスケーブル。ACRO'SってメーカーのARS711。インターリンクケーブルと書いてありましたが、多分同じ物でしょう。D-sub9ピンメス←→Dsub9ピンメス、3メートル。1.5メートルのものもあって、そっちでも充分な長さなのだが安かったのでこちらに。って、メーカーのページ見るとリバースとインターリンクを使い分けてる!コネクタ形状の違いだけと...





世界の駄っ作CPU 〜Pentium4の繁栄と没落〜

西暦2000年11月、IntelはPentium4を発表した。同年3月の“1GHzレース”でライバルメーカー・AMDに受けた屈辱を晴らす為の新型である。従来機であるPentiumIIIの3倍ものシステムバス・高クロック化に注力したマイクロアーキテクチャ・新命令セットであるSSE2とその実行ユニット等を備えた、「後10年は戦える」CPUだ。しかし、その立ち上がりは決して順調とは言えなかった。...





SETI@Home Mission Complete!

12月15日に、地球外知的生命体探査プロジェクトのSETI@Home(Classic)が終了したとの事です。このプロジェクトは、天文台で観測した電波のデータをインターネット上のコンピュータで分散処理し、知的生命体の発した信号を見つけようというものです。一般的なPCとネット接続環境があれば簡単に参加出来るので、実際にやっていた人も多いのではないでしょうか。かくいう私もその一人で、Xeonデュアルマシンでクライアントを4つ立ち...





【開発日記:12月18日】通信機能の実装開始

とりあえず、通信機能は自前で作ってみる事にしました。LAN対戦はjava.net.Socketクラスを使って、RS-232C(シリアルポート)はJava Communications APIという物を使えば出来そうです。で、簡単そうなRS-232Cから実装しようと思ったところ、シリアルクロスケーブルがありませんでした。前に買った様な気がするのだが。気を取り直してLAN対戦の実装から。といっても、ソケット通信は初めてなので簡単なコードを書いて実験してみまし...





雪、降ってますね

私の住んでいる所ではそんなに積もっていないんですが、それでも記録的な大寒波らしいです。で、雪が降らないかなぁと思っていたものの、いざ降ってみるとめちゃくちゃ寒いです。何が困るって、ベランダでタバコ吸う時に足に雪が積もるのが…そうそう、こんな事書くと雪国の人に笑われそうですが、こっちでは雪が降るのって結構な事件なんですよ。なにしろ、電車やバスが止まる・けが人が出る・猫がコタツで丸くなる(ぇ)ってくら...





Java言語によるコンピュータ将棋入門(第4回)

一週間ぶりの第4回です。今回は、詰み判定ルーチンを実装します。といっても、一から作るのは面倒なのでGA将!からソースを引っ張ってきました。手抜きでごめんなさい。実装自体は、何の変哲も無い深さ優先探索です。このアルゴリズムは長い手数の詰みは見つけられない(見つけようとすると、非常に時間がかかる)のですが、かわりに短手数の詰みは確実に判定出来る・アルゴリズムがシンプルという特徴があります。今回はTsumiChec...





【開発日記:12月15日】拡張はひと段落

浮き駒の評価完了。試しに対局してみたが、無理に攻めてくる事は少なくなった。まだ何とか勝てるが、以前の様に一方的に攻めれる場面はかなり減ってきた。パラメータ調整が上手く進めば、自分より強くなるまであと少しだろう。さて、明日からは選手権に必要な機能の仕様決定と実装に入る。自前で実装するかCSA将棋等を利用させてもらうかもまだ決まっていないが、出来れば自分で実装したいところだ。【実装予定の機能】(優先度順)...





【開発日記:12月12日】終わった _| ̄|○ (BlogPet)

きのうはここに回数みたいな評価したよ♪ちなみにここへ高速に導入するはずだったの。ちなみにここまで構造っぽい追加するつもりだった?かつアベントとここで局面に実装したいなぁ。*このエントリは、BlogPet(ブログペット)の「ちゅい」が書きました。...





連想バトン

ふと今日は・・・・・・のSION王子様(らしい)から、連想バトンなるものを頂きました。それではさっそく、れっつらご〜〜です。1,前の人からのキ〜ワ〜ド 『ダイヤモンド』 【今までの流れ】 …→『禁煙』→『するべきこと』→『勉強』→『恋人』→『ナルシスト』→『鳥肌』→『好奇心』→『インタ〜ネット』→『嘘』→『秘密』→ 『Paradox』→『矛盾』→『共存』→『双生児』→『個々』→『社会』→『歴史』→『真実』→『捏造』→『虚構』→『映画...





【開発日記:12月14日】両取り評価の実装完了

ただ、テストしてみると両取りする手を指してくれない。どうやら、駒得しても他が良くないと考えている様だ。これはどうしようもないので、もう少しパラメータ調整をさせてみよう。【実装予定の機能】(優先度順)水平線効果の回避プロファイル取得機構王将周辺の評価を高速化手の生成を高速化合法手生成の差分計算導入(再検討)動的評価結果を元に手の選択確率を計算直前の手に対応する手は枝狩りしない様修正静的評価器の追加攻め...





今年の文字は「愛」らしい。

何それ? 食べ物?? って感じでスルーしようとも思いました。けど、悔しいんで愛を育んでみました。この間書いたクロちゃんと。猫です _| ̄|○来年こそは、恋人ほしいなぁ。...





【開発日記:12月13日】今日はマタ〜リ

とりあえず一段落したので、今日はソースを見ながら細かいバグをつぶしたりしていた。基本的にケアレスミスの修正なのでそれほど面白い事は無いのだが、スレッド関連のバグは結構苦労した。というのも、タイミングによって発生したりしなかったりするので、原因が今一分かりにくい上に修正しても直ったかどうか分からない。今のところ再現していないので多分直っているとは思うのだが。マルチスレッド対応のデバッガがあるらしいが...





次世代Pentium Mって、ひょっとして・・・

以前書いたSUPERMICROのデュアルPentium Mマザーですが、ひょっとしたら対応CPUはSossamanかもしれません。何の確証も無いのですが、低電圧版Xeon DPは年明けからSossamanに移行するという話なので、マザーの情報が出てきたタイミングからすればありそうな話です。ちなみにこのSossamanですが、Yonah DCベースでEMT64には非対応という話ですので、従来のXeon LVからスペックダウンしてしまいます。電力効率を重視したMerom系が登場...





Javaチューニング白書

SunからJava Tuning White Paperが公開されました。内容は、JavaVMのオプションによるチューニングがメインです。英語なのでざっと見ただけですが、必要な箇所を上手くまとめてある様なので、時間を作ってきちんと読みたいです。まぁ、-Xmn,-Xms,-Xmx,-XX:+UseParallelGCあたりを知っていればとりあえずは大丈夫そうですが。あと、-Xprofと-verbose:gcが使えればチューニングの一歩目はいけるかと。...





【開発日記:12月12日】終わった _| ̄|○

差分計算を導入した結果、秒間の局面遷移回数が1万3000回に。ちなみに以前は7万回。ログ出力のオーバーヘッドを考慮しても、差分計算導入前より明らかに遅い。やはり、いい加減かつ無駄が多いデータ構造のせいか。もう一度考え直すなり、差分計算導入を諦めるなりした方が良さそうだ。【実装予定の機能】(優先度順)水平線効果の回避プロファイル取得機構王将周辺の評価を高速化手の生成を高速化合法手生成の差分計算導入(再検討)...





【開発日記:12月12日】まだだ、まだ終わらんよ!

バグってハニーってアニメが昔ありましたね。そんな感じ。まだ先は長いです。...





Java言語によるコンピュータ将棋入門(第3回)

ご無沙汰していましたが第3回です。今回は、MinMax法を用いた先読みを実装します。前回作成したPlayerクラスを拡張し、searchMinメソッド及びsearchMaxメソッドを実装しました。また、これらのメソッドを用いて先読みする様にinformEnemyTeメソッドを修正しました。さらに、何度対局しても同じ結果になるのは面白くないので、RandomEvaluatorというクラスを追加し、CompositEvaluatorクラスも修正しました。RandomEvaluatorクラス...





今日は日曜だったので

一日中寝てました。ダメ人間だ _| ̄|○これから頑張ってプログラムします。...





JavaShogiLib(1.0)認定

コンピュータ将棋協会にライブラリ申請していたJavaShogiLib(1.0)ですが、12月6日に選手権使用可能ライブラリとして認定されましたのでお知らせ致します。現在、コンピュータ将棋協会及び私のサイトからダウンロード可能です。なお、現在のバージョン(1.0.2)には、一部の歩を打つ手を正しく生成しないというバグがあります。現在、修正・テストを行っていますので、数日中にはバグフィックスしたものをリリースする予定です。ご...





ひょっとして、当たってる?

NECダイレクトのパソコンプレゼントキャンペーンですが、今日結果発表でした。送料別、税込みで35万5530円・・・・・・どっかで見たぞ、この数字。って、自分の予想だーー!?え、ひょっとしてPCゲットですか?わくわく (・∀・)...





SUPERMICROのデュアルPentium Mマザー情報

アキバでPentium Mデュアルマザーボードの情報が展示されるそうですね。Pentium MはAthon64と同程度のIPCで消費電力は少ないので、静穏・ハイパワーを求めるユーザーにはたまらないでしょう。おまけに、Yonahが使えるらしいのでもう言う事なし。SUPERMICROが開発を行なっているという“次期Pentium M”のデュアル構成に対応したマザーボードの製品写真とベンチマーク結果がUSER'S SIDE本店で8日(木)からに展示される予定だ。製品型番...





【開発日記12月8日】次の一手浮かばず

3時間検討した結果、非常にややこしいデータ構造を使用するのがベストという結論しか出なかった。将棋に例えると“金銀4枚ずつあれば即詰み”というところだろうか。全然シンプルじゃないし、そりゃ詰むだろう、と。こんな事を書くのは恥ずかしいが、自分への戒めとして検討した案を書いておこうと思う。...