We have conceived and implemented a multi-objective genetic algorithm (GA) code for the optimisation of an array of Imaging Atmospheric Cherenkov Telescopes (IACTs). The algorithm takes as input a series of cost functions (metrics) each describing a different objetive of the optimisation (such as effective area, angular resolution, etc.), all of which are expressed in terms of the relative position of the telescopes in the plane. The output of the algorithm is a family of geometrical arrangements which correspond to the complete set of solutions to the array optimisation problem, and differ from each other according to the relative weight given to each of the (maybe conflicting) objetives of the optimisation. Since the algorithm works with parallel optimisation it admits as many cost functions as desired, and can incorporate constraints such as budget (cost cap) for the array and topological limitations of the terrain, like geographical accidents where telescopes cannot be installed. It also admits different types of telescopes (hybrid arrays) and the number of telescopes of each type can be treated as a parameter to be optimised - constrained, for example, by the cost of each type or the energy range of interest. The purpose of the algorithm, which converges fast to optimised solutions (if compared to the time for a complete Monte Carlo Simulation of a single configuration), is to provide a tool to investigate the full parameter space of possible geometries, and help in designing complex arrays. It does not substitute a detailed Monte Carlo study, but aims to guide it. In the examples of arrays shown here we have used as metrics simple heuristic expressions describing the fundamentals of the IAC technique, but these input functions can be made as detailed or complex as desired for a given experiment.