Pascasarjana Diary

Tugas · Pertemuan 4

Dari 8 kata acak sampai GENETIKA

Target: GENETIKA = 7 5 14 5 20 9 11 1 (A=1 … Z=26). Halaman ini mengundi 8 kata, lalu seleksi, crossover, mutasi, elitisme, diulang sampai skor 208 atau 400 generasi.

1. Populasi awal

  1. Satu kata = 8 kotak. Kotak 1 harus G, kotak 2 E, kotak 3 N, kotak 4 E, kotak 5 T, kotak 6 I, kotak 7 K, kotak 8 A.
  2. A=1, B=2, …, Z=26. Jadi target dalam angka: 7 5 14 5 20 9 11 1.
  3. Untuk satu kata: undi 8 angka, masing-masing 1–26. Ulangi sampai ada 8 kata. Itu generasi 0.
Kotak 1 2 3 4 5 6 7 8
Target G 7 E 5 N 14 E 5 T 20 I 9 K 11 A 1

Tabel 8 kata di bawah: kolom Jarak dan Skor dihitung per baris (rumus + contoh angka mengikuti undian). Jarak 0 = GENETIKA. Skor maksimum 208 = 8 × 26. Langkah 2 memakai kolom Skor.

2. Seleksi

3. Crossover

  1. Masuk: 2 induk dari langkah 2, masing-masing 8 kotak.
  2. Undi p di 0–1. Tukar huruf hanya jika p < 0.9. Kalau p ≥ 0.9, anak = salinan induk.
  3. Kalau tukar: pilih dua titik potong i dan j (i ≤ j). Kotak i sampai j bertukar. Kotak sebelum i dan sesudah j tetap.

4. Mutasi

  1. Jalan setelah crossover, pada dua anak. Delapan induk lama tidak diubah di sini.
  2. Tiap kotak anak diundi. Kalau undian < 0.2, angka di kotak itu diganti angka 1–26 yang lain.
  3. Kotak yang tidak terundi tetap. Anak belum mengganti populasi; mereka masuk ranking di langkah 5.

5. Elitisme

  1. Gabung 8 induk + 8 anak = 16 kata.
  2. Urut dari skor tertinggi. 8 pertama lolos. 8 sisanya dibuang.
  3. 8 kata lolos = populasi generasi berikutnya. Ulang langkah 2–5.

6. Sampai selesai

  1. Langkah 2–5 diulang tiap generasi, memakai 8 kata lolos dari elitisme.
  2. Berhenti jika ada kata skor 208 (jarak 0, kata GENETIKA), atau generasi ke-400.
  3. Tabel: satu baris tiap kali kata terbaik berganti. Generasi 0 = langkah 1. Baris terakhir = selesai.

7. Skrip Python

  1. File tugas.py memakai langkah 1–6 yang sama: populasi, seleksi, crossover, mutasi, elitisme, ulang sampai skor 208 atau generasi 400.
  2. Tiap fungsi dikomentari sesuai langkahnya. Jalankan python3 tugas.py.

Unduh tugas.py