0

私は OpenMDAO を使用して CNC 旋削プロセスのシミュレーションを実行しており、 SimAcceleration ドライバーを使用して実装するOpenMDAO の古いバージョンの自動車の例Componentと同様に、自分の 'executor(s)' を実装したいと考えています。コンポーネントが実行される方法。

ただし、OpenMDAO 1.x でこのような例を実装する方法がわかりません。カスタム ロジックを実装して、コンポーネントやGroups への入力を駆動し、出力を取得する必要がある場合があります。どんな指針も本当に役に立ちます。

PS - コンポーネントを でラップし、Problemそのインスタンスを別のコンポーネントに作成し、すべての実行ロジックをその中に配置することを考えていました (ここでsolve_nonlinear提案されているように)。しかし、これがこの問題に対処するための正しいアプローチであるかどうかはわかりません。

4

1 に答える 1

1

最近では、時間の統合を別の方法でモデル化する傾向があります。ドライバーを使用する代わりに、統合を行い、時間履歴全体を大きな配列として出力するコンポーネントを使用するようになりました。衛星設計問題を使用してそれを行うためのコードをご覧ください。しかし、統合したい多くのコンポーネントを含む大きなモデルがある場合は、ネストされた問題またはカスタム ドライバーのいずれかがうまく機能します。

その周りでいくつかの最適化を行う場合は、ネストされた問題のアプローチを試みます。モデルを作成して、問題としてまとめることができます。次に、その問題を、独自のコンポーネントとして作成するある種の時間積分器に与えます。または、問題を単純な関数でラップし、その関数をscipy インテグレーターの 1 つに渡すことができます

時間内にモデルをループしたいだけの場合は、ドライバーが機能します。最適化ドライバーの 1 つから始めて、それを独自の for ループなどで変更します。これは問題なく動作し、興味深いドライバーになる可能性があります。

于 2016-04-06T23:18:11.687 に答える