ラベル shogi の投稿を表示しています。 すべての投稿を表示
ラベル shogi の投稿を表示しています。 すべての投稿を表示

2015年11月25日水曜日

メカ女子将棋ソースコード再公開

メカ女子将棋を応援してくださってありがとうございます。

対コブラ戦は結構話題になったみたいですね(^^)

ソースコード公開しますー。githubにありまする〜。


まずはcloneするか、右下のzipのダウンロードでダウンロードして
いただき、bonanzaさんのfv.binをJuliaディレクトリと同列に入れてください(直下ってことですー)。

Juliaの0.4系最新を入れて頂いて、メカ女子将棋のJulia\run.batをご自分の環境に合わせてください。

run.batをcommand shellで実行したのちに、将棋所・将棋GUIでmechajyo.exeをエンジンとして登録してください。

対戦するときはまずrun.batを実行して、それから対戦を始めてください。

今回の修正は主に、0.4系への対応となります。

ではでは、Have Fun!!

(文責:kimrin)

2015年11月15日日曜日

メカ女子将棋最新ソースコードについて

どうも、メカ女子将棋のメカきむりん(41)です。
残念なおっさんです♡

 すいません、メカ女子将棋のソースコード、散逸していて失敬失敬です。

  https://github.com/kimrin/MechajyoForWindows 

が最新なのですが、Julia言語の開発速度が速すぎて現行のJulia0.4系では動かない
感じになっておりまする。Julia0.3系でもちょっと怪しい感じです。

大会が終わったあとにJulia0.4系で動くソースコードを公開する予定です。

今しばらくお待ちください。

では〜

 文責:kimrin

2015年7月31日金曜日

