Michael Epitropakis, Xiaodong Li Population or single solution search-based optimization algorithms (i.e. {meta,hyper} heuristics) in their original forms are usually designed for locating a single global solution. Representative examples include among others evolutionary and swarm intelligence algorithms. These search algorithms typically converge to a single solution because of the global selection scheme used. Nevertheless, many real-world problems are "multi-modal" by nature, i.e., multiple satisfactory solutions exist. It may be desirable to locate many such satisfactory solutions, or even all of them, so that a decision maker can choose one that is most proper in his/her problem domain. Numerous techniques have been developed in the past for locating multiple optima (global and/or local). These techniques are commonly referred to as "niching" methods. A niching method can be incorporated into a standard search-based optimization algorithm, in a sequential or parallel way, with an aim to locate multiple globally optimal or suboptimal solutions,. Sequential approaches locate optimal solutions progressively over time, while parallel approaches promote and maintain formation of multiple stable sub-populations within a single population. Many niching methods have been developed in the past, including crowding, fitness sharing, derating, restricted tournament selection, clearing, speciation, etc. In more recent times, niching methods have also been developed for meta-heuristic algorithms such as Particle Swarm Optimization, Differential Evolution and Evolution Strategies. In this tutorial we will aim to provide an introduction to niching methods, including its historical background, the motivation of employing niching in EAs. We will present in details a few classic niching methods, such as the fitness sharing and crowding methods. We will also provide a review on several new niching methods that have been developed in meta- heuristics such as Particle Swarm Optimization and Differential Evolution. Employing niching methods in real-world situations still face significant challenges, and this tutorial will discuss several such difficulties. In particular, niching in static and dynamic environments will be specifically addressed. Following this, we will present a suite of new niching function benchmark functions specifically designed to reflect the characteristics of these challenges. Performance metrics for comparing niching methods will be also presented and their merits and shortcomings will be discussed. Experimental results across both classic and more recently developed niching methods will be analysed based on selected performance metrics. Apart of benchmark niching test functions, several examples of applying niching methods to solving real-world optimization problems will be provided. This tutorial will use several demos to show the workings of niching methods. This tutorial is supported by the newly established IEEE CIS Task Force on Multi-modal Optimization (http://www.epitropakis.co.uk/ieee-mmo/). A recent overview of the area and its applications can be found in: X. Li; M. Epitropakis; K. Deb; A. Engelbrecht, "Seeking Multiple Solutions: an Updated Survey on Niching Methods and Their Applications," in IEEE Transactions on Evolutionary Computation , vol.PP, no.99, pp.1-1 doi: 10.1109/TEVC.2016.2638437