SciML/ComponentArrays.jl

Arrays with arbitrarily nested named components.

何を解決するか

微分方程式や最適化のソルバーなど、多くの科学計算ソルバーはパラメータや状態をフラットなベクトルとして受け取る必要があります。しかし、これらのフラットなベクトルを手動で管理するのはエラーを引き起こしやすく、保守が困難です。特に、複数の小さなモデルを大きなモデルに組み合わせる場合、各変数が配列内のどこにあるかを常に追跡する「インデックスのやり取り」が必要になるためです。

仕組み

ComponentArrays.jlComponentArray 型を導入します。これはフラットな配列と NamedTuple のハイブリッドのようなものです。データは連続したフラットなベクトルとして格納されますが、名前付きインデックスを使ってデータにアクセス・変更・スライスできます。これにより、開発者はデータを構造化されたネストされたオブジェクトとして扱える一方で、下位のソルバーは期待するフラットなベクトルを受け取ることができます。

対象ユーザー

主に SciMLエコシステム(特に DifferentialEquations.jlOptim.jl)を使用している研究者やエンジニア、または数値ソルバーにフラットなベクトルが必要だが、構造化されたモデリングアプローチを維持したいプロジェクト向けに設計されています。

特徴

  • 名前付きアクセス: 整数インデックスではなく名前を使って配列ブロックにアクセス。
  • シームレスな組み合わせ: ComponentArray のビューを小さな関数に渡すことで、独立したモデルを組み合わせられます。
  • フラットベクトルとの互換性: 標準的なフラットベクトルを要求するソルバーと完全に互換性があります。
  • 自動次元拡張: ブロードキャスト操作を通じて、高次元の ComponentMatrix オブジェクトの作成をサポートしています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト