問題タブ [openmdao]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
openmdao - 遺伝的オプティマイザーをドライバーに変換する
最適化したい機能を備えたコンポーネントが既にあります。ただし、OpenMDAO Alpha 1.0 には (私の知る限り) 遺伝的オプティマイザーのラッパーが含まれていません。私は自分で書いたので、それをドライバーにしたいと思います。ここで少し迷っています。何かアドバイスをお願いできますか?
ありがとうございました!
optimization - OpenMDAO v0.13: 並列で最適化を実行しようとしたときにのみエラーが発生する "IndexError: list index out of range"
下部に追加された例を参照してください。元のエラーよりも少し正確にエラーを特定しています。
添付のコードを並行して実行しようとしています。このコードは、大規模なクラスターで実行することを望んでいる、より大きな最適化コードの構造を模倣することを目的としています。ここでのエラーは、試したいくつかの異なるスクリプトで表示されます。そのうちの 1 つは、configure メソッド内のループで開始されたコンポーネントへの接続が配列の要素から行われない限り、並行して動作します。この例はシリアルで問題なく実行されますが、コマンドを実行するmpirun -n 4 python test2_forParallel_floats.py
と次の出力が得られます。
なぜこれが並行して実行されないのかについて、誰かが私に洞察を与えることができますか?
脚本
注: コメント アウトされたq
要素は、必要になる追加機能です。ここで一つ一つ進んでいきます
さらなる例
この例は、エラーの原因をより適切に示しています。次のスクリプトは、デフォルト ドライバーに対してシリアルまたはパラレルで実行されますが、SNOPT で SLSLQPdriver と pyOptDriver の両方を使用すると失敗します。エラーは次のとおりです。
SLSQPdriver() の使用:AttributeError: 'SerialSystem' object has no attribute 'options'
SNOPT で pyOptDriver() を使用する:IndexError: index 0 is out of bounds for axis 1 with size 0
結果は x* = [0, 0, 0] で y* = 0 になります。
編集: SNOPT: に対して別のエラーが発生していますIOError: Failed to properly open SNOPT_print.out, ierror = 17
。何が変わったのかわからない
multi-level - openmdao 1.x でマルチレベル MDO フォーミュレーションをセットアップするには?
openmdao 1.x の問題は 1 つのドライバーのみを処理し、オプティマイザーは依然としてドライバーであると想定されているため、マルチレベルの定式化をどのように実装できますか? 2つの問題を使用する必要がありますか? solve_nonlinear コンポーネント メソッド内でオプティマイザーを直接呼び出す必要がありますか? ありがとう。
openmdao - OpenMDAO v0.13: インストール後の GUI エラー
インストール ビデオに示されているように、GUI を起動しようとするとエラーが発生しました。みんな、ありがとう
Ubuntu 14.04 LTS を使用しています。動画はこちら / @9:46: https://www.youtube.com/watch?v=5oWyY_L4Vxc
ここに私のエラーメッセージがあります:
openmdao - OpenMDAO 1.2.0 暗黙的コンポーネント
私は OpenMDAO を初めて使用し、問題を定式化する方法をまだ学んでいます。簡単な例として、指定された境界を持つ 3 つの入力変数があるとします。
そして、次のように定義された4つの出力があります。
私の目標は、f1 * g1 を最小化することですが、制約 f1 = f2 および g1 = g2 を強制します。たとえば、1 つの解は x=3、y=4、z=6 です (これが最適かどうかはわかりません)。
この単純な問題の場合、出力の等値制約をドライバーに渡すだけでよいでしょう。しかし、私の実際の問題では、すべての制約を満たす最初の開始点を見つけるのは難しく、その結果、オプティマイザーは何もできませんでした。y と z を暗黙的なコンポーネントの状態として定義し、非線形ソルバーに x を指定して y と z の正しい値を計算させ、x を最適化ドライバーに渡すことができると思います。
これは可能なアプローチですか?もしそうなら、この場合、暗黙的なコンポーネントはどのようになりますか? セラー問題のチュートリアルを見ましたが、このケースに翻訳できませんでした。
parallel-processing - OpenMDAO で基礎となる並列処理を伴うコードを使用する
いくつかの OpenMDAO コンポーネントに基礎となる並列処理を追加することに興味があります。これらのコンポーネントのコードの大部分は Fortran で書かれています。Fortran コードは Python でラップされ、OpenMDAO で Python モジュールとして使用されます。OpenMP または OpenMPI を使用して、これらの Fortran コードを並行して実行したいと考えています。すでに OpenMDAO の組み込み並列機能を使用することを計画しているため、これは並列処理の 2 番目のレイヤーになります。これは実現可能でしょうか?もしそうなら、OpenMDAO でうまく動作する推奨されるアプローチはありますか?
gradient - 特定のパラメーターが OpenMDAOv1+ のコンポーネントの勾配に影響を与えないように指定するにはどうすればよいですか?
特定のパラメーターが OpenMDAOv1+ のコンポーネントの勾配に影響を与えないように指定するにはどうすればよいですか? 以前のバージョンでは を設定missing_deriv_policy = 'assume_zero'
していましたが、新しい OpenMDAO1+ には存在しないようです。入力を OpenMDAO から見えないようにするには、関数に入力を含めるのではなくsuper
、関数に追加するか、部分導関数を 0 として返すだけでよいと思いますが、意図した/推奨される方法は何ですか? これがドキュメントにある場合は申し訳ありません。ある場合は、見逃していたに違いありません。__init__
params
recorder - OpenMDAO 1.x: 並行して記録
ParallelGroup 内の分散コンポーネントを使用して MPI で解析を実行すると、DumpRecorder を解析に追加するとエラーが発生します。以下は、これを示す小さな例です (これは、2015 年 10 月 28 日の最新のマスター ブランチ コミット aaa67a4d51f4081e9e41b250b0a76b077f6f0c21 で実行されました)。
発生するエラーは次のとおりです。
レコーダーはプロセッサごとにファイルをダンプするようですが、BaseRecorder._filter_vectors
メソッドは特定のプロセッサに存在しないパラメーターを除外するべきではありませんか? 私はまだ修正を提案するほどコードに精通していないので、OpenMDAO の開発者が何が問題なのかを簡単に理解できることを願っています。
手動でインクルードを指定すると、Sliced パラメーターが除外されるため機能しますが、これは必要なく、内部で処理されると便利です。
また、新しいフレームワークについて私たちがどれほど興奮しているかをお知らせしたいと思います。0.x バージョンよりもはるかに高速であり、パラレル FD 機能は非常に高く評価され、魅力的に機能します。