Algoritma untuk mencari titik secara optimal

8

Saya mencoba membandingkan lokasi di mana beberapa ribu fasilitas telah benar-benar dibangun ke tempat mereka akan ditempatkan secara optimal untuk meminimalkan waktu perjalanan populasi (diwakili oleh blok sensus atau centroid saluran). Saya kesulitan menemukan banyak hal tentang cara menemukan titik secara optimal.

Saya punya ide bagaimana memilih lokasi-lokasi ini, tetapi banyaknya titik yang harus ditempatkan di ruang angkasa berarti bahwa setiap algoritma yang dioptimalkan secara tidak cerdas akan membutuhkan waktu lama, mungkin bertahun-tahun. Jadi pertanyaan saya: Apakah ada algoritma standar untuk memilih mana untuk mencari suatu jumlah tetap poin ?

Saya pada akhirnya akan mengambil algoritma apa pun yang saya temukan sebagai titik awal dan mengadaptasinya untuk memasukkan lebih banyak informasi daripada jumlah populasi saja. Dengan demikian jawaban yang disukai akan mencakup uraian terperinci tentang algoritma, kode, atau ditulis dalam bahasa open-source, sehingga saya dapat menggandakan dan memperluasnya. Namun, jika ArcGIS memiliki fungsi yang mudah untuk optimasi ini, saya akan senang untuk memulai dengan itu.

Ari B. Friedman
sumber
1
Ini akan membantu untuk memiliki deskripsi yang lebih jelas - lebih disukai kuantitatif - tentang apa yang "optimal". Misalnya, apakah Anda tertarik dengan waktu perjalanan pulang pergi rata-rata ke fasilitas terdekat atau tingkat kedekatan lainnya? Terlepas dari ukuran biaya perjalanan Anda, apakah Anda ingin membandingkan biaya konfigurasi yang ada dengan biaya terbaik yang dapat dicapai dengan merelokasi fasilitas yang ada, atau apakah Anda juga ingin mengizinkan fasilitas dihapus sama sekali? Meskipun menghapus fasilitas meningkatkan waktu tempuh rata-rata, ini mengurangi biaya pembangunan dan pemeliharaan fasilitas.
whuber
@whuber Untuk saat ini saya hanya tertarik untuk meminimalkan beberapa fungsi jarak yang wajar (baik sebagai-the-crow-lalat atau kuadratnya). Masalah optimasi akhirnya akan mencakup faktor-faktor yang telah Anda identifikasi dan lebih banyak (biaya untuk memindahkan fasilitas, dll.). Tetapi untuk saat ini saya hanya ingin cara standar memilih lokasi untuk meminimalkan jarak, baik karena ini merupakan titik awal untuk memperluas dalam bergerak menuju algoritma utama, dan karena saya berada di pagar tentang melanjutkan proyek ini dan ingin menjelajahi perkiraan lebih kasar sebelum memperbaikinya.
Ari B. Friedman

Jawaban:

3

Anda mungkin ingin memeriksa algoritma pengelompokan K-means .

Dalam penambangan data, k-means clustering adalah metode analisis cluster yang bertujuan untuk membagi dan mengamati observasi menjadi k cluster di mana setiap observasi milik cluster dengan rerata terdekat. Ini menghasilkan partisi ruang data ke dalam sel Voronoi.

Berikut definisi lain :

k-means clustering adalah metode pengelompokan / pengelompokan item ke dalam kelompok k (di mana k adalah jumlah kelompok yang dipilih sebelumnya). Pengelompokan dilakukan dengan meminimalkan jumlah jarak kuadrat (jarak Euclidean) antara item dan centroid yang sesuai.

Centroid adalah "pusat massa dari objek geometri dengan kepadatan seragam", meskipun di sini, kita akan mempertimbangkan vektor rata-rata sebagai centroid.

masukkan deskripsi gambar di sini

Gambar 1. Plot sebaran berkerumun. Titik hitam adalah titik data. Garis merah menggambarkan partisi yang dibuat oleh algoritma k-means. Titik-titik biru mewakili centroid yang mendefinisikan partisi

Dalam situasi Anda, blok sensus atau lacak centroid akan menjadi input dan jumlah titik N akan menjadi jumlah cluster. Berikut tutorial untuk membantu Anda memulai.

RK
sumber
Menarik. Saya tidak pernah memikirkan K-means untuk ini, tetapi saya kira centroid memang memiliki properti yang saya inginkan.
Ari B. Friedman
Anda mungkin ingin mengujinya dan melihat kinerjanya :)
RK
Tampaknya berkinerja baik pada data sampel, tetapi implementasi R tidak memiliki kemampuan untuk menimbang (berdasarkan populasi, dalam hal ini). Saya mungkin harus menulis ulang fungsi untuk memungkinkan pembobotan. Ini dia akhir pekan ;-)
Ari B. Friedman
1
Berhati-hatilah: k-means tidak secara optimal menemukan titik untuk sebagian besar masalah perjalanan. Ini optimal ketika biaya perjalanan sebanding dengan kuadrat jaraknya. Solusi untuk biaya tipikal, yang memiliki hubungan linear dengan jarak, sangat sulit diperoleh.
Whuber
@whuber Memang. Ini dibuat sederhana dalam eksposisi cepat dengan kode terperinci (Fortran dan C ++) di sini . Biaya perjalanan terkait dengan perawatan darurat, sehingga biaya perjalanan supra-linier tidak sepenuhnya tidak masuk akal, meskipun alun-alun tidak mungkin benar.
Ari B. Friedman
1

Saya ikut menulis makalah tentang masalah ini pada tahun 1996, lihat

Memodelkan dan Mengoptimalkan Aliran Menggunakan Model Interaksi Spasial Paralel (1996), Turton & openshaw, PROSEDUR EURO-PAR'96, VOLUME II.

Anda dapat mengunduh salinan dari citeseer

Kami juga menulis

Turton I., Openshaw S. (1997) Model Interaksi Spasial Paralel. Pemodelan Geografis dan Lingkungan, Volume 1, nomor 2, halaman 179-197.

tetapi saya tidak dapat menemukan salinan online.

Ian Turton
sumber