最適化機能は、設計変数として設定した寸法や条件のパラメータに範囲の最小値と最大値を定義し、目的関数を最適にする設計案をアルゴリズムに基づいて探索します。
寸法の最適化においては、形状が破綻しない設計空間を探索し寸法変数の範囲を修正するレンジファインダー機能があります。
このスクリプトでは、パラメータ変数範囲の初期値を指定した上でレンジファインダーを利用して範囲を修正するよう設定します。
前提条件
- スタディが1つ以上作成されていること
このスクリプト例では、プロジェクトツリー上でアクティブなスタディに対して実行している - 最適化の設計変数とするパラメータが選択済みで、寸法パラメータが1つ以上選択されていること
- 範囲を設定するパラメータの名前が既知であること
スクリプトにおける設定内容
- スタディの最適化のオプションとして以下を設定する
最適化エンジンを多目的遺伝的アルゴリズム
寸法範囲を修正し、初期世代の成立形状を取得する:ON
パラメータを自動決定する:ON
変数範囲の最小値、最大値に達した寸法変数の探索範囲を広げる:ON - 指定したパラメータ変数の範囲の最小値、最大値を設定
- 指定したパラメータ変数の範囲の最小値、最大値の自動修正のON, OFFを設定
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
app = designer.GetApplication()
def paramItemModifyMinMaxValRange(optTbl, paramDataArray):
"""最適化におけるパラメータ変数範囲の設定、範囲を修正する寸法変数を選択"""
optTbl.SetParameter(u"engine", u"jsol_moga")
optTbl.SetParameter(u"jsol_moga_use_range_optimization", True)
optTbl.SetParameter(u"jsol_moga_use_automatic_parameters_in_range_optimization", True)
optTbl.SetParameter(u"jsol_moga_expand_range_search", True)
for paramName, minVal, maxVal, minFlag, maxFlag in paramDataArray:
optTbl.SetCheckOn(paramName, True)
paramItem = optTbl.GetParametricItem(paramName)
paramItem.SetMin(minVal)
paramItem.SetMax(maxVal)
# 範囲を修正する寸法変数を選択
if minFlag: paramItem.SetModifyMinValueRange(minFlag)
if maxFlag: paramItem.SetModifyMaxValueRange(maxFlag)
study = app.GetCurrentStudy()
optTbl = study.GetOptimizationTable()
paramDataArray = [
# パラメータの名称、パラメータ最小値、パラメータ最大値、最小値を寸法範囲探索するかどうか、最大値を寸法範囲探索するかどうか
[u"CS1 (3PhaseCurrentSource): PhaseU", 0, 70, None, None],
[u"CAD parameters: FBCenterWidth0@Variables", 0.5, 6, True, False],
[u"CAD parameters: Flux_In2_deg@Variables", 40, 120, False, True],
[u"CAD parameters: Flux_Out1_deg@Variables", 55, 115, False, False],
[u"CAD parameters: Flux_Out2_deg@Variables", 45, 125, True, True],
]
paramItemModifyMinMaxValRange(optTbl, paramDataArray)