引き角くんシート2015年版を7月まで更新しました!!( #shogi #将棋 #コンピュータ将棋 )

floodgateの棋譜の戦型別分類Excelシートであるところの「引き角くんシート」2015年版を更新致しました。7/30までのデータが新しく更新されています!!
(あと1日入れて7月分とすべきでした、すまそ)

使い方としてはfloodgateのサイトより、2015年の棋譜をダウンロードして、
7zファイルを解凍(7zip managerなどで)し、そのフォルダに

https://github.com/kimrin/HikikakuKunSheets

の中のHikikakuKun2015.xlsxファイルを追加した上でHikikakuKun2015.xlsxファイルを開きます〜。

詳しくはCOCOさんのページ:

http://shogi81fun.blog.fc2.com/blog-entry-13.html

を参考になさってくださいなー。

ちなみに、今回の集計結果をテキストで貼っておきます〜

file=HikikakuKun2015.xlsx: 43466 records are saved(^^).
相振飛車: 82
三間飛車: 2083
矢倉: 5107
戦型データなし: 18203
向飛車: 756
ひねり飛車: 192
角換わり: 3375
横歩取り: 3247
相掛かり: 2715
四間飛車: 5385
中飛車: 2321


合計: 43466

43466局対局があって、18203局は分類できなかった局面(ただしこの中に矢倉などが入っている可能性は十分あります!)で、残りが分類できた(ある程度の正確さですが)局面です。矢倉と四間飛車が多いですね。

ではでは、HAVE FUN!!


2014年7月19日土曜日

COBUILD、そしてコンピュータ将棋

(註:本文書はコンピュータ将棋開発者である私の個人的な表出であり、
 コンピュータ将棋開発者の総意を表出するものではありません)

 私はコンピュータ将棋を嗜む「へっぽこ」プログラマではありますが、
今日の将棋の棋士先生方とコンピュータ将棋の関係について、思うとこ
ろあり一筆執る次第です。

 ここで話は飛んで時は遡ること30数年前、英国バーミンガム大学にお
ける、英英辞典編纂について見てみましょう。シンクレア教授と英コリ
ンズ社は共同で新しいタイプの学習英英辞典を開発していました。英英
辞典というのは、英国のlexicographer(辞典編纂者)が著した英語に
よるいわば英語の国語辞典のようなものですが、シンクレア教授とその
グループは電子化されたコーパス(言語資料)を活用した辞典を編纂し
ておりました。
 グループはコーパスから語義の統計的な頻度と、語義に対応するコー
パスの使用例を自由に取り出せるシステムを開発しました。そして辞典
編纂者はそのシステムを使って「生きた」例文を辞典に掲載することに
成功したのです。この辞典の特徴である「フルセンテンスの語義」と相
まって、この辞典は1980年代、非常に成功しました。英英辞典COBUILD
の誕生です。コンピュータガイ(コンピュータを使う技術者)と辞典編
纂者(言語学研究者など)の共同の作業が、世に新しいタイプの辞典を
送り出したのです。

 なぜ30年前の辞典の話をしたかと申しますと、今日のコンピュータ将棋
を取り巻く状況は極めてこの時の状況に酷似していると私は感じている
からです。辞典編纂者=将棋の棋士の皆様、コンピュータガイ=コンピュータ
将棋開発者と考えると、ああ成る程と、思う方もいらっしゃるかもしれま
せん。

 私は、コンピュータ将棋と棋士先生の皆様との最終決戦が行われること
について、それは事の成り行きであると思いますし、いま非常にデリケート
な時期に来ていることを否定する訳でもありません。
 ただ、私はいつの日か、棋士先生の皆様とコンピュータ将棋が華麗に
コラボレートして、今まで無かった将棋を創り上げる、そんな夢想をせず
に居られないのです。そう、30数年前のCOBUILD誕生の時のように。

 これは夢物語なのかもしれません、実際には厳しい戦いが待っているの
でしょう。でも、私はこんな未来が来ることを願って止まないのです。
現に将棋を指す方がコンピュータ将棋に詳しい人を欲するように、コン
ピュータ将棋開発者もまた、高度な大局観をお持ちの棋士の皆様の手を
必要としているのです。

(文責kimrin)

2014年1月29日水曜日

世界コンピュータ将棋選手権、参加費を納めていざ出陣!

先日郵便局にいってきまして、例の

第24回世界コンピュータ将棋選手権


の申し込みをして参りましたー。

メカジョさん(メカ女子将棋、@mechajyo)、ことしもGWに華麗に参戦の
予定です。皆様宜しくお願い致します。


ことしはかずさアークということで、まだ未知なる領域に興味津々なのですが、
今年も水面下で色々な動きが少しづつ始まっている模様ですね。

今年はNextGenMechajyoという新しいメカジョさんプログラム(Julia言語)を
投入できたらな〜と思っています。Stockfishさんを参考にして、chessプログラムを
まずは作って、そこから一気に将棋にもっていきたいな、と。


   Stockfish(chess,C++)  ->  
MechajyoChess(chess,Julia)  -> 
MechajyoShogi(Shogi,Julia)

考えていますが、そうはうまくいかないですよねー
(そうだそうだーw)

まぁあの、電王戦や去年の選手権に出したバージョンをちょこっと変えてだすだけかもしれず、いずれにしろ、生暖かいご支援を宜しくお願い致します。てへっ。

あ、あと英語でMechajyoさんの説明を書いた資料作ったら、Julialangな人達にRTや言及をされて、いい感じだったので英語ですが、恥ずかしいですが、リンク貼っときます。

http://www.slideshare.net/kimrinjp/mechajyo

以上現場からkimrinがお伝えしました。
ではねちゃお〜



2014年1月4日土曜日

メカ女子将棋ソースコードとインストール方法について(捕捉)

メカ女子将棋のソースコードをGitHubに公開したのですが、実際に将棋を指させるまでには幾つか準備が必要です。本日はドキュメント不足だったメカ女子将棋のリポジトリについて、さらには将棋が指せるようになるまでの準備について、ブログエントリに纏めさせて頂きます。

まず、アカウントkimrinのGitHubにJapaneseChessとWCSC23という二つのリポジトリがありますが、通常はWCSC23の方を使ってください。JapaneseChessの方はバグがあるのと、WCSC23よりも弱いこともあり、お勧めできません。。。

基本的にコンピュータ将棋エンジン(プログラム)を将棋所というソフトに登録して使うのですが、いまのところLinuxとMac+Linuxの環境でしか動作実績がありません。
まずはLinuxで動かしてみることをお勧めします。Windowsでも是非動かしたいので、その辺今後対応していきたいと思います。まずは64bit Ubuntuでの動作について説明したいと思います。

Linuxでの将棋所の動作のために、まずmonoというフレームワークをインストールします。これはwindowsの.NETフレームワークに相当するもので、将棋所のLinuxでの動作をサポートするものです。Ubuntuならapt-getなどで入れてください。

さて、将棋所はインストール出来たでしょうか。mono Shogidokoro.exeとターミナルに入れて起動してみてください。

ここからが本番です。将棋所にメカ女子将棋をエンジン登録して使うのですが、登録方法が2種類あります。一つはエンジンの一部をコメントアウトして登録し、実際の対戦ではそのコメントアウトを再び復活させて動かす方法が一つです。

二番目の方法はsocketというコマンドを使う方法です。この方法はクラウドサーバーを使うために新たに開発しました。今日はこの二番目、socketプログラムを使うやり方をご説明します。

まずLinuxマシンにJuliaをインストールします。最新のUbuntuならapt-getできますが、Juliaのリポジトリの更新スピードはかつてないほど早いので、1ヶ月でもう過去のものになります。今後のために、JuliaはGitHubから落とした最新コードでビルドすることをお勧めします。

基本的にgit cloneしてソースコードを落としてきて、直下でmakeします。
configureはありません。なおビルドに際してgfortranなどが必要になります。makeが中断したら何が必要か確認してapt-get、再びmakeの繰り返しで進んでください。なお一部最新CPUではMakefileの修正が必要になる場合があります。あとAVXインストラクションを持たないアーキテクチャではワーニングが出るようになります。


makeして直下にjuliaファイルができたら、$ ./julia してみてください。プロンプトが出ればJuliaのインストールは完了です。早速WCSC23リポジトリをcloneして動かしてみましょう。

WCSC23/Juliaディレクトリで、$ ./Main.jl してみます。何も出なければ多分動いています。エラーが出る場合は何らかの修正が必要です。

なおBonanzaさんのfv.binをWCSC23ディレクトリ直下に置きます。

ここで、ERROR: type: typeassert: expected Array{(Any...,),2}, got Array{(Int64,Int64),2}
が出る場合、BitBoard.jl:39
を、次のように修正してください。
修正前(BitBoard.jl:39)
]::Array{(Any...,),2}
修正後(BitBoard.jl:39)
]::Array{(Int64,Int64),2}
おそらくJulia0.2以降でこのエラーのでる可能性があります。

