Algoritma Genetika adalah salah satu algoritma yang digunakan untuk mengoptimasi hasil akhir berdasarkan sebaran inputan data acak. Contoh kasus yang akan dibahas kali ini adalah untuk mengoptimasi performa mobil dengan mengupgrade parts tertentu.
Algoritma Genetika adalah proses pencarian yang didasarkan pada seleksi alam. Teknik ini secara umum digunakan untuk menghasilkan solusi optimasi dan teknik pencarian. Algoritma Genetika menggunakan teknik yang diinspirasi dari teori evolusi alam, seperti seleksi, warisan, crossover, dan mutasi.
Pada contoh kasus ini, diasumsikan ada 3 kategori parts yang ingin diupgrade, yaitu knalpot, rem, dan mesin.
Masing-masing item memiliki biaya sendiri dan besar poin performa yang dihasilkan.
Maka tentukan pasangan parts dengan jumlah poin performa paling tinggi dan biayanya termasuk dalam biaya yang dimiliki
Contoh data untuk masing-masing kategori adalah sebagai berikut
Knalpot
Nama Item | Biaya | Poin Performa |
---|---|---|
Knalpot 1 | 2500 | 10 |
Knalpot 2 | 5000 | 15 |
Knalpot 3 | 3500 | 11 |
Knalpot 4 | 2000 | 8 |
Knalpot 5 | 4000 | 12 |
Rem
Nama Item | Biaya | Poin Performa |
---|---|---|
Rem 1 | 500 | 3 |
Rem 2 | 1000 | 5 |
Rem 3 | 800 | 4 |
Rem 4 | 700 | 4 |
Rem 5 | 1200 | 6 |
Mesin
Nama Item | Biaya | Poin Performa |
---|---|---|
Mesin 1 | 10000 | 30 |
Mesin 2 | 9000 | 25 |
Mesin 3 | 12000 | 40 |
Mesin 4 | 10500 | 33 |
Mesin 5 | 9500 | 28 |
Langkah pertama adalah memasukkan data-data yang digunakan.
Contoh data adalah sebagai berikut
Dim knalpot(4, 1) As Double knalpot(0, 0) = 2500 knalpot(0, 1) = 10 knalpot(1, 0) = 5000 knalpot(1, 1) = 15 knalpot(2, 0) = 3500 knalpot(2, 1) = 11 knalpot(3, 0) = 2000 knalpot(3, 1) = 8 knalpot(4, 0) = 4000 knalpot(4, 1) = 12 Dim brake(4, 1) As Double brake(0, 0) = 500 brake(0, 1) = 3 brake(1, 0) = 1000 brake(1, 1) = 5 brake(2, 0) = 800 brake(2, 1) = 4 brake(3, 0) = 700 brake(3, 1) = 4 brake(4, 0) = 1200 brake(4, 1) = 6 Dim mesin(4, 1) As Double mesin(0, 0) = 10000 mesin(0, 1) = 30 mesin(1, 0) = 9000 mesin(1, 1) = 25 mesin(2, 0) = 12000 mesin(2, 1) = 40 mesin(3, 0) = 10500 mesin(3, 1) = 33 mesin(4, 0) = 9500 mesin(4, 1) = 28
Sebelum masuk kedalam bagian perhitungan, ada beberapa inputan data yang harus diketahui, yaitu
* Tentukan besar modal yang dimiliki
Diasumsikan dalam kasus ini, modal yang tersedia adalah 15000
Const modal As Double = 15000
* Tentukan iterasi
Diasumsikan dalam kasus ini, akan dilakukan 5 kali perulangan mutasi dan crossover dalam sekali perhitungan
Const jumlahIterasi As Double = 5
* Tentukan besar popsize
popsize adalah jumlah baris data yang dibuat dalam satu kali iterasi
Diasumsikan dalam kasus ini, jumlah popsize adalah 10
Const popsize As Double = 10
* Tentukan probabilitas crossover
probabilitas crossover adalah persentase jumlah baris data crossover yang dibuat dalam satu kali iterasi
nantinya jumlah baris data crossover = popsize * probabilitas crossover
Diasumsikan dalam kasus ini, probabilitas crossover adalah 0.4, sehingga nantinya muncul 4 baris data crossover
Const crossover As Double = 0.4
* Tentukan probabilitas mutasi
probabilitas mutasi adalah persentase jumlah baris data mutasi yang dibuat dalam satu kali iterasi
nantinya jumlah baris data mutasi = popsize * probabilitas mutasi
Diasumsikan dalam kasus ini, probabilitas mutasi adalah 0.3, sehingga nantinya muncul 3 baris data mutasi
Const mutasi As Double = 0.3
Langkah-langkah penggunaan algoritma ini adalah
1. Inisialisasi Populasi awal
Populasi adalah baris data sebanyak inputan popsize.
Isi dari populasi adalah pengambilan data secara acak dari masing-masing kategori
Jika total biaya pada baris acak tersebut melebihi modal, maka ulangi pengambilan acak.
iIndeksPopulasi(iPopsize, 0) = rnd.Next(0, 4) iIndeksPopulasi(iPopsize, 1) = rnd.Next(0, 4) iIndeksPopulasi(iPopsize, 2) = rnd.Next(0, 4) iPopulation(iPopsize, 0) = knalpot(iIndeksPopulasi(iPopsize, 0), 0) iPopulation(iPopsize, 1) = brake(iIndeksPopulasi(iPopsize, 1), 0) iPopulation(iPopsize, 2) = mesin(iIndeksPopulasi(iPopsize, 2), 0) Dim iTotal As Double = iPopulation(iPopsize, 0) + iPopulation(iPopsize, 1) + iPopulation(iPopsize, 2) If iTotal > modal Then Continue Do
2. Hitung Fitness untuk setiap baris data
Semakin tinggi nilai fitness, maka baris data tersebut semakin mendekati data optimal
Rumus untuk nilai fitness bisa disesuaikan, tergantung banyak parameter yang ingin digunakan dalam perhitungan
Diasumsikan dalam kasus ini, rumus nilai fitness adalah hanya melalui jumlah poin performa yang dihasilkan masing-masing parts terpilih
iPopulation(iPopsize, 3) = knalpot(iIndeksPopulasi(iPopsize, 0), 1) + brake(iIndeksPopulasi(iPopsize, 1), 1) + mesin(iIndeksPopulasi(iPopsize, 2), 1)
3. Lakukan perhitungan crossover
Crossover adalah pembuatan baris data baru berdasarkan baris data pada populasi awal
Ambil 2 baris data awal secara acak, kemudian tukar datanya pada sebuah kategori acak, catat hasilnya menjadi 2 baris data baru
Inputan probabilitas = 0.4, maka akan dihasilkan 0.4 * 10 = 4 data baru
Karena dalam sekali perhitungan menghasilkan 2 baris data baru, maka hanya perlu melakukan 2x perhitungan
Dim iIndeksDataAwal1 As Integer = 0 Dim iIndeksDataAwal2 As Integer = 0 Dim iIndeksTukar As Integer = 0 Do While iIndeksDataAwal1 = iIndeksDataAwal2 iIndeksDataAwal1 = rnd.Next(0, popsize - 1) iIndeksDataAwal2 = rnd.Next(0, popsize - 1) iIndeksTukar = rnd.Next(0, 2) Loop iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 1), 0) = iIndeksPopulasi(IIf(iIndeksTukar = 0, iIndeksDataAwal2, iIndeksDataAwal1), 0) iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 1), 1) = iIndeksPopulasi(IIf(iIndeksTukar = 1, iIndeksDataAwal2, iIndeksDataAwal1), 1) iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 1), 2) = iIndeksPopulasi(IIf(iIndeksTukar = 2, iIndeksDataAwal2, iIndeksDataAwal1), 2) iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 2), 0) = iIndeksPopulasi(IIf(iIndeksTukar = 0, iIndeksDataAwal1, iIndeksDataAwal2), 0) iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 2), 1) = iIndeksPopulasi(IIf(iIndeksTukar = 1, iIndeksDataAwal1, iIndeksDataAwal2), 1) iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 2), 2) = iIndeksPopulasi(IIf(iIndeksTukar = 2, iIndeksDataAwal1, iIndeksDataAwal2), 2) iPopulation(popsize - 1 + (iCrossover * 2 + 1), 0) = iPopulation(IIf(iIndeksTukar = 0, iIndeksDataAwal2, iIndeksDataAwal1), 0) iPopulation(popsize - 1 + (iCrossover * 2 + 1), 1) = iPopulation(IIf(iIndeksTukar = 1, iIndeksDataAwal2, iIndeksDataAwal1), 1) iPopulation(popsize - 1 + (iCrossover * 2 + 1), 2) = iPopulation(IIf(iIndeksTukar = 2, iIndeksDataAwal2, iIndeksDataAwal1), 2) iPopulation(popsize - 1 + (iCrossover * 2 + 2), 0) = iPopulation(IIf(iIndeksTukar = 0, iIndeksDataAwal1, iIndeksDataAwal2), 0) iPopulation(popsize - 1 + (iCrossover * 2 + 2), 1) = iPopulation(IIf(iIndeksTukar = 1, iIndeksDataAwal1, iIndeksDataAwal2), 1) iPopulation(popsize - 1 + (iCrossover * 2 + 2), 2) = iPopulation(IIf(iIndeksTukar = 2, iIndeksDataAwal1, iIndeksDataAwal2), 2) Dim iTotal As Double = iPopulation(popsize - 1 + (iCrossover * 2 + 1), 0) + iPopulation(popsize - 1 + (iCrossover * 2 + 1), 1) + iPopulation(popsize - 1 + (iCrossover * 2 + 1), 2) If iTotal > modal Then Continue Do Dim iTotal2 As Double = iPopulation(popsize - 1 + (iCrossover * 2 + 2), 0) + iPopulation(popsize - 1 + (iCrossover * 2 + 2), 1) + iPopulation(popsize - 1 + (iCrossover * 2 + 2), 2) If iTotal2 > modal Then Continue Do
4. Hitung Fitness untuk setiap baris data baru pada perhitungan crossover
iPopulation(popsize - 1 + (iCrossover * 2 + 1), 3) = knalpot(iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 1), 0), 1) + brake(iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 1), 1), 1) + mesin(iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 1), 2), 1) iPopulation(popsize - 1 + (iCrossover * 2 + 2), 3) = knalpot(iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 2), 0), 1) + brake(iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 2), 1), 1) + mesin(iIndeksPopulasi(popsize - 1 + (iCrossover * 2 + 2), 2), 1)
5. Lakukan perhitungan mutasi
Mutasi adalah pembuatan baris data baru berdasarkan baris data pada populasi awal
Ambil 1 baris data awal secara acak, kemudian ganti data pada sebuah kategori acak, catat hasilnya menjadi baris data baru
Inputan probabilitas = 0.3, maka akan dihasilkan 0.3 * 10 = 3 data baru
Dim iParentIndeks As Integer = 0 Dim iIndeksTukar As Integer = 0 iParentIndeks = rnd.Next(0, popsize - 1) iIndeksTukar = rnd.Next(0, 2) If iIndeksTukar = 0 Then Dim iIndeksMasterItem As Double = -1 Do While iIndeksMasterItem = -1 Or iIndeksMasterItem = iIndeksPopulasi(iParentIndeks, 0) iIndeksMasterItem = rnd.Next(0, 4) Loop iIndeksPopulasi(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 0) = iIndeksMasterItem iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 0) = knalpot(iIndeksMasterItem, 0) Else iIndeksPopulasi(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 0) = iIndeksPopulasi(iParentIndeks, 0) iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 0) = iPopulation(iParentIndeks, 0) End If If iIndeksTukar = 1 Then Dim iIndeksMasterItem As Double = -1 Do While iIndeksMasterItem = -1 Or iIndeksMasterItem = iIndeksPopulasi(iParentIndeks, 1) iIndeksMasterItem = rnd.Next(0, 4) Loop iIndeksPopulasi(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 1) = iIndeksMasterItem iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 1) = brake(iIndeksMasterItem, 0) Else iIndeksPopulasi(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 1) = iIndeksPopulasi(iParentIndeks, 1) iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 1) = iPopulation(iParentIndeks, 1) End If If iIndeksTukar = 2 Then Dim iIndeksMasterItem As Double = -1 Do While iIndeksMasterItem = -1 Or iIndeksMasterItem = iIndeksPopulasi(iParentIndeks, 2) iIndeksMasterItem = rnd.Next(0, 4) Loop iIndeksPopulasi(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 2) = iIndeksMasterItem iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 2) = mesin(iIndeksMasterItem, 0) Else iIndeksPopulasi(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 2) = iIndeksPopulasi(iParentIndeks, 2) iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 2) = iPopulation(iParentIndeks, 2) End If Dim iTotal As Double = iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 0) + iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 1) + iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 2) If iTotal > modal Then Continue Do
6. Hitung Fitness untuk baris data baru pada perhitungan mutasi
iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 3) = knalpot(iIndeksPopulasi(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 0), 1) + brake(iIndeksPopulasi(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 1), 1) + mesin(iIndeksPopulasi(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + (iMutasi + 1), 2), 1)
7. Urutkan baris data ini berdasarkan fitness tertinggi
Kemudian ambil data sebanyak popsize, dan data ini akan digunakan untuk perhitungan selanjutnya
Dim dt As DataTable dt = New DataTable dt.Rows.Clear() dt.Columns.Clear() dt.Columns.Add("No") dt.Columns.Add("Knalpot") dt.Columns.Add("Rem") dt.Columns.Add("Mesin") dt.Columns.Add("Fitness") dt.Columns("Fitness").DataType = GetType(Double) Dim dr As DataRow For i As Integer = 0 To UBound(iPopulation) dr = dt.NewRow dr(0) = i For j As Integer = 0 To 3 dr(j + 1) = iPopulation(i, j) Next dt.Rows.Add(dr) Next Dim dv As DataView = dt.DefaultView dv.Sort = "Fitness DESC" dt = dv.ToTable ReDim iPopulation(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + iPopulasiMutasi, 3) For i As Integer = 0 To popsize - 1 For j As Integer = 0 To 3 iPopulation(i, j) = dt.Rows(i)(j + 1) Next Next Dim iSortIndeks(popsize - 1) As Double For i As Integer = 0 To popsize - 1 iSortIndeks(i) = dt.Rows(i)(0) Next Dim dt2 As DataTable dt2 = New DataTable dt2.Rows.Clear() dt2.Columns.Clear() dt2.Columns.Add("No") dt2.Columns.Add("Knalpot") dt2.Columns.Add("Rem") dt2.Columns.Add("Mesin") dt2.Columns.Add("Fitness") dt2.Columns("Fitness").DataType = GetType(Double) For i As Integer = 0 To UBound(iIndeksPopulasi) dr = dt2.NewRow dr(0) = i For j As Integer = 0 To 3 dr(j + 1) = iIndeksPopulasi(i, j) Next dt2.Rows.Add(dr) Next ReDim iIndeksPopulasi(popsize - 1 + Math.Round(iPopulasiCrossover / 2) * 2 + iPopulasiMutasi, 3) For i As Integer = 0 To popsize - 1 For j As Integer = 0 To 3 iIndeksPopulasi(i, j) = dt2.Rows(iSortIndeks(i))(j + 1) Next Next
8. Ulangi perhitungan crossover, mutasi dan sorting (point nomor 3 – 7) sebanyak parameter jumlah iterasi
Setelah itu akan didapatkan data paling optimal, yaitu baris data paling awal / pertama
/br>
Hasil akhir adalah: (klik untuk perbesar gambar)
Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:
Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.
Sore min, makasih sudah bahas algoritma genetika dan ada source codenya. Jadi agak paham2 dikit judul skripsi yang dipilihin dosen karena pas pengumpulan saya telat. 🙁
Masalahnya yang dibahas penjadwalan otomatis dan saya bingung mulai darimana bikinnya. Struktur gennya ada saran min? Benar2 ngeblank soalnya.
Terima kasih.
Sebelumnya saya ucapkan terima kasih telah berkunjung ke situs saya.
Saya ingin bertanya, penjadwalan tentang apakah yang dimaksud, karena ada banyak contoh kasus penjadwalan.
Disini saya asumsikan saja penjadwalan yang dimaksud adalah penjadwalan mata kuliah. Mudah-mudahan pemisalan ini cocok dengan kasus anda.
Untuk penjadwalan mata kuliah, maka
Gen adalah mata kuliah itu sendiri.
Populasi adalah jumlah mata kuliah yang diperbolehkan dalam sebuah jadwal kuliah.
Nilai Fitness bisa dihitung dari jumlah menit / sks dari masing-masing mata kuliah, semakin tinggi nilainya, berarti semakin banyak mata kuliah yang masuk ke dalam jadwal.
Sebagai langkah awal pembuatan program, silahkan anda download contoh source code yang sudah saya sediakan pada halaman ini. Setelah Anda mempelajari dan memahami alur program tersebut, maka anda cukup melakukan sedikit modifikasi skrip agar sesuai dengan contoh kasus anda. Jika masih memiliki kesulitan dalam pembuatan program, bisa langsung menggunakan jasa saya 🙂
Semoga membantu
Penjadwalan kelas laboratorium min, jadi yang mengajar nanti adalah asisten dosen. Bingung mau mulai darimana soalnya, jumlah ruangnya kan terbatas, asdos sendiri juga punya jadwal kuliah sendiri, belum lagi mata kuliah yang diajarkan kan tergantung asdosnya mampu ngajar atau tidak, apalagi ada kuota minimalnya.
Sudah didownload min, tapi di laptop masih pakai Visual Studio 2008. Ngefek ga? Baca2 source codenya tetap galau bagaimana jadi penjadwalannya. 🙁
Nanti kalau sudah frustasi ane minta bantuannya min, ortu udah kasih deadline tahun depan soalnya. Bisa dibantu teorinya juga kan min jasanya?
Saya kira penjadwalan mata kuliah, ternyata penjadwalan kelas laboratorium. Tapi pada intinya kedua topik tersebut mirip, sehingga:
gen adalah mata kuliah yang diajarkan
populasi adalah beberapa solusi jadwal kuliah yang tersusun dari beberapa mata kuliah
nilai fitness dihitung dari jumlah menit / sks dari semua mata kuliah dalam jadwal
Sewaktu men-generate populasi awal secara acak, setiap gen yang dimasukkan dalam populasi harus sudah memenuhi syarat-syarat yang ada. Disinilah dilakukan pengecekan seperti keterbatasan jumlah ruang, jadwal kuliah asdos, dan kuota minimal. Semakin banyak syarat-syarat yang diajukan, maka semakin kompleks program yang dibuat.
Setelah populasi sudah terbentuk, maka perlu dilakukan proses crossover dan mutasi pada 1 atau beberapa gen. Setelah mengalami proses tersebut, maka harus dilakukan pengecekan syarat-syarat diatas agar populasi yang terbentuk masih tetap memenuhi syarat-syarat yang ada.
Langkah terakhir adalah melakukan seleksi populasi untuk digunakan dalam perhitungan berikutnya. Populasi dengan nilai fitness yang lebih tinggi akan disimpan, dan sisanya akan dibuang. Kemudian lakukan kembali proses crossover dan mutasi sampai batasan perulangan sudah terpenuhi.
Pada intinya, tingkat kesulitan program tergantung syarat-syarat yang digunakan. Jika tidak ingin programnya terlalu susah, jangan terlalu banyak memasukkan syarat dalam pembentukan jadwal kuliah. Hal tersebut bisa dicegah dalam penulisan batasan masalah pada laporan skripsi anda. Daripada anda kesulitan sendiri dalam membuat program, lebih baik syarat-syarat nya dikurangi. Jika tetap ingin memasukkan syarat-syarat tersebut, dan masih kesulitan dalam pembuatan programnya, bisa menggunakan jasa saya 🙂
Skrip yang saya sertakan diatas saya buat dengan menggunakan Microsoft Visual Studio 2012. Lebih aman jika anda menggunakan software tersebut, tetapi bisa saja anda coba dengan versi yang lebih lama. Jika tidak ada perbedaan sintaks antara kedua tahun tersebut, seharusnya tidak akan menyebabkan error.
Penjelasan teori juga bisa saya bantu apabila masih terdapat kesulitan. Silahkan hubungi saya melalui salah satu kontak yang terdapat pada halaman Hubungi kami. Terima kasih.
Haduh, tambah pusing min. Id line dan whatsappnya sudah kuadd min, konsultasi lewat sana. proposal tugas akhir sudah kukirim lewat email [email protected]. tolong dibantu enaknya gimana min. Makasih.
Baik, komunikasi selanjutnya kita lakukan secara pribadi.
Terima kasih telah berkunjung di website ini, dan terima kasih karena telah menggunakan jasa kami.
min, bisa dijelaskan tentang perbedaan serta kegunaan algoritma kelelawar dengan algoritma genetika? Apakah algoritma kelelawar juga dapat digunakan untuk pengoptimalan penjadwalan?
Tentu saja semua algoritma yang bersifat algoritma untuk optimasi pada kategori https://piptools.net/category/algoritma/algoritma-optimasi/ (termasuk kedua algoritma ini) dapat digunakan pada semua contoh kasus yang bersifat optimasi, Penjadwalan adalah salah satu kasus optimasi, sehingga algoritma ini dapat digunakan untuk memecahkan masalah tersebut.
Min, mau nanya dong. Kalo untuk optimasi tata letak ruangan apakah bisa menggunakan GA selain dengan VB? Karena saya sedang menyusun laporan kerja praktek dengan topik tsb. Thanks
Semua topik yang memiliki tujuan penelitian untuk mengoptimasi tentu saja pada umumnya bisa diselesaikan dengan semua algoritma pada kategori Algoritma Optimasi termasuk di dalamnya adalah algoritma pada pos ini. Tetapi tetap harus melihat secara spesifik, karena kondisi masing-masing kasus akan berbeda, sehingga mungkin ada algoritma tertentu yang jauh lebih baik digunakan daripada algoritma ini.
Permisi Mas saya mau bertanya, bila kasus tersebut saya asumsikan dengan kasu pencarian rute terpendek apakah akan tetap sama ?
Terima kasih atas ilmu yang sangat bermanfaat ini mas
assalamu’alaikum
Algoritma ini tentu saja bisa digunakan untuk menyelesaikan permasalahan pencarian jalur terpendek. Yang perlu anda lakukan adalah membangkitkan populasi dengan menggunakan jalur acak dan kemudian mengganti nilai fitness dengan menghitung nilai jarak (karena kasus anda adalah pencarian jalur terpendek).
Terima Kasih Mas Infonya, sekarang setelah saya melihat contoh yang sampean share kok saya berpikir sepertinya mutasinya kok tidak ada fungsinya ya mas ? atau saya yg kurang paham. Maaf mas mohon dijelaskan. Terima Kasih Mas
Assalamu’alaikum
Mutasi adalah salah satu proses dari algoritma genetika, dimana individu yang terpilih akan mengalami mutasi gen, yaitu perubahan nilai gen individu tersebut tanpa dipengaruhi oleh faktor luar. Proses ini adalah salah satu cara untuk menemukan solusi yang lebih baik daripada solusi sebelumnya. Walaupun dalam implementasi ternyata tidak ditemukan solusi yang lebih baik, prosesnya harus tetap disertakan karena merupakan bagian dari algoritma ini.
Bisa berikan contoh gak optimasi fungsi Himmelblau dengan GA?
Tentu saja hal tersebut dapat dilakukan, tetapi tidak dapat dijelaskan secara mudah karena topik yang saya gunakan disini berbeda dengan topik optimasi fungsi Himmelblau yang saya gunakan pada pembahasan algoritma lainnya. Diperlukan penyesuaian skrip di beberapa bagian agar dapat melakukan hal tersebut
Bingung kalau mau diimplementasikan pada penjadwalan
Pada kasus penjadwalan berarti anda perlu memasukkan mata kuliah ke dalam slot jadwal kuliah sesuai ketentuan yang telah disepakati. Cara perhitungan fitness dapat dilakukan dengan mencari jadwal kuliah dengan isian terbanyak / sks terbanyak / slot kosong paling sedikit / kondisi – kondisi lainnya
Apakah ada artikel tentang algoritma MOGA , pengembangan dari GA ?
Mohon maaf saya tidak memiliki artikel tersebut.
Dari beberapa penelitian Algoritma k-Nearest Neighbor, untuk nilai K bisa dioptimalkan dengan menggunakan Algoritma Genetika.
Nah kira-kira bagaimana gan cara mengimplementasikannya?
Tentu saja hal tersebut dapat dilakukan. Pada intinya setiap kali perulangan dalam algoritma genetika akan digunakan nilai K yang berbeda untuk mencari nilai K manakah yang memberikan hasil paling baik.
boss bisa minta program dengan kasus yg di atas gk boss?
ana disuru buat program dengan metode AG (tugas Kampus )
tapi ane bingung boss cara buat nya.
terimakasih seblmnya boss
Skrip implementasi dapat anda unduh pada tautan yang tersedia pada pos ini. Jika anda tertarik untuk menggunakan jasa kami maka silahkan menghubungi kami dengan nomor kontak yang tersedia pada halaman hubungi kami https://piptools.net/hubungi-kami/
bang bisa minta file project di atas gk bang..
biar ane langsung Run aja bang…
soal ane dsru buat program algoritma genetik ( tugas kuliah )
dan waktunya udah mepet bang…
ane belum terlalu faham dengan visual basik
Trimaksih sebelumnya….
File diatas sudah merupakan file proyek secara keseluruhan. Setelah anda menjalankan VIsual Studio, buat proyek baru dengan tipe “Console Application”, kemudian salin isi skrip pada file yang disediakan atau anda bisa menimpa langsung modul kosong pada proyek tersebut
bang ada contoh kasus pemrograman GA pada travelling salesman problem gk?
Saya tidak memiliki contoh kasus untuk menyelesaikan permasalahan TSP, walaupun seharusnya algoritma ini secara umum dapat digunakan untuk menyelesaikan kasus tersebut.
Saya memiliki judul skripsi untuk penentuan vendor pada wedding organizer (nah penentuan vendor ini berlaku untuk customer jadi seperti rekomendasi vendor untuk customer berdasarkan list yang ada dengan atribut : harga, jumlah undangan, venue : indoor atau outdoor, lokasi : jakbar jaksel jakpus jaktim jakut, bridal : internasional atau adat) yang menjadi permasalahan pada algoritma nya, apakah algoritma genetika ini bisa digunakan? Jika tidak adakah rekomendasi saran algoritma yang dapat membantu saya? Mohon dijawab terimakasih
Berdasarkan deskripsi yang anda berikan sepertinya lebih cocok apabila menggunakan beberapa algoritma klasifikasi yang tersedia pada kategori https://piptools.net/category/algoritma/algortima-pengelompokan-klasifikasi-data/ , akan tetapi algoritma optimasi seperti GA seharusnya juga dapat diterapkan pada kasus tersebut. Mengingat saya tidak mengetahui data yang anda pakai, maka gambaran yang saya dapatkan adalah mencari bobot dari masing-masing atribut yang kemudian diaplikasikan pada setting atribut yang dipilih oleh pengguna.
Assalamualaikum kak saya mau bertnya mengenai penentuan angka desimal sebelum masuk di crossover. Bgaimna menentukan angka desimalnya kak?
Jika yang anda maksud adalah parameter crossover maka nilai tersebut biasanya sudah dijelaskan jika anda mengacu pada referensi jurnal yang membahas algoritma yang sama. Tentunya nilai parameter ini sebaiknya diubah agar sesuai dengan nilai parameter dari referensi jurnal tersebut.
maaf mau tanya, untuk indeksPopulasi, iPopulation, dan rnd apakah sebelumnya di inisialisasikan?
saya mencoba download source codenya tidak bisa min.. untuk belajar..
Contoh modul yang saya rancang dilakukan dengan menggunakan bahasa Visual Basic .NET. Pada bahasa tersebut, semua variabel yang digunakan harus dideklarasikan terlebih dahulu tetapi tidak wajib untuk diinisialisasikan. Akan tetapi semua variabel tetap saya inisialisasikan agar tidak terjadi kesalahan nilai yang ingin saya gunakan.
Saya baru saja mencoba tombol download modul dan masih berjalan dengan baik. Silahkan anda coba kembali.
mau tanya min, kalau di buat database gimana bacanya ya min? jadi rem, brake sama mesin dibuatkan tabel gt jadi nanti datanya bisa import dari csv
Pembacaan data dari database tentunya dapat dilakukan. Hal tersebut saya hindari karena modul yang saya bagikan sebisa mungkin tidak bergantung pada library tertentu sehingga dapat dijalankan secara murni pada visual studio versi manapun.