OpenMDAO SimpleGADriver 惩罚
OpenMDAO SimpleGADriver penalty
在OpenMDAO 的SimpleGADriver 中,惩罚因子是应用于缩放约束值还是原始约束值?
在我的问题中,我有一个 objective 和几个不同数量级的约束,因此我在定义它们时应用比例因子,例如:model.add_objective('obj', ref=1e6)
。这样,在驱动程序级别,我拥有 1.
数量级的所有功能
我设置了 penalty_exponent=2
和 penalty_parameter=20
,它们都很高,但驱动程序似乎更喜欢具有低 objective 函数值的高度不可行点。
如有任何提示,我将不胜感激。
代码正在将惩罚应用于缩放目标和约束。相关行是 here,特别是行
obj_values = self.get_objective_values()
和
fun = obj + penalty * sum(np.power(constraint_violations, exponent))
get_objective_values()
方法默认 returns 驱动程序缩放值中的东西。约束的工作方式相同。
在OpenMDAO 的SimpleGADriver 中,惩罚因子是应用于缩放约束值还是原始约束值?
在我的问题中,我有一个 objective 和几个不同数量级的约束,因此我在定义它们时应用比例因子,例如:model.add_objective('obj', ref=1e6)
。这样,在驱动程序级别,我拥有 1.
我设置了 penalty_exponent=2
和 penalty_parameter=20
,它们都很高,但驱动程序似乎更喜欢具有低 objective 函数值的高度不可行点。
如有任何提示,我将不胜感激。
代码正在将惩罚应用于缩放目标和约束。相关行是 here,特别是行
obj_values = self.get_objective_values()
和
fun = obj + penalty * sum(np.power(constraint_violations, exponent))
get_objective_values()
方法默认 returns 驱动程序缩放值中的东西。约束的工作方式相同。