Ant colony optimisation diterapkan pada persoalan travelling salesman tujuh kota: jejak feromon, heuristik jarak, penguapan, dan deposit berbobot panjang tur — seluruh metaheuristiknya dalam satu berkas pendek, dengan varian kedua yang menambahkan NumPy dan keacakan berbenih.
Hasil pengukuran
Daftar bobot transisinya diberi nama probabilities dan tidak pernah disampel — kota berikutnya adalah argmax-nya. Dengan tiga semut yang dipatok pada kota awal tetap, koloninya menjadi deterministik dan setiap iterasi mengulang tiga tur yang sama.
ant.py, select_next_city
Semut yang berjalan di sebuah graf meninggalkan feromon sebanding dengan sebaik apa tur mereka, dan jejaknya menguap. Ulangi, dan koloninya memusat pada rute-rute pendek tanpa pernah ada yang menghitung sebuah rute secara langsung. Itu gagasan yang sungguh elegan dan muat dengan nyaman di bawah seratus baris: aturan transisinya menimbang feromon terhadap kebalikan jarak dengan dua eksponen yang lazim, dan pembaruannya menguapkan setiap sisi sebelum mendepositkan di sepanjang tiap tur.
Versi pendeknya membangun bobot transisinya dengan benar — feromon dipangkatkan alpha, kebalikan jarak dipangkatkan beta — menyimpannya dalam daftar bernama probabilities, lalu mengambil argmax-nya alih-alih menyampel darinya. Tidak ada yang menormalkan daftar itu dan tidak ada yang menarik sampel darinya. Digabung dengan tiga semut yang dipatok pada kota awal tetap, sesi jalannya menjadi deterministik: setiap iterasi mengulang tiga tur yang sama, dan pembaruan feromonnya memperkuat keputusan yang sejak awal tidak pernah diragukan.
Varian keduanya memulihkan apa yang hilang dari yang pertama: pemilihan probabilistik yang benar dengan generator berbenih, sehingga koloninya benar-benar menjelajah dan jejak feromonnya punya sesuatu untuk dicondongkan. Pasangan ini layak disimpan berdampingan, karena jarak di antara keduanya persis adalah bagian dari algoritmanya yang mengerjakan pekerjaan.