遺伝的アルゴリズムでの最適化の最大世代数、集団サイズ、子個体数は、いずれも探索の進み方を決める基本的なパラメータであり、互いに関係しながら探索の品質と計算量を左右します。
集団サイズは、1世代あたりに同時に評価される設計案の数を決め、探索の「広がり」を担います。
子個体数は、各世代で新たに生成される設計案の数を制御し、設計案がどの程度変化しながら進化するかに影響します。
一方、最大世代数は、世代交代を何回繰り返すかを決め、探索の「深さ」を規定します。
このスクリプトではトポロジー最適化のパラメータ、評価オプションを設定します。
前提条件
- トポロジー最適化に対応しているスタディが1つ以上作成されていること
このスクリプト例では、プロジェクトツリー上でアクティブなスタディに対して実行している - トポロジー最適化条件が設定されていること
スクリプトにおける設定内容
- トポロジー最適化エンジンを指定してパラメータを設定
最適化エンジンを遺伝的アルゴリズム(トポロジー)、最大世代数を10、集団サイズを60、子個体数を55と設定
形状連続評価を「各部品ひとつながりの制約を含める」と設定
結果評価を「世代毎の各目的関数の最大値の結果を評価する」と設定している
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
def setTopologyOptimizationOption(optimTable, engine, maxGen, numPop, numChild):
"""トポロジー最適化オプションの設定を行う"""
mapping = {
# 最適化エンジン:遺伝的アルゴリズム(トポロジー)における各キー項目
"jsol_ga": (u"jsol_ga_max_generation",
u"jsol_ga_num_population",
u"jsol_ga_num_children",
u"jsol_ga_shape_evalution",
u"jsol_ga_result_evaluation"),
# 最適化エンジン:多目的遺伝的アルゴリズム (トポロジー)におけるキー項目
"jsol_moga2": (u"jsol_moga2_max_generation",
u"jsol_moga2_num_population",
u"jsol_moga2_num_children",
u"jsol_moga2_shape_evalution",
u"jsol_moga2_result_evaluation"),
}
keyMagGen, keyNumPop, keyNumChild, keyShapeEval, keyResultEval = mapping[engine]
optimTable.SetParameter(u"engine", engine)
optimTable.SetParameter(keyMagGen, maxGen)
optimTable.SetParameter(keyNumPop, numPop)
optimTable.SetParameter(keyNumChild, numChild)
# 形状連続評価パラメータ
# 0:形状の連続性を評価基準に含めない
# 1:各部品ひとつながりの制約を含める
# 2:各部品の分割数が2以内の制約を含める
optimTable.SetParameter(keyShapeEval, 1)
# 結果評価パラメータ
# 0:指定した上位ケースの結果を評価する(最適化エンジン:遺伝的アルゴリズム (トポロジー)の場合)
# 0:パレートチャート上のケースを評価する(最適化エンジン:多目的遺伝的アルゴリズム (トポロジー)の場合)
# 1:世代毎の各目的関数の最大値の結果を評価する
# 2:全てのケースの結果を評価する
optimTable.SetParameter(keyResultEval, 1)
app = designer.GetApplication()
study = app.GetCurrentStudy()
engine = u"jsol_ga"
maxGeneration = 10
numPopulation = 60
numChildren = 55
setTopologyOptimizationOption(
study.GetOptimizationTable(), engine, maxGeneration, numPopulation, numChildren)


