Theory and practice of population diversity in evolutionary computation