Wednesday, July 27, 2016

Simple Case Single Objective Optimation Using Genetic Algorithm



Pada kesempatan kali ini saya akan menjelaskan secara detil contoh mengoptimasi menggunakan algoritme genetika dengan implementasi coding program di GNU Octave atau bisa menggunakan MATLAB.
Untuk memudahkan pemahaman saya gunakan fungsi sederhana X kuadrat dengan ruang lingkup pencarian mulai dari 0 sampai 31 dengan tujuan optimasinya adalah memalsimalkan, sebenarnya kita sudah tahu bahwa nilai maksimum dari fungsi X kuadrat dengan search space 0 sampai 31 adalah 31 kuadrat. Namun contoh sederhana ini ditujukan untuk mengetahui cara kerja dari algoritme genetika.

English ver : 
This time I want to tell you in detail an easy example of optimizing using genetic algorithm by implementing in GNU Octave or Matlab Program.

To make you understand what is GA (Genetic Algorithm) I am using  a simple function  Xwhich has a search space from 0 to 31 and we want this function to be maximize. Obviously, we know that maximum value from X2 is we will get from 31 value, which is 312 = 961, But, my goal with this easy example is to make you understand the basic processs of genetic algorithm.



Pembangkitan Kromosom / Generating Chromosome
Masalah dalam Algoritme Genetika Harus dimodelkan secara kromosom, kali ini saya menggunakan representasi basic dari algoritme genetika untuk memodelkan kromosom nya, yaitu representasi biner.


Konversi Biner ke Integer / Converting Binary to Integer

Evaluasi Fungsi /Fitness Evaluation

Seleksi Roullete Wheel / Roullete Wheel Selection


 Crossover, dengan paramater probabilitas (probability parameter) 0.75





Mutasi (Mutation) dengan parameter probabilitas mutasi (Probability of mutation) 0.1

 
 Hasil Plot dari GA (Plot result from GA)


Selanjutnya setelah proses mutasi saya memberikan tantangan kepada anda bagaimana agar proses generasi dilakukan dengan batasan generasi sesuai keinginan anda. tapi saya sarankan 50 generasi sudah cukup, dan  nilai variabel yang di plotkan adalah generasi terhadap pencarian nilai maksimumnya, dengan kata lain pada sumbu X adalah generasi dan sumbu Y adalah Hasil pencarian maksimum pada saat generasi tersebut.

Pada  Plot dapat dilihat pada generasi diatas 5 algoritme genetika sudah menemukan kondisi optimal dari memaksimalkan fungsi X kuadrat, namun sekitar generasi ke 15 dan 25. pencarian sempat turun, dikarenakan  pengaruh mutasi. Bagi kalian yang masih bingung cara untuk melakukan  generasi dan memplot nya. jangan khawatir, tersedia  link Download Source Code dapat di download di : Genetic Algorithm Single ObjectiveUntuk mengetahui cara melakukan generasi dan mem plot nya.


Mohon maaf pada tulisan kali ini belum menjelaskan tahapan-tahapan proses algoritme genetika secara teori. Kedepannya jika ada waktu dan kesempatan. Postingan ini akan diperbarui. dan juga akan ditambahkan dengan metode baru dalam GA, yaitu elitisme. Apa itu elitisme?. elitisme adalah suatu proses dalam algoritme genetika dimana individu individu terbaik akan disimpan, sehingga tiap generasi dalam Algoritme Genetika tidak akan pernah mengalami penurunan dalam pencarian seperti halnya hasil diatas.

English Ver : 
 After mutation process I chalange you to make a generation process in GA and also to plot it. Generation limit is up to you, But I recommend you 50 generation is enough for this case. Data that you have to store in variable are generation value and maximum value found in a generation. In other words you have to plot a generation value in X axis and maximum value found in a generation in Y axis, to see the Plot. If you still confuse how to make it, dont worry. I give you my source code, you can downlod it at the following link Genetic Algorithm Single Objective

I am sorry, because this article is still not clear / not detail in explaination. Next If I have time to fix it. I Would update it with more theoritical explaination on each GA process.



 Lanjut ke proses elitisme (Continue to elitism process)

Seperti yang sudah dijelaskan sebelumnya elitisme merupakan proses pada GA untuk mempertahankan populasi terbaiknya dari generasi ke generasi, sehingga dia tidak akan mengalami kehilangan individu terbaik yang pernah ditemukannya.

Teori singkat dari proses elitisme adalah, populasi hasil dari proses genetika atau populasi keturunan (populasi hasil dari crossover dan mutasi) digabungkan kembali dengan populasi orang tua, sehingga total populasi adalah 2N, dimana N adalah variabel total jumlah individu yang pertama kali dibangkitkan. Setelah populasi keturunan dan orang tuan diganungkan maka dipilih sejumlah N individu terbaik dari populasi gabungan. pemilihan terbaik tersebut tentunya didasarkan pada fungsi tujuan yang ingin dicapai. maka pada proses elitisme akan dilakukan kembali proses dekode kromosom, dan evaluasi funsi tujuan (fungsi fitness).

Setelah semua individu dalam populasi gabungan telah diketahui nilai fitnessnya, maka pemilihan N jumlah individu terbaik dilakukan dan N individu yang tidak terpilih akan dihapus.N individu terbaik yang sudah didapatkan akan dimasukan pada proses generasi berikutnya sebagai populasi orang tua pada generasi berikutnya. 




 
Berikut ini adalah source code beserta proses elitismeGenetic Algorithm Single Objective with elitism

No comments:

Post a Comment