Dsl (Digital Simulation Library) for .Net の特徴

Microsoft .NET Framework に特化した汎用数値シミュレーション用のクラスライブラリーです。

プログラマーは、本来の数式モデル構築とは直接関係ない(が負担の大きい)作業から解放され、大規模なシステムでも見通し良く解析できます。

プログラマーDsl
計算式を羅列するだけ Dsl が計算順序を決定
値を知りたい変数を指定 不必要な変数・計算式は無視
結果(左辺変数値)を指定 左辺変数を所望の値にするための連立代数方程式を自動構築
積分変数・微分変数を指定 連立常微分方程式を構築
定常状態を指定 微分係数ゼロ(時間変化ゼロ=定常状態)となる積分変数を計算
つまり、常微分方程式を代数方程式に変換

※Dsl が対象とする「数式モデル」は「代数方程式(一般に非線形)」、時間に依存した「常微分方程式」、および 単純な時間遅れ「Delay」からなります。(説明の都合上「時間」ですが「グローバルに増加変動」するものならば何でも可です。)

 Dsl のテクノロジー

Dsl には様々なテクノロジーが実装されています。

テクノロジー 概説 
グラフ処理エンジン 計算順序、連立方程式の組み立て、計算ループの検出(計算ループは連立方程式に組み込まれます)、解の存在性チェック等
代数方程式ソルバー
( &Mol )
  1. Newton法
    • Jacobian行列の非ゼロ要素が少ない場合、一般行列解法からスパース行列解法に自動移行
    • 数値微分法の実装で面倒な解析微分式は不要

  2. Mol (Math Object Library) for .Net と統合された高度な数値計算
常微分方程式ソルバー Runge-Kutta法、Euler法、Backward-Euler法
積分刻みを自由に変化させることも可能
ビジュアル化 折れ線グラフ表示/印刷モジュール、変数一覧表等
ファイルI/O オブジェクトの Save/Restore 機能

実装されているテクノロジーの詳細や実際のプログラミング等はリファレンスの項を参照してください。


 詳細の前に

Dsl の主体は以下の2つで、非常に単純なクラス構造となっています。

クラス概説 
Processor計算順序の決定と計算処理の実行
Variable 個々の変数。以下のプロパティ(属性)を持ちます。
  • 右辺変数の配列 (List<Variable> RightSideVariables)
  • 値 (double Value)
  • 計算式 (delegate ComputeValueAt)
  • 属性 (USERFLAG Flag)
※CやFORTRANでは変数は double 等のスカラーですが Dsl では、それに属性が追加されます。

右のソースコードが最も単純なプログラミングイメージとなります。
※ y = x1 + 1.0 → 0  (計算式 y=x1+x2 で x2 が 1.0 の時、y が 0 になる x1 を計算します。)

 
    Processor pr  = new Processor("Test");   // Processorオブジェクトの作成
    Variable x1   = new Variable (pr,"x1");  // y,x1,x2 の各変数作成
    Variable x2   = new Variable (pr,"x2");
    Variable y    = new Variable (pr,"y");
    y.SetRightSideVariables(x1,x2);          // y = f(x1,x2) の因果関係定義
    // y = f(x1,x2) の具体的な計算式定義(y = x1 + x2)。
    y.ComputeValueAt = delegate(Processor pr, Variable self,double time,double step)
    {
         // selfは y、rhsvsは y の右辺変数配列。rhsvs[0]は x1、rhsvs[1]は x2
         List<Variable> rhsvs = self.RightSideVariables;
         return rhsvs[0].Value + rhsvs[1].Value;  // x1+x2 の計算値を返す。
    };
    // 属性と値: Y は計算結果として 0 となる、その時の X1 を求める(X2は定数)。
    y.Flag =USERFLAG.TARGETED; y.Value=0;
    x1.Flag=USERFLAG.REQUIRED; x2.Flag = USERFLAG.SET; x2.Value = 1.0;
    ...................................
    // 計算順序や連立方程式の構築
    if (pr.DeterminateOrder()==RESULT.OK)
    {
         // 成功したら計算実行
         pr.Run();
    }
 
 
各クラスや実際のプログラミング例等はリファレンスの項を参照してください。



 Dsl のダウンロード

