Mata Kuliah: Kecerdasan Artifisial (AI401) | 3 SKS
Setelah pertemuan ini, mahasiswa mampu:
Pada Pertemuan 2-3, kita mempelajari:
β οΈ Bagaimana jika ruang pencarian SANGAT BESAR?
Kapan digunakan?
| Aspek | Sistematis | Lokal |
|---|---|---|
| Memori | O(bd) | O(1) |
| Jalur | Tersimpan | Tidak |
| Completeness | Ya (umumnya) | Tidak |
| Cocok untuk | Path finding | Optimisasi |
Gambar 1: Landscape dengan global maximum, local maximum, dan plateau
| Fitur | Deskripsi | Masalah |
|---|---|---|
| Global Max/Min | Titik optimal sejati | Tujuan kita! β |
| Local Max/Min | Optimal di area lokal | Bisa terjebak β οΈ |
| Plateau | Area datar | Arah tidak jelas π |
| Ridge | Puncak sempit | Sulit navigasi π§ |
Disebut juga Greedy Local Search
Selalu pilih langkah terbaik secara lokal
def hill_climbing(problem):
current = problem.initial_state()
while True:
neighbors = current.get_neighbors()
best_neighbor = max(neighbors,
key=problem.value)
if problem.value(best_neighbor) <= \
problem.value(current):
return current # Stuck!
current = best_neighbor
Gambar 2: Steepest Ascent, Stochastic, dan First-Choice
Evaluasi SEMUA tetangga, pilih terbaik
Pilih ACAK dari yang lebih baik
Pilih PERTAMA yang lebih baik
Probabilitas sukses:
P(sukses setelah k restart) = 1 - (1-p)k
p = probabilitas sukses satu kali
Pertanyaan 1:
Jika Hill Climbing memiliki probabilitas 25% untuk menemukan global optimum, berapa kali restart minimal agar probabilitas sukses β₯ 90%?
Jawaban:
1 - (0.75)k β₯ 0.90 β k β₯ 8
Minimal 8 restart
π‘ Ide Kunci: Kadang-kadang menerima langkah LEBIH BURUK untuk keluar dari local optima!
Gambar 3: Temperatur tinggi β eksplorasi, Temperatur rendah β eksploitasi
P(terima) = eΞE/T
| Kondisi | Probabilitas |
|---|---|
| T tinggi (panas) | Mendekati 1 β hampir selalu terima |
| T rendah (dingin) | Mendekati 0 β jarang terima |
| ΞE kecil (sedikit buruk) | Lebih tinggi |
def simulated_annealing(problem, schedule):
current = problem.initial_state()
for t in range(1, MAX_ITER):
T = schedule(t) # Temperatur
if T == 0:
return current
next = random.choice(current.neighbors())
delta_E = value(next) - value(current)
if delta_E > 0: # Lebih baik
current = next
elif random.random() < exp(delta_E/T):
current = next # Terima yg lebih buruk!
| Jenis | Formula | Karakteristik |
|---|---|---|
| Linear | T(t) = Tβ - Ξ±t | Sederhana |
| Exponential | T(t) = Tβ Γ Ξ±t | Paling umum (Ξ±β0.95) |
| Logarithmic | T(t) = Tβ / ln(t+1) | Sangat lambat |
Pertanyaan 2:
Nilai saat ini = 100, tetangga = 95, T = 5. Berapa probabilitas menerima tetangga?
Jawaban:
ΞE = 95 - 100 = -5
P = e-5/5 = e-1 = 0.368 (36.8%)
| Aspek | Hill Climbing | Simulated Annealing |
|---|---|---|
| Langkah buruk | β Tidak pernah | β Bisa diterima |
| Escape local optima | β Tidak bisa | β Bisa |
| Kecepatan | β Cepat | β οΈ Lebih lambat |
| Hasil | Local optimum | Mendekati global |
Proses:
Gambar 4: k state dipertahankan, pilih k terbaik dari semua successors
| Biologi | GA |
|---|---|
| Chromosome | Solusi kandidat |
| Gen | Komponen solusi |
| Fitness | Nilai objective |
| Populasi | Kumpulan solusi |
Gambar 5: Populasi β Seleksi β Crossover β Mutasi β Populasi Baru
P(individu i) = fitness(i) / Ξ£ fitness(j)
Contoh:
| Individu | Fitness | Probabilitas |
|---|---|---|
| A | 30 | 30% |
| B | 50 | 50% |
| C | 20 | 20% |
Gambar 6: Single-point, Two-point, dan Uniform Crossover
Parent 1: [1, 1, 1, 1 | 1, 1, 1, 1]
Parent 2: [0, 0, 0, 0 | 0, 0, 0, 0]
β Titik potong
Offspring 1: [1, 1, 1, 1, 0, 0, 0, 0]
Offspring 2: [0, 0, 0, 0, 1, 1, 1, 1]
Sebelum: [1, 0, 1, 1, 0, 0, 1, 0]
β mutasi
Setelah: [1, 0, 0, 1, 0, 0, 1, 0]
π‘ Mutation rate biasanya rendah (1-5%)
def genetic_algorithm(problem, pop_size, generations):
population = [random_chromosome()
for _ in range(pop_size)]
for gen in range(generations):
# Evaluasi fitness
fitness = [problem.fitness(ind)
for ind in population]
# Buat populasi baru
new_pop = [best_individual] # Elitism
while len(new_pop) < pop_size:
p1, p2 = select(population, fitness)
off1, off2 = crossover(p1, p2)
new_pop.extend([mutate(off1), mutate(off2)])
population = new_pop
Gambar 7: Contoh solusi 8-Queens
Array 1D:
state = [0, 4, 7, 5, 2, 6, 1, 3]
Index = kolom, Value = baris
Heuristic h:
h = jumlah pasangan ratu yang saling menyerang
Goal: h = 0
| Algoritma | Success Rate (8-Queens) |
|---|---|
| Hill Climbing | ~14% |
| Random Restart HC (100x) | ~100% |
| Simulated Annealing | ~94% |
| Genetic Algorithm | ~90% |
Representasi: Permutasi kota
[0, 3, 1, 4, 2] # Urutan kunjungan
Gambar 8: 2-opt membalik segmen untuk menghilangkan crossing
TSP untuk optimisasi checkpoint
Maksimalkan coverage area
Alokasi resource optimal
Pertanyaan 3:
Untuk masalah dengan banyak local optima dan constraint kompleks, algoritma mana yang paling sesuai?
| Algoritma | Escape Local? | Memori | Best For |
|---|---|---|---|
| Hill Climbing | β | O(1) | Landscape smooth |
| Random Restart | β | O(1) | Multiple local optima |
| Simulated Annealing | β | O(1) | General optimization |
| Local Beam | β οΈ | O(k) | Parallel problems |
| Genetic Algorithm | β | O(pop) | Complex landscapes |
| Konsep | Poin Kunci |
|---|---|
| Pencarian Lokal | Hanya simpan state saat ini, O(1) |
| Hill Climbing | Greedy, bisa stuck di local optima |
| Simulated Annealing | Terima langkah buruk dengan P = eΞE/T |
| Genetic Algorithm | Populasi + Seleksi + Crossover + Mutasi |
| Aplikasi | N-Queens, TSP, Penjadwalan |
Game Playing dengan AI
Pertemuan 04: Pencarian Lokal dan Optimisasi
Ada pertanyaan?