Hallo,
da würde ich auch mit einem Optimierungsalgorithmus ansetzen.
Die Anzahl der Kreise kannst du ja schonmal im voraus berechnen, das ist kein Problem.
Dann würde ich die Kreise erst mal zufällig in der Fläche verteilen.
Für einen Kreis wird dann eine neue (zufällige) Position berechnet.
Bei dem Zeitpunkt brauchst du eine Art Bewertungsfunktion, die dir sagt, wie gut die
neue Anordnung ist.
Für deine Anwendung müsstest du einerseits den neuen Schwerpunkt berechnen (dieser
soll dem eigentlichen Schwerpunkt sehr nahe kommen) und andererseits die Abstände
messen. Also z.B. die Summe aller Abstände der Kreise untereinander würde dann
Auskunft über die Verteilung geben.
Also ist die neue Anordnung um so besser, je näher der Schwerpunkt mit dem urspr.
berechneten kommt und je größer die Abstände zwischen den Kreisen sind.
Der Kreis wird dann z.B. nur an die neue Position verschoben, wenn die Bewertungsfunktion
sagt, dass die neue Lösung besser ist. Das wäre dann dem "Random Interchange" ähnlich.
Das muss natürlich sehr oft wiederholt werden, damit eine gute Lösung rauskommt.
(Das kann man auch noch zu einem "Simulated Annealing" umbauen, indem schlechtere Lösungen
auch zugelassen werden, aber mit einer Wahrscheinlichkeit, die stets abnimmt.)
Grüße,
Bernhard