I. Introduction
Optimization plays an important role in many practical decision making processes. For several decades, optimization has attracted the attention of many researchers and practitioners for solving planning, scientific and engineering design problems that arise in industry, public and private sectors. Optimization problems can be classified as unconstrained or constrained optimization problems. The optimization problems may contain different types of variables, such as: integer, real, discrete, continuous or mixed [1]. In constrained problems, they may have equality or inequality constraints, or both. The objective and constraint functions can be either linear or nonlinear, convex or non-convex, continuous or discontinuous, and uni-modal or multimedia. The feasible region of such problems could be tiny compared to the search space, and it could be either one single bounded region or a collection of multiple disjointed regions. The optimal solution may or may not exist on the boundary of the feasible region of a constrained problem [2].