ai65536's blog

将棋とかプログラムとか

ShogiGUIバージョン番号についてのメモ

 

バージョン番号

1.0.0.0
         ↑ビルドバージョン

           (リリース時に+1, メジャー&マイナーバージョン更新時にリセット)
      ↑リビジョン
   ↑マイナーバージョン

     (80~は次のバージョンの開発番号、リリース後は大規模修正時に+1)
↑メジャーバージョン (0は開発中)

  

マイルストーン バージョン 説明
試作盤 0.0.0.0  
α版 0.0.1.0 機能や性能の評価バージョン
β版 0.90.0.0 機能Fix、使い勝手や性能の評価バージョン
 RC版 0.99.0.0 リリース候補

 

 バージョン1リリース     1.0.0.0

 

バージョン2開発中 1.80.0.0
バージョン2α盤 1.80.1.0
バージョン2β盤 1.90.0.0
バージョン2RC 1.99.0.0

バージョン2リリース 2.0.0.0

 

 なんか変えたからバージョン変更とかではなく、そのバージョンに入れるべき機能を明確にしてバージョン管理すること。

 

盤面情報をハフマン符号化 実験メモ

局面のハッシュキーにはZobristハッシュが一般的に使われているが、

ハッシュキーの衝突問題がある。

局面をハフマン符号化してハッシュキーとして使用できれば、

衝突問題の回避や盤面情報の復号も簡単に行える。

定跡DBを作成するにあたり、

局面のハッシュキーに盤面情報をハフマン符号化のテストする。

 

結論

エンコードに時間がかかりすぎる

正確に計測してないが、遅すぎて途中で寝てた

 

・想定よりサイズが大きい

ハッシュキーのサイズは256ビットだったが、実験によるワーストケースだと270ビットとなっている。(これに持ち駒情報42bitと手番情報1ビットを加えた値が実際のサイズ)

また、実際の最長サイズがわからない。(=ハッシュキーとしては扱いづらい)

最低でも最大サイズが234ビット以下にならないと使い難い。

 

既に作成されたデータベースにアクセスするだけなら問題ないが、

 データ作成時にはある程度まとまった時間が必要である。

 また符号化後のサイズが最大サイズが不明なのも問題である。

 

これらの課題を解決するより、Zobristハッシュ+盤面情報を別途持ったほうがよいと思われる。

  

実験条件

・手持ちの棋譜の各局面をハフマン符号化する

・盤面情報は1マス5ビット x 81マスの内部で使ってる情報をそのまま使用

・持ち駒は今回のテストでは含まない

・使用した棋譜は手持ちの9,434棋譜、1,083,837局面

実験結果

駒の出現回数と符号

出現回数 符号
49579213 1
先手王 1083837 0111111
先手飛 903421 0111110
後手桂 1923870 011110
先手銀 1918885 011101
先手桂 1918681 011100
後手銀 1906048 011011
後手飛 899026 0110101
先手馬 136192 0110100111
後手馬 132729 0110100110
後手と 116075 0110100101
後手竜 115326 0110100100
先手と 114138 0110100011
先手竜 108732 0110100010
後手成銀 27668 011010000111
先手成銀 24338 011010000110
先手成香 20283 011010000101
後手成香 19875 011010000100
先手成桂 33496 01101000001
後手成桂 31144 01101000000
後手角 729714 0110011
先手角 728641 0110010
後手王 1083837 011000
後手香 2052704 01011
先手香 2051788 01010
後手金 2004913 01001
先手金 1994334 01000
先手歩 8077368 001
後手歩 8054521 000

 

符号化後のサイズ

最小 140 ビット

最大 275 ビット

平均 212ビット

処理時間

未計測だか数分で終わるような処理ではない

 

 

 

定跡ファイル

ShogiGUIの要望を見ていると、Kifファイルで定跡管理している人がいる模様。

私も定跡書を入力したりして使っています。

 

