RUN¶
最適化の実行と評価方法¶
OASIS AI のアルゴリズムは確率的であるため、最適化を複数回実行し総合的に結果を検証することをお勧めしています。
以下の例のように OASIS AI は実行毎に結果が異なります。複数回の最適化を実行することで統計的に有意な結果を評価できます。 ランダムシードについても併せてご参照ください。
既知の設計データから最適化の実行¶
計算済みのCAEデータや実験データなどの既知の設計データを使用して効率的に最適設計を探査できます。
Import point listで設計データを OASIS AI にインポートし、最適化を実行します。
-
設計データを用意します
- Excel(xlsx, xls), csv, txtファイル形式でインポートできます
- インポートするデータにはモデルに設定した変数(設計、目的、制約)を全て格納します
- 先頭行にモデルと同じ変数名を記述します
-
最適化モデルを作成します
- 設計データのデータ名と変数名が一致している必要があります
-
File > Import point list でデザインデータをインポートします
- VISUALIZE にインポートしたデータが表示されます
-
最適化を実行します
- Objective Iteration Count をインポートしたデザイン数以上の値を入力します
- Continue Optimization をオンにします
- Optimize で最適化を継続実行します
ランダムシードと使い方¶
OASIS AI のアルゴリズムは確率的であるため、実行ごとに結果が異なります。
- デフォルトで最適化の実行毎にランダムシードが変わります
- 統計的に有意な結果を得るために、異なるランダムシードで最適化を複数回実行し、結果を検証してください
Random Seed(ランダムシード)に値を指定すると同じ結果を再現できます。
- 任意の値をランダム シードとして定義できます
- 同じランダムシードで実行すると同じ結果を再現できます
検証ツールの使い方¶
DESIGN VERIFICATION で設計値を指定して実行できます。 シミュレーションなどのテストに使用できます。
任意の設計値で結果を評価後、 OPTIMIZER の[Continue]で最適化を継続できます。
- DESIGN VERIFICATION を開きます
-
Value に値を入力します
- 確認したい設計値を入力します
-
[Add] で設計値を登録します
- [View points] で登録した設計値を確認できます
- 複数設定できます
-
[Output] を選択します
- [Evaluate] が有効になります
-
[Evaluate] でシミュレーションを実行します
-
VISUALIZE の RESULTS SHEET で値を確認できます
シミュレーションの実行確認¶
目的関数などの出力変数(Outputs) に “Infinity” と表示される場合は以下が原因です。
- 出力パラメータが取得できなかった
- Executable の戻り値が Accepted Exit Codes で指定した値ではなかった(異常終了)
“Infinity”のケースは最適化結果として使用されません。
“Infinity”となった入力変数でシミュレーションを実行し、正常終了するかを確認ください。RESULTS SHEET から再実行し、確認することができます。
- バックアップを保存するように設定します
- シミュレーションを再実行して、作業フォルダーを確認します
再実行と確認手順¶
-
Simulation の Executable Configuration で、Backup の Every Point をオンにします
- バックアップはsim archiveフォルダーに格納されます
-
RESULTS SHEET で “Infinity” のケースを選択し、Rerun Selected Pointsで再実行します
-
シミュレーションの実行を確認します
Note
Backup の Every Point は、シミュレーションのフォルダー内に20MiB以上のファイルが存在すると、メッセージを表示します。 詳細はこちらを参照ください。
Error Log の浮動小数点の警告¶
最適化の実行中のエラーは Error Log にポップアップされます。
以下のメッセージは IEEE 754 浮動小数点表現に起因する警告です。 最適化の実行には影響しませんのでご安心ください。
The exception was handled by 'com.empowerops.algorithms.OptimizableFunctionsBlackBoxImpl'.
java.lang.Exception: {des_1=0.3, des_2=1.4531700739687605E-18, des_3=0.0, des_4=-0.1, des_5=1.5404189021551612E-31, des_6=0.05000000000000002, des_7=-0.08983502529374213, des_8=-0.1, des_9=-0.1, des_10=-0.03, des_11=0.065, des_12=1.1, des_13=-6.938893903907228E-18, des_14=-0.15, des_15=0.15, des_16=0.1, des_17=-0.1, des_18=0.003156939983991803, des_19=1.804741676596496E-18, des_20=-0.2, des_21=1.3935972011326792E-19, des_22=0.27254059904532013, des_23=-0.1, des_24=0.02515522032659198, des_25=-0.05, des_26=0.04793572400209328, des_27=0.02017501447617029, des_28=-0.03883819653477849, des_29=-0.05} not in [des_1]: { 0.0-0.3 }, [des_2]: { 0.0-0.2 }, [des_3]: { -0.05-0.0 }, [des_4]: { -0.1-0.05 }, [des_5]: { 0.0-0.2 }, [des_6]: { -0.1-0.05 }, [des_7]: { -0.1-0.1 }, [des_8]: { -0.1-0.1 }, [des_9]: { -0.1-0.1 }, [des_10]: { -0.03-0.0 }, [des_11]: { 0.065-0.08 }, [des_12]: { 0.95-1.1 }, [des_13]: { -0.05-0.0 }, [des_14]: { -0.15-0.15 }, [des_15]: { -0.15-0.15 }, [des_16]: { -0.1-0.1 }, [des_17]: { -0.1-0.1 }, [des_18]: { 0.0-0.05 }, [des_19]: { 0.0-0.05 }, [des_20]: { -0.2-0.2 }, [des_21]: { 0.0-0.05 }, [des_22]: { -0.6-0.4 }, [des_23]: { -0.1-0.05 }, [des_24]: { -0.1-0.05 }, [des_25]: { -0.05-0.05 }, [des_26]: { 0.0-0.05 }, [des_27]: { 0.0-0.05 }, [des_28]: { -0.05-0.1 }, [des_29]: { -0.05-0.05 }
at com.empowerops.common.ControlFlowInterruptedEvent.<init>(ControlFlowInterruptedEvent.kt:16)