oleh salesman, kemudian dilakukan perhitungan menggunakan algoritma genetika hibrida dengan skema pencarian lokal adaptif untuk pengoptimalan sebuah
perjalanan. Setelah perhitungan selesai, ditampilkan pada Google Maps dengan nomor urutan Marker dengan garis merah sebagai penanda perjalanan. Baris kode
berikut digunakan untuk menampilkan polyline.
PolylineOptions rectOptions =
new PolylineOptions
.add new
LatLng 37.35
, - 122.0
.add new
LatLng 37.45
, - 122.0
.add new
LatLng 37.45
, - 122.2
.add new
LatLng 37.35
, - 122.0
; Polyline
polyline = myMap.addPolylinerectOptions;
3.5.2 Pengkodean
Sistem simulasi penyelesaian TSP menggunakan HGA dengan skema pencarian lokal adaptif diimplementasikan dalam bahasa pemrograman java.
Berikut ini akan disajikan beberapa potongan source code yang berhubungan dalam proses HGA untuk menyelesaikan TSP.
a. Fungsi Objektif TSP
public double
distanceToCity city{
int
xDistance = Math.absgetX - city.getX;
int
yDistance = Math.absgetY - city.getY;
double
distance = Math.sqrtxDistancexDistance + yDistanceyDistance;
return distance;
}
Gambar 3.8 Source code fungsi objektif
b. Operator genetika
Pada operator genetika terdapat tiga operator yang digunakan dalam penelitian yaitu seleksi, crossover dan mutasi.
- Seleksi Turnamen
- Order Crossover
private static
Tour tournamentSelectionPopulation pop { Population tournament =
new
Population tournamentSize
,
false
;
for int
i = 0; i tournamentSize
; i++ {
int
randomId =
int
Math.random pop.populationSize;
tournament.saveTouri, pop.getTourrandomId; }
Tour fittest = tournament.getFittest;
return
fittest; }
public static
Tour crossoverTour parent1, Tour parent2 { Tour child =
new
Tour;
int
startPos =
int
Math.randomparent1.tourSize;
int
endPos =
int
Math.random parent1.tourSize;
for int
i = 0; i child.tourSize; i++ {
if
startPos endPos i startPos i endPos { child.setCityi, parent1.getCityi;
}
else if
startPos endPos {
if
i startPos i endPos { child.setCityi, parent1.getCityi;
} }
}
for int
i = 0; i parent2.tourSize; i++ {
if
child.containsCityparent2.getCityi {
for int
ii = 0; ii child.tourSize; ii++ {
if
child.getCityii ==
null
{ child.setCityii, parent2.getCityi;
break
; }
} }
}
return
child; }
Gambar 3.9 Source code seleksi turnamen