Hyrose
Hyroseとは †
- HydLaプログラムのシミュレータである
- 数式処理を用いて, 誤差のないシミュレーションを可能とする
- 記号実行を可能として、パラメータを含むシステムを扱える
- パラメータによってシステムの振る舞いが定性的に異なる際の場合分けが可能である
- 有限時間に対する性質検証が可能である
- HydLaプログラムに対するシミュレーション, パラメータ解析, 有界モデル検査を高信頼に行うことが可能である
インストール方法 †
DownloadページからHyroseをダウンロード後, 数式処理ソフトウェアの利用方法に書いてある準備を行えば使用可能
使用法 †
- HyroseにHydLaプログラムを入力すると, シミュレーション結果が出力される
- 出力は, 標準出力への出力の他にJSON形式でも出力される
- 出力されるファイル名は, <プログラム名>.hydatという形となる
オプションと意味 †
-h [--help] : Hyroseのヘルプを表示する
--version : Hyroseのバージョンを表示する
-d [--debug] : Hyroseのデバッグモードを有効にする
--parse_only : HydLaプログラムのパースのみを行う
--dump_parse_tree : HydLaプログラムのパース結果を出力する
--dump_module_set_list : HydLaプログラムの解候補となるモジュール集合の集合をリスト型式で出力する
--dump_relation_graph : HydLaプログラムの変数や制約の関係を出力する
--dump_in_progress : 各フェーズの計算が終わるごとにそのフェーズの結果の出力する (本来は, シミュレーションが全て終了したときに結果が表示される)
--search arg (=d) : 全解探索時の探索方法を指定する d : 深さ優先探索(Depth First Search) (デフォルト) b : 幅優先探索(Breadth First Search)
-s [ --solver ] arg (=m) : バックエンドで使用するソルバを指定する m : Mathematica r : Reduce
--nd : 全解探索を有効にする 有効にしない場合, 場合分けが発生すると自動的に一つの場合(Case)が選択されそのケースについてのシミュレーションが進んでいく
--in : インタラクティブモードを有効にする
--find_unsat_core : unsat coreを発見する
--use_unsat_core : unsat coreを用いたシミュレーションを行う
--ha : HydLaプログラムのHA(Hybrid Automaton)への変換を行う
--hs : HA(Hybrid Automaton)を用いたシミュレーションを行う
--parallel : 並列処理モードを有効にする
--pn arg (=2) : 並列処理の個数を設定する(デフォルトは2)
--reuse : シミュレーションにおける再利用を有効にする
--tm arg (=n) : 時間計測を行う. n : 時間計測を行わない(デフォルト) s : 時間計測を行い, 標準の出力型式で時間計測結果を表示する c : 時間計測を行い, csv形式で時間計測結果を表示する
--csv arg : 時間計測を行いcsv形式で出力する(--tm c)の場合において, 出力するcsvファイルの名前を指定する このオプションが空の場合, 標準出力に出力する
-O [ --optimization-level ] arg (=0) : 最適化のレベルを指定する(デフォルトは0)
--analysis_mode arg : 分析モードを有効にする empty : 制約の分析を行わない use : 分析ファイルを使用する output : 制約を分析し, 結果をファイルに出力する simulate : 制約を分析し, 分析結果をシミュレーションに利用する
--analysis_file arg : 分析ファイルを指定する empty : 標準出力や標準入力となる
-o [ --output_name ] arg : hydat形式でシミュレーション結果を出力する際のファイル名を指定する empty : ./hydat/<program_name>.hydat に出力される -t [ --time ] arg : シミュレーションの時間制限を指定する(Max Time) empty : 時間の制限はない
--ignore_warnings : 主に計算において起きた警告を無視する
-p [ --phase ] arg (=-1) : シミュレーションのフェーズ制限を指定する(Max Phase) positive value : そのフェーズまでのシミュレーションとなる negative value : フェーズの制限はない
-a [ --approx ] : アフィン近似を用いたシミュレーションを行う
-c [ --change ] : 特定の場合に次の離散変化時刻を変更可能にする
-e [ --epsilon ] arg (=-1) : epsilonモードを有効にする
--timeout_calc arg (=-1) : バックエンドの計算において, timeoutを指定する negative or zero : timeoutの制限はない
--fail_stop : assert違反が起きた場合に, 全てのシミュレーションを停止する
--math_name arg (=math) : Mathematicaのコマンドを指定する
数式処理ソフトウェアの利用方法 †
- 現在のHyroseでは, 求解時に数式処理ソフトウェアとしてMathematicaやREDUCEを用いている
- これらを利用するために, それぞれ下記の準備を行い, 使用するソフトウェアをsolverオプションにて指定する
Mahtematica †
- バージョン7以降のインストールが必要(8を推奨)
- Mathematica8でないとエラーの発生する例題も確認されている(2011/12/21)
- Mathematicaのパスが通っていれば使用可能
- 具体的には, math コマンドによってMathematicaが起動可能であればよい
- math コマンド以外で起動する場合には, 「--mathlink」オプションによってlinkname後のコマンド名をmathから該当名に変更すればよい
- GUI環境なら, 起動するMathematicaの実行ファイルを毎回指定することができる
- 具体的には, math コマンドによってMathematicaが起動可能であればよい
Reduce †
- 20101007版(それ以降には未対応)のインストールが必要
- REDUCEを数式処理ソルバとして使用する場合, 以下の手順に従う
- REDUCEのインストール手順
- Windows系OS
- sourceforgeのサイトからソースコード(reduce-windows64-20101007.zip または reduce-windows32-20101007.zip)をダウンロードして解凍する
- (64bit版のREDUCEを実行するにはmingw-w64-gcc-4.6.3-runtime-2.0.1-shared-ada-20120322.7zのbin/ のDLLが必要)
- linux系OS
- sourceforgeのサイトからソースコード(reduce-algebra-20101007.tar.bz2)をダウンロードして, 実行ファイルを作成する
- ソケット通信時にsleep関数が原因のボトルネックが存在するため, パッチを当てて対処する必要がある
- wget http://jaist.dl.sourceforge.net/project/reduce-algebra/reduce-algebra-20101007.tar.bz2
- bzip2 -dc reduce-algebra-20101007.tar.bz2 | tar xvf -
- cd reduce-algebra-20101007/
- (reduce-algebra-20101007/ディレクトリに filepatch.txt をコピー)
- patch -d csl/cslbase/ < patch.txt
- ./configure --with-csl --without-gui
- make
- このmakeによって/cslbuild/[各OSの名前]/csl/reduce に実行ファイルが生成される
- Windows系OS
- REDUCEによるHyrose実行手順
- hydla実行ファイルと同じディレクトリの sr.sh を使って, REDUCEの起動, 終了と共にHyroseを実行する
- [REDUCE_PATH]に生成したreduceのパスを設定すること
- windows系の場合, cygwinを使って実行する
- 例としてREDUCEの解凍場所を「C:\reduce-i686-pc-windows-20101007\」にした場合, [REDUCE_PATH]には「/cygdrive/c/reduce-i686-pc-windows-20101007/」と書く
- 実行例
sh sr.sh examples/bouncing_particle.hydla -t 1
- [補足] linux版のREDUCEサーバは非同期通信に対応しているため、裏で起動しておけばsr.shなしでhyroseを実行出来る
- サーバ起動例
[REDUCE_PATH]/reduce -w -F- &
Last-modified: 2017-03-02 (Thu) 03:21:30 (2606d)