KIFファイルで定跡入力したときに困ることは、

・違う手順で同一局面になったときに違う分岐になってしまう。

 (分岐の合流ができない)

・ぱっと見その分岐が悪手か好手かわからない。

あたりだろうか。

 

やはりこの辺りはKifファイルではむずかしい。

それで定番の定跡ファイルのフォーマットがあるのかな?と調べてみたけど、どうも無いっぽい。

そもそも定跡編集ソフトが各将棋ソフトの定跡ファイルを編集することを目的にしているので、これはしょうが無いことかもしれない。

 

ここからは妄想

・ShogiGUIに棋譜っぽく扱える定跡編集機能をつける。

・定跡ファイルには局面、指し手の評価、コメント等を残せるようにする。

・宮本定跡を変換して使えるようにする。

・定跡ファイルからBonanzaやGpsfish形式に変換できるようにする。

 

インストーラー

俺用メモ

 

フリーのインストーラー作成ソフト

Wix ここからダウンロード

 

Wixを使いやすくするためのエディタ

WixEdit http://wixedit.sourceforge.net/

 

使い方

Windows上でWiXおよびWixEditを使ったインストーラ作成

WiX チュートリアル (日本語訳) — Windows Installer XML ツールセット入門

 

 

局面検索できる棋譜データベース

ShogiGUIとの連携で局面検索できる棋譜データベースを探してるんですが、なかなか良さげなものがないですね。

起動オプションで局面やその他検索オプションが指定できるといいのですが、条件に合致しそうなのはKifubaseくらいですかね。2ch棋譜のデータベースが使えたらよかったんですが、あれは局面検索が出来ない。

ただ、kifubaseは起動オプション関連は公開されていないですね。

 

 一般的なリレーショナル・データベースを使った棋譜管理ソフトとか作ってみるかな・・・。最後にRDBつかったのは21世紀になる前かあ遠い目。

 

とりあえずやりたいことは

2ch棋譜管理ソフトの機能+局面検索

・ShogiGUIとの連携

 

最近のRDBはどうなってるんだろ。前はPostgreSQL使ったんだっけか。

ぐぐるSQLiteというやつがC#からでも簡単に使えそうだし、ファイルもひとつでOkと。

 

妄想は膨らむけどそこまで大げさなものは必要ない気がする。

久しぶりの更新

旅行に行って帰ってきたらパスワード忘れて放置してた。

もう別のところに新しいブログつくろうかと思ったけど、

今日 いろいろ試してたらやっとログイン出来た。

 

最近は将棋のGUIソフト名前はそのままShogiGUIを作成しています。

ソフトを置いてあるサイトはこちらです。

https://sites.google.com/site/shogixyz/

将棋GUIだけだと何にも出来ないので、gpsfishという将棋エンジンも同梱してます。

 

一応開発の目的というかポリシーは

・分岐棋譜を扱いやすくする

・将棋所の(個人的に)使いづらい所を直す

・USIのマイボナ

 

レベルが合ってませんがこんな感じでUSI将棋エンジンを使いたい一般ユーザー向けに作っています。

 

元々はもっと単純な検討+分岐棋譜編集+コメント編集ができるソフトにするつもりでしたが、いろいろあって公開することになり、将棋ソフトとしての体裁を整えているところです。

 ソフトの名前も公開するときにいろいろ考えたのですが、面倒になって開発時のままのShogiGUIになっています。

 

リモートからWake On Lan・・・ 失敗

旅行中自宅PCを使いたくなった場合に、

LogMeInでリーモートアクセスしてたんですが、

以前はずっと自宅PCの電源を入れっぱなしでした。

 

で、インターネットから自宅PCの電源をONにするWake On Lan ではなくて、Wake On Wanか・・・試してみたんですが、どうもうまくいきません。

 

Lanだとおkなんですけどね。自宅のルーターが悪いのか・・・

設定が悪いのか。