İlginç bir sorun!
Düzensiz çokgenlerle benzer bir şey yaptım (bu durumda, binalar üst üste binmeyecek şekilde paketlendi)

Kullanılan postgresql ve postgis ve python. Kaba algoritma (önceki değeri)
- Çokgenin sınırlayıcı kutusunda rastgele nokta bulma (ST_Envelope)
- Çokgenin dışında bir nokta varsa, bir adım geri gidin
- Bu rastgele noktayı merkez alan ağaç için bir geometri oluşturun
- Bu, mevcut yerleştirilmiş herhangi bir ağacın (ST_Overlaps) üst üste binmesi durumunda, başlamak için geri dönün
- Noktaya ağaç ekle
- Başlamak için geri dön
Bunun global optimum verimi sağlayacağını garanti edemem, bunun için bir 'daire paketleme' algoritmasına ihtiyacınız olacak (diğerlerinin de belirttiği gibi).
Sonsuza kadar devam edecek, bu yüzden ne zaman çıkacağınıza karar vermek için bazı kodlar girmeniz gerekecek, ör.
- yerleştirilen ağaçların birleşik alanı çokgen alanının belirli bir yüzdesi olduğunda
- üst üste binmeyen bir ağacın bulunması N'den fazla yinelemeye ihtiyaç duyduğunda.
Wikipedia'daki Circle Packaging'e göre , en iyi paketleme yoğunluğu altıgen bir ızgara ile elde edilir. MMQGIS kullanarak, aralıkları aynı olduğunu düşündüğüm ağaçlarınızın büyüklüğüne dayanan böyle bir ızgara oluşturmak mümkün olabilir. Sonra her köşeye bir ağaç yerleştirin. Ama sonra, ağaç sayısını en üst düzeye çıkarmak için ızgarayı nereye yerleştireceğinizi bilme probleminiz var.