# Efficient Sizing and Layout Optimization of Truss Benchmark Structures Using ISRES Algorithm
## 2 Problem Formulations  
The main purpose of this study is to minimize the weights of benchmark truss structures with different constraints and variables; the value of the objective function of the optimization procedure is the total weight of the structure, as given in Equation (1)  
\[min\;W(X_{Z},X_{s})=\rho\sum_{i=1}^{M}L_{i}A_{i} \tag{1}\]This objective function is subjected to the following:  
\[ \begin{array}{ll}\text{{Displacement constraints}},&\delta_{min}\leq \delta_{j}\leq\delta_{max}\quad j=1,2,\dots,J\\ \text{{Stress constraints}},&\sigma_{min}\leq\sigma_{i}\leq\sigma_{max} \quad i=1,2,\dots,M\\ \text{{Cross -sectional area constraints}},&A_{min}\leq A_{k}\leq A_{max} \quad k=1,2,\dots,G\\ \text{{Buckling constraints}},&\left|\sigma_{i}^{comp}\right|- \sigma_{i}^{cr}\leq 0\text{ where }\sigma_{i}^{cr}=\frac{k_{i}A_{i}E_{i}}{L_{i}^{2}}\ i=1,2,\dots,M\\ \end{array} \]  
In this context, the variables are defined as follows: W represents the weight of the truss; XZ and XS denote the size and geometry variables, respectively. The allowable displacements for the joints are denoted as \(\delta_{\text{max}}\) and \(\delta_{\text{min}}\), while \(\sigma_{\text{min}}\) and \(\sigma_{\text{max}}\) represent the allowable stress for the bars, respectively. A\({}_{\text{i}}\) (in) represents the cross-sectional area of each bar, constrained within upper and lower limits A\({}_{\text{max}}\) and A\({}_{\text{min}}\). \(\varrho\) represents the material density, and finally L\({}_{\text{i}}\) (in) represents the length of each bar 'i', respectively. k\({}_{\text{i}}\) represents the buckling coefficient. \(\sigma_{i}^{cr}\) denotes the critical buckling stress, and \(\sigma_{i}^{compf}\) represents the stress under compression. E is the Young's modulus of elasticity. It is imperative that each design case adheres to its specific constraints, such as displacement (\(\delta_{\text{j}}\)) for each joint 'j' and stresses (\(\sigma_{\text{i}}\)) for each member 'i'. '\(J\)' signifies the number of joints, 'M' indicates the number of bars, and 'G' refers to the number of element groups, which correlates with the number of sizing variables. In the scope of this study, the truss benchmark problems exhibit different constraint scenarios. Some nodes have displacement constraints, while others do not. However, stress constraints are valid for all elements in the problems. The presence of these constraints can vary across different problems, with some having all constraints, and others having only a subset of them. To effectively handle constraint violations during optimization, penalty functions are introduced. Penalty methods are a specific class of algorithms used for solving constrained optimization problems. These methods convert constrained optimization problems into unconstrained ones, allowing the solutions to converge to the optimal solution of the original problem. The unconstrained problems are formulated as follows:  
\[W^{\prime}(X_{Z},X_{s})=W(X_{Z},X_{s})+K\big{(}g_{j}(x)\big{)}\qquad\quad for\ j=1,2, \dots,N_{i}\]  
where  
K is the penalty coefficient and W\({}^{\prime}\) is the fitness function and g\({}_{\text{j}}\) is the constraint violation. Additionally, it is worth noting that the value of K can vary depending on the problem at hand. In our study, we have chosen K to be one, which signifies that we have penalized the objective function by the amount of constraint violation. This decision was made to effectively manage constraint violations and steer the optimization process towards feasible solutions. Constraint violation is the summation of how much a solution is violated, where the constraints such as a stress in an element are higher than the allowed amount. The penalties for the aforementioned constraints are given below:  
\[