Analisis dan Implementasi Krill Herd Algorithm (KHA) dalam Masalah Pemotongan Bahan (Cutting Stock Problem) Non-guillotine Dua Dimensi Jeffrey1, Agung Toto Wibowo2, Mahmud Dwi Sulistiyo3 1, 2, 3
Fakultas Informatika Institut Teknologi Telkom Jalan Telekomunikasi 1, Dayeuh Kolot Bandung 40257 Indonesia 1
[email protected] ,
[email protected] ,
[email protected] Abstrak Cutting Stock Problem(CSP) merupakan masalah kombinatorial yang tergolong sulit untuk di pecahkan. Dalam satu kasus terdapat beberapa solusi yang mungkin dengan nilai fitness yang sama. Tujuannya adalah untuk mengoptimalkan pemakaian stock dalam memenuhi semua permintaan order. Krill Herd Algorithm (KHA) adalah algoritma metaheuristik yang tergolong dalam Swarm Intellegent yang dibuat untuk menyelesaikan permasalahan optimasi kombinatorial yang sulit dan diharapkan dapat menghasilkan solusi yang optimal. Pada KHA terdapat 3 (tiga) gerakan utama krill (motion calculation) dalam pencarian solusi, yaitu motion induced, foraging motion, dan physical diffusion. Dalam penelitian ini KHA diimplementasikan dalam memecahkan masalah CSP. Dengan menerapkan beberapa parameter dalam pencarian, KHA mampu menyelesaikan masalah CSP, namun bukan merupakan solusi optimal. Kata kunci: Cutting Stock
Problem, Krill Herd ALgorithm, order, stock
Abstract Cutting Stock Problem (CSP) is a hard-combinatorial problem. In one case there are some solutions with the same fitness value. The goal is to optimize the use of stock to complete all the request order. Krill Herd Algorithm (KHA) is metaheuristics algorithms belonging to the Swarm Intellegent made to resolve difficult combinatorial optimization problems and is expected to produce an optimal solution. In KHA there are 3 (three) major motion krill (motion calculation) in the search for solutions, the induced motion, foraging motion, and physical diffusion. In this research KHA is implemented in solving the CSP. With the setting of some parameter in process, KHA can found the solution of CSP, even not the optimum solution.
Keywords: Cutting 1.
Stock Problem, Krill Herd Algorithm, order, stock
Pendahuluan Cutting Stock Problem (CSP) merupakan permasalahan optimasi yang sering ditemukan pada industri manufaktur. Hingga saat ini pun permasalahan CSP masih sering terjadi pada industri yang memiliki bahan baku seperti kertas, baja, kayu, plastik, tekstil dan sebagainya[13]. Industri yang memiliki bahan baku seperti ini biasanya harus bisa menemukan pola pemotongan bahan baku dengan sisa bahan (trim loss) yang paling sedikit agar perusahaan dapat mengurangi biaya produksi dan menjadi lebih efisien dalam penggunaan bahan bakunya untuk menghindari kerugian. Cutting Stock Problem (CSP) tergolong masalah otimasi kombinatorial yang sulit untuk di pecahkan dan membutuhkan waktu yang lama dalam pencariannya. Ada 2 (dua) jenis varian dari CSP, yaitu satu dimensi dan dua dimensi. Kasus CSP pada satu dimensi ditemukan pada pemotongan bahan yang memiliki satu atribut parameter seperti pada
batangan kayu, besi, gulungan kertas. Pada kasus CSP dua dimensi, kasus CSP ditemukan pada material bahan baku yang berbentuk bidang dua dimensi seperti lembaran kertas, kain, lempengan metal, dan lainnya. Pada tugas akhir ini difokuskan pada non-guillotine dua dimensi karena merupakan varian CSP yang sering dijumpai. CSP Sampai saat ini, pada CSP belum ditemukan suatu metode yang pasti dan dapat menjamin keberhasilan nilai optimalnya. Oleh karena itu, dibutuhkan suatu metode untuk menyelesaikan dengan menemukan pola pemotongan yang paling optimal. Sebelumnya banyak penelitian yang dilakukan untuk menyelesaikan CSP dengan menggunakan metodemetode pendekatan seperti Cuccko Search, Water Drop, Artificial Bee Colony dan Ant Colony Optimization[10]. Berdasarkan solusi yang dihasilkan metode-metode tersebut didapatkan hasil yang yang baik tetapi belum optimal. Tugas akhir ini 1
menggunakan algoritma optimasi yang ditemukan pertengahan tahun 2012 yaitu Krill Herd Algorithm (KHA). Krill Herd Algorithm (KHA) adalah algoritma metaheuristik yang tergolong dalam Swarm Intelligence (kolonial). Kelebihan KHA dari metode optimasi lainnya yaitu terletak pada proses utama pada sekumpulan krill yang dibangkitkan untuk melakukan pencarian posisi dengan menggunakan 3 (tiga) gerakan, motion induced, foraging motion, dan physical diffusion. Gerakan motion induced dan foraging digunakan untuk mendapatkan hasil solusi yang optimal (global dan lokal) menuju fitness terbaik dari setiap iterasi, karena pada motion induced terjadi proses dimana krill yang memilik fitness paling baik memiliki pengaruh yang besar untuk menarik krill-krill lain untuk mengikutinya, pada foraging motion posisi makanan memicu pergerakan menuju otimum global, sedangkan random diffusion digunakan untuk memperbesar pencarian pada ruang solusi karena selalu menghasilkan posisi yang random pada tiap iterasi [8]. Untuk melengkapi algoritma KHA dilakukan juga strategi untuk mendapatkan solusi yang optimal menggunakan algoritma genetika yaitu crossover. Berbeda dengan crossover yang sudah ada sebelumnya pada KHA crossover disini dikontrol oleh crossover probability. Fungsi crossover pada KHA yaitu untuk meningkatkan fitness kearah yang lebih otimal (menjauhi solusi buruk). Oleh karena itu pada tugas akhir ini akan diimplementasikan KHA dengna crossover untuk menyelesaikan CSP non-guillotine dua dimensi.
(berbentuk persegi panjang) i yang memiliki panjang li dan lebar wi dengan sebuah stock S dengan bentuk segi empat pula, dengan panjang L dan lebar W[3]. Dalam penyelesaian CSP difokuskan bagaimana mendapatkan pola pemotongan yang optimal untuk memenuhi order-order yang dipesan dengan pemakaian stock seminimal mungkin. Masalah pemotongan bahan, memotong objek besar (stock material) menjadi objek kecil (order list), dapat diklarifikasikan menjadi empat kategori[13]: CSP berdasarkan dimensionalitas: a. Satu dimensi b. Dua dimensi c. Tiga dimensi 2. CSP berdasarkan penugasannya: a. Menggunakan semua objek besar dan beberapa objek kecil (B) b. Menggunakan beberapa objek besar dan semua objek kecil (V). 3. a. b. c.
CSP berdasarkan jenis objek yang besar Hanya satu objek besar (O), Banyak objek besar yang sama (I), Hanya objek besar yang berbeda (D).
2. Dasar Teori 2.1 Cutting Stock Problem (CSP) Cutting Stock Problem (CSP) adalah permasalahan optimasi kombinatorial atau lebih spesifiknya disebut permasalahan integer linear programming[12]. Cutting stock problem (CSP) digolongkan sebagai kategori NP-Hard Problem yang arti bahwa usaha komputasi yang digunakan sulit dan waktu yang dibutuhkannya lama sehingga diperlukan suatu metode baru agar waktu komputasi lebih cepat dalam menemukan solusi yang optimal. Solusi optimal artinya adalah solusi yang terbaik yang dihasilkan dalam jangka waktu tertentu. Dalam tugas akhir ini akan difokuskan pemotongan bahan dua dimensi non-guillotine seperti pemotongan pada bahan baku plat kayu dan kertas. Masalah CSP yang akan dibahas dapat direpresentasikan secara sederhana seperti berikut, yaitu terdapat beberapa order
2
4. a. b. c. d.
CSP berdasarkan jenis objek yang kecil Sedikit objek kecil dengan ukuran yang berbeda (F), Banyak objek kecil dengan banyak ukuran (M), Banyak objek kecil dengan relative sedikit ukuran (R), Banyak objek kecil yang sama (C). Gambar 2. 1 Pola Guillotineable
Untuk masalah CSP untuk bentuk regular rectangular, ada dua pola pemotongan, yaitu: 1. Guillotine Pattern Guillotine Pattern merupakan pola pemotongan yang dimulai dari satu sisi segi empat yang kemudian dilanjutkan pada sisi lainnya. Pemotongan pertama dengan tipe Guillotine Pattern adalah dengan memotong bahan baku dengan panjang atau lebar yang sama. Pemotongan tersebut menghasilkan dua atau lebih pieces yang mempunyai panjang atau lebar yang sama, bukan kedua-duanya[4]. 2. Non- Guillotine Disebut Non-Guillotine karena tidak memungkinan diperolehnya pola pemotongan, yang dapat βmemotongβ stock dari satu sisi ke sisi yang lain. Dalam tugas akhir ini, pola pemotongan di fokuskan pada Non-guillotine. Hal ini dipilih karena pada umumnya CSP berfokus pada meminumumkan sisa pemotongan yang stock, yang berarti pengoptimalan pemakaian stock. Sedangkan masalah guillotine maupun non-guillotine adalah masalah kemudahan cara pemotongannya. Selain itu pada perakteknya didunia nyata pemotongan guillotine sangat jarang dijumpai, seperti pada industri garmen, spare-part, dan lainnya[8]. Dibawah ini adalah gambar 2-1, terlihat perbedaan pola pemotongan Guillotine pattern dan Non-guillotine pattern:
Gambar 2. 2 Pola Non-Guill
2.2 Krill Herd Algorithm (KHA) Krill Herd Algorithm (KHA) adalah sebuah algoritma optimasi meta-heuristik yang tergolong Swarm Intelligence. KHA bertujuan untuk menyelesaikan masalah optimasi yang kompleks[6]. Algoritma ini perkenalkan oleh Amir Hossein Gandomi dan Amir Hossein Alavi pada pertengahan tahun 2012. Ide dasar dari algoritma ini adalah terinspirasi dari perilaku sekumpulan/sekawanan udang artik (krill) yang sedang bergerak untuk mencari keberadaan makanan disekitarnya kemudian diserang oleh pemangsa, kemudian pemangsa mengurangi kepadatan dari kawanan krill tersebut. Tujuan dari setiap individu krill adalah menambah kepadatan dari kumpulan krill dan berhasil mendapatkan makanan[6]. Proses untuk mencapai tujuan tersebut dipengaruhi oleh tiga gerakan utama dari krill, yaitu: 1. Motion Induced (gerakan yang diinduksi atau dipengaruhi oleh kehadiran individu krill lain disekitarnya), 2. Foraging activity (gerakan krill mencari makan), 3. Physical diffusion (gerakan acak krill). Ketiga gerakan diatas dapat disimbolkan dengan rumus:
3
ππ π ππ‘
= ππ + πΉπ +
π·π 1) Dimana, Ni = Motion induced Fi = Foraging motion Di = Physical diffusion
πΌππππππ
ππ
=
πΎ ππ π ππ
(2 β
π =1
β 4) π ππ = ππ βππ ππ βππ + π
5) Salah satu bagian menarik dari algoritma ini adalah bahwa KHA ini mensimulasikan perilaku krill menggunakan riset studi dunia nyata untuk mendapatkan koefisien. Karena fakta-fakta yang didasarkan dari hasil riset bukan hanya terinspirasi dari alam, hal ini menjadi keuntungan tersendiri dibandingkan algoritma-algoritma lainnya. Tahapan validasi menunjukkan bahwa metode KHA memiliki hasil yang sangat baik untuk diaplikasikan pada pengoptimasian. 2.3 Motion Induced Motion Induced merupakan gerakan pertama dari ketiga gerakan yang mempengaruhi pencarian solusi dari KHA .Gerakan ini dipengaruhi oleh gerakan tetangga-tetangga disekitar krill. Individu krill mencoba untuk mempertahankan serta meningkatkan kepadatan kawanannya. Gerakan ini dipengaruhi sifat attractive dan repulsive (Ξ±) dari setiap individu krill. Sifat tersebut dipengaruhi oleh kepadatan (untuk mencari tetangga mana saja yang berpengaruh) serta jarak krill tetangga yang paling dekat dengan makanan (dilihat dari fitness yang dihasilkan). Gerakan ini memiliki rumus:
πππππ€ = π πππ₯ πΌπ + ππ πππππ 2) dimana, πΌπ = πΌππππππ π‘πππππ‘ πΌπ
+ β 3) dimana,
πΎππ πΎπβπΎπ πΎ π€πππ π‘ β πΎπππ π‘ β 6) =
dan π‘πππππ‘
πΌπ = πππ π‘ πΆ πΎ π,πππ π‘ π π,πππ π‘ 7)
(2
πΆ πππ π‘ = 2 ππππ 0,1 +
πΌ
(2
πΌπππ₯ β 8)
Pada iterasi pertama πππππ di set nol, dikarenakan pencarian pertama baru akan dimulai belum memiliki nilai. Pengaruh paling besar adalah
πΌπ ,
dimana πΌπ merupakan kombinasi dari efek tetangga yang disekitar krill yang memiliki efek attractive/repulsive (efek tersebut dipengaruhi dari fitness yang dimiliki setiap individu krill) dan efek dari krill yang memiliki fitness terbaik. (2 β Untuk bagian pencarian tetangga (sensing neighbor) digunakan rumus:
ππ ,π 1 = 5π (2
π
ππ βππ π =1
β 9) Dibawah ini adalah gambar 2-2 bagaimana pengaruh sensing neighbor terhadap tetangga-tetangga krill:
4
sebelumnya tentang lokasi makanan. Gerakan pencarian makanan setiap individu krill dapat di rumuskan dengan rumus:
,
Hampir sama dengan motion induced pada iterasi Gambar II-2: Sensing neighbor Sensing neighbor digunakan untuk mencari tetangga untuk setiap krill ke-i, kemudian setelah di dapatkan tetangganya maka akan diketahui
ππ , ππ , πΎπ , dan
πΎπ -nya.
pertama di set nol, karena pada iterasi pertama belum memiliki pengalaman terhadap lokasi makanan. Tetapi setelah dilakukan iterasi pertama, maka nilai
pada iterasi kedua akan didapatkan
dari nilai
pada iterasi pertama dan begitu
seterusnya
(
ο
).
disimpulkan bahwa bahwa Keterangan:
πππππ€ =
kecepatan induksi
maksimum[0.01]
Οπ
= berat inersia gerakinducedrange[0,1]
Pada
gerakan
ini
memiliki pengaruh
yang besar pada gerakan ini, dapat dilihat bahwa merupakan kombinasi dari sifat attractive dari makanan dan efek dari krill yang memiliki best fitness pada saat itu. Pada gerakan ini lokasi makanan juga memiliki efek terhadap krill, yang dirumuskan sebagai berikut:
πππππ
= gerakan induksi sebelumnya (iterasi awal di set nol)
πΌππππππ = π‘πππππ‘ πΌπ =
efek lokal dari tetangga efek arah dari krillyang terbaik
saati itu
ππ ππ πΎπ πΎπ I Imax
=
posisi krillke-i
=
posisi tetangga krillke-j
=
fitnesskrill ke-i
=
fitness tetangga krill ke-j
= = =
bilangan positif terkecil iterasi iterasi maksimal
=
fitness terbaik dari semua krill saat
=
fitness terburuk dari semua krill
itu
Sedangkan rumus dari sifat attractive dari makanan dapat dirumuskan sebagai berikut:
Pada foraging motion efek dari individu krill yang memiliki fitness terbaik dapat dirumuskan sebagai berikut:
saat itu. 2.4 Foraging Motion Foraging motion atau gerakan mencari makan merupakan gerakan dipengaruhi oleh dua parameter utama, yang pertama adalah lokasi dari makanan itu sendiri dan yang kedua adalah pengalaman
Keterangan: =
kecepatan pencarian makanan
[0.02] 5
=
berat inersia gerak
foragingrange[0,1] = gerakan foraging sebelumnya (iterasi awal di set nol) =
gerakan attractive makanan
=
efek krill yang memiliki fitness
=
posisi krill ke-i
=
posisi tetangga krillke-j
=
fitnesskrill ke-i
=
fitness tetangga krill ke-j
=
lokasi makanan (posisi)
=
fitness dari lokasi makanan
= =
iterasi iterasi maksimal
terbaik
I Imax
2.5 Physical Diffusion Physical diffusion disebut juga sebagai gerakan krill yang acak (random process), yang artinya gerakan ini dipengaruhi oleh kecepatan difusi maksimum dan vektor arah yang acak. Gerakan ini diformulasikan dengan rumus:
Keterangan: = kecepatan difusi maksimum range[0.002,0.010] I Imax
= = =
vektor acak random[-1,1] iterasi iterasi maksimal
2.6 Genetic operator (cross over)
Pada Krill Herd Algorithm dilakukan improvisasi terhadap performansinya, yaitu dengan menambahkan genetic reproduction algorithm yaitu crossover, untuk KHA sendiri pada referensi papernya digunakan juga teknik mutasi. Berdasarkan validasi hasil yang dikeluarkan paper terlihat bahwa kombinasi KHA dengan crossover menghasilkan solusi yang lebih baik dibandingkan KHA dengan mutasi atau KHA dengan mutasi dan crossover. Probabilitas crossover (Cr) merupakan parameter pengontrol algoritma genetik crossover pada KHA.
Pada tabel II-1 dibawah ini adalah bukti kuat berbentuk tabel validasi digunakannya crossover pada KHA, dibandingkan dengan algoritmaalgoritma optimasi lainnya.
3.
Analisis dan Pengujian Sistem Skenario Pengujian Dalam tugas akhir ini ada beberapa parameter dan kombinasi proses Krill Herd Algorithm yang akan menjadi fokus analisis, yaitu: jumlah krill (N), jumlah maksimum iterasi (cycles), dan sensing distances (upper bound dan lower bound). Ketiga parameter tersebut akan diteliti pengaruhnya terhadap nilai optimasi yang dihasilkan sistem, selain itu akan dikombinasikan juga untuk mendapatkan batasan nilai ideal (bawah, tengah dan atas) agar ditemukan berapa saja nilai dari parameter yang berpengaruh terhadap solusi. Adapun penjelasan tentang ketiga parameter diatas, berikut penjelasannya: 1. Jumlah maksimum iterasi (Cycles) Cycles merupakan nilai dari maksimum iterasi yang dinyatakan dari banyaknya pencarian yang dilakukan pada sistem untuk mencari solusi. Pada KHA iterasi mempengaruhi nilai solusi pada iterasi selanjutnya, artinya semakin banyak pencarian maka kemungkinan akan mendapatkan solusi ke-arah yang optimal. 2. Jumlah krill yang dibangkitkan (Jumlah Krill) Pada KHA, kumpulan krill direpresentasikan sebagai agenagen yang akan mencari solusi. Karena pada setiap individu krill akan menghasilkan sebuah solusi, sehingga jumlah krill yang
6
dibangkitkan akan merepresentasikan banyaknya solusi yang dihasilkan pada setiap iterasi. 3. Batas atas dan bawah pada motion induced (sensing distance). Sensing distance pada KHA berpengaruh pada proses motion induced pada motion calculation. Diketahui bahwa sensing akan membawa tetangga-tetangga disekitar krill yang memiliki fitness tertentu ke arah yang lebih baik,jadi semakin dekat jarak sensing maka semakin banyak keberadaan krill menuju ke arah fitness yang terbaik.
97.000 96.000 95.000 jacob 25
94.000
jacob 50 93.000
risna
92.000
Setting Parameter Selama proses pengujian dilakukan observasi terhadap kombinasi parameter berikut : ο· Cycles : 10, 50, 100 ο· Krill : 10, 50, 100 ο· Sensing Distance : 0.01, 0.3, 0.7
91.000 jumlah krill=10
jumlah krill=50 jumlah krill=100
Gambar IV-2: Grafik rata-rata nilai optimasi berdasarkan jumlah krill 98.000 97.000
Terdapat 27 kombinasi dari parameter diatas, dengan 50 dan 200 iterasi. Setiap kombinasi diobservasi sebanyak 3 kali. Selama proses pencarian berlangsung dihitung beberapa nilai pengujian antara lain rata-rata fitnes, fitnes terbaik dan ratarata iterasi. Deskripsi nilai-nilai tersebut adalah sebagai berikut : ο· Rata-rata fitnes adala rata-rata dari sekumpulan nilai fitnes. ο· Fitnes terbaik adalah nilai fitnes terbaik yang pernah dicapai selama proses pencarian ο· Rata-rata iterasi adalah rata-rata iterasi dimana solusi paling optimal ditemukan. Dari hasil observasi, didapatkan data empirik sebagai berikut:
96.000 95.000 jacob 25
94.000
jacob 50
93.000
risna
92.000 91.000 90.000 cycles=10
cycles=50
cycles=100
Gambar IV-3: Grafik rata-rata nilai optimasi berdasarkan cycles
98.000 97.000
96.000 95.000
Jacob 25
94.000
Jacob 50
93.000
Risna
Gambar IV-4: Grafik perbandingan rata-rata nilai optimasi dengan crossover dan tidak
92.000 91.000 Sensing =0.05
Sensing =0.1
Sensing =0.2
Gambar IV-1: Grafik rata-rata nilai optimasi berdasarkan sensing distance
7
3. Kesimpulan Kesimpulan dan Saran 3.1 Kesimpulan Kesimpulan yang dapat diambil dari hasil implementasi dan uji coba yang dilakukan pada Tugas Akhir ini adalah: 1. KHA dapat diimplementasikan pada CSP dua dimensi non-guillotine dan menyelesaikannya dengan rata-rata nilai optimasi diatas 90%. 2. Pengaturan parameter dengan cycles lebih besar dari 50, jumlah krill lebih besar 50 dan sensing diatas 0.1 merupakan kombinasi terbaik pada sekenario ini berdasarkan rata-rata nilai optimasi. 3. Crossover membuktikan performanya dalam menghasilkan rata-rata nilai optimasi yang lebih baik dibandingkan hanya dengan motion calculation saja. 4. Semakin besar nilai parameter sensing, cycles, dan jumlah krill rata-rata nilai optimasi semakin besar. 3.2 Saran Saran-saran untuk pengembangan selanjutnya antara lain : 1.
Mencoba memadukan KHA dengan algoritma optimasi lokal search seperti Tabu Search.
2.
Mencoba mengimplementasikan order dengan bentuk lain yang lebih beragam.
3.
Mencoba menganalisis hasil dari prosesproses pada motion calculation.
4.
Mencoba memodifikasi rumus crossover agar hasil optimasinya lebih baik.
Daftar Pustaka: [1] Ahmed Mellouli, Abdel Aziz Danmak, βAn Algorithm for the Two-Dimensional CuttingStock Problem Based on a Pattern Generation Procedureβ, Univeristy of Sfax, Tunisia. [2] Alev Soke, Zafer Bingul. (2004). Applications of Discrete PSO Algorithm to TwoDimensional Non-Guillotine Rectangular Packing Problems. Kocaeli University, Kocaeli, Turkey.
[3] Alvarez, Valdes R, ParrenΛo, F, and M. Tamarit, 2006, βA tabu search algorithm for a two-dimensional non-guillotine cutting problemβ, Valencia, Spain. [4] Denny Nurkertamanda, Singgih Saptadi, Adhika Permanasari, Optimasi Cutting Stock Pada Industri Pemotongan Kertas Dengan Menggunakan Metode Integer Linear Programming, Teknik Industri Universitas Dipenogoro, Indonesia. [5] Fitrian, Wahyu. 2011Pencarian Solusi Optimal Cutting Stock Problem dengan Menggunakan Firefly Algorithm. Fakultas Informatika IT Telkom, Bandung, Indonesia. . [6] Gandomi AH., Alavi AH. βKrill herd: A new bio-inspired optimization algorithmβ, Commun Nonlinear Sci Numer Simulat 17 (2012), 4831-4845. [7] Hopper, Eva. (2000). Two-dimensional Packing utilising Evolutionary Algorithms and other Meta-Heuristic Methods. University of Wales. [8] Juliansyah, Budi. 2012. Analisis dan Implementasi Ant Colony Optimization (ACO) dalam Masalah Pemotongan Bahan (Cutting Stock Problem) Non-guillotine Dua Dimensi. Fakultas Informatika Institut Teknologi Telkom. Bandung. [9] Prawitamurti, Risna. 2010. Pencarian Solusi Optimal Pemotongan Bahan (Cutting Material) dengan Menggunakan Adaptive Genetic Algorithm. Fakultas Informatika IT Telkom, Bandung, Indonesia. [10] Robert W. Haessler, Paul E Sweeney, βCutting stock problems and solution proceduresβ, School of Businnes Administration, The Univeristy of Michigan,USA. [11] Suyanto, 2008, βEvolutionary Computation: Komputasi Berbasis βEvolusiβ dan βGenetikaββ, Penerbit Informatika, Bandung.
8