BSc KICursus Natuur & Berekening 2025-26

Opdracht 4: Mierenkolonie voor TSP

Opdracht

Los het handelsreizigerprobleem op met een systeem van mieren in Netlogo. [Dit probleem is er uit gehaald, en vervangen door Mierenkolonie voor QAP.]

Randvoorwaarden voor de implementatie*

  1. De volgende GUI parameters zijn instelbaar: aantal steden, aantal mieren, leerfactor α factor β (zie hieronder).
  2. Een netwerk van steden wordt bij de setup automatisch gegenereerd. De afstand tussen elk tweetal steden is gelijk aan de afstand op het Netlogo canvas.
  3. Tijdens elke ronde vindt er animatie plaats. (“Er moet wat te zien zijn.”) Het wordt vrijgelaten wat je precies animeert.
  4. Na elke ronde wordt er een plot gemaakt van tenminste: de gemiddelde lengte van een toer, de lengte van de kortste toer.

Belangrijke formules

De eerste belangrijke formule gaat over het kiezen van een volgende stad. Mier k staat op stad i, en kiest de volgende stad j als volgt:

j   =   VolgendeStadDoorFeromoon(i) als qq0,
VolgendeStadDoorVerkennen(i) anders.

Exploitatie

VolgendeStadDoorFeromoon(i) is de stad j die dichtbij ligt en waarvan de weg i-j er naar toe “uitgesleten” is door voorgangers:

VolgendeStadDoorFeromoon(i) = argmaxh∈Jk{ Aantrekkelijkheid(i,h) }

De aantrekkelijkheid van de weg van stad i naar stad h wordt gegeven door

Aantrekkelijkheid(i,h) = [m(i,h)] ⋅ [v(i,h)]β

Exploratie

VolgendeStadDoorVerkennen(i) is de stad die door exploratie verkregen wordt, met de “gewogen roulettewiel formule”. Aantrekkelijke hebben een grotere kans om voor exploratie geselcteerd te worden dan minder aantrekkelijke steden:

VolgendeStadDoorVerkennen(i) = gewogen_roulettewiel_keuze{ j | pi,j }

Feromoon

De tweede belangrijke formule bepaalt hoeveel geurstof een mier k afscheidt als deze pad i-j neemt.

m(i,j)nieuw = α m(i,j)vorig + (1-α)Δm(i,j)

Na elke ronde is er een winnaar. Dat is de mier k die de kortste toer heeft gemaakt. Alleen k heeft het recht om feromoon af te scheiden op zijn spoor. De verliezers niet.

De hoeveelheid extra geurstof die overwinnaar k achterlaat op pad i-j is
Δm(i,j)   =   1 / ( lengte van toer van overwinnaar ) als pad i-j op toer van overwinnaar ligt,
0 anders.


*Naast de algemene randvoorwaarden voor de programmeeropdrachten en de algemene randvoorwaarden voor de programmeeropdrachten die specifiek in Netlogo worden uitgevoerd. Zie de pagina met clausules.


Laatst gewijzigd op woensdag 13 november 2024, om 15:02 uur Auteur(s): Gerard Vreeswijk Translate to en, ru, or tr