# Generalized Optimality Criteria Method for
## 1 Introduction  
In topology optimization, three optimization algorithms have been commonly used: the optimality criteria method [1], the method of moving asymptotes [2], and the sequential linear programming method [3]. The main reason for the popularity of these methods is not from their performance but from their convenience. Unique characteristics of topology optimization are that (a) each iteration of optimization requires expensive finite element simulations, and (b) most optimization problems have a handful of performances (objectives and constraints) and numerous design variables. In the case of the solid isotropic material with penalization (SIMP) method [4], in essence, the number of design variables is the same as the number of finite elements. Accordingly, optimization algorithms are adopted on the basis of these characteristics. Gradient-free algorithms, such as genetic algorithm [5], particle swarm optimization [6], simulation annealing [7], and Nelder-Mead simplex [8], have several advantages, as they can handle non-differentiable functions, mixed design variables, discrete feasible space, and disconnected feasible space. Many of them mimic mechanisms observed in nature or use heuristics. The challenge is that improving an algorithm for one class of problems is likely to make it perform poorly for other problems [9]. In the perspective of topology optimization, the major limitation of gradient-free algorithms is a large number of function evaluations. Most gradient-free algorithms require tens of thousands of function evaluations, which is impractical for expensive finite element simulations. Due to this limitation, most topology optimization problems rely on gradient-based algorithms [10], even if they have difficulty associated with local optima and noisy and discontinuous functions. Gradient-based algorithms are efficient in finding local minima for high-dimensions with nonlinear constraints. The algorithms use function values and their gradients at the current design to improve the design. In general, the gradient-based algorithms are more efficient than the gradient-free algorithms in terms of the number of function evaluations. However, the key ingredient is how to calculate gradient information efficiently. Since most topology optimization problems have a small number of performances with many design variables, the adjoint sensitivity method [11] is predominantly used against the direct differentiation method. Another important criterion for selecting an algorithm for topology optimization is the requirement of the Hessian matrix, which is the second-order derivative information. The Newton method and the family of quasi-Newton methods are developed to use Hessian information [12] or approximate it. Even if Hessian information can accelerate convergence, the challenge is that the Hessian information is expensive to calculate and requires a huge amount of memory to store it, which is why most algorithms in topology optimization do not use the Hessian information. The abovementioned three algorithms--the optimality criteria method [1], the method of moving asymptotes [2], and the sequential linear programming method [3]--have been popular in topology optimization because they do not require Hessian information. All three methods only require function values and gradients at the current design. They do not require information from the previous iteration nor the Hessian information. Since the 99-line MATLAB code for topology optimization [13] has been published, the optimality criteria method (OCM) has been popular. This method is powerful in the sense that the optimality criteria are met at every iteration. The only limitation of the OCM is that it only works with minimizing compliance with the volume fraction constraint. This is because the gradients for the compliance and volume fraction are \"almost\" free. On the other hand, the method of moving asymptotes (MMA) is a general-purpose algorithm that can support various types of optimization problems.