1. Populasi awal
- 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.
- A=1, B=2, …, Z=26. Jadi target dalam angka: 7 5 14 5 20 9 11 1.
- 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
- Masuk: 2 induk dari langkah 2, masing-masing 8 kotak.
- Undi p di 0–1. Tukar huruf hanya jika p < 0.9. Kalau p ≥ 0.9, anak = salinan induk.
- 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
- Jalan setelah crossover, pada dua anak. Delapan induk lama tidak diubah di sini.
- Tiap kotak anak diundi. Kalau undian < 0.2, angka di kotak itu diganti angka 1–26 yang lain.
- Kotak yang tidak terundi tetap. Anak belum mengganti populasi; mereka masuk ranking di langkah 5.
5. Elitisme
- Gabung 8 induk + 8 anak = 16 kata.
- Urut dari skor tertinggi. 8 pertama lolos. 8 sisanya dibuang.
- 8 kata lolos = populasi generasi berikutnya. Ulang langkah 2–5.
6. Sampai selesai
- Langkah 2–5 diulang tiap generasi, memakai 8 kata lolos dari elitisme.
- Berhenti jika ada kata skor 208 (jarak 0, kata GENETIKA), atau generasi ke-400.
- Tabel: satu baris tiap kali kata terbaik berganti. Generasi 0 = langkah 1. Baris terakhir = selesai.
7. Skrip Python
- File tugas.py memakai langkah 1–6 yang sama: populasi, seleksi, crossover, mutasi, elitisme, ulang sampai skor 208 atau generasi 400.
- Tiap fungsi dikomentari sesuai langkahnya. Jalankan python3 tugas.py.