SciML/ComponentArrays.jl
Arrays with arbitrarily nested named components.
何を解決するか
微分方程式や最適化のソルバーなど、多くの科学計算ソルバーはパラメータや状態をフラットなベクトルとして受け取る必要があります。しかし、これらのフラットなベクトルを手動で管理するのはエラーを引き起こしやすく、保守が困難です。特に、複数の小さなモデルを大きなモデルに組み合わせる場合、各変数が配列内のどこにあるかを常に追跡する「インデックスのやり取り」が必要になるためです。
仕組み
ComponentArrays.jl は ComponentArray 型を導入します。これはフラットな配列と NamedTuple のハイブリッドのようなものです。データは連続したフラットなベクトルとして格納されますが、名前付きインデックスを使ってデータにアクセス・変更・スライスできます。これにより、開発者はデータを構造化されたネストされたオブジェクトとして扱える一方で、下位のソルバーは期待するフラットなベクトルを受け取ることができます。
対象ユーザー
主に SciMLエコシステム(特に DifferentialEquations.jl と Optim.jl)を使用している研究者やエンジニア、または数値ソルバーにフラットなベクトルが必要だが、構造化されたモデリングアプローチを維持したいプロジェクト向けに設計されています。
特徴
- 名前付きアクセス: 整数インデックスではなく名前を使って配列ブロックにアクセス。
- シームレスな組み合わせ:
ComponentArrayのビューを小さな関数に渡すことで、独立したモデルを組み合わせられます。 - フラットベクトルとの互換性: 標準的なフラットベクトルを要求するソルバーと完全に互換性があります。
- 自動次元拡張: ブロードキャスト操作を通じて、高次元の
ComponentMatrixオブジェクトの作成をサポートしています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト