• Tidak ada hasil yang ditemukan

BAB IV Perancangan dan Implementasi

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB IV Perancangan dan Implementasi"

Copied!
16
0
0

Teks penuh

(1)

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 nada-nada 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

(2)

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

(3)

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 : Komponen

Atribut : 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

(4)

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: Kromosom

Atribut : vector<gen>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 (Atribut berupa kromosom yang menjadi anggota populasi)

int fitness (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.

(5)

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 optimal. Hasil dari proses

(6)

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.

(7)

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.

(8)

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. Nada-nada 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

(9)

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

(10)

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

(11)

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.

(12)

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.

(13)

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.

(14)

Tabel IV-5 Kamus Data di File music.h dan music.c

Daftar Data Keterangan

Daftar Akor Berupa enumerasi yang berisi daftar nama akor dan nada-nada akor untuk akar nada C dalam bentuk integer

Daftar Nada 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

char * Tags[] 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

vector<int>AToken Berupa vektor integer yang berisi daftar token yang terdapat

dalam file masukan. Token diproses hingga menjadi bentuk integer berdasarkan jenis token.

vector<char*>AValue 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

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

vector<int>AToken Berupa variabel extern dari scanner.c yang akan diproses

dalam preprosesor

vector<char*>AValue 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

(15)

preprosesor

kromosom melodi Berupa kromosom yang berisi nada-nada melodi yang

didapat dari file masukan

kromosom harmoni Berupa kromosom yang berisi nada-nada harmoni yang

didapat dari file masukan

int Nbar Berupa integer yang berisi jumlah bar yang terdapat dalam

file masukan

int satuan_ 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

kromosom melodi 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

[NPopulasi] Berupa array angPopulasi sejumlah Nuntuk generasi ke-N Populasi, yaitu populasi

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.

(16)

Tabel IV-9 Kamus Data di File buildPopulation.h dan buildPopulation.c

Daftar Data Keterangan

int NPopulasi 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

[NPopulasi] Berupa array angPopulasi sejumlah Nuntuk generasi ke-N Populasi, yaitu populasi angPopulasi Hasil

[NPersilangan*2] Berupa array angPopulasi sejumlah Npopulasi hasil operasi persilangan terhadap populasi generasi Persilangan*2, yaitu

ke-N sebanyak NPersilangan kali.

angPopulasi Populasi

_Baru [NPopulasi] Berupa array angPopulasi sejumlah Nuntuk generasi ke-N+1 Populasi, yaitu populasi

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

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 Keterangan

kromosom hasil Berupa kromosom terbaik dari proses algoritma genetika

Referensi

Dokumen terkait

Sagala (2006) mengatakan bahwa metode kerja kelompok adalah suatu pembelajaran dimana siswa dalam kelas dibagi dalam beberapa kelompok dimana setiap kelompok dipandang

Ba­ ngunan PUSKAT/STF Pradnya Wtdya, seperti yang ditandai oleh &#34;prasasti pendek&#34; di sana, ber­ sama-sama dengan karya arsitektur lain dari Ed.Cuypers di

Penelitian ini menyarankan agar keluarga lebih memperhatikan keadaan dan kesehatan manula dan juga memperhatikan pemenuhan asupan gizi dari bahan makanan yang di konsumsi oleh

Juka nekaska coca nukeyainti, ju nukaka irunui ii pujaji ju nunkanam junaka tarimiat aints mukunin ainiawai ushu, kitiak, yawermau emenkaktai tusar, aintsank

Hasil yang diperoleh meliputi hasil simulasi pengujian photovoltaic menggunakan MPPT, serta perbandingan antara hasil simulasi penerapan metode P&amp;O konvensional

Hasil penelitian menunjukkan bahwa Tingkat Kesehatan Bank Umum Syariah dan Unit Usaha Syariah dengan menggunakan metode CAMELS dan RGEC ini menunjukkan predikat

Tujuan penelitian ini untuk menentukan Kategori Desain Seismik, dan membandingkan besarnya biaya pekerjaan struktur kolom dan balok pada bangunan tahan gempa di Wilayah DKI

(2007) melakukan penelitian tentang bagaimana karakteristik tugas seperti kompleksitas tugas mungkin memoderasi hubungan kinerja orientasi tujuan dan dengan