./Main.jl して10秒以上待っても何も出なくなったら、
次を実行してみてください。

cat inputgame | ./Main.jl

ずらずらと文字が出て、bestmove 9g9fのような表示がでれば
エンジン自体は動作しています。

次にエンジンの登録方法です。

Juliaディレクトリに、4091.sh と 4091.regist.sh という二のシェルスクリプトがあると思います。4091.sh を4091.sh.hozonとしてコピーし(名前は何でもいいです)、4091.regist.shを4091.shにコピーして、将棋所に登録します。

登録できたら万々歳です。

次にsocketというプログラムをインストールします。apt-getでインストールしてください。

登録できたら、4091.sh.hozonを4091.shに上書きします。まだこの時点ではエンジンは動きません。

このsocket(1)プログラムは標準入出力をsocketにつなぐソフトです。サーバー、クライアント両方の動作をすることが可能で、まず登録エンジン側にクライアントを、それとは別にサーバーを立てて、サーバーにMain.jlを接続して登録エンジンの入出力をMain.jlの入出力につなぎます。

具体的にはWCSC23/Julia ディレクトリで下記コマンドを実行します。

 $ socket -sqv -p ./Main.jl 4091

すると4091ポートをlistenし始めます。ここではサーバークライアント接続のために4091ポートを使うことにします。

その上で先ほど登録したエンジンを動かしてみてください。おそらく将棋が指せるようになると思います。

サーバーの接続は1戦ごとに切れます。まずサーバーを再び起動してから、将棋所でゲームを起動してみてください。

Macにsocketをインストールすれば、Macでも将棋所を使って対戦できます。また4091.shのlocalhostのところを書き換えれば、将棋所を動かしているマシンとは別のマシンでエンジンを動作させることができます。これがクラウドサーバー対応となります。


色々不備のある状態でソースコードを公開してしまったこと、反省しております。
申し訳ありませんでした。

引き続きこのブログエントリで質問して頂ければ、可能な限り質問にお答えして行きたいと思います。

以上です。

















2013年11月9日土曜日

将棋電王トーナメント、メカ女子将棋応援ありがとうございました

皆様ご存知の通り、11/2の電王トーナメント予選にメカ女子将棋が参加いたしました。

結果は2勝(且つその二勝は相手の投了と相手の反則で得た勝利w)6敗
でした。

対戦の模様はニコ生でも放送され、「ファンシー」な棋風とか、
「メカジョの呪い」などのコメントが流れ、ニコ生を明後日の方向に
盛り上げましたw
Twitterでも様々なコメントを頂戴いたしました

