Software Defined Networking (SDN) makes it easy to control and manage the network due to a centralized control plane. However, this centralization also limits the scalability of SDN. To address this scalability issue, multiple controllers are deployed in the SDN. Placing multiple controllers poses several challenges, one of which is to find optimum locations for the placement of multiple controllers. The existing approaches for controller placement in a multiple-controller SDN environment overlook many aspects, like the path reliability for switch-to-controller and controller-to-controller communication, and the use of an efficient machine-learning algorithm. To address these issues, this paper proposes a novel approach, named as CMOPHA, that uses NSGA-II (a multi-objective optimization MOO algorithm) to compute the optimum placement of controllers based on the parameters of maximum switch-to-controller path reliability, and minimum value of switch-to-controller hop count, maximum controller-to-controller reliability, loadbalancing among the controllers and a minimum number of controllers. We conduct simulations using real network traces. Based on the results, we show that CMOPHA improves the network performance in terms of end-to-end delay, hop count, computation time, and network availability compared to the existing stateof-the-art approach.