# Generalized Optimality Criteria Method for
## 2 Generalized Optimality Criteria Method
### Generalized Optimality Criteria Method  
The generalized optimality criteria (GOCM) method for topology optimization extends the capability of the OCM to multiple inequality constraints, possibly with improved computational efficiency. The general idea of OCM has been available for a long time in parameter optimization, albeit it was limited to minimizing weight with displacements, stresses, and natural frequencies [16; 17]. The basic idea is to solve the Karush-Kuhn-Tucker condition, which is the necessary condition for optimization. The general optimization problem can be defined as  
\[ \begin{array}{ll}\text{Minimize}&f(\mathbf{x})\\ \text{subject to}&g_{i}(\mathbf{x})\leq 0,\ i=1,\ldots,NC\\ &[\mathbf{K}]\{\mathbf{D}\}=\{\mathbf{F}\}\\ &\mathbf{x}_{\text{min}}\leq\mathbf{x}\leq\mathbf{x}_{\text{max}}\end{array}  \tag{8}\]  
Even if a single objective function and only less-than-or-equal-to-type inequality constraints are used, it can easily be generalized to multiple objective functions with weighted sum and other types of constraints. In the following derivations, it is assumed that both the objective and constraints are normalized using the initial value and constraint bounds. For example, in the case of stress constraint given as \(\sigma(\mathbf{x})\leq\sigma_{\text{max}}\) can be normalized as \(g(\mathbf{x})=\sigma(\mathbf{x})/\sigma_{\text{max}}-1\leq 0\). In the case of the objective function, it can be normalized using the initial value. In general, the constrained optimization problem can be converted into an unconstrained optimization problem using either the Lagrange multiplier method or penalty method. In the Lagrange multiplier method, the Lagrange function is defined by combining the objective function and constraints using Lagrange multipliers as  
\[\text{minimize}\ L(\mathbf{x},\lambda,s)=f(\mathbf{x})+\sum_{i=1}^{NC}\lambda _{i}(g_{i}(\mathbf{x})+s_{i}^{2}) \tag{9}\]  
where \(\lambda_{i}\) is the Lagrange multiplier corresponding to constraint \(g_{i}\). \(s_{i}\) is called a slack variable, which is not zero when the constraint is inactive (i.e., less than zero). The necessary condition for optimum is when the Lagrange function is stationary, i.e., its derivatives are zero. Since the Lagrange function has three variables, it is differentiated by all three variables as  
\[ \begin{array}{l}\
abla_{\mathbf{x}}f(\mathbf{x})+\sum_{i=1}^{NC}\lambda_{i} \
abla_{\mathbf{x}}g_{i}=0\\ g_{i}(\mathbf{x})+s_{i}^{2}=0,\ i=1,\ldots,NC\\ \lambda_{i}s_{i}=0\end{array}  \tag{10}\]  
where \(\
abla_{\mathbf{x}}=\partial/\partial\mathbf{x}\) is the column vector of gradients. Due to the complementary slackness (i.e., switching condition), \(\lambda_{i}s_{i}=0\), only the active constraints need to be considered in the necessary condition. Since the second and third equations in Equation (10) are satisfied by identifying active constraints, the process of GOCM is to solve the first part of Equation (10). At an optimum design, the objective sensitivity can be represented by a linear combination of active constraint gradients. The coefficients in the linear combination are indeed the Lagrange multipliers. Since the Lagrange multipliers, \(\lambda_{i}\), and design variables, \(\mathbf{x}\), are coupled, they have to be solved simultaneously. The challenge is that solving the nonlinear equation is computationally intensive and difficult due to numerical instability. The initial implementation of OCM by [PERSON] (1993) has a double-loop method, where the inner loop calculates the design variable, while the outer loop calculates the Lagrange multiplier. When multiple constraints are active, however, it would require multiple levels of loops to calculate the coupled equations. The novel idea of the proposed GOCM is that the Lagrange multipliers do not have to satisfy Equation (10) at every iteration. Therefore, no iterative bisection is required to find the Lagrange multipliers.