色々な形で生暖かい声援をたくさん頂きました。
この場を借りてお礼申し上げます。ありがとうございます。


ファンシーな棋風なのですが、間違いなくalpha-beta法のバグと
評価関数のバグによるものです(他のチームの方から助言頂きました)

次回電王トーナメント、世界コンピュータ将棋選手権の目標は、
まずはバグを潰すところから、でしょうか。

重ねてありがとうございました。
今後もメカ女子将棋を宜しくお願い致します。

(文責kimrin)


2013年10月20日日曜日

メカ女子将棋のソースを公開しました!

オッすオラきむりん。オラにみんなの知恵を分けてくれ!

って訳ではないのですが、メカ女子将棋のソースコードを公開しましたー。
ライセンスは緩いMITライセンスとなっておりますー!

まぁあの、弱いソフトのソースなんて誰も見ないわ、とかその通りなのですが、
電王戦もありますし、ネット上にソースあると便利でしょ、みたいな感じですです。

もしかしたら間違えてJulia Language関係の人がpull requestしてくれるかもしれ
ないし、しないと思いますがはい、しないです(T_T)

https://github.com/kimrin/JapaneseChess

一応、プログラムのためのホームページもありますが、上記README.mdからの自動生成だったりしますです。

http://kimrin.github.io/JapaneseChess/

ではね、ちゃお☆

2013年5月6日月曜日

第23回世界コンピュータ将棋選手権を終えて(メカ女子将棋)

今年もコンピュータ将棋の「おっさんの祭典w」コンピュータ将棋選手権が終わりました。3日間とても楽しい時間を過ごすことができました。これもひとえに大会を陰で支えて下さった運営の皆さんのおかげです。この場を借りてお礼申し上げます。(_ _)

最後は劇的なメークドラマが待っていました。Bonanzaさんおめでとうございます。

さて、我々のメカ女子将棋(メカジョさん)ですが、今年は奮いませんでした。
決して弱くなっているわけではないので、恐らく一次予選の下辺が上がっているのでしょう。女流棋士の方に棋風を見て頂いていたのですが、「おっさんっぽい」=力技で持って行こうとする 棋風だったようです。序盤の展開も独特でしたね。

今回の失態について、責任はすべてこのkimrinにあります。期待して下さった方、大変申し訳ありませんでした。

さて、私事なのですが、内定を頂きました☆ 5月半ば〜下旬くらいから、とあるソフトウェアの独立SIer関連企業で組込みソフトウェア開発を行うことになりました。心配して下さった方、ありがとう御座います。

来年のメカ女子将棋なのですが、皆様から「来年はどうされるんですか」という暖かい声をたくさん頂戴いたしました。機会があればぜひ、来年も出たいですが、就職する企業での業務との折り合いが付けば、という条件付きになりそうです。これから忙しい毎日になりそうです。

今後の方向性としては、まず既存ソフトウェア[BonanzaさんやStockfishさん(chessソフト)など]の研究を行って、深い読み、大きなNPS(Nodes Per Second)、優秀な評価関数を目指したいと思います。
また、GPGPU関連については今後の技術動向も含めて注視していきながら、なんとか実現できたらと考えています。たとえGPGPUでの将棋ソフトが失敗作としてできたとしても、「どうやら巧くいかないらしい」という人柱にはなるのではないかなぁ、などと思っております。

女子会としてのメカ女子将棋部も、いい感じで盛り上がってきたところですので、今後の展開にご期待ください。あ、私はおっさんというデマが一部で流れておりますが、本当は小五女子プログラマーです☆ きゃぴっ☆ (←小五女子はきゃぴっとか言わない旨、各位からご指摘頂きました。率直なご指摘ありがとうございますw)

メカ女子将棋の今後に生暖かい眼差しを頂ければ幸いです。
ありがとうございました。

(文責kimrin)

2013年3月30日土曜日

メカ女子将棋のアピール文書が公開になりました!

メカ女子将棋のアピール文書が公開になりました。

http://www.computer-shogi.org/wcsc23/appeal/Mecha_Lady_Shogi/appeal.pdf

もしかするとまだ書き換えるかもしれません。。。

今年はJulia言語と呼ばれる新しいタイプのDynamic Languageを使っての出場となります。既に去年より強いみたいです。

どうぞ宜しくお願い致します。

