マルチモデル最適化

マルチモデル最適化(MMO)は、単一の最適化実行で共通の設計変数により複数の構造を最適化するために使用できます。

ASSIGN, MMOを使用して、1回のランに複数のソルバーデックを含めることができます。リンクされた設計変数または領域は、共通のユーザーID番号によって複数のモデル内で識別されます。同じユーザーID番号の設計変数または領域は、モデル間でリンクされます。MMOには最低限1つのリンクされた設計変数または領域が存在している必要があります。

オプションとして、複数のモデル内の応答は、DRESP2およびDRESP3エントリのDRESPM継続行を介して参照できます。異なるモデルにある共通の応答は、DRESPM継続行のモデル名を使用して限定できます。モデル名は各モデルのASSIGN, MMOによって指定できます。


図 1. マルチモデル最適化の使用例

マルチモデル最適化はMPIベースの並列化手法で、実行するためにはOptiStruct MPI実行ファイルが必要です。既存のソルバーデックは追加の入力なしで簡単に含めることができ、MMOモードと完全な互換性を持ちます。MMOでは、構造間でコンポーネントを最適化するための非常に大きな柔軟性が提供されます。–mmo実行オプションを使用してOptiStructでマルチモデル最適化をアクティブ化できます。

サポートされるソリューションシーケンス

  1. 現時点では、すべての最適化タイプがサポートされています。Radiossインテグレーションが、ESL-B2B最適化とRADOPT最適化の両方についてサポートされています。ESL-B2Bでは、対応するB2Bモデルがメイン(旧称“マスター”)MMOファイルのASSIGNエントリにリストされることが可能です。RADOPTでは、対応する.radモデルがメインMMOファイルのASSIGNエントリにリストされることが可能です。.radモデル内の/DTPLエントリのMMOCIDフィールドは、RADOPT MMOで設計領域をマッピングするための座標系の定義に使用できます。
  2. マルチボディダイナミクス(OS-MBD)は現時点ではサポートされていません。
  3. DTPGおよびDSHAPEエントリはサポートされますが、設計変数はリンクできせん。たとえば、異なるセカンダリ(旧称“スレーブ”)ファイルにある複数のDSHAPEエントリが同じIDを含んでいてもいなくても、ソリューションに違いはありません。MMOの実行には最低限1つのリンクされた設計変数または領域が含まれている必要があります。したがって、DTPG/DSHAPEエントリを含んだモデルも、MMOを実行するには最低限もう1つのリンクされた設計変数または領域から成る必要があります。
  4. 複合材製造性制約条件はMMOでサポートされています。
注:
  1. MPIプロセスの数(-np)がモデルの数より1つ多く設定されている場合、各MMOモデル内でのDDM(領域分割法)ベースの並列化はありません。しかしながら、-npがモデルの数より2つ以上多く設定されていると、MPIプロセスはまずメインに割り当てられ、続いて過剰なMPIプロセスが複数モデル間に均等に分配され、各モデルはDDMを介して並列で解かれるようになります。さらに、個々のモデルそれぞれについてDDM MPIプロセスの数をASSIGN,MMOエントリを介して設定することが可能です。その場合、指定された-npは、各モデルについてASSIGN,MMOエントリ上のユーザー定義の数値に基づき分配されます(例1、例2)。詳細については、ASSIGN,MMOをご参照ください。

    例1:

    ASSIGNエントリに基づく、以下のDDMでのMMO実行について、ASSIGNエントリ上のModel 1には4つのMPIプロセスが、ASSIGNエントリ上のModel 2には3つのMPIプロセスが割り当てられます。ここでは、最初の1つのMPIプロセスがメインに割り当てられます。残りの9つのMPIプロセスのうち4つはModel 1に、3つはModel 2に割り当てられます。残りの2つのMPIプロセスは、両方のモデルに均等に分配されます。したがって、Model 1には5つのMPIプロセスが、Model 2には4つのMPIプロセスが、DDM並列化に割り当てられます。
    -mmo –np 10
    ASSIGN,MMO,model1,model1.fem,4
    ASSIGN,MMO,model2,model2.fem,3

    例2:

    ASSIGNエントリに基づく、以下のDDMでのMMO実行について、ASSIGNエントリ上のModel 1には4つのMPIプロセスが、ASSIGNエントリ上のModel 2には3つのMPIプロセスが割り当てられます。ここでは、最初の1つのMPIプロセスがメインに割り当てられます。残りの8つのMPIプロセスのうち4つはModel 1に、3つはModel 2に割り当てられます。残りの1つのMPIプロセスはModel 1に割り当てられます(優先度は、入力デック内のASSIGNエントリの順番に基づきます)。したがって、Model 1には5つのMPIプロセスが、Model 2には3つのMPIプロセスが、DDM並列化に割り当てられます。
    -mmo –np 9
    ASSIGN,MMO,model1,model1.fem,4
    ASSIGN,MMO,model2,model2.fem,3
    注: -npASSIGN,MMOエントリで要求される全MPIプロセスよりも低く設定されている場合、OptiStructはエラーを返し、プログラムは終了します。
  2. OptiStructでのマルチモデル最適化起動の詳細については、MMOの起動をご参照ください。
