(はじめに) 私(deepgreen)のSokobanSolver DGsoko#2.1に関心をお寄せいただき、有り難うございます。 DGsoko#2.1(以下では単にSolverと言います)はまだ開発途上のsolverです。デバッグの為の 情報が出力されたり、コケたりするのはご愛敬と思いご容赦ねがいます。 以下に、Solverの使用法を簡単に説明します。 (内容) .準備 .Solverの実行 .出力結果の説明 何かありましたら、下記宛てにe_mailをお願いします。 deepgreen@thn.ne.jp =========================================== 1.準備 Solverの動作環境、インストール、マップファイル形式などについて説明します。 1.1 必要なファイルの確認 以下のファイルが必要となります。添付ファイルに不足がないことを確認してください。 (1) DGsoko#0201.exe : Solver本体 (2) sample_map.soko : マップファイルのサンプル (3) sample_log.txt : Solverの出力ファイルのサンプル 1.2 動作環境 Solverの動作環境として、以下の資源が必要となります。少なくともこれ以上の環境で 実行されるようお願いします。 a.動作OS Windows95 (windows98でも動作可能と思いますが実績はありません) b.CPU Pentium 133MHz以上 c.メモリ 40MB以上 d.ディスク カレントディレクトリ配下に以下の3ファイルが作成できること syslog.txt : 約40KB errlog.txt : 約140KB log.txt : 数MB syslog,errlogは累積されるので時々クリアしてください 1.3 インストール 1.1で示した添付ファイルを適当なディレクトリ配下にコピーしてください。 (他は何も必要ありません) 1.4 マップファイルの準備 マップファイルは添付されません。以下の形式に従って誤りなく作成願います。 (サンプルのマップファイルを参考にしてください) (1) マップの記述形式は、Xsokoban形式です。 (2) マップファイルの命名規約は、xxx.sokoとしてください。(xxxは任意) Solverは、”.soko”の修飾子をみてマップファイルと認識します。 Perfect/Revenge等のセットものは、一つのディレクトリ配下にまとめて、”nnn.soko” (nnn:番号)の名称をつけておくと、一括実行の機能が使用でき便利です。 =========================================== 2.Solverの実行 Solverの実行方法には、以下の2つの方法があります。 .single_run :任意のマップを1つづつ実行するモード .auto_run :Perfect/Revengeといった一連のマップを自動的に 実行するモード 実行時間の調整などのオプションを変更することができますが、(2.2.1を参照) 通常は省略値のままで問題ありません。 最初に添付のsample_map.sokoを指定して解かせて、sample_log.txtと同じ結果が 得られることを確認してください。(動作環境の確認の為) 2.1 single_run マップを1つ1つ手操作で解かせる時の使い方です。概略以下の手順となります。 (0) Solverの起動 (1) マップの指定 (2) 実行 (3) 結果の確認 (1)−(3)を必要なだけ繰り返す。 (log.txtは上書きされるので必要なら退避してください) 2.1.0 Solverの起動 通常のプログラムの起動と同じです。Exploreの画面でSolverをダブルクリック してください。(正常に起動されれば、初期画面が表示されます) 2.1.1 マップの指定 a.初期画面の上部にあるloadボタンをクリックする (openfileダイアログが表示されます) b.表示されたopenfileダイアログボックスの中から解かせたいマップをクリック c.openfileダイアログのOKボタンをクリック このあとSolverは指定されたマップを読み込んで画面に表示します d.表示されたマップが違っている場合は、aに戻ってやり直してください。 問題なければ次の実行に進んでください。 2.1.2 実行 a.表示されているマップを解かせたい場合は、画面上部にあるrunボタンをクリックする このとき、後述(2.2)のauto-runモードが解除されていることを確認してください (エラーがあった場合) 右上の窓にエラーが表示されますので、2.1.3の指示に従ってください。 (途中経過の表示) 解析が正常に開始されると、探索処理の途中経過がサイクル数があがる都度表示されます。 画面の右上の窓には、 m : サイクル数 G : ゴール数 Tnet: 展開した局面数 また、途中経過のマップとして最良パターン(ゴール数が最大のもの)も表示されます。 このマップを見ていると、なんとなくSolverの動きがみえてきます。 画面に出力されたデータはすべてlog.txtにも出力されていますので、あとで見る ことができます。 (解析終了) 終了のタイプには2通りあります。解が得られた場合、画面の右上の窓に " lucky!!!...” という表示がでます。そして、log.txtに解答手順が出力されます。 (log.txtの見方は3.を参照) 解がえられずに終了した場合、画面の右上の窓にエラーの表示がでますので、2.1.3の指示 に従ってください。 b.続けて、他の問題を解かせる場合は、2.1.1から繰り返してください。なお、log.txtは 上書きされますので注意してください。 2.1.3 エラー等の対処 Solverの代表的なエラー出力の説明をします。 Prepare failed .サポート範囲外のマップ(荷物が60個を越えた)を検出した場合に表示されます。 このマップはSolverではサポート対象外ですので、他のマップにしてください。 .誤ったマップの場合にも表示されますので、マップの確認をお願いします。 GPordering failed マップの初期解析に失敗した。Solverがgiveupです。他のマップにしてください。 timeover 時間切れで解の探索を終了した。 Tnet overflow,BGL overflow Solver内部の制御表が不足したため探索を終了した。 Neat Search failed 候補手がなくなった為、探索を終了した。 2.2 auto_run マップを自動的に解かせる時の使い方です。概略以下の手順となります。 (0) Solverの起動 2.1.0を参照してください (1) オプションの指定 (2) 実行 (3) 結果の確認 log.txtは上書きされるので最後のマップの表示になっています。 2.2.1 オプションの指定 a.初期画面の上部のoptボタンをクリックする (Option画面が表示されます) b.Option画面で、auto_runモードの為の以下の設定をしてください。 (BatchOption) Dir : マップの存在するディレクトリを指定する ex. D:\sokoban\maps\perfect Range:実行範囲をマップの番号で指定する 001.sokoから020.sokoを実行するときは最初の窓に ”1” 次の窓に ”20”を指定する Maptype:解くのに時間のかかるマップ(標準時間ないでは解けない) を時間延長して実行させるときの指定です。 0:とくに指定しない 1:perfectのセット 2:revengeのセット 3:Xsokobanのセット (SearchOption) SearchTime :マップの探索時間の最大値を秒単位で指定します。 通常は、標準の300秒で十分です。 (MiscOption) autorun :auto_runモードにするときは、チェックをオンにする on/offスイッチですので一度クリックすればよい。 以上で設定は終わりです。autorunがオンになっている事を確認してください。 2.2.2 実行 初期画面の上部にあるrunボタンをクリックすると実行が開始されます。 ** ディレクトリ名、マップ名に誤りがあるとコケますので注意してください。 実行中は、タイトルにマップのファイル名が表示されます。これでどこまで進行して いるかを知ることができます。 2.2.3 結果の確認 syslog、errlogをみて判断してください。開始番号=終了番号のときは 1つ実行して終了しますので、logファイルも意味があります。 3.出力結果の説明 Solverの出力結果には、以下の3ファイルがあります。 .log.txt マップの詳細解析データ、解答手順等が出力されます。 .syslog.txt auto_runの結果ファイル .errlog.txt auto_runのとき、解けなかった局面が出力される single_runでは、log.txtのみ、auto_runでは3種類すべてのファイルが作成されます。 なお、syslog.txt,errlog.txtは累積モードです。 3.1 log.txt log.txtには、マップの初期解析データ、Solverの途中経過データ、解答手順が出力されます。 (マップの初期解析データ) これは、私のデバッグの為の情報です。無視してください。 Solverのソースコードを解読する場合は、ここに内部制御表が出力されているので参考に みていただくと、すこし制御表のイメージがつかめると思います。 主な制御表としては、 assignlist RGmask RGmap(GPmapと表示) GPorder (Solverの途中経過) 画面表示+α(統計情報)が出力されます。 (解答手順) マップが解けた場合、”congratulation ”という表示とともに最終局面が表示されます。 続いて、<< operation display >> というlineのあとに、初期局面からの1手ごとの 手順と局面の推移が表示されます。 3.2 syslog.txt auto_runのとき、累積ファイルの形で作成されます。 内容については、下記のHPを参照してください。 http://www2.tokai.or.jp/deepgreen/sokoban/result.htm 3.3 errlog.txt auto_runのとき、解けなかったマップの最終局面が累積ファイルの形で作成 されます。この最終局面をみて、Solverのチューニング/エンハンスを考えます。