As a new bionic algorithm, Spider Monkey Optimization (SMO) has been widely used in various complex optimization problems in recent years. However, the new space exploration power of SMO is limited and the diversity of the population in SMO is not abundant. Thus, this paper focuses on how to reconstruct SMO to improve its performance, and a novel spider monkey optimization algorithm with opposition-based learning and orthogonal experimental design (SMO 3 ) is developed. A position updating method based on the historical optimal domain and particle swarm for Local Leader Phase (LLP) and Global Leader Phase (GLP) is presented to improve the diversity of the population of SMO. Moreover, an opposition-based learning strategy based on self-extremum is proposed to avoid suffering from premature convergence and getting stuck at locally optimal values. Also, a local worst individual elimination method based on orthogonal experimental design is used for helping the SMO algorithm eliminate the poor individuals in time. Furthermore, an extended SMO 3 named CSMO 3 is investigated to deal with constrained optimization problems. The proposed algorithm is applied to both unconstrained and constrained functions which include the CEC2006 benchmark set and three engineering problems. Experimental results show that the performance of the proposed algorithm is better than three well-known SMO algorithms and other evolutionary algorithms in unconstrained and constrained problems.