(文責 kimrin)

2013年1月28日月曜日

機械学習したはいいけど。。。(失敗編1)

メカ女子将棋、評価関数を機械学習することにしました。
ただ、とりあえず大雑把にやってみたところ、失敗こきました(T_T)

ただ、学習のiterationをまだ一回廻しただけなので、まだまだ成功する
可能性は少しあります(^^)

ここにやり方を一通り書きますので、もしよろしければ、識者の方の意見を
賜りたいと思います(たしかコメント可能になっていると思います)

1. liblinearを準備する

liblinearについてはlibsvmの親戚で速いやつ、くらいに思っていただければ
いいと思います。今回はclassify(二値分類)ではなく、regression(回帰)
を使ってみることにしました。これは二値分類の場合に0か1が答えとして出てくる
代わりに、関数値がdouble型で返ってきます。この学習の種類は、trainのsパラメータとして
-s 11を使用した場合に相当します(L2-regularized L2-loss support vector regression (primal))。

今回はtrainとpredictを使うほか、評価関数内でライブラリとしてliblinearの
内部の関数を利用します。

学習のためのファイルは次のようなレコードの並びです。
regressionの場合、1か0ではなく、関数値を与えます。

関数値 素性インデックス1:素性値1 素性インデックス2:素性値2.............
この構造はlibsvmで使われるファイルと同一のものです。


2. 棋譜
色々やってみたのですが、trainで学習できる棋譜の数はon memoryでいける
最大値が大体300局くらいでした。CSA形式に準じた形の棋譜を準備します。

3. 素性抽出
まず、棋譜のすべての局面において、すべての可能手を列挙するプログラムを
書きます。そして、各局面のすべての可能手によって生じる可能性のある兄弟
局面を求めます。
その兄弟局面において、まず深さ1で探索して探索の値を求めます。
棋譜にあった局面は、歩1つぶん(100くらい)を加算します。
棋譜にあった局面よりも大きい値を持つ兄弟局面については、棋譜にあった局面
から100を引いた値を設定します。
これで、棋譜にあった局面が突出している状態になります。

次に素性を求めます。すべての兄弟局面について、素性ベクトルを求め、先ほど求めた
探索値を付与します。
今回は2駒の関係を用いました。具体的には駒の位置(100通り)と駒の種類(16通り)の
二乗になりますので、 2560000種類の素性インデックスが可能性としてあることになります。

この各素性インデックスに大して、素性値を求めます。すべての2駒の関係について、
王手を含む効きの種類が細かく分類して10通りくらいあるのですが、それを1--10で
数値化します。効きがある関係だけ素性を用意します。

こうして、1局面について、可能手の数だけレコードができます。
これをファイルに落としていきます。1局を1ファイルとしました。

4.学習
3.で作ったファイルのうち、300局をcatで固めます(kifu300.txtとします)。
その結果から、学習を行います。

$ ./train -s 11 kifu300.txt kifu300.model

膨大なメモリを使い、10分くらいでkifu300.modelファイルが出来上がります。

5. 利用
liblinearをメカ女子将棋に組み込みます。
面倒だったので、blasのライブラリと一緒に.aファイルをリンクして
しまいました。
諸般の事情で、メカ女子将棋のエンジンはshared libraryなので、
このshared libraryに対してblasとliblinearを結合します。

インクルードファイルはlinear.hになります。

まず、対局開始時にmodelファイルを読み込むように改良します。
そして評価関数をpredict関数の出力値に置き換えます。
関数出力(predict)の結果は、いい忘れましたが、-10000から10000
にクランプした上で、
-1から+1にスケールしてありますので、predictの結果に10000.0を
掛けて乱数を載せて評価関数の値として返します。

6. 結果
predictの時間が長くかかれば成り立たないなと危惧していたのですが、
大丈夫でした、predict自体の時間は短いようです。ただ、素性ベクトルを
局面に対して求めるのに時間が掛かっているようです。


結果としては、大変弱い評価関数が出来上がりました。
ただ、出来たmodelファイルからさらに、2から5を繰り替えしていけば、
強化学習ができるのではないかと思っています。

すみません、長くなりました。以上です。

2013年1月5日土曜日

メカ女子将棋出陣!!

あけましておめでとう御座います。

今年も宜しくお願い致します。

