Keliaujančio pirklio uždavinys

Darbas su programa

alt="Your browser understands the APPLET> tag but isn't running the applet, for some reason." Your browser is completely ignoring the APPLET> tag!

1 pav. Java programa realizuojanti SA agoritmą pirklio kelio optimizavimui. (programos kodas: pirklys.java)

 

 

 

1. Šalia klavišo cities laukelyje įrašyti norimą miestų skaičių (maksimaliai programa palaiko 98 miestus, įvedus daugiau jokių įspėjimų nebūna, tačiau programa veikia neteisingai).

2. Paspausti klavišą cities. Tai padarius atsitiktinai sugeneruojami miestai. Kiekvieną kartą paspaudus sugeneruojamas vis kitas miestų išdėstymas.

3. Galima pakeisti SA algoritmo parametrus N, M, T, a (žr. toliau programos parametrai)

4. Pauspaudus vieną iš pradinio maršruto generavimo klavišų  (bubble, nearest, random) sugeneruojamas pradinis miestų apėjimo maršrutas ir pagal SA algoritmo pagalba bandoma jį optimizuoti (žr. klavišų paskirtis). minėti klavišai tampa neaktyvūs. Vykdomas SA algoritmas, kol bus pasiektas maksimalus iteracijų skaičius.

5. Pabaigus optimizavimą klavišai paleidžiantys SA (bubble, nearest, random) tampa aktyvūs.

 

Pastaba:  Java programa neveikia nes:

  • Neįvesti reikiami algortitmo parametrai, arba jie įvesti su klaidomis. Visi koeficientai yra teigiami. Įvedant trupmeninius skaičius vietoje "," (kablelio) naudokite "." (taškas)

  • Įvedėte per didelį iteracijų skaičių ir programa užgrobė daug kompiuterio resursų, dėl to naršyklė neatsako į vartotojo komandas.

 

  Programos parametrai

 

N - koeficientas, kuris apsprendžia T parametro kitimo greitį.  T reikšmė keičiama po N sistemos būsenos pasikeitimų. Šis koeficientas turi būti sveikas skaičius, t.y. netrupmeninis.

M - koeficientas, kuris kaip ir N apsprendžia T parametro kitimo greitį. T.y. T reikšmė keičiama kas M sistemos būsenos pasikeitimų, kurie sumažina sistemos energiją arba optimizuojamąjį dydį, šiuo atveju maršruto ilgį. Šis parametras turi būti sveikas skaičius, t.y. netrupmeninis.

T - koeficientas apsprendžiantis su kokia tikimybe reikia pereiti į blogesnę (mažiau optimalią) būseną. 

a - koeficientas, nuo kurio priklauso T keitimo greitis, nauja T reikšmė gaunama senąją dauginant iš a. Šis koeficientas turi paprastyai būna tarp 1 ir 0.7. Nenaudokite koeficiento sveikai daliai atskirti nuo trupmeninės "," (kablelio), tam reikia naudoti "."(taškas).

iter - nurodomas maksimalus teracijų skaičius. Patartina šį skaičių parinkti kuo mažesnį, ir įvertinus turimo kompiuterio spartą atitinkamai jį padidinti taip, kad skaičiavimai būtų užbaigiami per priimtiną laiko tarpą.

 

Klavišų paskirtis

 

cities - atsitiktinai sugeneruojamos miestų koordinatės. Miestų skaičius nurodomas gretimame laukelyje.

Kiti klavišai yra skirti pradinio maršruto generavimui:

random - sugeneruojamas atsitiktinis miestų apėjimo maršrutas.

nearest - pradedama nuo kokio nors miesto ir ieškomas artimiausias, po to kitas artimiausias ir taip tęsiama, kol visi miestai aplankomi po vieną kartą.

bubble - pradedama nuo trijų atsitiktinių miestų. Po to imamas naujas miestas ir ieškoma kurioje ankstesnius miestus jungiančioje kraštinėje geriausia įtraukti naująjį miestą. Taip tęsiama, kol visi miestai bus įtraukti į maršrutą.

 

Arnoldas Bagdonas RM 0/1gr.,

Kauno Technologijos universitetas

Telekomunikacijų ir elektronikos fak.