In the presence of cutouts, the buckling strength of shell structures under compression significantly decreases. In order to compensate this, these structures are reinforced with stiffeners. In this study, the objective is to optimize the stiffener geometry and pattern on a cylindrical shell with two square holes to maximize the buckling load capacity without increase in its weight. A finite element model is developed to evaluate the buckling load of the structure. A good correlation is observed between the nonlinear analysis results of the model and the numerical and experimental results reported in the literature. Optimization is achieved in two levels. In the first level, topography optimization is performed to obtain the optimal stiffener pattern over the shell surface based on linear eigenvalue buckling analysis. In the second level, the stiffener heights and the shell thickness are optimized using a local search algorithm, Nelder-Mead; the buckling load levels are obtained by carrying out nonlinear buckling analyses in ANSYS. A Python code is developed to implement the optimization method and conduct analyses in ANSYS. The results show that stiffeners need to be introduced around the cutouts and the regions near the top and bottom edges for maximum buckling load capacity. The results also reveal that stiffeners on the mid lateral surfaces of the cylinder do not make significant contribution to the buckling strength. The bucking load of the optimized stiffened geometry is 22% higher than that of the unreinforced geometry having the same weight.