ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

システムの固定小数点データ型の最適化

データ型の最適化は、元のシステム動作を指定された許容誤差内で維持しながら指定されたシステムの合計ビット幅を最小化しようとします。最適化中に、ソフトウェアは元のモデルのシミュレーションを実行することで、ベースラインを確立します。次に、モデルの固定小数点バージョンを作成して、シミュレーションを実行し、新しいデータ型を使用して動作を決定します。最適化により、指定された動作の制約を満たす最小の合計ビット幅をもつモデルが選択されます。

最適化するシステムを含むモデルには、次の特性が必要です。

  • モデル内のすべてのブロックで固定小数点データ型がサポートされていなければなりません。

  • モデルは、ベースライン動作を確立するためにデータ型オーバーライドに依存することはできません。

  • モデル内のブロックに指定されている設計範囲は、シミュレーション範囲と一致していなければなりません。

  • モデルのデータ ログ形式は、[データセット] に設定しなければなりません。

    この設定を行うには、[コンフィギュレーション パラメーター] の [データのインポート/エクスポート] ペインで、[形式][データセット] に設定します。

  • モデルには有限のシミュレーションの停止時間が設定されていなければなりません。

最適化プロセスでは、ソフトウェアによって次のモデル コンフィギュレーションの変更が行われます。

  • [コンフィギュレーション パラメーター] の [診断][データ有効性] ペインで、[シミュレーション範囲のチェック] パラメーターを [エラー] に設定します。

    シミュレーション範囲で指定された設計範囲に違反しているものがある場合、最適化は停止します。

  • [コンフィギュレーション パラメーター] の [診断][データ有効性] ペインで、[桁落ちの検出][アンダーフローの検出] および [オーバーフローの検出] パラメーターを [なし] に設定します。

    システムのデータ型を最適化するために、最適化ではベースライン モデルの精度が低くなります。したがって、オーバーフロー、アンダーフローおよび桁落ちが一部で発生するものと想定されます。addTolerance メソッドを使用して許容可能なレベルの量子化を設定できます。

[コンフィギュレーション パラメーター] ダイアログ ボックスでの最適化後に、これらの診断を元に戻すことができます。

データ型の最適化のベスト プラクティス

制約の定義

新しい固定小数点実装の動作が許容可能かどうかを判定するために、最適化には正しく定義された動作の制約が必要です。制約を定義するには、fxpOptimizationOptions オブジェクトの addTolerance メソッドを使用するか、1 つ以上の Model Verification (Simulink) ブロックを使用します。

ロックされているデータ型を最小限にする

最適化するシステム内のブロックの [固定小数点ツールによる変更に対してデータ型の設定をロックする] 設定が有効になっている場合、新しい解を求める最適化プロセスの自由度が最低限に抑えられます。

モデル管理および調査

関数 fxpopt は、解と呼ばれる一連の固定小数点実装を含む OptimizationResult オブジェクトを返します。最適化プロセスにより、指定された動作の制約を満たす固定小数点実装が見つかった場合、解はコストで並べ替えられ、最も小さいコスト (ビット幅) の最適解が配列の最初の要素として指定されます。

最適化で動作の制約を満たす固定小数点実装が見つからない場合、解は、ベースライン モデルとの最大の差の絶対値によって、最小の差が最初の要素になるように順序付けられます。

OptimizationResult オブジェクトの explore メソッドを使用して、見つかった最適解を調べます。また、見つかった他の解も同じように調べることができます。維持する解を選択するまでモデルを保存して閉じないでください。モデルを閉じたり保存したりすると、別の解をさらに調査できなくなります。

固定小数点データ型の最適化

この例では、指定した許容誤差に基づいてシステムで使用されるデータ型を最適化する方法を示します。

最初に、データ型を最適化するシステムを開きます。

model = 'ex_auto_gain_controller';
sud = 'ex_auto_gain_controller/sud';
open_system(model)

fxpOptimizationOptions オブジェクトを作成して、設計目標を満たすように制約と許容誤差を定義します。fxpOptimizationOptions オブジェクトの UseParallel プロパティを true に設定して、最適化の反復を並列実行します。AllowableWordLengths プロパティを使用して、設計で許容する語長も指定できます。

opt = fxpOptimizationOptions('AllowableWordLengths', 10:24, 'UseParallel', true)
opt = 

  fxpOptimizationOptions with properties:

           MaxIterations: 50
                 MaxTime: 600
                Patience: 10
               Verbosity: High
    AllowableWordLengths: [10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]

   Advanced Options
         AdvancedOptions: [1×1 struct]

addTolerance メソッドを使用して、システムの元の動作と最適化された固定小数点データ型を使用した動作の差の許容誤差を定義します。

tol = 10e-2;
addTolerance(opt, [model '/output_signal'], 1, 'AbsTol', tol);

関数 fxpopt を使用して最適化を実行します。設計対象のシステム内のオブジェクトの範囲と fxpOptimizationOptions オブジェクトで指定された制約がソフトウェアで解析され、総ビット幅を最小限に抑えながら異種混合のデータ型がシステムに適用されます。