Dsl(とMol)のダウンロードはこちら(dsl_mol_bins.zip)から。 以下のバイナリーモジュールが圧縮されています。

  1. Dsl モジュール
    Dsl 本体モジュール 説明 
    Dsl.dllグラフ処理エンジン、各種Dslオブジェクトの管理や計算順序の決定と計算の実行
    DslSerializer.dllアプリケーション内容をファイル等に書き込んだり、逆に読み込むためのモジュール
    DslDialog.dll計算結果情報や折れ線グラフを表示・印刷するツールモジュール
    ※DslDialog.dll(折れ線グラフ等表示しないなら必要ありません)以外は必須です。

  2. ソルバーモジュール 連立方程式などを実際に解くソルバーモジュールはMol モジュールに組み込まれています。

  3. 例題実行モジュール
    例題 説明 
    DslExamples32.Exe、DslExamples64.ExeDsl の例題実行モジュール(32/64ビット)

Dsl/Mol を利用する環境やインストール等はこちらを参照してください。

※Dll は全てアプリケーション(*.Exe)と同じ場所に置いてください。「Program Files」等のシステムフォルダは避けてください。
※上記DLLをダウンロードすれば、直ちに「評価版」として利用できます。
※評価版に変数の数や連立方程式のサイズ等の制限はありません。


 ドキュメントのダウンロード

Dsl に関係するドキュメントは全て「ヘルプファイル」の形式で提供されます。 以下のドキュメントが圧縮されています。

ヘルプファイル説明 
Dsl.chm Microsoft Compiled HTML Help形式。Windows 98時代から使用されています。Viewer は Windows に付属しています。
Dsl.mshc/Dsl.msha Microsoft Help 3 や Microsoft Help Viewer 1.x とも呼ばれている最新形式です。  Dsl.mshcはヘルプ内容の複数ファイルを標準の zip 形式に圧縮した形式です。  内容自体は任意の Web ブラウザで表示することができます。

※MSHC 形式のヘルプは Visual Studio のヘルプコンテンツに登録できます。

 方法は

  • 同梱の Install_Dsl.bat を実行する(HelpLibraryManagerLauncher.exe が登録処理を代行してくれます。逆は Remove_Dsl.bat を実行します。)。
  • Visual Studio 2010 のメニューで [ヘルプ]-[ヘルプ設定の管理]から「ディスクからコンテンツをインストール」を選択して登録します。 事前に Dsl.msha を HelpContentSetup.msha という名前のファイルにコピーしてから、HelpContentSetup.msha を「Manifest file」に指定してください。

 プログラム例のダウンロード

簡単なソースプログラムとソリューションファイルを「C#例題集」として用意(クリック)しています。
  • ダウンロードしたらフォルダ付きで解凍してください。
  • Dll 等のバイナリーファイルは別途ダウンロードしてから Program.cs と同じ場所に全てコピーしてください。
  • Dll は Visual Studio が実行環境(Debug/Release等)にコピーするように設定してありますので確認してください。
  • 不必要なモジュール(ソルバー等)があればソリューションから削除してください。
例題は以下のようなモデル解法を(折れ線グラフ出力等)を扱っています。 ※例題は今後追加変更される可能性があります。
※各例題の内容はソースプログラムのコメント等を参照してください。







 ライセンス設定

Dsl はクラスライブラリーです。利用者は開発ソフトウェア(EXEやDLL)から Dsl(と Mol) の機能を利用できます。
Dsl の正式利用にはライセンスを購入(購入方法)し、正しく設定する必要があります。

ライセンスはシリアル番号とライセンスキーからなります。
ライセンスの設定例はメールで通知されますのでそのままの形で設定してください。
設定はプログラムの開始時、Dsl や Mol を使用する前に以下のように設定してください。


      // ライセンスのセット(以下の1行)例
      Processor.SetLicense("小林 茂雄(xxxx@zzzzzzzz.jp)", "Sxxxxxxxxx877700001", "Syyyyyyyy978053B26B4C704");
  • ライセンスが設定されてない、または誤ったライセンスを設定した場合は評価版とみなされます。
  • 評価版は「評価版」である旨のメッセージが表示されます。
  • 評価版に解く問題のサイズ等の制限はありません。
※重要※
ライセンス購入前に、必ずソフトウェア使用許諾契約書をお読みください。
ライセンスキーは代金入金確認後直ちに電子メール等でお知らせします。お客様は代金振り込みをもって「ソフトウェア使用許諾契約書」に同意したものとみなします。