伴随拓扑优化模型

拓扑优化模型用于确定域主题内材料的最佳分布。可将此模型与拓扑物理模型和伴随模型结合使用来执行拓扑优化。

此模型及其求解器使用基于伴随的灵敏度演变定义材料分布的水平集方程,来处理具有约束的单目标优化问题。启用此模型后,它会自动计算拓扑物理模型使用的材料分布。另请参见:拓扑物理模型。

优化器的目的是改变材料分布 χ ,以最小化(或最大化,如果选择这样做)目标。优化基于改进水平集方程,如下所示:

∂ ϕ ∂ τ + F ‖ ∇ ϕ ‖ = S
(5269)

其中, τ 为伪时间, F 为两相之间的交界面速度, S 为水平集函数的源项。

ϕ 为水平集变量,其值介于 -1(次相 - 实体)和 1(主相 - 流体)之间。关联的材料分布 ∈ [ 0 , 1 ] 通过水平集变量的双曲正切函数进行定义:

χ = 0.5 × ( 1 + tanh ( ϕ δ ) )
(5270)

其中, δ 用于控制交界面的厚度,并在代码中设为 0.056。

优化的搜索方向基于两个物理量进行计算:
  • 拓扑导数 ( ∂ L ∂ χ ) ,其中, L 为由 Eqn. (5277) 给出的拉格朗日。
  • ADAM(自适应矩估计的缩写)更新规则会向迭代间的方向提供动量,有助于避免局部极小值(或最大值)。公式如下所示:
    m k + 1 = β 1 m k + ( 1 − β 1 ) d L d χ
    (5271)
    ν k + 1 = β 2 ν k + ( 1 − β 2 ) ( d L d χ ) 2
    (5272)
    v ¯ = m k + 1 ν k + 1 + ϵ
    (5273)

其中 ϵ 是一个很小的值,用于防止分母为零。常数 β 1 , β 2 ∈ [ 0 , 1 ) 确定梯度 ( m ) 和梯度平方 ( ν ) 移动平均值的指数衰减率。

常数 β 1 用于确定应用于搜索方向的动量数量。 β 1 值越小,优化器越能够根据梯度变化快速更改方向,但也会增加过早陷入局部最优的可能性。

常数 β 2 用于确定步长在优化过程中的衰减速度。接近 1 的值可确保优化器顺利达到最终结果,但同时可能降低收敛速度。

β 1 和 β 2 的默认值均为 0.25。这些值在这些因素之间提供了合理的折中方案。将 β 1 和 β 2 设为 0,算法将简化为一种最陡下降算法的形式。

为了帮助选择步长(实际上为 τ 的增量),交界面的速度等于按体积与面积的比例进行缩放的搜索方向:
F i = V i v i ¯ ∑ k   | A k → |
(5274)

其中, V i 为网格单元的体积, ∑ k   | A k → | 为网格单元的面网格面积的总和。

源项同时与来自 ADAM 的搜索方向成比例。其公式如下所示:

S i = − ω ⁢   ( 1 − s i g n ( ν i ¯ ) ϕ ) ν ¯ i
(5275)

其中, ω 为用户自定义的恒定源强度。如果停用模型中的允许孔形成,则将忽略此项 ( ω = 0 )。实际上,当 ω = 0 时,固体材料必须在域中的现有边界或固体材料的初始部分上形成。当 ω > 0 时,固体腔可以出现在优化域中的任意位置。

如果将这些规则应用于源项 S i 和交界面速度 F i ,则优化器可以使用较大的步长来驱动优化(默认值为 10),与问题尺度或灵敏度值无关。

拓扑优化求解器可以处理约束问题:
min i m i z e ⁡ f ( x ) s u b j e c t ⁢   t o c i ( x ) ≤ 0 , 0 ≤ i ≤ m
(5276)

其中 f ( x ) 为伴随目标, c i ⁢ 为约束,m 为约束总数。

约束通过增广拉格朗日法进行处理,以将约束优化问题转换为无约束问题。要执行转换,将引入拉格朗日函数,其中原始目标函数已增强以考虑约束。

增广拉格朗日函数设定如下:
L ⁢   ( x , λ   ) = f ⁢   ( x ) + ∑ i   ψ ⁢   ( c i , λ i k , μ i )      
(5277)

其中, μ i 为惩罚参数, λ i 为第 k 次优化迭代中的拉格朗日乘数, k 表示优化迭代。

ψ i ( c i   , λ i     ⁢ , μ i ) = { λ i c i + μ i 2 c i 2 ⁢             i f ⁢     c i ≥ 0 λ i c i ⁢                                   o t h e r w i s e
(5278)

惩罚参数 μ i 既可以由用户定义(指定模式),也可以自动调整(动态模式),具体取决于选定的惩罚更新策略。

在指定模式下,拉格朗日乘数估计值在每次迭代后更新,如下所示:

λ i k + 1 = max ⁡ ( 0 , λ     i k + μ i c i )
(5279)
在动态模式下,拉格朗日乘数更新为:
λ i k + 1 = { λ     i k + μ i c i ⁢             ⁢                                   i f ⁢     c i > T o l i β λ i k i f ⁢     c i < − T o l i λ i k o t h e r w i s e
(5280)

其中, 0 < β < 1 为衰减常数, T o l i 为可行性容差。在此模式下,为了防止约束满足超限,仅当约束满足进度停止时才会更新不可行解空间内的拉格朗日乘数。

还可以扩展增广拉格朗日函数 Eqn. (5277) 以包含等式约束。

为了确保对拉格朗日函数进行适当的比例缩放,可通过目标和约束各自的最大灵敏度值将二者归一化:

  f   ^ ( x ) = f ( x ) ⋅ min ⁡   ( 1 ⁢   , 100 / ‖ d f d x ‖ max ⁡ )
(5281)
c   ^ ( x )   = c ( x ) ⋅ min ⁡   ( 1 ⁢   , 100 / ‖ d c d x ‖ max ⁡ )
(5282)