BAB IV Perancangan dan Implementasi Bab ini memuat perancangan dan implementasi yang dilakukan dalam penulisan Tugas Akhir, mencakup deskripsi dan lingkungan implementasi perangkat lunak, rancangan dan implementasi perangkat lunak dan komponen-komponennya.
4.1 Deskripsi Perangkat Lunak Genetic Algorithm for Musical Arrangement (GAMA) adalah perangkat lunak yang mengimplementasikan algoritma genetika untuk membuat aransemen musik khusus untuk piano. GAMA akan mendapat masukan berupa file yang berisi informasi tentang melodi dan akor dari sebuah lagu dalam format MusicXML dan batas nilai yang ingin dicapai kemudian menghasilkan keluaran berupa file yang berisi nadanada hasil aransemen dari lagu masukan dalam format MusicXML. Perangkat lunak terdiri dari dua bagian utama, yaitu bagian program antar muka dan bagian program inti. Bagian program antar muka berisi implementasi antar muka, mencakup menerima masukan dan keluaran. Bagian program inti berisi implementasi dari proses aransemen, mencakup menerima file masukan, membuat aransemen hingga menghasilkan file keluaran.
4.2 Rancangan Lingkungan Implementasi Perangkat lunak terdiri dari program inti dan antar muka. Program inti dibangun dalam bahasa C, dan antar muka dibangun dalam bahasa C#. Dalam melakukan implementasi perangkat lunak, diperlukan spesifikasi sebagai berikut. 1. Spesifikasi hardware a. Prosesor : AMD Athlon(TM) XP 2200+ 1,62 GHz b. Memori : 256 MB c. Harddisk : 40 GB 2. Spesifikasi software a. Sistem operasi : Microsoft Windows XP Professional Version 2002 b. Kompilator program inti : MinGW 32 Version 2.0.0
IV-1
c. Kompilator antar muka : Microsoft Visual Studio .NET 2005 d. Editor kode program : jEdit 4.2 e. Editor partitur musik : Finale 2006
4.3 Rancangan Struktur Data 4.3.1 Rancangan Nada di Satu Oktaf Satu oktaf terdiri dari dua belas nada yang berurutan, yaitu dari nada C hingga nada B. Dalam kasus ini, satu nada dapat direpresentasikan dengan satu bit yang bernilai 1 atau 0. Oleh karena itu, diperlukan dua belas bit untuk merepresentasikan satu oktaf. Tipe integer dipilih untuk merepresentasikan satu oktaf atas dasar alasan-alasan tertentu. Alasan pertama adalah karena integer terdiri dari enam belas bit sehingga dapat memenuhi kebutuhan bit dalam satu oktaf. Tipe ini memiliki jumlah bit yang paling efisien dibandingkan dengan tipe lain, seperti long integer, walaupun terdapat empat bit yang tidak digunakan. Alasan kedua adalah karena bentuk integer yang lebih mudah dimengerti daripada bentuk karakter untuk keperluan selama implementasi karena ada beberapa input atau output karakter yang tidak dapat ditangani secara baik.
Gambar IV.1 Representasi Satu Oktaf Sesuai dengan Gambar IV.1 kedua belas nada direpresentasikan oleh dua belas bit terakhir dari integer. Misalnya untuk menandakan bahwa nada B dimainkan, maka bit untuk nada B bernilai 1. Empat bit pertama dari integer tidak digunakan.
4.3.2 Rancangan Komponen Setiap informasi dalam gen atau disebut dengan komponen, memiliki jangkauan sebesar empat oktaf sesuai dengan batasan yang diberikan. Oleh karena itu, setiap komponen yang menyimpan satu informasi dari gen terdiri dari empat buah integer yang akan merepresentasikan jangkauan empat oktaf. Komponen akan diimplementasikan dalam bentuk kelas untuk menyesuaikan kebutuhan dalam menggunakan vektor. Untuk menggunakan vektor, elemen IV-2
didalamnya tidak dapat berupa tipe bentukan, tetapi dapat berupa kelas. Tabel IV-1 adalah rancangan struktur data untuk komponen Tabel IV-1 Struktur Data Komponen Nama Kelas : Atribut :
Komponen int data [4]
(Atribut berupa array yang terdiri dari empat buah integer. Masing-masing merepresentasikan satu oktaf)
4.3.3 Rancangan Gen Setiap satu gen memiliki empat komponen yang masing-masing menyimpan informasi nada_kanan, nada_kiri, sambungan_kanan dan sambungan_kiri yang dimiliki oleh satu ketukan seperenambelas sesuai dengan analisis yang telah dilakukan. nada_kanan dan nada_kiri menyangkut nada yang dimainkan untuk paranada atas dan bawah, sedangkan sambungan_kanan dan sambungan_kiri menyangkut sambungan dengan ketukan sebelumnya untuk paranada atas dan bawah. Seperti halnya komponen, gen akan diimplementasikan dalam bentuk kelas untuk menyesuaikan kebutuhan dalam menggunakan vektor. Tabel IV-2 adalah rancangan struktur data untuk gen. Tabel IV-2 Struktur Data Gen Nama Kelas : Gen Atribut : komponen data [4]
(Atribut berupa array yang terdiri dari empat buah komponen. data[0] untuk nada_kanan data[1] untuk nada_kiri data[2] untuk sambungan_kanan data[3] untuk sambungan_kiri)
4.3.4 Rancangan Kromosom Sebuah kromosom terdiri dari sejumlah Nketukan gen. Besar nilai Nketukan tidak tetap untuk setiap masukan, yang berarti jumlah gen untuk satu kromosom dalam setiap kasus dapat berbeda-beda. Untuk itu, kromosom akan direpresentasikan sebagai vektor dari sejumlah Nketukan gen. Bentuk vektor dipilih karena vektor merupakan array yang bersifat dinamis dan telah tersedia dalam pustaka (library) C++.
IV-3
Kromosom akan diimplementasikan sebagai tipe bentukan berupa vektor berelemen gen. Tabel IV-3 adalah rancangan struktur data untuk kromosom. Tabel IV-3 Struktur Data Kromosom Nama Tipe Bentukan: Atribut :
Kromosom vector
kromosom (Atribut berupa vektor berelemen tipe gen. Kromosom akan memiliki gen sejumlah Nketukan)
4.3.5 Rancangan Anggota Populasi Populasi merupakan sekumpulan kromosom yang akan diproses dan memiliki nilai fitness. Populasi akan berupa array dengan elemen anggota populasi sejumlah NPopulasi. Tabel IV-4 adalah rancangan struktur data untuk anggota populasi. Tabel IV-4 Struktur Data Anggota Populasi Nama Tipe Bentukan: angPopulasi Atribut : kromosom k int fitness
(Atribut berupa kromosom yang menjadi anggota populasi) (Atribut berupa nilai hasil evaluasi dari kromosom)
4.4 Model Proses Global Model proses perangkat lunak ini digunakan untuk mendeskripsikan proses-proses yang terjadi dalam perangkat lunak. Model proses digambarkan dengan menggunakan diagram alir data (data flow diagram).
4.4.1 Context Diagram Gambar IV.2 menunjukkan DFD level 0 atau context diagram dari GAMA. GAMA menerima masukan berupa file MusicXML berisi melodi dan akor dari suatu lagu dalam format MusicXML dan batas_nilai yang ingin dicapai, dan mengeluarkan keluaran berupa file MusicXML berisi hasil aransemen berdasarkan file masukan.
Gambar IV.2 DFD Level 0 GAMA
IV-4
4.4.2 Overview Diagram
Gambar IV.3 DFD Level 1 GAMA Gambar IV.3 menunjukan DFD level 1 atau overview diagram yang menggambarkan empat proses utama dari GAMA. Proses utama tersebut adalah Proses 1. Scanner dan Proses 2. Preprosesor yang mengakses informasi dari file masukan yang berisi melodi dan akor hingga dapat diproses oleh Proses 3. Algoritma_Genetika. Hasil dari Algoritma_Genetika kemudian diproses lebih lanjut oleh Proses 4. Postprosesor hingga menghasilkan file keluaran yang berisi hasil aransemen. GAMA menerima masukan berupa file berformat MusicXML yang berisi melodi dan akor, dan batas nilai yang ingin dicapai. Masukan melodi dan akor akan diproses oleh Proses 1. Scanner yang akan membaca file masukan dan mencatat token. Token berupa tag atau atribut bertipe integer disimpan dalam tabel AToken. Token berupa nilai dari tag atau atribut bertipe string disimpan dalam tabel AValue. Proses kedua adalah Proses 2. Preprosesor yang akan menganalisis tabel AToken dan tabel AValue untuk mendapatkan informasi tentang melodi dan akor dari lagu. Informasi mengenai nada-nada melodi akan disimpan dalam kromosom_melodi. Informasi mengenai nada-nada harmoni akan disimpan dalam kromosom_harmoni. Proses selanjutnya adalah Proses 3. Algoritma_Genetika yang membuat aransemen untuk satu frase masukan. Algoritma_Genetika mendapat masukan berupa kromosom_melodi dan kromosom_harmoni yang merupakan hasil dari Proses 2. Preprosesor. Masukan tersebut akan menjadi parameter proses Algoritma_Genetika dalam membuat aransemen. Masukan batas_nilai akan menjadi parameter penentu batas
nilai
yang
dianggap
sebagai
solusi
IV-5
optimal.
Hasil
dari
proses
Algoritma_Genetika adalah solusi optimal aransemen untuk frase masukan dalam bentuk kromosom, yaitu kromosom_hasil. Proses 4. Postprosesor akan menganalisis informasi yang terdapat dalam kromosom_hasil dalam format kromosom dan kemudian mengubahnya menjadi hasil aransemen dalam format file MusicXML. Informasi file MusicXML keluaran dan atribut partitur didapat dari tabel AToken dan AValue. Hasil dari Postprosesor disimpan dalam file keluaran sebagai hasil dari perangkat lunak.
4.4.3 DFD Level 2 Untuk Proses 1. Scanner
Gambar IV.4 DFD Level 2 untuk Proses 1. Scanner Proses 1. Scanner berfungsi untuk membaca file masukan, memecahnya menjadi token-token dan menyimpan ID dari token tersebut berdasarkan jenisnya ke dalam tabel. Scanner memiliki dua proses utama, yaitu Proses 1.1 Cari_Token dan Proses 1.2 Get_Token. Proses pertama, yaitu Cari_Token, mendapat masukan berupa file MusicXML. File tersebut dibaca dan kemudian setiap tokennya diambil dan diproses ke dalam Get_Token. Proses 1.2 Get_Token akan mencocokkan token masukan dengan elemen dari tabel Tag dan Atribut. Jika token sesuai dengan salah satu elemen dalam tabel Tag, maka token tersebut adalah sebuah tag. Jika token sesuai dengan salah satu elemen dalam tabel Atribut, maka token tersebut adalah sebuah atribut. Jika token tersebut tidak sesuai dalam keduanya, maka token tersebut dianggap sebagai sebuah nilai (value), baik nilai dari tag maupun atribut. Get_Token akan menyimpan ID dari token dan atribut bertipe integer ke dalam tabel AToken, dan menyimpan nilai dari tag dan atribut bertipe string ke dalam tabel AValue.
IV-6
4.4.4 DFD Level 2 Untuk Proses 2. Preprosesor
Gambar IV.5 DFD Level 2 untuk Proses 2. Preprosesor Proses 2. Preprosesor berfungsi untuk menganalisis token-token yang ada dalam file berdasarkan ID dari token yang tercatat dalam tabel AToken dan isi dari tabel AValue. Proses ini akan mengambil informasi yang diperlukan dan mengubahnya ke dalam format yang sesuai dengan algoritma genetika. Preprosesor memiliki tiga proses utama, yaitu Attributes, Note dan Harmony. Proses 2.1 Attributes akan mengambil informasi mengenai atribut dari bar, berupa nilai ketukan terkecil dan birama. Nilai ketukan terkecil didapat dari tag divisions, yaitu jumlah ketukan terkecil dalam nilai not seperempat di partitur. Jika ketukan terkecil di partitur adalah not seperenambelas, maka divisions akan bernilai 4 karena dalam not seperempat terdapat empat buah not seperenambelas. Birama didapat dari tag beats, yaitu nilai atas dari birama, dan tag beat-type, yaitu nilai bawah dari birama. Birama dan nilai ketukan terkecil akan menentukan nilai Nketukan, yaitu jumlah seluruh ketukan seperenambelas di melodi masukan. Proses selanjutnya akan mengambil informasi mengenai setiap nada atau akor yang terdapat dalam satu bar. Setiap ditemukan tag harmony, akan dipanggil proses Harmony. Setiap ditemukan tag note, akan dipanggil proses Note. Jumlah tag measure dalam partitur merupakan nilai Nbar. Proses 2.2 Note berfungsi mengambil informasi dalam tag note kemudian mengubahnya ke dalam bentuk kromosom. Informasi yang didapat dari tag note mencakup nada, oktaf dan durasi. Nada melodi akan disimpan menjadi bentuk kromosom, yaitu kromosom_melodi sebanyak ketukan seperenambelas berdasarkan durasi. IV-7
Proses 2.3 Harmony berfungsi mengambil informasi dalam tag harmony kemudian mengubahnya ke dalam bentuk kromosom. Informasi yang didapat dari tag harmony mencakup akar dan jenis dari akor. Informasi tersebut akan diproses untuk mendapatkan nada-nada yang harmoni sesuai dengan akar dan jenis dari akor. Nadanada
harmoni
tersebut
akan
disimpan
menjadi
bentuk
kromosom
yaitu
kromosom_harmoni sebanyak ketukan seperenambelas dimana akor tersebut berlaku.
4.4.5 DFD Level 2 Untuk Proses 3. Algoritma_Genetika
Gambar IV.6 DFD Level 2 Proses 3. Algoritma_Genetika Proses 3. Algoritma_Genetika merupakan proses inti dari perangkat lunak GAMA. Dalam proses ini, dijalankan algoritma genetika untuk melakukan aransemen berdasarkan masukan berupa kromosom_melodi dan kromosom_harmoni untuk satu frase. Algoritma_Genetika terdiri dari proses Bangun_Populasi_Awal, Evaluasi, Bangun_Populasi_Baru dan Lihat_Max_Fitness. Proses pertama adalah Proses 3.1 Bangun_Populasi_Awal, yang membangun kromosom-kromosom untuk populasi generasi pertama berdasarkan melodi dan akor masukan. Metode dalam membangun populasi generasi pertama adalah dengan membuat kromosom yang telah mengandung nada melodi dan nada harmoni berdasarkan kromosom_melodi dan kromosom_harmoni dengan metode tertentu sesuai analisis. Setelah populasi generasi pertama dibangun, dilakukan evaluasi terhadap populasi tersebut oleh Proses 3.2 Evaluasi. Proses kedua ini melakukan evaluasi terhadap seluruh kromosom dalam populasi dan mengembalikan nilai fitness dari kromosom tersebut berdasarkan teori melodi, teori harmoni dan teori instrumen. Nilai fitness
IV-8
disimpan dalam atribut fitness dari anggota populasi bertipe angPopulasi. Proses ini akan mengembalikan populasi_setelah_dievaluasi, yaitu populasi masukan dengan nilai fitness-nya masing-masing. Proses 3.3 Bangun_Populasi_Baru berfungsi membangun populasi generasi selanjutnya (populasi_generasi_N+1) berdasarkan populasi generasi ke-N. Untuk menghasilkan kromosom di populasi baru, dalam proses dilakukan operasi genetika, yaitu operasi persilangan sebanyak NPersilangan dan operasi mutasi sebanyak NMutasi, terhadap kromosom di populasi lama. Setelah itu dilakukan metode tertentu untuk menerapkan seleksi natural sesuai analisis. Proses 3.4 Lihat_Max_Fitness akan membandingkan nilai fitness dari angPopulasi terbaik dengan batas_nilai. Jika nilai fitness angPopulasi tersebut lebih besar dari batas_nilai, maka kromosom dari angPopulasi tersebut merupakan solusi optimal dari Algoritma_Genetika. Jika hingga NGenerasi, yaitu jumlah generasi maksimal yang ditangani algoritma genetika, belum ditemukan angPopulasi dengan nilai fitness melebihi batas_nilai, maka angPopulasi terbaik dari generasi terakhir akan menjadi hasil proses aransemen.
4.4.6 DFD Level 2 Untuk Proses 3.2 Bangun_Populasi_Baru Proses 3.2 mendapat masukan berupa populasi generasi ke-N dan menghasilkan populasi generasi ke-N+1. Untuk membuat anggota populasi baru yang diharapkan lebih baik dari sebelumnya, dilakukan operasi genetika berupa persilangan dan mutasi.
Gambar IV.7 DFD Level 3 Proses 3.2 Bangun_Populasi_Baru Sepasang anggota populasi lama akan dipilih secara acak untuk dilakukan Proses 3.3.1 Persilangan sebanyak NPersilangan kali menghasilkan kromosom baru sejumlah
IV-9
dua kali NPersilangan. Hasil dari proses ini akan disimpan dalam Populasi_Hasil. Setelah itu, anggota Populasi_Lama dan Populasi_Hasil akan dipilih secara acak untuk dilakukan Proses 3.3.2 Mutasi sebanyak NMutasi kali. Dalam analisis mengenai operasi genetika, terdapat tujuh jenis operasi mutasi. Operasi mutasi dilakukan terhadap satu anggota populasi dipilih secara acak. Setelah dilakukan operasi genetika, setiap anggota populasi akan dievaluasi kembali dan nilai fungsi fitness diperbaharui. Proses 3.3.3 Get_Baru akan memilih sebanyak NPopulasi anggota populasi terbaik dari Populasi_Lama dan Populasi_Baru. Hasil pilihan proses Get_Baru akan menjadi populasi generasi ke-N+1.
4.4.7 DFD Level 2 Untuk Proses 4. Postprosesor
Gambar IV.8 DFD Level 2 untuk Proses 4. Postprosesor Proses 4. Postprosesor mencatat seluruh informasi yang diperlukan untuk hasil aransemen yang telah dibuat. Informasi yang diperlukan mencakup daftar instrumen, birama, tangga nada, tempo dan bar yang berisi nada-nada sesuai dengan urutan ketukan. Proses 4.1 Tulis_Info akan menuliskan software yang menuliskan aransemen, informasi daftar instrumen dan daftar MIDI yang digunakan. Karena instrumen yang digunakan dalam aransemen hanya piano, maka informasi-informasi tersebut bernilai statis dan tidak memerlukan masukan apapun. Proses 4.2 Tulis_Atribut akan menuliskan atribut-atribut mengenai partitur mencakup birama, tangga nada dan tempo dalam bentuk MusicXML. Atribut partitur untuk hasil IV-10
aransemen sama dengan atribut partitur masukan. Informasi ini dapat diambil dari AToken dan AValue. Proses Tulis_Atribut akan mencocokan ID_Tag dan ID_Atribut dalam AToken di tabel Tag dan tabel Atribut, kemudian mengambil nilai-nilai dari tag di dalam tag attributes yang diperlukan dari AValue. Proses 4.3 Tulis_Kromosom akan menuliskan informasi nada-nada dalam satu bar berdasarkan kromosom_hasil. Informasi berupa nada yang dimainkan, oktaf, paranada, urutan ketukan, sambungan dengan nada sebelumnya dan tanda accidental (sharp atau flat). Penulisan nada dilakukan setiap ketukan seperenambelas sehingga nada-nada akan berada dalam bentuk not seperenambelas. Untuk nada yang bernilai lebih dari seperenambelas, nada tersebut akan dituliskan dengan tie.
4.5 Implementasi Implementasi dari perangkat lunak GAMA masih berupa prototipe. Untuk memudahkan pengujian terhadap parameter-parameter algoritma genetika (NPopulasi, NPersilangan, NMutasi, jumlah maksimal generasi), maka parameter tersebut menjadi masukan dalam prototipe. Setelah dilakukan pengujian, parameter akan bersifat statis dengan nilai yang optimal berdasarkan hasil pengujian. Nilai fitness untuk kategori aransemen (“Sangat Baik”, “Baik”, “Sedang”, dan “Kurang Baik”) juga bersifat statis setelah ditentukan dari pengujian.
4.5.1 Implementasi Program Antar Muka Antar muka dari program GAMA terdiri dari dua form, yaitu form GAMA dan form GUI Progress. Form GAMA menampilkan antar muka yang menangani interaksi dengan pengguna dalam menerima masukan sebagai berikut. 1. Nama File Masukan, yaitu nama file MusicXML yang memuat melodi dan akor masukan. 2. Nama File Keluaran, yaitu nama file MusicXML yang menyimpan hasil aransemen. 3. Batas Nilai, yaitu batas nilai fitness yang ingin dicapai dari solusi optimal. Diberikan rentang nilai aransemen yang baik, sedang dan buruk untuk menjadi pedoman bagi pengguna dalam menentukan batas nilai.
IV-11
4. NPopulasi, yaitu jumlah kromosom yang terdapat dalam satu populasi. Nilai NPopulasi dibatasi dari 20 hingga 1000. 5. NPersilangan dan NMutasi, yaitu presentase jumlah kromosom yang akan dikenai operasi persilangan dan operasi mutasi di satu populasi. Kedua nilai ini dibatasi dari 20% hingga 100%. Jumlah kromosom yang dikenai operasi adalah sebesar presentase NPersilangan dan NMutasi dari NPopulasi. 6. NGenerasi, yaitu jumlah generasi maksimal yang akan diproses.
Gambar IV.9 Form 1. GAMA Evaluasi kromosom ditekankan pada aspek vertikal dan nilai fitness bersifat tidak tak terbatas. Semakin panjang frase masukan maka semakin banyak ketukan seperenambelas sehingga nilai total evaluasi vertikal akan semakin besar. Perlu dilakukan normalisasi batas nilai masukan terhadap jumlah ketukan seperenambelas karena pengguna tidak memiliki informasi mengenai besar batas nilai yang dapat menghasilkan aransemen kategori sangat baik hingga kurang baik untuk setiap proses. Setelah memberi masukan dengan lengkap, pengguna dapat memencet tombol Mulai untuk memulai proses aransemen dan memunculkan form GUI Progress. Form GUI Progress akan menampilkan setiap generasi yang telah dilakukan dan nilai fitness terbaik dari setiap generasi hingga ditemukan anggota populasi dengan nilai fitness melebihi Batas Nilai, atau hingga generasi mencapai NGenerasi.
IV-12
Gambar IV.10 Form 2. GUI Progress Saat program telah menyelesaikan proses aransemen, pengguna dapat memencet tombol Tutup untuk kembali ke form GAMA. Program akan menampilkan pesan berisi laporan tentang proses aransemen yang telah dijalankan. Laporan mencakup Nama File Masukan, Nama File Keluaran, Batas Nilai Target, NPopulasi, NPersilangan, dan NMutasi sesuai dengan masukan pengguna, dan terdapat Batas Nilai Akhir, yaitu nilai fitness dari anggota populasi yang menjadi solusi optimal.
Gambar IV.11 Laporan Proses Aransemen
4.5.2 Implementasi Program Inti 4.5.2.1 File type.h dan type.c File berisi pendefinisian kelas dan tipe bentukan yang akan digunakan dalam proses perangkat lunak. Kelas yang didefinisikan mencakup kelas komponen dan kelas gen, sedangkan tipe bentukan yang didefinisikan mencakup tipe kromosom dan tipe angPopulasi.
4.5.2.2 File music.h dan music.c File berisi fungsi untuk menyimpan data tentang musik dan fungsi-fungsi yang berkaitan dengan musik, seperti memproses akor, nada, oktaf. Tabel IV-5 berisi daftar data yang disimpan dalam file ini. IV-13
Tabel IV-5 Kamus Data di File music.h dan music.c Daftar Data Daftar Akor Daftar Nada
Keterangan Berupa enumerasi yang berisi daftar nama akor dan nada-nada akor untuk akar nada C dalam bentuk integer Berupa enumerasi yang berisi daftar nada dalam bentuk integer
4.5.2.3 File scanner.h dan scanner.c File berisi implementasi dari seluruh Proses 1. Scanner, yaitu melakukan proses pembacaan token dari file masukan. Tabel IV-6 berisi daftar data yang disimpan dalam file ini. Tabel IV-6 Kamus Data di File scanner.h dan scanner.c Daftar Data
Keterangan Berupa array string yang berisi daftar tag yang akan diproses di preprosesor. char * Att[] Berupa array string yang berisi daftar atribut tag yang akan diproses di preprosesor vectorAToken Berupa vektor integer yang berisi daftar token yang terdapat dalam file masukan. Token diproses hingga menjadi bentuk integer berdasarkan jenis token. vectorAValue Berupa vektor string yang berisi daftar nilai yang terdapat dalam file masukan. Nilai mencakup nilai dari tag maupun nilai dari atribut FILE * fp1 Berupa file, yaitu file masukan dalam format MusicXML char * Tags[]
4.5.2.4 File preprosesor.h dan preprosesor.c File berisi implementasi dari seluruh Proses 2. Preprosesor, yaitu melakukan proses pengambilan informasi berdasarkan token-token yang didapat dari file masukan hasil Proses 1. Scanner. Tabel IV-7 berisi daftar data yang disimpan dalam file ini. Tabel IV-7 Kamus Data di File preprosesor.h dan preprosesor.c Daftar Data
Keterangan Berupa variabel extern dari scanner.c yang akan diproses dalam preprosesor vectorAValue Berupa variabel extern dari scanner.c yang akan diproses dalam preprosesor char * Tags[] Variabel extern dari file scanner.c berupa array string yang berisi daftar tag yang akan diproses di preprosesor. char * Att[] Variabel extern dari file scanner.c berupa array string yang berisi daftar atribut tag yang akan diproses di vectorAToken
IV-14
kromosom melodi kromosom harmoni int Nbar int satuan_
preprosesor Berupa kromosom yang berisi nada-nada melodi yang didapat dari file masukan Berupa kromosom yang berisi nada-nada harmoni yang didapat dari file masukan Berupa integer yang berisi jumlah bar yang terdapat dalam file masukan Berupa integer yang berisi jumlah ketukan seperenambelas dalam satu bar
4.5.2.5 File genetika.h dan genetika.c File berisi implementasi dari Proses 3.1 Bangun_Populasi_Awal dan Proses 3.4 Lihat_Max_Fitness, yaitu kerangka dasar algoritma genetika hingga menghasilkan aransemen berdasarkan kromosom melodi dan kromosom harmoni yang didapat dari Proses 2. Preprosesor. Tabel IV-8 berisi daftar data yang disimpan dalam file ini. Tabel IV-8 Kamus Data di File genetika.h dan genetika.c Daftar Data
Keterangan Berupa variabel extern dari preprosesor.c yang akan menjadi dasar evaluasi kromosom kromosom harmoni Berupa variabel extern dari preprosesor.c yang akan menjadi dasar evaluasi kromosom angPopulasi Populasi Berupa array angPopulasi sejumlah NPopulasi, yaitu populasi [NPopulasi] untuk generasi ke-N kromosom melodi
4.5.2.6 File evaluasi.h dan evaluasi.c File berisi implementasi dari Proses 3.2 Evaluasi, yaitu melakukan proses evaluasi terhadap anggota populasi bertipe angPopulasi. Evaluasi dilakukan terhadap atribut kromosom dari angPopulasi dan memasukkan nilai evaluasi ke atribut fitness.
4.5.2.7 File buildPopulation.h dan buildPopulation.c File berisi implementasi dari Proses 3.3 Build_Population, yaitu melakukan proses pembangunan populasi baru berdasarkan populasi lama dan operasi genetika. Tabel IV-9 berisi daftar data yang disimpan dalam file ini.
IV-15
Tabel IV-9 Kamus Data di File buildPopulation.h dan buildPopulation.c Daftar Data
Keterangan Berupa integer yang berisi jumlah kromosom dalam satu generasi populasi int NPersilangan Berupa integer yang berisi jumlah proses persilangan terhadap satu generasi populasi (crossover rate) int NMutasi Berupa integer yang berisi jumlah proses mutasi terhadap satu generasi populasi (mutation rate) angPopulasi Populasi Berupa array angPopulasi sejumlah NPopulasi, yaitu populasi [NPopulasi] untuk generasi ke-N angPopulasi Hasil Berupa array angPopulasi sejumlah NPersilangan*2, yaitu [NPersilangan*2] populasi hasil operasi persilangan terhadap populasi generasi ke-N sebanyak NPersilangan kali. angPopulasi Populasi Berupa array angPopulasi sejumlah NPopulasi, yaitu populasi _Baru [NPopulasi] untuk generasi ke-N+1 kromosom melodi Berupa variabel extern dari genetika.c yang digunakan dalam operasi genetika kromosom harmoni Berupa variabel extern dari genetika.c yang digunakan dalam operasi genetika int NPopulasi
4.5.2.8 File postprosesor.h dan postprosesor.c File berisi implementasi dari Proses 4. Postprosesor, yaitu melakukan proses postprosesor hingga menghasilkan file MusicXML yang berisi hasil aransemen berdasarkan kromosom hasil dari Proses 3. Algoritma_Genetika. Tabel IV-10 berisi daftar data yang disimpan dalam file ini. Tabel IV-10 Kamus Data di File postprosesor.h dan postprosesor.c Daftar Data kromosom hasil FILE * fp2
Keterangan Berupa kromosom terbaik dari proses algoritma genetika Berupa file, yaitu file keluaran dalam format MusicXML
IV-16