XII. Problém obchodního cestujícího


O problému

Problém obchodního cestujícího (TSP) byl už zmíněn v jedné z předchozích kapitol. Pro zopakování: máme města a dané vzdálenosti mezi nimi. Obchodní cestující musí navštívit všechna města a přitom urazit co nejmenší vzdálenost. Úkolem je najít takovou posloupnost měst, která minimalizuje celkovou uraženou vzdálenost. Jinými slovy hledáme minimální Hamiltonovskou kružnici v úplném grafu o N uzlech.


Implementace

Používá se populace 16 chromozomů. Tyto chromozomy využívají permutační kódování - v kapitole o kódování si můžete přečíst, jak zakódovat permutaci měst pro TSP. TSP je řešen na úplném grafu (tj. každý uzel je spojen se všemi ostatními) s eukleidovskými vzdálenostmi. Všimněte si, že po přidání nebo smazání města je nutné vytvořit nové chromozomy a restartovat celý genetický algoritmus.

Můžete si zvolit typ křížení a mutace. Jejich význam je popsán níže.

Křížení

  • Jednobodové - zkopíruje se část prvního rodiče a zbytek se vezme ve stejném pořadí jako u druhého rodiče
  • Dvoubodové - zkopírují se dvě části prvního rodiče a úsek mezi nimi se vezme ve stejném pořadí jako u druhého rodiče
  • Žádné - žádné křížení; potomek je přesná kopie rodičů

Mutace

  • Běžná náhodná - vybere se několik měst a ta se prohodí
  • Náhodná, pouze zlepšující - náhodně se vybere a prohodí několik měst jen tehdy, pokud se řešení zlepší (zvýší se hodnota účelové funkce)
  • Systematická, pouze zlepšující - města se systematicky vybírají a prohazují jen tehdy, pokud se řešení zlepší (zvýší se hodnota účelové funkce)
  • Náhodná zlepšující - stejně jako "náhodná, pouze zlepšující", ale nejprve se provede "běžná náhodná" mutace
  • Systematická zlepšující - stejně jako "systematická, pouze zlepšující", ale nejprve se provede "běžná náhodná" mutace
  • Žádná - žádná mutace

Příklad

Následující demonstrace ukazuje, jak GA řeší TSP. Tlačítko "Change View" přepíná mezi zobrazením celé populace a nejlepšího řešení. Města můžete přidávat a odebírat kliknutím do grafu. Po přidání nebo smazání města se objeví náhodná trasa, protože je třeba vytvořit novou populaci s novými chromozomy. Všimněte si také, že TSP řešíme na úplném grafu.
Zkuste spustit GA s různým nastavením křížení a mutace a sledujte, jak se mění jeho výkonnost (a rychlost - přidejte více měst a rozdíl uvidíte).