1. A method of combinatorial multimodal optimisation for finding multiple optimal ways of dividing a set W of n values into m groups, such that each of the groups satisfies a respective constraint condition, the method comprising: (a) defining an initial population of individuals, each representative of a trial solution; (b) calculating for each individual a fitness vector indicative of whether the constraint condition for each group has been satisfied; (c) selecting a plurality of individuals for the next generation in dependence upon their respective fitness vectors; (d) creating a new population including the selected individuals; and (e) repeating steps (b) to (d) until the population stabilizes, the individuals of the stable population representing multiple optional ways of dividing the set W.