result = fxpopt(model, sud, opt);
	+ Preprocessing
	+ Modeling the optimization problem
		- Constructing decision variables
		- Binding constraints
	+ Running the optimization solver
		- Evaluating new solution: cost 180, does not meet the tolerances.
		- Evaluating new solution: cost 198, does not meet the tolerances.
		- Evaluating new solution: cost 216, does not meet the tolerances.
		- Evaluating new solution: cost 234, does not meet the tolerances.
		- Evaluating new solution: cost 252, does not meet the tolerances.
		- Evaluating new solution: cost 270, does not meet the tolerances.
		- Evaluating new solution: cost 288, does not meet the tolerances.
		- Evaluating new solution: cost 306, meets the tolerances.
		- Updated best found solution, cost: 306
		- Evaluating new solution: cost 304, meets the tolerances.
		- Updated best found solution, cost: 304
		- Evaluating new solution: cost 300, meets the tolerances.
		- Updated best found solution, cost: 300
		- Evaluating new solution: cost 299, meets the tolerances.
		- Updated best found solution, cost: 299
		- Evaluating new solution: cost 298, meets the tolerances.
		- Updated best found solution, cost: 298
		- Evaluating new solution: cost 297, meets the tolerances.
		- Updated best found solution, cost: 297
		- Evaluating new solution: cost 296, meets the tolerances.
		- Updated best found solution, cost: 296
		- Evaluating new solution: cost 295, meets the tolerances.
		- Updated best found solution, cost: 295
		- Evaluating new solution: cost 294, does not meet the tolerances.
		- Evaluating new solution: cost 293, meets the tolerances.
		- Updated best found solution, cost: 293
		- Evaluating new solution: cost 292, meets the tolerances.
		- Updated best found solution, cost: 292
		- Evaluating new solution: cost 291, meets the tolerances.
		- Updated best found solution, cost: 291
		- Evaluating new solution: cost 290, meets the tolerances.
		- Updated best found solution, cost: 290
		- Evaluating new solution: cost 289, meets the tolerances.
		- Updated best found solution, cost: 289
		- Evaluating new solution: cost 287, meets the tolerances.
		- Updated best found solution, cost: 287
		- Evaluating new solution: cost 283, meets the tolerances.
		- Updated best found solution, cost: 283
		- Evaluating new solution: cost 282, meets the tolerances.
		- Updated best found solution, cost: 282
		- Evaluating new solution: cost 281, meets the tolerances.
		- Updated best found solution, cost: 281
		- Evaluating new solution: cost 280, meets the tolerances.
		- Updated best found solution, cost: 280
		- Evaluating new solution: cost 279, meets the tolerances.
		- Updated best found solution, cost: 279
		- Evaluating new solution: cost 278, meets the tolerances.
		- Updated best found solution, cost: 278
		- Evaluating new solution: cost 277, does not meet the tolerances.
		- Evaluating new solution: cost 276, meets the tolerances.
		- Updated best found solution, cost: 276
		- Evaluating new solution: cost 275, meets the tolerances.
		- Updated best found solution, cost: 275
		- Evaluating new solution: cost 274, meets the tolerances.
		- Updated best found solution, cost: 274
		- Evaluating new solution: cost 273, meets the tolerances.
		- Updated best found solution, cost: 273
		- Evaluating new solution: cost 272, meets the tolerances.
		- Updated best found solution, cost: 272
		- Evaluating new solution: cost 270, meets the tolerances.
		- Updated best found solution, cost: 270
		- Evaluating new solution: cost 266, meets the tolerances.
		- Updated best found solution, cost: 266
		- Evaluating new solution: cost 265, meets the tolerances.
		- Updated best found solution, cost: 265
		- Evaluating new solution: cost 264, meets the tolerances.
		- Updated best found solution, cost: 264
		- Evaluating new solution: cost 263, meets the tolerances.
		- Updated best found solution, cost: 263
		- Evaluating new solution: cost 262, meets the tolerances.
		- Updated best found solution, cost: 262
		- Evaluating new solution: cost 261, meets the tolerances.
		- Updated best found solution, cost: 261
		- Evaluating new solution: cost 260, does not meet the tolerances.
		- Evaluating new solution: cost 259, does not meet the tolerances.
		- Evaluating new solution: cost 260, meets the tolerances.
		- Updated best found solution, cost: 260
		- Evaluating new solution: cost 259, meets the tolerances.
		- Updated best found solution, cost: 259
		- Evaluating new solution: cost 258, meets the tolerances.
		- Updated best found solution, cost: 258
		- Evaluating new solution: cost 257, meets the tolerances.
		- Updated best found solution, cost: 257
		- Evaluating new solution: cost 255, meets the tolerances.
		- Updated best found solution, cost: 255
		- Evaluating new solution: cost 251, meets the tolerances.
		- Updated best found solution, cost: 251
		- Evaluating new solution: cost 250, meets the tolerances.
		- Updated best found solution, cost: 250
		- Evaluating new solution: cost 249, meets the tolerances.
		- Updated best found solution, cost: 249
		- Evaluating new solution: cost 248, meets the tolerances.
		- Updated best found solution, cost: 248
		- Evaluating new solution: cost 247, meets the tolerances.
		- Updated best found solution, cost: 247
		- Evaluating new solution: cost 246, meets the tolerances.
		- Updated best found solution, cost: 246
		- Evaluating new solution: cost 245, does not meet the tolerances.
		- Evaluating new solution: cost 244, does not meet the tolerances.
		- Evaluating new solution: cost 245, meets the tolerances.
		- Updated best found solution, cost: 245
		- Evaluating new solution: cost 244, meets the tolerances.
		- Updated best found solution, cost: 244
	+ Optimization has finished.
		- Neighborhood search complete.
		- Maximum number of iterations completed.
	+ Fixed-point implementation that met the tolerances found.
		- Total cost: 244
		- Maximum absolute difference: 0.077478
		- Use the explore method of the result to explore the implementation.

OptimizationResult オブジェクト resultexplore メソッドでシミュレーション データ インスペクターを起動して設計を調べ、opt オブジェクトで指定された数値許容誤差の範囲内で総ビット数が最小になっていることを確認します。

 explore(result);

参考

関数

クラス

関連するトピック