I have a 2D plane with different attributes, for example an area which is green in one corner, red in the other and purple everywhere else.

On this plane, I want to distribute a set of points. The points have certain preferences regarding:
- the color of the area they like to be in
- other points they like to be close to
- other points they want to be far away from

My idea would be to assign to every point a value signifying its "happiness", which is calculated from the area color it is in and the position of all other points, and somehow optimize the happiness of all points.

I have already found something called "genetic algorithms" which seem to be able to take on this kind of problem, but take a very long time to do so.

However, I am no mathematician and somewhat unfamiliar with numerics. Maybe I am missing something and there is a better way / algorithm for this problem? I would be glad about any kind of pointer in the right direction.