I. Introduction
An optimization problem has been traditionally perceived as that of finding a single best solution (the global optimum) given an objective function, decision parameters, and possibly, problem constraints. There are real-world problems with features that are not easy to formulate, e.g., a product’s aesthetics, or a company’s preferences toward specific suppliers. In these situations, the decision maker may be interested or even need a set of diverse optimal solutions instead of one. The best solution to the actual problem may then be selected from this diverse set of near-optimal solutions considering hard-to-formulate aspects of the actual problem. Additionally, knowing all near-optimal solutions of a problem might be crucial in certain problems. For example, a design engineer may need to know all the resonance frequencies of a mechanical system [1].