旧メカウーサー将棋(及び旧メカ将棋)はまたしても新たに改名いたしまして、
「メカ女子将棋」という名前で第23回世界コンピュータ将棋選手権に出場
することになりました。ぱちぱち!

 (まだお金払ってないので、月曜日に郵便局行ってきます☆)

今回出場に際して、豪華メンバーによる「メカ女子将棋部」を編成しましたー。うおー。
なんと、女流棋士の方がお二人joinされましたー。(@_@)

メカ女子将棋部:


  •  竹部 さゆり(女流三段)様
    • メカさゆりん
  •  渡辺 弥生(女流一級)様
    • メカみおたん
  •  T.R. (女子大学院生)様
    • メカりえぽん
  •  木村 健(メカウーサーメカ担当、実装責任者)
    • メカきむりん、プロジェクトリーダー


現在のところ、竹部さんと渡辺さんには棋譜のチェックや、評価関数のチェックを
お願いしたいと思っています。T.R.さんには広報をお願いしています。

メカ女子将棋部のTwitterアカウントも併せて新設されました。
@mechajyo になります。

 https://twitter.com/mechajyo

今年はNPSをもっと増やしたいと思います。また女流棋士の方の助けを得て、
より強い定跡部や評価関数を目指したいと思います。

長年の課題となっております、GPGPU対応なのですが、今年は後手に廻り
そうです。でもいつかはGPGPUで思考する将棋プログラムを完成させたいです☆

声援宜しくお願い致します。

(文責:kimrin)
 

2012年10月21日日曜日

blogタイトル及び将棋ソフト名称変更について

思うところあり、blogタイトルと将棋ソフトの名称を変更することにしました。
特に将棋ソフトについてはこれからも変更するかもしれません。

とりあえずblogタイトルを Mechanical Shogi Blog,

将棋ソフト名を、「メカ将棋」とさせていただきます。

これからも変わらぬご愛顧よろしくお願い致します。

(文責 kimrin)

2012年5月4日金曜日

メカウーサー将棋の歴史と変遷

(注:この記事は名称変更前の記事となります。史事の記述であるため、メカウーサー及びメカウーサー将棋の記述は、メカ将棋と改めず、そのままと致しました。  kimrin)

