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\]