Method of moving asymptotes (MMA
) is one of the most popular optimization algorithms for topology optimization. The standard definition of topology optimization is:
\[\begin{array}{ll}
\text { Minimize } & c(\mathbf{x})=\sum_{e=1}^{N_{e}}\left(x_{e}\right)^{p}\left\{\mathbf{u}_{e}\right\}^{\mathrm{T}}\left[\mathbf{k}_{e}\right]\left\{\mathbf{u}_{e}\right\} \\
\text { subject to } & \frac{V(\mathbf{x})}{f \times V_{0}}-1=0 \\
& {[\mathbf{K}]\{\mathbf{U}\}=\{\mathbf{F}\}} \\
& \mathbf{x}_{\min } \leq \mathbf{x} \leq \mathbf{x}_{\max }
\end{array}\]
whereas the standard definition of MMA
is:
\[\begin{array}{ll}
\text { Minimize } & f_0(x) + a_0 \times z + \sum( c_i \times y_i + 0.5 \times d_i \times (y_i)^2 ) \\
\text { subject to } & f_i(x) - a_i \times z - y_i <= 0, i = 1,...,m \\
& z >= 0, y_i >= 0, i = 1,...,m \\
& x^{min}_j \leq x_j \leq x^{max}_j, j = 1,...,N_e
\end{array}\]
The problem
The algorithm of MMA
is designed with inquality constraint (\(\leq\)) but the porblem of topology optimization is defined with an equality constriant. We want the volume of the design domain to achieve a target value (\(\text{vol frac}\times \text{initial vol}\)) and not go below than that.
The solution
What we want is:
\[\text{current volume} = \text{target volume} \implies \frac{\text{current volume} }{ \text{target volume}}-1=0\]
To implement the above equality constraint with MMA
we have to apply two constraints:
\[+\frac{\text{current volume} }{ \text{target volume}+0.01}-1 \leq 0 \implies \text{current volume} \leq \text{target volume}+0.01\]
\[-\frac{\text{current volume} }{ \text{target volume} - 0.01}+1 \leq 0 \implies \text{target volume} - 0.01 \leq \text{current volume}\]
With the above two constraints applied we can force MMA
to give us the design volume equal to the target volume.
\[\text{target volume} - 0.01 \leq \text{current volume}\leq \text{target volume}+0.01\]
References