# Optimizing Support Locations in the Roof-Column Structural System
## 2 Optimal Column Locations
### Optimization Algorithm  
The optimality-criterion (OC) method is an effective strategy to vary all candidate data on the basis of a given hypothesis [27]. Solving the optimization problem using the OC method can simultaneously preserve and remove efficient and inefficient columns. In this paper, columns were hinged, so they were only loaded in the axial direction; the columns' axial tress represents the OC method's candidate data. The relative density of columns can vary continuously between \(x_{min}\) and \(1\), as described in Equation (3), and the summation of all design variables must be equal to a prescribed number, as described in Equation (2). The optimization process is repeated until the structural system's compliance is minimized, which gives clear column distribution where the optimization result includes preserved and removed columns, with \(x_{i}\) being approximately \(1\) and \(0\), respectively. Details of the optimization algorithm are as follows. Figure 1: Designing columns under a flat roof using optimization. Subfigures in top row represent initial setup, including flat roof with (**a**) a continuous design domain, (**b**) \(3\times 3\) discrete design domain, and (**c**) \(8\times 8\) discrete design domain. Subfigures in second row represent optimization result obtained using (**d**) bidirectional evolutionary structural optimization (BESO) topology method and (**e**,**f**) proposed new optimization method. The initial design variable of columns, \(x_{0}\), is first defined as the ratio of the prescribed number of columns elements, \(N^{*}\), to the number of candidate columns \(N\), representing that specified column materials are uniformly distributed to all candidate columns:  
\[x_{0}=N^{*}/N \tag{5}\]  
Various methods can solve the optimization problem [28; 29]. The OC method [9; 27] was selected in this paper for updating design variable \(x_{i}\), which can be written as  
\[x_{i}^{k+1}=\left\{ \begin{array}{l}max\{x_{min},x_{i}^{k}(1-m)\},\\ \text{if }x_{i}^{k}B_{i}^{\eta}\leq max\{x_{min},x_{i}^{k}(1-m)\}\\ min\{1,x_{i}^{k}(1+m)\},\\ \text{if }x_{i}^{k}B_{i}^{\eta}\geq min\{1,x_{i}^{k}(1+m)\}\\ x_{i}^{k}B_{i}^{\eta},\\ \text{otherwise}\end{array} \right. \tag{6}\]  
where \(x_{i}^{k}\) denotes the \(i\)-th design variable at the \(k\)-th iteration, \(m=0.2\) is the move limit, \(\eta=0.5\) is a numerical damping coefficient, and \(B_{i}^{\eta}\) determines the optimality condition, which can be defined as  
\[B_{i}^{\eta}=B_{i}^{0.5}=\lambda\sigma_{i}^{k} \tag{7}\]  
where \(\lambda\) is a Lagrange multiplier, and \(\sigma_{i}^{k}\) is the axial stress of the \(i\)-th column at the \(k\)-th iteration. Equation (7) is valid because: (i) \(B_{i}\) is set to consider all elastic strain energy behaviors, \(U_{i}\), generated from the \(i\)-th column, but the column only generated axial stress. (ii) The magnitude of \(B_{i}\) does not affect the optimization result due to the utilization of the Lagrange multiplier, \(\lambda\). That is to say, Equation (7) is obtained by simplifying Equations (8) and (9) with the consideration of (i) and (ii). \[B_{i}\propto U_{i}=\frac{\sigma_{i}^{2}}{2E_{0}} \tag{8}\]  
\[B_{i}^{0.5}\propto\sigma_{i} \tag{9}\]  
where \(E_{0}\) is [PERSON]'s modulus of the predetermined columns. Lagrange multiplier \(\lambda\) in Equations (6) and (7) can be determined using a bisection method to enforce the constraint stated in Equation (2) during optimization;  
\[\lambda=(\alpha_{lower}+\alpha_{upper})/2 \tag{10}\]  
where \(\alpha_{lower}=0\) and \(\alpha_{upper}=10^{6}\) are the lower and upper bound limits, respectively. In the bisection method, it was assumed that \(\alpha_{lower}<\lambda<\alpha_{upper}\). To this end, \(\alpha_{lower}\) is almost always zero, and \(\alpha_{upper}\) is a large constant. The bounds are updated according to the summation of current design variables: if \(\sum_{i}x_{i}<N^{*}\), the lower bound is updated to be \(\alpha_{lower}=\lambda\); if \(\sum_{i}x_{i}>N^{*}\), the upper bound is updated to be \(\alpha_{upper}=\lambda\).