Minimum aralıkta kısıtlı alana maksimum sayıda nokta yerleştirmek için algoritma mı arıyorsunuz?


17

Bir kısıtlama açıklayan bir çokgen katman var; Bu alana puan eklemek istiyorum. Mümkün olduğunca çok nokta eklemek istiyorum, ancak aralarında minimum boşluk olmalıdır. Bunu CBS ile yapmak mümkün müdür?

Açıklığa kavuşturmak için, sıralı bir ızgara oluşturulabilirse en iyi olurdu, çünkü bu en fazla puanı garanti eder. Bununla birlikte, kısıtlama nadiren buna izin verir ve bir ofsetin kısıtlamaya daha iyi uyması için noktaları kaldırmak tercih edilebilir.


1. Evet. 2. rastgele veya sipariş (ızgara) istiyor musunuz?
Brad Nesom

İki soru gibi görünüyor. Yazılım dışında bunu yapmak için bir algoritma ister misiniz? Yoksa hangi CBS sisteminin bunu yapabileceğini bilmek ister misiniz?
Brad Nesom

1
Noktalar, çokgenin sınırından minimum uzaklık = = olacak şekilde kısıtlanıyor mu? Eğer öyleyse, soru şu şekilde daha açık bir şekilde ifade edilebilir: Maksimum sayıda daireyi çokgene nasıl paketleyebilirim?
Kirk Kuykendall


1
@qva Hayır yoktur, çünkü bulunabilecek kesin çözümler asimetriktir ve dikdörtgenler gibi basit şekiller için bile elde edilmesi zordur. Bulduğum en iyi hesaplama yöntemleri, uzaysal simüle edilmiş tavlamaya dayanır (ve çok fazla hesaplama gerektirmelerine rağmen çok iyi çalışırlar). Bunları kullanarak, çeşitli şekillerde çokgenler için çözümlere baktım. Çokgen sınırlarının, sınırlara yakın çözümleri kontrol ettiği açıktır; iç kısımların derinliklerinde, altıgen disk paketlerine yaklaşma eğilimindedirler.
whuber

Yanıtlar:


5

Bunun bir "paketleme" sorunu olarak düşünülebileceğini düşünüyorum.

Eğer öyleyse, Genetik Algoritmayı, belki de Çokgenlerin Paketlenmesi için Genetik Algoritmalar'dakine benzer bir Genetik Algoritmayı denemek isteyebilirsiniz .


İlginç referans, teşekkürler. Hızlı bir bakış, kağıdın algoritmasının çokgenlerin dikdörtgen olması gerektiğini gösterir. Keyfi çokgenlere genelleştirilip genelleştirilemeyeceğini biliyor musunuz?
whuber

9

Bunu yapmak için herhangi bir CBS aracı bilmiyorum, ama algoritma hakkında bir fikrim var.

İlk olarak, bu formülle maksimum nokta sayısının yaklaşık bir değeri elde edilebilir:

Nb = 4.A / Pi.d^2

( Apoligon alanı ve dminimum boşluk mesafesi nerede ).

Daha sonra, bu noktaları çokgene yerleştirmeye çalışmak için en iyi desen kare ızgara değil altıgen ızgaradır. Görmek:

kare vs altıgen ızgara

Son olarak, noktaların göreli konumlandırılmasını iyileştirmek için kuvvet modelleri kullanan bazı optimizasyon teknikleri kullanılabilir.

Not: Kristalografide iyi bilinen bir sorundur .


gis aracı bunu yapmak için ... ian-ko.com geo-sihirbazı çokgen rastgele nokta.
Brad Nesom

1
Teşekkürler! Ama soru tam olarak çokgendeki rastgele noktalar ile ilgili değil, değil mi?
julien

İlk çabuk ve kirli bir yaklaşım olarak, altıgen paketleme sorunsuz çalışır. Yine de neredeyse hiç uygun değildir. Potansiyel iyileştirmenin çokgenin çevresinin uzunluğu ile orantılı olmasını beklerim, bu nedenle birçok noktaya sahip kıvrımlı olmayan çokgenler için bu kötü bir yaklaşım değildir.
whuber

6

Https://math.stackexchange.com/questions/15624/distribute-a-fixed-number-of-points-uniformly-inside-a-polygon adresindeki konuya bakın . Özellikle, (bir yorumda) "Poisson disk işlemi" referansını not edin ve biraz Web araması yapın. Geçerli bir soru ile bağlantısı düzgün puan belirli bir sayıda dağıtabilirsiniz yokken daha fazla puan çokgen içine giren ve bu kadar, o zaman sistematik bu sayıyı artırabilir olmasıdır yani çözer bir işaret konu sayısını maksimize sorunu asgari mesafe gereksinimi. (Teknik olarak, iki sorun, amaçların ve kısıtlamaların değiştiği çift optimizasyon sorunudur.)


0

Çözüm, eşkenar üçgenler olmalıdır, http://en.wikipedia.org/wiki/Equilateral_triangle . Tek soru, kenarlarınızın uzunluğu ve çokgeninize göre "xy-ofset" dir.

(aşağıda belirtilen altıgen ızgara ile aynı)


1
Bu sadece sonsuz bir düzlemde geçerlidir. Sonlu bir çokgenin sınırı yapılandırmayı ciddi şekilde kısıtlar. Olduğunda birçok noktaları, bunlar yaklaşık eşkenar üçgenler oluştururlar.
whuber
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.