Kamis, 21 Maret 2013

Mengoptimalkan Quality Points melalui GA di R

Setelah beberapa hari yang lalu saya telah memberikan posting-an mengenai studi kasus yang akan diselesaikan menggunakan Genetic Algorithm (GA) melalui program R, maka pada postingan kali ini saya mencoba untuk mempublikasikan apa yang dilakukan untuk mengoptimalkan Quality Points dengan keterbatasan waktu yang ada untuk melakukan penyiaran dengan beberapa program on air yang ada. 


untuk menyelesaikan Knapsack Problem ini menggunakan program R, library yang saya gunakan yaitu (genalg). Untuk dapat menggunakan library ini tentunya dengan cara melakukan instalasi pada packages tersebut.
setelah proses instalasi selesai, maka library langsung dapat dideklarasikan pada baris program di R sebelum memasukkan kasusnya. dengan perintah:

library(genalg)

selanjutnya yaitu memasukkan informasi mengenai data yang ingin kita temukan hasil optimalnya. Sesuai dengan data yang telah saya posting pada posting-an sebelumnya. Masukkan perintah di bawah ini setelah memilih library yang digunakan:

dataset <- data.frame(Program = c("Salam Sahabat", "Keliling Hari", "Smile of The Day", "Kurcaci",
+ "Kunci Hidup", "Style Zone", "Retro Mania", "Around You", "Kereta ku", "Your Time",
+ "Got Your Life", "Take your Problem"), Qualitypoints = c(30, 20, 40, 25, 10, 50, 15, 30, 20, 35, 35,
+ 30), Duration = c(150, 60, 30, 120, 60, 120, 15, 45, 90, 150, 90, 120))
> Durationlimit <- 840


seperti yang telah saya jelaskan sebelumnya, pada kasus ini ingin ditentukan program apa saja yang akan disiarkan dengan jumlah jam pernyiaran yaitu 14 jam (840) menit. Tentunya hasil yang diinginkan dengan menemukan Quality Points yang tertinggi.

sebelum menemukan hasil optimal menggunakan GA, misalkan kita menentukan chromosome untuk program yang akan disiarkan yaitu:
1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1 
maka, masukkan perintah seperti di bawah ini:

 chromosome = c(1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1)
> dataset[chromose == 1, ]


maka akan terlihat program yang akan disiarkan yaitu Salam Sahabat, Keliling Hari, Smile of the Day, Kurcaci, Retro Mania, Around You, Kereta ku, Got Your Life, dan Take your Problem.
kemudian untuk melihat Quality Points yang didapat dari program pilihan kita itu dengan perintah:

cat(chromosome %*% dataset$Qualitypoints)

maka akan terlihat: 245> 
Quality points yang didapat yaitu 245.

selanjutnya yaitu menggunakan GA melalui library yang telah digunakan, yaitu untuk melihat hasil terbaik dari algoritma yang ada, dengan mengetikkan perintah:

> evalFunc <- function(x) {
+ current_solution_Qualitypoints <- x %*% dataset$Qualitypoints
+ current_solution_Duration <- x %*% dataset$Duration
+ if (current_solution_Duration > Durationlimit)
+ return(0) else return (-current_solution_Qualitypoints)
+ }
> iter = 100
> GAmodel <- rbga.bin(size = 12, popSize = 200, iters = iter, mutationChance = 0.01,
+ elitism = T, evalFunc = evalFunc)
> cat(summary.rbga(GAmodel))


maka, akan terlihat hasil seperti di bawah ini:

GA Settings
  Type                  = binary chromosome
  Population size       = 200
  Number of Generations = 100
  Elitism               = TRUE
  Mutation Chance       = 0.01

Search Domain
  Var 1 = [,]
  Var 0 = [,]

GA Results
  Best Solution : 0 1 1 1 0 1 1 1 1 1 1 1 


dari hasil di atas terlihat bahwa Best Solution yang diberikan oleh GA menghasilkan chromosome 0 1 1 1 0 1 1 1 1 1 1 1.
Untuk meilihat program apa saja yang akan memberikan hasil maksimal jika disiarkan dari chromosome itu, masukkan perintah:


solution = c(0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1)
> dataset[solution == 1, ]


maka akan terlihat program yang seharusnya disiarkan dengan batasan waktu 840 menit yaitu Keliling Hari, Smile of The Day,
Kurcaci, Style Zone, Retro Mania, Around You, Kereta ku, Your Time, Got Your Life, dan Take Your Problem.
Durasi dari semua program tersebut sama dengan durasi waktu yang tersedia, yaitu 840 menit.
Kemudian, Quality points yang didapat dari GA yaitu 300.


Maka, hasil yang dikeluarkan oleh GA telah optimal dibandingkan dengan kemungkinan program acara yang dipilih sendiri. Terlihat juga dari Quality points dari GA yaitu 300. Sedangkan dihasil awal tanpa menggunakan GA, Quality points hanya 245. Solusi yang diberikan dari GA juga sesuai dengan batasan yan dimiliki, yakni durasi waktu penyiaran dalam sehari yaitu 840 menit.
 





 


 


Tidak ada komentar: