Penerapan Algoritme Genetika Untuk Penjadwalan Latihan Reguler Pemain Brass Marching Band (Studi Kasus: Ekalavya Suara Brawijaya)
Vol. 2, No. 9, September 2018, hlm. 2950-2956 http://j-ptiik.ub.ac.id
Penerapan Algoritme Genetika Untuk Penjadwalan Latihan Reguler
Pemain Brass Marching Band (Studi Kasus: Ekalavya Suara Brawijaya)
1 2 3 Marina Debora Rindengan , Imam Cholissodin , Putra Pandu AdikaraProgram Studi Teknik Informatika, Fakultas Ilmu Komputer, Universitas Brawijaya 1 3 Email: mdrindengan@gmail.com adikara.putra@ub.ac.id
Abstrak
Marching band merupakan ekstrakurikuler yang dimana pemainnya dituntut untuk bisa bekerja sama
dalam satu tim agar bisa memberikan penampilan yang baik. Waktu yang diperlukan untuk latihan tidak singkat dengan jumlah pemain yang banyak. Jadwal latihan marching band yang kurang baik atau jadwal yang bentrok antar pemain bisa menimbulkan permasalahan dalam melakukan latihan. Data jadwal setiap pemain diambil dari Marching Band Ekalavya Suara Brawijaya, dan libur nasional lewat kalender tahun 2016 dari bulan September sampai Desember. Setelah mendapatkan data tersebut, proses algoritme genetika yang dimulai dari representasi kromosom terhadap jam dan hari latihan, kemudian melakukan proses extended intermediate crossover dan reciprocal exchange mutation untuk mendapatkan offspring baru yang akan diseleksi menggunakan elitism selection untuk generasi selanjutnya. Jadwal yang optimal didapatkan melalui pengujian, hasil dari pengujian beragam, rata-rata nilai fitness terbesar adalah 1 yang terdapat pada ukuran populasi adalah 130, jumlah generasi adalah 140, dan kombinasi cr dan mr adalah 0,5.
Kata Kunci: algoritme genetika, penjadwalan, marching band.
Abstract
Marching band is an extracurricular where the players are required to work together in a team in order
to give a good appearance. The rehearsals require a lot of times with many players. A poor schedule of
marching band rehearsal or conflict of schedule between players can cause problems in doing the
rehearsals. Data schedule of each player is taken from Marching Band Ekalavya Suara Brawijaya, and
national holiday from September 2016 until December 2016. After getting the data, process of genetic
algorithm that start from chromosome representation to time and practice day, and then do the process
of extended intermediate crossover and reciprocal exchange mutations for new offspring that will be
selected by elitism selection for next generation. The optimal schedule is obtained through testing, the
largest average fitness score is 1 on the population size 130, the number of generation is 140, and
combinations of cr and mr is 0,5.Keywords: genetic algorithms, scheduling, marching band Marching band merupakan suatu kelompok 1.
barisan yang memainkan beberapa alat musik, di
PENDAHULUAN
mana barisan ini akan membentuk sebuah pola Ekstrakurikuler merupakan kegiatan gambar sesuai dengan koreografi atau suasana tambahan untuk menunjang pengembangan musiknya. Seorang pemain marching band seorang siswa atau mahasiswa yang dilakukan di dituntut agar tidak hanya bermain alat musik luar jam belajar standar (Fathia, 2014). dengan baik tetapi bagaimana dia bisa bekerja
Ekstrakurikuler dapat membuat seseorang sama dalam satu tim agar bisa menampilkan mendapatkan pelajaran soft skills, yang mana suatu permainan musik yang indah dan dalam pembelajaran akademik jarang menunjukan display yang rapi. Memberikan ditemukan. Ekstrakurikuler memiliki beberapa suatu permainan musik dan pertunjukan display kategori seperti kerohanian, seni, olahraga, yang baik tentunya membutuhkan waktu untuk penalaran dan lain-lain. Marching band adalah berlatih yang tidak singkat dengan jumlah salah satu contoh ekstrakurikuler bidang seni.
Fakultas Ilmu Komputer Universitas Brawijaya
2950 pemain yang banyak. Berdasarkan jumlah tersebut, dapat menimbulkan permasalahan dalam melakukan latihan, karena sering kali mendapatkan jadwal yang kurang baik atau jadwal yang bentrok antar pemain.
Untuk dapat melakukan latihan dengan baik, maka perlu melakukan penjadwalan yang baik juga. Penjadwalan untuk latihan reguler pemain brass marching band ini dilakukan dengan menyesuaikan jadwal target dari setiap pelatih kamudian disesuaikan dengan kegiatan- kegiatan dari pemain yang ada. Pemain brass
kebanyakan dari tema penampilannya menjurus ke bagian seni (Hermawan, 2015). Marching
5. ALGORITME GENETIKA
Penjadwalan adalah suatu proses pengalokasikan waktu untuk mengerjakan suatu kegiatan berdasarkan pertimbangan dari keadaan-keadaan yang ada sehingga mendapatkan hasil yang optimal. Penjadwalan sering terjadi permasalahan dari beberapa keadaan, seperti keterbatasan waktu, sumber daya manusia yang sangat banyak, cuaca yang berubah-ubah (Ginting, 2009).
4. PENJADWALAN
terbanyak dalam marching band yang mana dalam divisi ini memiliki ciri khas, yaitu memainkan alat musik tiup. Pada dasarnya, instrumen musik tiup menggunakan nada dasar B? atau F (Afianti, 2012). Brass terdapat beberapa jenis instrumen yang dibedakan dengan suara yang dihasilkan dan bentuk alatnya.
3. BRASS Brass merupakan bagian dari marching band yang memiliki komposisi peserta
suatu perayaan, pengisi acara, atau lomba.
marching band bisa dilakukan dalam keadaan indoor ataupun outdoor, baik untuk mengiringi
mengiringi suatu perayaan yang dilakukan secara outdoor dalam suatu barisan dengan pola yang sama. Namun dengan berjalannya waktu,
band pada awalnya ditampilkan untuk
marching band seperti militer, namun
Marching Band Ekalavya Suara Brawijaya
yang memainkan musik, baris-berbaris, gerak tari, dan irama. Melihat dari aksi baris-berbaris,
2. MARCHING BAND Marching band adalah sekelompok orang
Berdasarkan permasalahan di atas, maka penelitian ini dilakukan untuk mengoptimalkan latihan reguler pemain brass marching band Ekalavya Suara Brawijaya menggunakan algoritme genetika. Sistem ini diharapkan dapat membantu memberikan jadwal yang mengurangi bentrok antar pemain.
parents memperbolehkan daftar jadwal yang baru untuk dapat dibuat tanpa adanya bentrok.
memiliki pemain yang mengalami bentrok, tetapi kombinasi khusus dari beberapa gen
parents yang mana dalam setiap daftar jadwal
Berdasarkan penjelasan sebelumnya, banyak permasalahan yang ditemukan, sebagai contoh adalah sebuah jadwal diperlukan untuk dibuat yang mana ketika seorang pemain tidak dapat hadir lebih dari satu kali dalam satu waktu tertentu yang terdapat dalam daftar jadwal yang disediakan, lalu solusi yang didapatkan child diperlihatkan oleh satu daftar di mana tidak ada pemain yang mengalami bentrok. Populasi terdiri dari sekumpulan daftar jadwal yang berbeda, yang banyak antara lain tidak dapat mencapai hasil yang optimal. Hasil yang sedemikian akan dilahirkan dari beberapa
Terdapat berbagai macam metode yang bisa digunakan untuk melakukan optimasi, masing- masing metode memiliki kelebihan yang berbeda, tetapi metode algoritme genetika dapat memberikan hasil yang lebih baik (Mansur, et al., 2014). Teknik metaheuristik lebih menunjukkan hasil yang menjanjikan dalam menyelesaikan permasalahan penjadwalan yang dapat teroptimalisasi dan meningkatkan faktor kecepatan dan kualitas (Teoh, et al., 2015). Namun tidak seperti metode metaheuristik yang lainnya yang hanya memiliki satu solusi sub- optimal pada satu waktu, algoritme genetika dapat memberikan banyak solusi individual dalam bentuk sebuah populasi.
(ESB) idealnya merupakan mahasiswa dari Universitas Brawijaya, namun melihat jumlah kuota pemain untuk beberapa event yang sangat banyak tetapi sumber daya pemain dalam Universitas Brawijaya yang sedikit membuat ESB sendiri membuat open recruitment untuk pemain non Universitas Brawijaya. Hal ini pun diharapkan dapat memperlancar kegiatan latihan untuk suatu perlombaan.
Algoritme genetika terinspirasi dari ilmu genetika dalam biologi, maka banyak istilah dalam ilmu genetika diadopsi dari ilmu genetika (Mahmudy, 2015). Dengan mengadopsi ilmu tersebut, secara tidak langsung algoritme genetika ini meniru perumpamaan seleksi alam atau “siapa yang bertahan, dia yang layak”, dengan hal tersebut algoritme genetika dapat menentukan individu yang berkualitas yang kemudian dapat digunakan untuk menyelesaikan permasalahan dalam kehidupan sehari-hari.
Proses dalam algoritme genetika diawali dengan inisialisasi kemudian melakukan reproduksi untuk memperoleh keturunan dan evaluasi untuk menghitung nilai fitness dan yang terakhir diseleksi untuk memilih individu yang layak. Diagram alir dalam penyelesaian algoritme genetika dapat dilihat pada Gambar 1.
23
melakukan Persamaan (1) dan Persamaan (2) untuk menghasilkan offspring.
1 = 1+∝ ( 2 − 1)
(1)
2 = 1+∝ ( 1 − 2)
(2) Pada penelitian ini nilai cr adalah 0,6 dan panjang popSize adalah 3, maka jumlah offspring adalah 0,6 * 3 = 1,8 dibulatkan menjadi 2. Parent dipilih secara acak P1 dan P3 untuk melakukan proses crossover yang dapat dilihat pada Tabel 2, kemudian dibangkitkan nilai
α secara acak sesuai dengan panjang kromosom pada Tabel 3.
Berikut contoh dari proses extended intermediate crossover.
Tabel 2. Menentukan Dua Induk P1
42
21
39
23
bekerja dengan memilih dua induk secara acak (Mahmudy, 2015), kemudian membangkitkan nilai
22 P3
9
16
58
53
44
49 Tabel 3. Menentukan Dua Induk α 0,746 0,73 0,213 0,068 0,389 0,137
Nilai gen pada masing-masing offspring didapatkan dengan perhitungan menggunakan
Mulai Individu, persen, libur, iterasiMax Inisialisasi populasi awal
For i=1 ke iterasiMax Crossover Mutasi Perhitungan nilai Fitness Seleksi
Populasi Baru i Selesai Hasil rekomendasi
α sebanyak panjang kromosom, selanjutnya
extended intermediate crossover . Metode ini
Gambar 1. Diagram Alir Algoritme Genetika
28
Representasi kromosom merupakan proses pengkodean untuk mengubah data yang asli menjadi suatu kode tertentu. Dalam algoritme genetika tidak ada aturan khusus untuk melakukan pengodean, namun pengodean yang dilakukan mampu diproses oleh operator genetika serta dapat merepresentasikan penyelesaian masalah (Zukhri, 2014). Representasi kromosom yang digunakan dalam penelitian ini adalah permutasi bilangan integer yang dibangkitkan untuk menyatakan inisialisasi pada jam dan hari latihan.
Representasi kode sebanyak 63 yang terdiri dari 9 kode untuk setiap harinya. Panjang kromosom pada penelitian ini adalah 54 untuk 3 hari dalam 18 minggu.
5.2. Inisialisasi Populasi Awal
Populasi awal dibuat dengan jumlah yang sudah ditentukan atau sebanyak popSize, selanjutnya diinisialisasi secara acak. Populasi terdiri dari sekumpulan individu yang merupakan solusi dari suatu permasalahan. Setiap gen dalam individu mewakili hari dan jam latihan. Contoh inisialisasi dapat dilihat pada Tabel 1.
Tabel 1. Populasi Awal P1
42
21
39
23
23
22 P2
7
Metode crossover yang digunakan adalah
49
62
14
4 P3
9
16
58
53
44
49
5.3. Proses Crossover
5.1. Representasi Kromosom
Persamaan (1) dan Persamaan (2). Hasil dari perhitungan crosover ditampilkan pada Tabel 4.
26 C3
4
Tabel 4. Hasil Crossover C1
Tabel 6. Contoh Evaluasi Fitness Minggu 1 Minggu 2 Hari1 Hari2 Hari3 Hari1 Hari2 Hari3
P1
42
21
39
23
23
22 P2
28
7
49
62
14
4 P3
9
16
58
53
44
49 Pada Tabel 6 terdapat warna merah yang
5.4. Proses Mutasi
berarti terdapat hari yang sama dalam satu minggu dan kuning yang berarti pada individu tersebut kuota pemain yang hadir kurang dari 70%. Dijelaskan terdapat hari yang sama pada P1 minggu pertama, kedua, dan ke-18. Kemudian pada hari kedua minggu pertama kuota pemain di bawah 70%. Selanjutnya pada
P2 minggu pertama hari pertama dan kedua,
minggu kedua hari kedua dan ketiga, dan pada hari pertama sampai hari ketiga di minggu ke-18 kuota pemain di bawah 70%. Kemudian pada P3 minggu pertama hari kedua kuota pemain kurang dari 70%, selanjutnya pada minggu kedua terdapat hari yang sama dalam satu minggu. Setelah melakukan pengecekan evaluasi fitness, nilai penalti yang didapatkan pada P3.
Pada perhitungan nilai penalti sebelumnya didapatkan nilai-nilai yang berasal dari penjumlahan pelanggaran setiap minggunya. Untuk setiap pelanggaran memiliki nilai konstantanya masing-masing sebesar 0,5 dan 2. Dengan Persamaan (3) maka didapatkan nilai fitness P3 sebagai berikut.
4 C2
14
= 0,2857142
Metode mutasi yang digunakan adalah
17
17
43
25
31
34
20
54
51
36
45
Mutasi merupakan proses reproduksi dalam algoritme genetika selain crossover. Proses ini berbeda dengan crossover yang memilih dua induk, pada proses mutasi hanya memilih satu induk saja (Mahmudy, 2015). Proses ini mengubah gen secara acak dari induk yang didapat dari kromosom sebelumnya. Untuk menentukan jumlah offspring, nilai mutation
rate (mr) harus ditentukan terlebih dahulu.
reciprocal exchange mutation. Metode ini
7
bekerja dengan memilih induk secara acak kemudian memilih dua gen secara acak dan menukar nilai gen tersebut.
Pada penelitian ini nilai mr adalah 0,3 dan panjang popSize adalah 3, maka jumlah offspring adalah 0,3 * 3 = 0,9 dibulatkan menjadi 1. Parent dipilih secara acak P2 untuk melakukan proses mutasi. Contoh proses reciprocal exchange
mutation bisa dilihat pada Tabel 5. Warna merah
dan biru dalam Tabel 5 adalah gen yang dipilih untuk melakukan proses mutasi.
Tabel 5. Proses Reciprocal Exchange Mutation P2
28
7
49
62
14
28
62
49
3 = 1 (1 + ((0 ∗ 0,5) + (1 ∗ 0,5) + (1 ∗ 2)))
5.5. Perhitungan Nilai Fitness
5.6. Seleksi
Metode seleksi yang digunakan dalam penelitian ini adalah elitism selection. Metode ini dilakukan dengan menggabungkan semua individu, kemudian diurutkan nilai fitness dari yang terbesar kemudian diambil kromosom yang mempunyai nilai fitness terbesar sebanyak
popSize yang telah ditentukan sebelumnya.
6. PENGUJIAN DAN ANALISIS
6.1. Pengujian dan Analisis Ukuran Populasi
Ukuran populasi yang digunakan dalam pengujian ini adalah 10 sampai 150 dengan kelipatan 10 sebanyak 10 kali percobaan pada masing-masing popSize. Ukuran generasi yang digunakan adalah 50, cr dan mr adalah 0,5. Hasil
1 (1+(( ∗∝1)+( ∗∝2)+( ∗∝3)))
=
Perhitungan bobot untuk setiap individu dapat dilakukan dengan perhitungan nilai fitness. Hasil perhitungan fitness digunakan untuk proses seleksi untuk mencari individu terbaik. Semakin tinggi nilai fitness, maka semakin baik individu tersebut. Rumus fitness yang digunakan dalam penelitian ini diadopsi dari penelitian optimasi penjadwalan perawat (Ilmi, et al., 2015).
(3) Contoh evaluasi fitness dari penyusunan jadwal hasil representasi kromosom dapat ditampilkan pada Tabel 6. pengujian ukuran populasi dapat dilihat pada Gambar 2.
Berdasarkan Gambar 2 dapat diketahui bahwa ketika ukuran populasi yang sedikit akan menghasilkan populasi yang tidak beragam, sehingga ketika ukuran populasi semakin besar akan menghasilkan populasi yang lebih beragam dan memiliki nilai fitness yang lebih optimal. Berdasarkan Gambar 2, nilai fitness yang didapatkan memiliki peningkatan yang signifikan dari ukuran populasi 10 sampai 80, walaupun pada ukuran populasi 40 dan 50 memiliki nilai fitness yang sama. Pada ukuran populasi 90 terjadi penurunan dan meningkat lagi pada ukuran populasi 100. Pada ukuran 110 terjadi penurunan tetapi mengalami peningkatan sampai ukuran populasi 130, kemudian pada ukuran populasi 140 dan 150 terjadi penurunan.
akan dibuang individu yang memiliki nilai
rate dan mutation rate dapat dilihat pada Gambar 5.
ini menggunakan ukuran populasi 100 dan ukuran generasi 90. Seperti pada pengujian ukuran generasi, pengujian kombinasi juga mengambil ukuran populasi dan ukuran generasi yang menghasilkan nilai fitness paling besar. Hasil pengujian terhadap kombinasi crossover
mutation rate dimulai dari 0 sampai 1. Pengujian
sepuluh kali dengan nilai crossover rate dan
rate dan mutation rate dilakukan sebanyak
Pengujian terhadap kombinasi crossover
6.3. Pengujian dan Analisis Kombinasi cr dan mr
Gambar 4 menunjukkan pada generasi ke-100 semua percobaan mengalami konvergen.
fitness terkecil sebesar 10% dari jumlah populasi dan diganti dengan individu-individu baru.
random injection yang mana di setiap iterasi
Gambar 2. Grafik Pengujian Ukuran Populasi
Pengujian konvergensi berbeda dengan pengujian sebelumnya, karena melakukan
Gambar 4. Grafik Pengujian Konvergensi
tersebut terjadi karena nilai fitness yang dihasilkan hampir mendekati optimum global. Dalam pengujian ukuran generasi juga dilakukan pengujian terhadap konvergensi. Hasil pengujian terhadap konvergensi dapat dilihat pada Gambar 4.
fitness yang signifikan atau hampir sama. Hal
140 dan 150, yaitu sebesar 1 dan nilai fitness terkecil didapatkan pada ukuran generasi 10. Pada generasi ke-80 sampai 110 mengalami konvergensi karena tidak terjadi perubahan nilai
fitness tertinggi didapatkan pada ukuran generasi
6.2. Pengujian dan Analisis Ukuran Generasi
Berdasarkan Gambar 3 generasi terjadi kenaikan sampai mencapai nilai fitness terbesar pada generasi 140, hampir setiap generasi terjadi kenaikan yang signifikan, kecuali generasi 130. Sedangkan pada 110 nilai fitness tidak mengalami penurunan atau peningkatan. Nilai
Gambar 3. Grafik Pengujian Ukuran Generasi
Ukuran Generasi yang digunakan dimulai dari 10 dengan kelipatan 10 sampai 150, cr dan mr adalah 0,5. Ukuran populasi 130 dipilih karena ukuran populasi tersebut memiliki nilai fitness yang paling optimal pada pengujian sebelumnya. Hasil pengujian ukuran generasi dapat dilihat pada Gambar 3.
Gambar 5. Grafik Pengujian Kombinasi cr dan mr
Dapat dilihat pada Gambar 5 bahwa nilai
fitness terbesar adalah 1, berada pada kombinasi cr 0,5 dan mr 0,5. Sedangkan nilai fitness
terkecil adalah 0,27619 berada pada kombinasi
cr= 0 dan mr=1. Penentuan nilai cr dan mr dapat
mempengaruhi keseimbangan eksplorasi dan eksploitasi. Eksplorasi yang tinggi dihasilkan ketika nilai mr lebih besar dibandingkan nilai cr. Sebaliknya eksplorasi yang rendah atau eksploitasi yang tinggi terjadi ketika nilai cr lebih besar dibanding nilai (Mahmudy, 2015).
Berdasarkan pengujian ini yang digambarkan pada Gambar 5, kombinasi nilai cr dan mr menghasilkan kemampuan eksploitasi dan eksplorasi yang seimbang, akan tetapi ketika nilai cr bernilai 0 akan menghasilkan nilai fitness lebih kecil daripada ketika nilai mr bernilai 0, hal ini disebabkan karena metode yang dipakai untuk crossover menggunakan extended
terbesar adalah 1 yang terdapat pada ukuran populasi=130, generasi=140, dan kombinasi cr=0,5 dan mr=0,5. Generasi dan populasi memiliki pengaruh yang sama, semakin besar jumlah generasi dan populasi maka akan semakin besar nilai fitness yang dihasilkan, sedangkan kombinasi cr dan mr dapat menghasilkan nilai yang optimal ketika kombinasi cr dan mr memiliki komposisi yang sama.
cr= 0,5 dan mr=0,5, sedangkan untuk yang
2. Solusi yang didapatkan sudah yang paling optimal tanpa ada pelanggaran. Jadwal tersebut didapatkan melalui beberapa pengujian, hasil dari pengujian beragam, rata-rata nilai fitness terkecil adalah 0,157106 yang terdapat pada pada ukuran populasi=130, generasi=10 dan kombinasi
mendapatkan offspring baru yang akan diseleksi menggunakan elitism selection untuk generasi selanjutnya. Setelah itu melakukan pengujian terhadap ukuran populasi, ukuran generasi, dan kombinasi cr dan mr.
DAFTAR PUSTAKA
Algoritme genetika dapat diimplementasikan pada permasalahan penjadwalan latihan reguler pemain brass
Fathia, R. N., 2014. Kompasiana. [Online] Available at: rizanurul/keseimbangan-pendidikan-ak ademis-dan-non-akademis_54f5fc4fa33 31184108b4675 [Diakses 31 Januari 2017].
DORO: Repository Jurnal Mahasiswa PTIIK Universitas Brawijaya, 5(13).
2015. Optimasi Penjadwalan Perawat Menggunakan ALgoritma Genetika.
[Diakses 21 Februari 2017]. Ilmi, R. R., Mahmudy, W. F. & Ratnawati, D. E.,
https://www. Lin kedin.com/pulse/marching-band-sebaga i- pendidikan-berkarakter-sebuah-solusi- hermawan
sebagai Pendidikan Berkarakter: Sebuah Solusi Komprehensif Pendidikan Non- Formal bagi Remaja. [Online] Available at:
Ginting, R., 2009. Penjadwalan Mesin. Pertama penyunt. Yogyakarta: Graha Ilmu. Hermawan, D. M., 2015. Marching Band
Mahasiswa di D.I.Yogyakarta, Yogyakarta: Universitas Atma Jaya Yogyakarta.
marching band. Data jadwal setiap pemain
Afianti, 2012. Pusat Pelatihan Marching Band
intermediate crossover yang bisa mendapatkan
individu yang lebih bervariasi sehingga kemampuan eksplorasi yang lebih besar daripada mutasi yang menggunakan reciprocal
exchange mutation karena menghasilkan
individu baru yang hampir sama dengan induknya.
7. KESIMPULAN
Berdasarkan hasil penelitian terhadap penjadwalan pemain brass marching band dapat diperoleh kesimpulan sebagai berikut: 1.
diambil dari Marching Band Ekalavya Suara Brawijaya, dan libur nasional lewat kalender tahun 2016 dari bulan September sampai Desember. Setelah mendapatkan data tersebut, melakukan representasi kromosom terhadap kode jam dan hari latihan, kemudian melakukan proses
extended intermediate crossover dan reciprocal exchange mutation untuk Mahmudy, W. F., 2015. Dasar-Dasar Algoritma
Evolusi, Malang: PTIIK Universitas Brawijaya.
Mansur, Prahasto, T. & Farikhin, 2014. Particle Swarm Optimization Untuk Sistem Informasi Penjadwalan Resource Di Perguruan Tinggi. Jurnal Sistem Informasi Bisnis, Issue 01, pp. 11-19.
Teoh, C. K., Wibowo, A. & Ngadiman, M. S., 2015. Review of state of the art for metaheuristic technique in Academic Scheduling Problems. Artif Intell Rev, Issue 44, pp. 1-21.
Zukhri, Z., 2014. Algoritma Genetika Metode
Komputasi Evalusioner untuk Menyelesaikan Masalah Optimasi.
Yogyakarta: CV. Andi Offset.