注:
  1. メイン / セカンダリ内のさまざまなモデル間で複数の目的関数が定義されている場合、OptiStructは常にminmaxまたはmaxmin [Objective(i)]iは目的関数の番号)を使用して、解の全体的な目標を定義します。minmax/maxminでのDOBJREFの参照値は、初回繰り返し時の結果に従って自動的に設定されます。
  2. メインデックでは以下のエントリが許可されます:

    コントロールカード: SCREENDIAG/OSDIAGDEBUG/OSDEBUGTITLEASSIGNRESPRINTDESOBJDESGLBREPGLBMINMAXMAXMINANALYSISおよびLOADLIB

    バルクデータカード: DSCREENDOPTPRM(下のセクションを参照のこと)、DRESP2DRESP3DOBJREFDCONSTRDCONADDDREPORTDREPADDDEQATNDTABLEおよびPARAM

    DOPTPRMパラメータ(以下はメインデックから機能するもの。DOPTPRM以外はすべてセカンダリ内で指定する必要があります):CHECKERDDVOPTDELSHPDELSIZDELTOPDESMAXDISCRETEOBJTOLOPTMETH,および、 SHAPEOPT

MMOの起動

OptiStruct SPMDを用いて並列プログラムを起動するには、いくつかの方法があります。OptiStruct SPMDを起動する際には、必要に応じて環境変数を設定してください。詳細については、該当するMPIベンダーのマニュアルをご参照ください。OptiStruct 14.0以降、一般的に使用されるMPIランタイムソフトウェアは、Altair Simulationインストレーションの一部として自動的に含まれます。$ALTAIR_HOME/mpiに各種MPIインストレーションが格納されています。

シングルホスト上でのソルバースクリプトの使用

Windowsマシン

[optistruct@host1~]$ $ALTAIR_HOME/hwsolvers/scripts/optistruct.bat [INPUTDECK] [OS_ARGS] -mpi [MPI_TYPE] -mmo -np [n]

ここで、[MPI_TYPE]は使用されるMPIインプリメンテーション:
pl
IBM Platform-MPI(以前のHP-MPI)の場合
i
Intel MPIの場合
– [MPI_TYPE]
(オプション)Windowsマシン上のデフォルトのMPIインプリメンテーションはi
詳細については、実行オプションをご参照ください)。
[n]
MPIプロセッサの数
[INPUTDECK]
入力デックのファイル名
[OS_ARGS]
OptiStructへの引数のリスト(オプション。詳細については、実行オプションをご参照ください)。
注:
  1. コマンド行オプション-testmpiを追加すると、MPIインストレーション、セットアップ、ライブラリパスなどが正しいかどうかを検証する小さなプログラムが実行されます。
  2. OptiStruct MMOは、Compute Console (ACC) GUIを使って起動することも可能です。(Compute Console (ACC)をご参照ください)。
  3. GUI / ソルバースクリプトを使用せずにOptiStruct SPMDを起動することも可能です。
  4. オプションのコマンド行オプション–mpipath PATHを追加すると、MPIインストレーションが現在の探索パスに含まれていなかったり、複数のMPIがインストールされている場合に、MPIインストレーションを見つけることができます。
  5. MPI TYPE実行オプション(-mmo)が指定されていない場合、DDMがデフォルトで実行されます(ハイブリッド共有 / 分散メモリ並列化(SPMD)をご参照ください)。

Linuxマシン

[optistruct@host1~]$ $ALTAIR_HOME/scripts/optistruct [INPUTDECK] [OS_ARGS] –mpi [MPI_TYPE] -mmo –np [n]

ここで、[MPI_TYPE]は使用されるMPIインプリメンテーション:
pl
IBM Platform-MPI(以前のHP-MPI)の場合
i
Intel MPIの場合
– [MPI_TYPE]
(オプション)Windowsマシン上のデフォルトのMPIインプリメンテーションはi
詳細については、実行オプションのページをご参照ください)。
[n]
MPIプロセッサの数
[INPUTDECK]
入力デックのファイル名
[OS_ARGS]
OptiStructへの引数のリスト(オプション。詳細については、実行オプションをご参照ください)。
注:
  1. コマンド行オプション-testmpiを追加すると、MPIインストレーション、セットアップ、ライブラリパスなどが正しいかどうかを検証する小さなプログラムが実行されます。
  2. OptiStruct MMOは、Compute Console (ACC) GUIを使って起動することも可能です。(Compute Console (ACC)をご参照ください)。
  3. GUI / ソルバースクリプトを使用せずにOptiStruct FSOを起動することも可能です。FAQセクション内のDDMの実行では、MPIプロセス毎にいくつのMPIプロセス(-np)およびスレッド(-nt)を使用すべきですか?をご参照ください。
  4. オプションのコマンド行オプション–mpipath PATHを追加すると、MPIインストレーションが現在の探索パスに含まれていなかったり、複数のMPIがインストールされている場合に、MPIインストレーションを見つけることができます。
  5. MPI TYPE実行オプション(-mmo)が指定されていない場合、DDMがデフォルトで実行されます(共有メモリ並列化をご参照ください)。