巷ではコンピュータ将棋選手権の決勝が明日行われますが、メカウーサー将棋的には今年は既に終わっているので(ぉぃ いままでexplicitに書いていなかったメカウーサー将棋の変遷について簡単に触れたいと思います。

まず、2009年の12月頃からコンピュータ将棋ソフトの作成に取りかかりました。
最初は右も左も分からず、GPGPUで作れば相当のソフトが出来るのではと安直に
考えていました。いま考えてもかなり甘い誤算でした。

2010年5月に出場した「メカウーサー」(メカウーサー将棋の前身)は、100% GPGPU
実装でした。これは当時とても新しかったと思います。強さは皆様ご存知の通りの弱さでしたが。。。

GPGPUのメカウーサーは、最初の2手を2次元格子状に展開します。これだけで後半だと数万コアに異なる局面が行き渡ります。そして、その各々でalpha-beta探索を行いました。
だいたい2手〜3手程度がalpha-betaで探索出来ました。つまり5手程度の探索が可能でした。

GPGPUメカウーサーの問題は、時間配分が拙かった点が一つ、強い将棋ソフトを全く参考に
していない我流のソフトだった点が二つ目、ということで問題山積なのでした。
特に初手からの数手は5手読みをほぼno timeで行っており、早いのですが、あと1手多く読めたのではないかと思います。またmove orderingについてもかなりpoorで、minimal treeにはほど遠い状態だったと思います。

こうして史上初のGPGPU将棋ソフト「メカウーサー」は対無明戦において、伝説の「棒玉」
を指して皆様に失笑されるのでした(しょぼ〜ん)

2010年のアピール文書はこちらです。


2011年に出場した「メカウーサー将棋」は100%CPUのソフトでした。
「GPUで強いソフトを作るにはまずCPUである程度強いソフトが作れないとダメだよね」
という信念のもとCPUのソフトを開発したのですが、これもいかんせん我流なソフトで
弱さと云う名の強さwを兼ね備えたソフトとなりました。

結果としてGPUソフトはその後の2012年でも投入することができませんでした。
2011年のソフトにはいくつかバグがありました。特に定跡ルーチンにバグがあり、
折角定跡を入れたのに特定の条件(定跡上で成る)でソフトが落ちるバグがありました。
これを対Tofu戦で見事に踏んでしまい、あえなく一敗してしまうのでした。

また対さわにゃんRL戦では「これは将棋というゲームではない」と言われるような
お恥ずかしいゲームとなってしまい、作者の方と「あれはひどかったね」と振り返る
のでした。

2011年のアピール文書はこちらです。

2012年のソフトもまたCPUソフトなのですが、実はGPGPUのソフトの初期検討を12月頃から行っていました。これは原稿としてプロシンにも載りました。

最初は簡単なゲームから、ということでHexと呼ばれるゲームの実装から開始したの
ですが、Hexのシーケンシャル版は出来たものの、並列版作成で詰まってしまいました。
いわゆるスランプです。
そのため将棋ソフトも並列版を作るまでに至らず、最終的に去年のソースを引っぱり出して来て、それのUIを新しい枠組みに乗り換えて出場することになりました。

去年のメカウーサー将棋との違いは詰みが少し強くなったことと、定跡のバグが消えていることが違います。

また今年はオペレータを女性に行っていただきました。少しだけ見苦しくなかったのでは
ないかと思いますw

2012年のアピール文書には、GPGPU実装の初期検討資料も含まれています。
アピール文書はこちらになります。

仕事の関係上2012--2013年は将棋ソフトにあまり時間を掛けず、仕事に集中する予定
です。GPGPU実装のメカウーサー将棋を生暖かい目で末永くお待ちいただけると幸いです。

ではねちゃお。















2012年4月29日日曜日

Mechawooser shogi and his UI interface

At first thing, I'll attend WCSC22(The 22nd World Computer Shogi Contest) with NON-GPGPU program. It's not the part of this blog entry, but very, very important thing, so I've mentioned it before starting the today's blog entry.

   * * *    * * *  

Today, I'd like to talk about UI interface of Mechawooser Shogi (Japanese Chess Playing Program) and their unique technologies that be used in this program.

Mechawooser shogi's UI is formed by Titanium Desktop technologies.
Especially for using Python language to communicate UI view and the "Think":
Alpha-beta based AI components.

Titanium Desktop is a kind of pretty little (but sufficient) webkit browser,
and users can be built their UI based program within program's index.html (with Javascript features such as JQuery). In Mechawooser Shogi, most important choice
of programming language that be used within the Titanium Desktop is Python language!

Titanium Desktop environment can be used various programming language at a
same time within unique index.html (and imported program fragments also downloaded simultaneously).

Let's take watching inside structure of Mechawooser Shogi.
1. Communication routines for shogi server (like chess server) was already written by Python by using socket modules.

2. Write the Shogi board to index.html by using table environment, and manipulate
Shogi pieces by JQuery.

3. Communication routines wait for message from shogi server and throw the queue entry to the queue that is always polling in timer thread(interval = 100ms).

4. polling timer thread recognize the aim of queue entry and redraw the shogi board by using JQuery Commands.

5. Communication routines also invoke Think() function within the shared library.
In order to invoke Think() functions, we use ctypes module of Python language.
the ctypes library can invoke C-linkage functions within the Python Environment.
When Think() is returned the result (=the next move), Communication routines tell the next move to shogi server, and shogi server return the emission time, then queue entry of rewriting the shogi board is en-queued, and finally UI appearance is changed.


The start button of the Shogi Game in the index.html is connecting to Javascript handler. But actually these handler is defined in the Python Program fragments.

2012年4月6日金曜日

アピール文書提出しました

今年もアピール文書を提出しました。


  • GPGPU実装ではなくCPU実装
  • 去年の実装を少し変えた実装で参加予定
  • 引き続きGPGPU実装は研究中です


今年は少し控えめに作りました。最後に新しい検索手法の素案がありますので、
興味のある方はどうぞ!

http://www.computer-shogi.org/wcsc22/appeal/mechawooser_shogi/MechawooserWCSC22.pdf

2012年1月22日日曜日

WCSC22 (第22回世界コンピュータ将棋選手権)

先ほどコンピュータ将棋選手権の出場手続きを取りました。あ、月曜日に郵便局いってきます。

今年は並列(GPGPU)のメカウーサー将棋を出場させたいと思っています。できればボナンザさんのfv.binも使えればと思っています。
目標はYBWCをGPGPU上で動かすこと、並列な可能手生成と評価関数の計算を行うこと、です。

進捗は芳しくなく、まだまだ先は長いですが、ゆっくりと歩を進めていきたいと思います。