-
PROYEK AKHIR
PENJADWALAN PELAJARAN SMU NEGERI MOJOAGUNG DENGAN ALGORITMA
GENETIKA
IRA LIA AGUSTINA NRP. 7403.030.065
Dosen Pembimbing: ENTIN MARTIANA K, S.KOM
NIP. 132 282 692
ARNA FARIZA, S.KOM, M.KOM NIP. 132 233 198
JURUSAN TEKNOLOGI INFORMASI POLITEKNIK ELEKTRONIKA NEGERI
SURABAYA
SURABAYA 2006
-
PENJADWALAN PELAJARAN SMU NEGERI MOJOAGUNG DENGAN ALGORITMA
GENETIKA
Oleh : Ira Lia Agustina
7403 030 065
Proyek Akhir Ini Diajukan Sebagai Salah Satu Syarat Untuk
Memperoleh Gelar Ahli Madya (A.Md.)
Di Politeknik Elektronika Negeri Surabaya
Institut Teknologi Sepuluh Nopember Surabaya
Surabaya, Agustus 2005 Disetujui oleh
Tim Penguji Proyek Akhir: Dosen Pembimbing : Dosen Penguji I
Dosen PembimbingI 1.Tessy Badriyah,S.Kom,M.Kom 1. Entin
Martiana,S.Kom
NIP. 132 297 020 NIP. 132 282 692
Dosen Penguji II Dosen Pembimbing II 2. Afrida Helen,S.Kom,M.Kom
2. Arna Fariza S.Kom, M.Kom NIP. 132 170 593 NIP. 132 233 198
Dosen Penguji III 3. Rengga Asmara, S.Kom NIP. 132 310 244
Mengetahui : Ketua Jurusan Teknologi Informasi
Iwan Syarif S.Kom, M.Kom NIP. 132 134 725
-
iii
ABSTRAK
Alokasi dan penentuan guru pengajar merupakan salah satu elemen
penting di dalam menyusun jadwal pelajaran di SMU ( contoh: SMU
Negeri I Mojoagung ) . Selain itu juga merupakan permasahan umum
yang selalu menjadi beban bagi pihak kesiswaan di SMU tersebut.
Dengan keterbatasan guru yang ada , pihak kesiswaan dituntut agar
tetap bisa memenuhi kebutuhan pelayanan kepada siswa khususnya
kelas-kelas yang ada. Masalah yang sering muncul adalah pada jam
yang bersamaan seorang guru berada di 2 kelas yang berbeda (kres) .
Hal ini sangat mengganggu keefektifan waktu belajar siswa . Oleh
karena itu , dengan usulan Proyek Akhir ini diharapkan dapat
menyelesaikan masalah di atas. Permasalahan tersebut merupakan
masalah yang kompleks karena berhubungan dengan jumlah guru dan
jumlah kelas yang ada. Hasil yang diharapkan berupa jadwal
pelajaran beserta guru pengajar di masing-masing kelas.
Algoritma Genetika merupakan algoritma optimasi untuk
menyelesaikan suatu permasalahan tanpa perhitungan matematik
sehingga dapat digunakan untuk optimasi penyusunan jadwal SMU.
Keyword : jadwal, algoritma genetika
-
iv
ABSTRACT
Allocation and determining of teacher is one of the important
elements to arrange high school schedule ( for example : SMU Negeri
I Mojoagung ). Beside of that, also is the general problem, which
is always become responsibility for student division in high
school. With limitedness of teacher, student division is prosecuted
to fill need of student servicing especially classes. The often
appear problem is in the same time one teacher be two different
classes. This is very disturb effectiveness of students time
learning. Because of this, the final project hoped can finish this
problem. This problem is complexity problem because related with
sum of teachers and classes. The hoped result is schedule with
teacher of each class.
Genetic Algorithm is optimation algorithm to finish a problem
without mathematic calculation so that can be used for optimation
arranging schedule in High School. Keyword : schedule, genetic
algorithm
-
v
KATA PENGANTAR Puji sukur kita haturkan kepada yang Maha Kuasa,
Allah SWT, Karena dengan karuniaNyalah samapai saat ini kita masih
diberikan rahmat, hidayat dan kekuatan sehingga dapat terus
melakukan segala aktifitas sehari-hari yang telah kita jalani.
Sampai pada akhirnya dapat menyelesaikan proyek akhir ini yang
berjudul : Penjadwalan Pelajaran SMU dengan Algoritma Genetika.
Proyek akhir ini dibuat dengan maksud untuk memenui salah satu
persyaratan untuk menyelesaikan studi di Politeknik Elektronika
Negeri Surabaya, Institut Teknologi Sepuluh Nopember yang telah
dijalani selama genap tig atahun. Disamping itu juga sebagai
pembelajaran untuk diri pribadi dalam banyak hal, baik itu
pengetahuan, mempraktekkan kuliah yang telah didapat selama ini di
Politeknik dan sebuah persiapan untuk menghadapi dunia kerja yang
tentunya lebih kompleks dari perkuliahan. Proses penyelesaian
proyek akhir ini dilakukan dengan usaha maksimal yang bisa
diberikan, yang tentu saja menggunakan teori-teori yang telah
didapatkan di meja perkuliahan, pembelajaran di luar kuliah ataupun
juga bantuan dan literature dari berbagi pihak, baik itu dosen
pembimbing yang telah membantu kelancaran proses ini dan
pihak-pihak lain yang telah memberikan semangat dan bantuan. Tentu
saja, dibalik semua usaha yang telah dilakukan, penulis sadar betul
bahwasannya masih banyak kekurangan di sana sini dalam penyusunan
buku laporan proyek akhir ini. Untuk itu penulis mohon maaf dan
mengharapkan saran-saran serta kritik yang membangun dari pembaca.
Diharapkan juga akan ada pengembangan proyek akhir ini untuk
memperbaiki kekurangannya ataupun menambah kelebihannya. Dan
tentunya semoga buku ini dapat bermanfaat agar dapat menghasilkan
sumber daya yang berkualitas. Amin.
Surabaya, Juli 2006
Penulis
-
vi
UCAPAN TERIMA KASIH Adapun pihak-pihak yang turut membantu
kelancaran dalam pembuatan proyek akhir ini, diantaranya adalah :
1. Allah SWT, Penguasa semesta alam dan Pemberi kekuatan serta
nikmat yang tak berhingga sehingga proyek akhir ini dapat
terselesaikan dengan baik.
2. Rasulullah SAW, yang telah memberikan penerangan kepada
umatnya sehingga dapat bangkit dari kegelapan dan menyongsong hari
esok dengan gemilang.
3. Kedua orangtua tercinta, yang telah memberikan doa dan
restunya sehingga saya dapat tetap eksis sampai hari ini, menjalani
studi di politeknik selama tiga tahun dan menyelesaikan proyek
akhir ini.
4. Bu Entin dan Bu Arna, selaku dosen pembimbing yang telah
memberi banyak sekali masukan, pengetahuan dan semangat sehingga
saya dapat menyelesaikan proyek akhir ini dengan baik.
5. Bapak Titon Dutono selaku Direktur PENS-ITS, Bapak Iwan
Syarif, selaku Ketua Jurusan Teknologi Informasi .
6. Pak Lik aku yang udah seperti orang tua kedua bagiku, yang
telah memberikan doa dan restunya. Dan semua keluargaku baik Pak
Poh, Budhe, Pak Lik, Bulek, semuanya makasih banget atas dukungan
dan doanya.
7. Seseorang nan jauh disana dekat di hati, yang telah memberi
dukungan dan semangat bagi aku untuk menyelesaikan proyek akhir
ini.
8. Para teknisi dan staf-staf IT yang telah membantu dalam
kelancaran pengerjaan Proyek Akhir ini.
9. Teman-teman lantai 3 terutama A.A Bastomi yang telah telaten
mengajariku dan bersedia membantu dalam mengerjakan proyek akhir
ini, terimakasih atas bantuannya selama ini. Aku tidak akan
melupakan jasa-jasamu. Teruslah telaten A.A dalam mengajari temanmu
yang lelet ini,nia, acid, puteri, silvi, febri , ira, semuanya deh
arek IT B makasih banget ya.
10. Teman-teman lantai 2, Ceri, Sinta, Tomo si kura-kura , Adhi,
dan Arip yang saling memberi semangat ,berbagi keceriaan, semuanya
dehmakasih ya kalian dah mau ndengerin nyanyianku yang merdu dan
maaf ya kalau selama ini suaraku sering mengganggu kalian.
11. Temanku lantai 1 yatie dan mbak mira yang udah seperti kakak
bagiku, sempat juga jadi penghuni lantai 2 yang slalu menemaniku
disaat senang dan duka , cak Ri makasih ya atas bantuannya.
-
vii
12. Mbak Wati, mbak evi, mbak riva dan semua anak kost GR 03
makasih ya.
13. Pihak-pihak lain yang turut membantu yang tidak mungkin
disebutkan satu per satu namanya disini, maaf dan terimakasih
banyak.
-
viii
DAFTAR ISI
Halaman HALAMAN JUDUL
............................................................................
i LEMBAR PENGESAHAN
.................................................................
ii ABSTRAK
..........................................................................................
iii
ABSTRACT..........................................................................................
iv KATA PENGANTAR
.........................................................................
v UCAPAN TERIMA KASIH
.............................................................. vi
DAFTAR ISI
.....................................................................................
viii DAFTAR
GAMBAR.............................................................................
x DAFTAR
TABEL.................................................................................
xi BAB I PENDAHULUAN
................................................................
1
1. 1. Latar belakang
............................................................................
1 1. 2.
Tujuan.........................................................................................
2 1. 3. Batasan
masalah..........................................................................
2 1. 4. Permasalahan
..............................................................................
2 1. 5.
Metodologi..................................................................................
2 1. 6. Sistematika pembahasan
............................................................. 3
BAB II TEORI
PENUNJANG..........................................................
5
2. 1. Algoritma Genetika
........................................................... 5 2. 1.
1. Latar Belakang Biologi
.......................................... 6 2. 1. 2. Definisi
Penting dalam Algoritma Genetika .......... 6 2. 1. 3. Struktur
Umum Algoritma Genetika...................... 7
2. 2.
Penjadwalan.....................................................................
17 2. 3. Sekilas Tentang
Java........................................................ 19
2. 3. 1. Vector
..................................................................
19
BAB III PERENCANAAN DAN PEMBUATAN SISTEM ........... 23 3. 1.
Perencanaan Sistem
......................................................... 23
3. 1. 1. Blok Diagram Sistem
...........................................24 3. 1. 2. Entity
Relatinship Diagram ..................................25
3. 2. Pembuatan
Sistem............................................................
26 3.2.1.
Database.................................................................
27 3.2.2.1. Tabel
......................................................... 27
3.2.2.2. Relationship
.............................................. 29 3.2.2. GUI
.......................................................................
30 3.2.2.1.
Form.........................................................
30
-
ix
3.2.2.2. Menu
Proses............................................. 31 3.2.2.3 Menu
About ............................................. 32 3.2.3.
Koneksi Database .................................................
33 3.2.4.
Program................................................................
35 3.2.4.1. Individu/Kromosom................................
36
3.2.4.2.
Fitness..................................................... 38
3.2.4.3 Proses Algoritma Genetika..................... 39 BAB IV
PENGUJIAN PROGRAM DAN ANALISA .................... 53
4. 1. Hasil Running Program
................................................... 53 4.1.1 Menu
Proses...........................................................
53
4. 2. Analisa Hasil
Program..................................................... 63 BAB
V PENUTUP
...........................................................................
65
5. 1. Kesimpulan
.....................................................................
65 5. 2.
Saran................................................................................
65
DAFTAR PUSTAKA
..........................................................................
xii BIODATA
-
x
DAFTAR GAMBAR
Gambar 2.1. Struktur Umum Algoritma
Genetika................................. 7 Gambar 2.2. Ilustrasi
seleksi dengan roulete wheel............................. 10 Gambar
2.3. Ilustrasi metode Rank Selection(sebelum)......................
11 Gambar 2.4. Ilustrasi metode Rank Selection(sesudah)
...................... 12 Gambar 2.5. Contoh Tree Encoding pada
Crossover .......................... 15 Gambar 3.1. Proses
Pembuatan Sistem ............................................... 23
Gambar 3.2. Konfigurasi Sistem Secara
Keseluruhan......................... 24 Gambar 3.3. Blok Diagram
Sistem...................................................... 25
Gambar 3.4. Entity Relationship
Diagram........................................... 25 Gambar 3.5.
Tabel Kelas
......................................................................
27 Gambar 3.6. Tabel Pelajaran
................................................................ 28
Gambar 3.7. Tabel Pelajaran_Kelas
..................................................... 29 Gambar
3.8. Relationship dari database
data........................................ 29 Gambar 3.9. Form
Halaman Depan.....................................................
30 Gambar 3.10. Menu
Proses....................................................................
31 Gamabr 3.11. Form Masukan
................................................................ 32
Gambar 3.12. Form
About.....................................................................
32 Gambar 3.13. Form keterangan
............................................................. 33
Gambar 3.14. Data Source (ODBC)
...................................................... 35 Gambar
3.15. Ilustarsi Crossover
.......................................................... 47
Gambar 3.16. Ilustarsi Mutasi
............................................................... 49
Gambar 4.1. Form Halaman
Depan..................................................... 53
Gambar 4.2. Menu
Proses....................................................................
54 Gambar 4.3. Menentukan Input
........................................................... 55
Gambar 4.4. Pembangkitan Populasi
.................................................. 58 Gambar 4.5.
Grafik
Fitness..................................................................
59 Gambar 4.6. Jadwal Pelajaran
.............................................................. 62
Gambar 4.7. Grafik
Fitness2.................................................................
63
-
xi
DAFTAR TABEL
Tabel 3.1. Properties Tabel Kelas
...................................................26 Tabel 3.2.
Properies Tabel Pelajaran
..............................................26 Tabel 3.3.
Properties Tabel Pelajaran_Kelas
..................................26 Tabel 4.1. Nilai Fitness
...................................................................59
Tabel 4.2. Hasil Percobaan Jadwal Pelajaran
SMU........................60
-
1
BAB I PENDAHULUAN
1.1. LATAR BELAKANG
Selama ini penjadwalan pelajaran di SMU (Sekolah Menengah Umum)
yang meliputi jadwal mata pelajaran dan pembagian guru di setiap
kelas yang ada masih menggunakan cara manual, sedangkan untuk
membagi guru sesuai dengan bidangnya dalam ruang kelas dan waktu
tertentu diperlukan pengaturan yang cukup rumit. Permasalahan yang
dihadapi di SMU (sebagai sample SMU Negeri I Mojoagung) sama dengan
hal tersebut, belum ada suatu sistem komputasi yang telah dibuat
agar dapat dipergunakan untuk menyusun jadwal pelajaran sesuai
dengan yang diinginkan.
Oleh karena itu dalam proyek akhir kali ini akan dicoba untuk
membuat suatu sistem komputasi yang dapat menggantikan cara manual
tersebut dan dapat menghasilkan hasil yang lebih bagus dan waktu
yang lebih singkat, hanya dengan memberikan parameter input yang
dibutuhkan, dapat menghasilkan output penjadwalan pelajaran SMU
yang diinginkan.
Sampai saat ini, metode yang dikenal sebagai metode yang diakui
potensinya memiliki teknik optimasi untuk menyelesaikan
permasalahan yang kompleks adalah Algoritma Genetika dan telah
sukses dijalankan di kalangan teknik seperti yang dikatakan Mitsuo
Gen [1] termasuk permasalahan timetabling atau penjadwalan [2].
Sehingga dalam pembuatan sistem penjadwalan pelajaran SMU ini
metode yang dipilih untuk dipergunakan adalah Algoritma
Genetika.
Sama seperti kasus pada penjadwalan ujian akhir semester
sebelumnya [3] yang menyatakan bahwa setiap dosen tidak
diperbolehkan ada di beberapa tempat dalam waktu yang bersamaan,
demikian pula salah satu syarat dari penjadwalan pelajaran SMU ini,
bahwa setiap guru tidak diperbolehkan berada pada 2 kelas atau
lebih pada jam pelajaran yang bersamaan.
Diharapkan proyek akhir ini dapat menyusun jadwal pelajaran SMU
yang meliputi jadwal pelajaran SMU disertai dengan guru pengajar di
masing-masing kelas yang ada dengan proses yang lebih memakan waktu
sedikit dan hasil yang optimal.
-
Bab I Pendahuluan 2
1.2. TUJUAN Proyek Akhir yang berjudul Penjadwalan Pelajaran
SMU
Negeri Mojoagung dengan Algoritma Genetika ini bertujuan untuk:
1. Menghasilkan suatu software yang berfungsi untuk menyusun
jadwal pelajaran di SMU Negeri Mojoagung. 2. Mengembangkan
proses komputasi dengan Algorima Genetika
untuk menyelesaikan permasalahan penjadwalan pelajaran SMU. 3.
Mempermudah dan mempercepat proses pembuatan jadwal
Pelajaran SMU dengan hasil yang optimal.
1.3. BATASAN MASALAH Dalam proyek akhir ini permasalahan
difokuskan pada
pembuatan perangkat lunak yang meliputi metode dan
program-program untuk menyusun jadwal pelajaran dan pembagian guru
pada tiap-tiap kelas yang ada di SMU Negeri Mojoagung yang dibatasi
dengan membuat jadwal pelajaran dari kelas 1 sampai dengan kelas 3
dimana tiap tingkat kelas terdiri dari 4 kelas dan mempunyai 2
jurusan yaitu : IPA dan IPS yang mulai diambil ketika kelas 2
dengan menggunakan Java Programming Language .
1.4. PERMASALAHAN
Permasalahan yang diangkat dalam proyek akhir ini adalah
bagaimana membuat jadwal pelajaran dan pembagian guru pengajar pada
tiap-tiap kelas di SMU Negeri I Mojoagung, sehingga didapatkan
kombinasi pelajaran yang lebih baik guna menghasilkan jadwal
pelajaran yang optimal. Jadwal pelajaran dikatakan optimal apabila
tidak didapatkan kress didalamnya.
1.5. METODOLOGI Metodologi penelitian yang digunakan dalam
proyek akhir ini meliputi:
1. Studi pustaka mengenai metode algoritma genetika dan teknik
penjadwalan yang telah digunakan menggunakan algoritma genetika
melalui buku-buku referensi.
2. Melakukan pengumpulan data yang dibutuhkan untuk membuat
jadwal pelajaran SMU meliputi data pelajaran, kelas dan guru sesuai
dengan bidangnya masing-masing.
3. Melakukan perancangan model sistem database yang digunakan
untuk menyimpan data yang telah dikumpulkan
-
Bab I. Pendahuluan 3 meliputi pembuatan Blok Diagram dan Entity
Relationship Diagram.
4. Melakukan perancangan model algoritma genetika untuk
penjadwalan pelajaran SMU yang meliputi pendefinisian individu,
nilai fitness, pembangkitan populasi awal, seleksi, crossover dan
mutasi.
5. Melakukan pembuatan software yang meliputi proses pembentukan
populasi baru untuk mendapatkan susunan jadwal pelajaran SMU dengan
hasil yang paling optimal dengan menggunakan bahasa pemrograman
Java.
6. Melakukan uji coba dan analisa terhadap software yang telah
dibuat dengan data yang telah didapatkan untuk membuat jadwal
pelajaran SMU.
1.6. SISTEMATIKA PEMBAHASAN
Sistematika pembahasan proyek akhir yang disusun ini akan
dibahas pada bab-bab yang akan diuraikan di bawah ini :
BAB I Berisi tentang pendahuluan yang terdiri dari:
Latar Belakang Tujuan Batasan Masalah Permasalahan Metodologi
Sistematika Pembahasan
BAB II Berisi tentang teori-teori penunjang yang terdiri
dari:
Algoritma Genetika Penjadwalan Tentang Java
BAB III Berisi tentang perencanaan dan pembuatan sistem yang
meliputi pembuatan database, Graphic User Interface dan algoritma
program yang akan digunakan
BAB IV Berisi tentang analisa dari sistem, metode dan program
yang telah dibuat, kemudian dibandingkan dengan perencanaan awal
serta teori-teori dari proyek akhir tentang kelebihan dan
kekurangannya.
-
Bab I Pendahuluan 4 BAB V Berisi kesimpulan dan saran serta
pengembangan proyek
akhir, jika dimungkinkan untuk masa yang akan datang.
-
5
BAB II TEORI PENUNJANG
Dalam bab ini akan dibahas mengenai teori-teori penting yang
dapat menunjang dan menjadi acuan dalam pembuatan proyek akhir
ini. Bagian tersebut akan dikelompokkan dalam tiga bab yaitu
Algoritma Genetika yang digunakan sebagai metode penyelesaian,
teori teori dari teknik penjadwalan dan sekilas tentang Java. 2.1.
ALGORITMA GENETIKA
Kecerdasan buatan (Artificial Intelligence) merupakan suatu ilmu
dengan ide-ide untuk membuat bagaimana komputer menjadi cerdas
seperti yang bisa dilakukan manusia, dengan mengimplementasikannya
dalam sebuah program. Diharapkan nantinya kecerdasan buatan ini
dapat menirukan proses belajar yang dilakukan oleh manusia sehingga
informasi-informasi baru dapat diserap dan dapat dijadikan acuan
pada masa yang akan datang.
Algoritma genetika merupakan evolusi / perkembangan dunia
komputer dalam bidang kecerdasan buatan (Artificial Intelligence).
Sebenarnya algoritma genetika ini terinspirasi oleh teori evolusi
Darwin (walaupun pada kenyataannya teori tersebut terbukti
keliru).
Algoritma genetika adalah algoritma pencarian yang berdasarkan
pada mekanisme sistem natural yakni genetik dan seleksi alam [4].
Pada dasarnya algoritma genetika adalah program komputer yang
mensimulasikan proses evolusi, dengan menghasilkan
kromosom-kromosom dari tiap populasi secara random dan memungkinkan
kromosom tersebut berkembang biak sesuai dengan hukum-hukum evolusi
yang nantinya diharapkan akan dapat menghasilkan kromosom prima
atau yang lebih baik. Kromosom ini merepresentasikan solusi dari
permasalahan yang diangkat, sehingga apabila kromosom yang baik
tersebut dihasilkan, maka diharapkan solusi yang baik dari
permasalahan tersebut juga didapatkan.
Algoritma genetika bisa digunakan untuk menyelesaikan
permasalahan yang tidak mempunyai metode penyelesaian dengan
rumusan yang tepat, ataupun jika ada rumusannya, masih diperlukan
waktu yang lama untuk menyelesaikannya, biasanya permasalahan
tersebut sangat beragam dan kompleks, salah satu contohnya adalah
permasalahan penjadwalan ujian akhir semester yang menentukan
-
Bab II. Teori Penunjang 6 jadwal UAS dengan syarat bahwa setiap
dosen tidak diperbolehkan ada di beberapa tempat dalam waktu yang
bersamaan.
2.1.1. Latar Belakang Biologi Setiap makhluk hidup di dunia ini
terdiri dari sel-sel. Dalam setiap sel tersebut terdapat set
kromosom yang sama. Kromosom adalah susunan atau suatu nilai dari
DNA dan menggambarkan makhluk hidup secara keseluruhan. Setiap
kromosom terdiri dari gen yang disebut sebagai blok dari DNA.
Setiap gen menggambarkan sebuah protein khusus. Pada dasarnya
setiap gen menggambarkan sebuah sifat seperti warna mata. Keadaan
yang mungkin untuk sifat (seperti biru, coklat) disebut sebagai
allele. Setiap gen mempunyai letak tersendiri pada sebuah kromosom
yang disebut sebagai locus.
Dalam proses reproduksi, proses pertama yang terjadi adalah
rekombinasi atau disebut juga dengan crossover / kawin silang.
Susunan gen dari induk digabungkan dengan beberapa cara untuk
menciptakan kromosom baru secara keseluruhan. Selanjutnya, individu
baru yang terbentuk dapat dimutasikan. Mutasi adalah perubahan pada
beberapa elemen dari DNA yang terdapat pada gen induk. Nilai
fitness dari suatu individu dilihat dari kesuksesannya
mempertahankan hidup dalam suatu populasi.
2.1.2. Definisi penting dalam Algoritma Genetika
Gen Gen merupakan nilai yang menyatakan satuan dasar yang
membentuk suatu arti tertentu dalam satu kesatuan gen yang
dinamakan kromosom.
Kromosom / individu Kromosom merupakan gabungan dari gen-gen
yang membentuk nilai tertentu dan menyatakan solusi yang mungkin
dari suatu permasalahan.
Populasi Populasi merupakan sekumpulan individu yang akan
diproses bersama dalam satu satuan siklus evolusi.
Fitness Fitness menyatakan seberapa baik nilai dari suatu
individu atau solusi yang didapatkan.
-
Bab II. Teori Penunjang 7 Seleksi
Seleksi merupakan proses untuk mendapatkan calon induk yang
baik.
Crossover Crossover merupakan proses pertukaran atau kawin
silang gen-gen dari dua induk tertentu.
Mutasi Mutasi merupakan proses pergantian salah satu gen yang
terpilih dengan nilai tertentu.
Generasi Generasi merupakan urutan iterasi dimana beberapa
kromosom bergabung.
Offspring Offspring merupakan kromosom baru yang dihasilkan
setelah melewati suatu generasi.
2.1.3. Struktur umum Algoritma Genetika Dalam Algoritma
Genetika, terdapat beberapa urutan proses yang perlu dilakukan
diantaranya seperti yang terlihat pada gambar di bawah ini :
Gambar 2.1 Struktur Umum Algoritma Genetika
-
Bab II. Teori Penunjang 8 Untuk menyelesaikan suatu permasalahan
menggunakan Algoritma Genetika, perlu diketahui beberapa macam
encoding guna menentukan operator crossover dan mutasi yang akan
digunakan. Encoding tersebut tergantung pada permasalahan apa yang
diangkat. Beberapa macam encoding menurut Marek Obitko akan
dijelaskan di bawah ini :
1. Binary Encoding Encoding jenis ini sering digunakan. Kromosom
dari binary encoding ini berupa kumpulan dari nilai biner 0 dan 1.
Contohnya:
Chromosome1 1101100100110110
Chromosome2 1101011000011110
Dalam Binary Encoding memungkinkan didapatkan kromosom dengan
nilai allele yang kecil, tetapi kekurangannya tidak dapat digunakan
untuk beberapa permasalahan dan terkadang diperlukan adanya koreksi
setelah proses crossover dan mutasi. Salah satu permasalahan yang
menggunakan encoding adalah menghitung nilai maksimal dari suatu
fungsi.
2. Permutation Encoding Kromosom dari permutation encoding ini
berupa kumpulan dari nilai integer yang mewakili suatu posisi dalam
sebuah urutan. Biasanya digunakan pada permasalahan TSP (Travelling
Salesman Problem). Contohnya:
Chromosome 1 1 4 7 9 6 3 5 0 2 8 Chromosome 2 9 3 2 5 8 1 6 0 4
7
3. Value Encoding Kromosom dari value encoding berupa kumpulan
dari suatu nilai, yang bisa berupa macam-macam nilai sesuai dengan
permasalahan yang dihadapi, seperti bilangan real, char atau objek
yang lain. Encoding ini merupakan pilihan yang bagus untuk beberapa
permasalahan khusus, biasanya diperlukan metode khusus untuk
memproses crossover dan mutasinya sesuai dengan permasalahan yang
dihadapi. Contohnya:
Chromosome 1 A B E D B C A E D D Chromosome 2 N W W N E S S W N
N
-
Bab II. Teori Penunjang 9 4. Tree Encoding
Tree Encoding biasanya digunakan pada genetic programming.
Kromosom yang digunakan berupa sebuah tree dari beberapa objek,
seperti fungsi atau command pada genetic programming.
Penjelasan lebih lanjut dari struktur umum Algoritma Genetika
pada gambar 2.1 di atas adalah sebagai berikut : Pendefinisian
Individu
Pendefinisian individu merupakan proses pertama yang harus
dilakukan dalam Algoritma Genetika yang menyatakan salah satu
solusi yang mungkin dari suatu permasalahan yang diangkat.
Pendefinisian individu atau yang biasa disebut juga
merepresentasikan kromosom yang akan diproses nanti, dilakukan
dengan mendefinisikan jumlah dan tipe dari gen yang digunakan dan
tentunya dapat mewakili solusi permasalahan yang diangkat.
Membangkitkan Populasi Awal Proses ini dilakukan dengan
membangkitkan populasi secara acak, dimana populasi tersebut berisi
beberapa kromosom yang telah didefinisikan sebelumnya. Dalam proses
ini perlu diperhatikan syarat-syarat yang harus dipenuhi untuk
menunjukkan suatu solusi dari permasalahan dan jumlah kromosom yang
digunakan dalam satu populasi. Jika kromosom yang digunakan terlalu
sedikit, maka individu yang dapat digunakan untuk proses crossover
dan mutasi akan sangat
-
Bab II. Teori Penunjang 10 terbatas, sehingga menyia-nyiakan
proses yang ada. Tetapi jika jumlah kromosom yang digunakan terlalu
banyak, akan memperlambat proses algoritma genetika yang dilakukan.
Jumlah kromosom yang dianjurkan lebih besar dari jumlah gen yang
ada dalam satu kromosom, tetapi juga harus disesuaikan dengan
permasalahan, apabila jumlah gennya terlalu banyak, tidak juga
dianjurkan seperti itu.
Proses Seleksi Operasi seleksi dilakukan dengan memperhatikan
fitness dari tiap individu, manakah yang dapat dipergunakan untuk
generasi selanjutnya. Seleksi ini digunakan untuk mendapatkan calon
induk yang baik, semakin tinggi nilai fitnessnya maka semakin besar
juga kemungkinan individu tersebut terpilih. Terdapat beberapa
macam cara seleksi untuk mendapatkan calon induk yang baik,
diantaranya adalah seleksi roulette wheel, steady state, tournament
dan rank. Proses seleksi yang biasa digunakan adalah mesin
roulette. Beberapa penjelasan tentang keempat metode seleksi di
atas adalah sebagai berikut : 1. Roulette Wheel
Calon induk yang akan dipilih berdasarkan nilai fitness yang
dimilikinya, semakin baik individu tersebut yang ditunjukkan dengan
semakin besar nilai fitnessnya akan mendapatkan kemungkinan yang
lebih besar untuk terpilih sebagai induk. Misalkan saja roulette
wheel merupakan tempat untuk menampung seluruh kromosom dari tiap
populasi, maka besarnya tempat dari roulette wheel tersebut
menunjukkan seberapa besar nilai fitness yang dimiliki oleh suatu
kromosom, semakin besar nilai fitness tersebut, maka semakin besar
pula tempat yang tersedia. Ilustrasinya dapat digambarkan sebagai
berikut :
Gambar 2.2 Ilustrasi seleksi dengan Roulette Wheel
-
Bab II. Teori Penunjang 11 2. Steady State
Metode ini tidak banyak digunakan dalam proses seleksi karena
dilakukan dengan mempertahankan individu yang terbaik. Pada setiap
generasi, akan dipilih beberapa kromosom dengan nilai fitnessnya
yang terbaik sebagai induk, sedangkan kromosom kromosom yang
memiliki nilai fitness terburuk akan digantikan dengan offspring
yang baru. Sehingga pada generasi selanjutnya akan terdapat
beberapa populasi yang bertahan.
3. Tournament Dalam metode seleksi tournament sejumlah n
individu dipilih secara random dan kemudian menentukan fitnessnya.
Kebanyakan metode seleksi ini digunakan pada binary , dimana hanya
dua individu yang dipilih.
4. Rank Seleksi ini memperbaiki proses seleksi yang sebelumnya
yaitu roulette wheel karena pada seleksi tersebut kemungkinan salah
satu kromosom mempunyai nilai fitness yang mendominasi hingga 90%
bisa terjadi, sehingga nilai fitness yang lain akan mempunyai
kemungkinan yang sangat kecil sekali untuk terpilih. Sehingga dalam
seleksi rank, dilakuka perumpamaan sesuai dengan nilai fitnessnya,
nilai fitness terkecil diberi nilai 1, yang terkecil kedua diberi
nilai 2, dan begitu seterusnya sampai yang terbagus diberi nilai N
(jumlah kromosom dalam populasi). Nilai tersebut yang akan diambil
sebagai prosentasi tepat yang tersedia. Ilustrasi dapat dilihat
seperti pada gambar berikut :
Gambar 2.3 Ilustrasi Metode Rank Selection ( situasi sebelum
ranking )
-
Bab II. Teori Penunjang 12
Gambar 2.4 Ilustrasi Metode Rank Selection ( situasi sesudah
ranking )
Proses Crossover Crossover adalah salah satu operator penting
dalam algoritma genetika, metode dan tipe crossover yang dilakukan
tergantung dari encoding dan permasalahan yang diangkat. Ada
beberapa cara yang bisa digunakan untuk melakukan crossover,
menurut Marek Obitko [8] sesuai dengan encodingnya yang dijelaskan
sebagai berikut:
1. Binary Encoding Crossover Satu Titik Memilih satu titik
tertentu, selanjutnya nilai biner sampai titik crossovernya dari
induk pertama digunakn dan sisanya dilanjutkan dengan nilai biner
dari induk kedua. Contoh :
11001011 + 11011111 = 11001111
Crossover Dua Titik Memilih dua titik tertentu, lalu nilai biner
sampai titik crossover pertama pada induk pertama digunakan,
dilanjutkan dengan nilai biner dari titik pertama sampai titik
kedua dari induk kedua, kemudian sisanya melanjutkan nilai biner
dari titik kedua pada induk pertama lagi. Contoh :
11001011 + 11011111 = 11011111
-
Bab II. Teori Penunjang 13 Crossover Uniform Nilai biner yang
digunakan dipilih secara random dari kedua induk. Contoh :
11001011 + 11011101 = 11011111
Crossover Aritmatik Suatu operasi aritmetika digunakan untuk
menghasilkan offspring yang baru.
Contoh :
11001011 + 11011111 = 11001001 (AND)
2. Permutation Encoding
Memilih satu titik tertentu, nilai permutasi sampai titik
crossover pada induk pertama digunakan, lalu sisanya dilakukan scan
terlebih dahulu, jika nilai permutasi pada induk kedua belum ada
pada offspring, nilai tersebut ditambahkan.
Contoh : (123456789)+(453689721)=(12345689 )
Beberapa metode operator crossover diciptakan untuk representasi
permutasi, seperti :
Partial-Mapped Crossover (PMX) PMX diciptakan oleh Goldberg dan
Lingle. PMX
merupakan rumusan modifikasi dari pindah silang dua-poin. Hal
yang penting dari PMX adalah pindah silang 2-poin ditambah dengan
beberapa prosedur tambahan. Langkah-langkahnya sebagai berikut : 1.
Menentukan 2 posisi pada kromosom dengan
aturan acak. Substring yang berada dalam 2 posisi ini dinamakan
daerah pemetaan.
2. Menukar 2 substring antar induk untuk menghasilkan
proto-child.
3. Menentukan hubungan pemetaan di antara dua daerah
pemetaan.
4. Menentukan kromosom keturunan mengacu pada hubungan
pemetaan.
-
Bab II. Teori Penunjang 14 Order Crossover (OX) Order Crossover
(OX) diciptakan oleh Davis. Metode ini merupakan variasi dari PMX
dengan prosedur tambahan. OX bekerja sebagai berikut: 1. Memilih
substring dari sebuah induk secara acak. 2. Membangkitkan sebuah
proto-child dengan
mengkosongkan tempat substring induk 2 pada induk 1.
3. SHR allele dari substring pada tempat yang bersesuaian.
4. Menukar substring antara 2 induk. Cycle Crossover (CX) Cycle
Crossover (CX) diciptakan oleh Oliver, Smith dan Holland. Metode
ini mengkopi gen-gen dari satu induk dan memilih gen-gen yang lain
dari induk yang lain, dengan mengingat pola cycle. Cara kerja CX
adalah sebagai berikut : 1. Menemukan cycle yang didefinisikan dari
relasi
posisi gen-gen antara induk 2. Menyalin gen-gen dalam cycle pada
proto-child
dengan relasi posisi dari sebuah induk 3. Menentukan gen-gen
diingat yang berasal dari
induk lain 4. Isi keturunan dengan gen-gen yang diingat
tadi.
3. Value Encoding Semua metode crossover pada binary crossover
bisa digunakan.
4. Tree Encoding Memilih satu titik tertentu dari tiap induk,
dan menggabungkan tree dibawah titik pada induk pertama dan tree di
bawah titik pada induk kedua.
-
Bab II. Teori Penunjang 15 Contoh :
Gambar 2.5 Contoh Tree Encoding pada Crossover Proses Mutasi
Mutasi juga merupakan salah satu operator penting dalam
algoritma genetika selain crossover. Metode dan tipe mutasi yang
dilakukan juga tergantung pada encoding dan permasalahan yang
diangkat. Berdasarkan encodingnya, menurut Marek Obitko, terdapat
beberapa macam, diantaranya adalah sebagai berikut :
1. Binary Encoding
Bit inversion Melakukan inversi pada bit yang terpilih, 0
menjadi 1 dan sebaliknya, 1 menjadi 0. Contoh :
11001001 => 10001001 2. Permutation Encoding
Order changing Memilih dua nilai dari gen dan menukarnya.
Contoh :
( 1 2 3 4 5 8 9 7 ) => ( 1 8 3 4 5 6 2 9 7 ) Beberapa
operator mutasi telah diciptakan untuk representasi permutasi,
seperti metode inversion, insertion, displacement, dan reciprocal
exchange mutation.
-
Bab II. Teori Penunjang 16 Inversion Mutation Inversion mutation
memilih dua posisi dalam sebuah kromosom dengan cara acak dan
kemudian menginversikan substring di antara dua posisi tersebut.
Insertion Mutation Insertion Mutation memilih sebuah gen dengan
cara acak dan memasukkan ke dalam kromosom dengan cara acak pula.
Displacement Mutation Displacement Mutation memilih sebuah
sub/sekelompok gen dengan cara acak kemudian memasukkan ke dalam
kromosom dengan cara acak. Reciprocal Exchange Mutation (REM)
Reciprocal Exchange Mutation memilih dua posisi secara acak,
kemudian menukar dua gen dalam posisi tersebut.
3. Value Encoding Menentukan sebuah nilai kecil yang akan
ditambahkan atau dikurangkan pada salah satu gen dalam
kromosom.
Contoh : ( 1.29 5.68 2.86 4.11 5.55 ) => ( 1.29 5.68 2.73
4.22
5.55 ) 4. Tree Encoding
Node yang terpilih akan diubah.
Karena proses mutasi juga merupakan salah satu operator dasar
dalam algoritma genetika, sehingga sama dengan crossover, mutasi
juga memerlukan probabilitas dengan proses yang sama seperti pada
probabilitas crossover. Individu dengan nilai probabilitas yang
lebih kecil dari probabilitas yang telah ditentukan yang akan
melewati proses mutasi. Nilai probabilitas mutasi ini menunjukkan
seberapa sering gen tertentu dari kromosom yang telah diproses
dengan crossover akan melewati mutasi. Jika tidak ada proses
mutasi, maka offspring yang dihasilkan akan sama dengan hasil
individu setelah proses crossover, tanpa ada perubahan sedikitpun.
Proses mutasi ini biasanya dilakukan untuk mencgah terjadinya loka
l optimum, proses mutasi ini sebaiknya tidak terlalu sering
dilakukan karena proses algoritma genetika akan cepat berubah
menjadi random search. Pada probabilitas mutasi, jika terlalu
rendah akan mengakibatkan banyak gen yang berguna tidak sempat
untuk dimanfaatkan dan jika terlalu besar akan menyebabkan
offspring kehilangan sifat dari induknya dan tidak akan dapat
memanfaatkan lagi proses evolusi alamiah.
-
Bab II. Teori Penunjang 17 Offspring
Offspring merupakan kromosom baru yang dihasilkan setelah
melalui proses-proses di atas. Kemudian pada offspring tersebut
dihitung fitnessnya apakah sudah optimal atau belum, jika sudah
optimal berarti offspring tersebut merupakan solusi optimal, tetapi
jika belum optimal maka akan diseleksi kembali, begitu seterusnya
sampai terpenuhi kriteria berhenti [5]. Beberapa kriteria berhenti
yang sering digunakan antara lain : 1. Berhenti pada generasi
tertentu 2. Berhenti setelah dalam beberapa generasi
berturut-turut
didapatkan nilai fitness tertinggi tidak berubah 3. Berhenti
bila dalam n generasi berikut tidak didapatkan nilai
fitness yang lebih tinggi Proses Elitism
Proses ini dilakukan untuk mempertahankan individu yang terbagus
dari tiap generasi, karena setelah dilakukan proses crossover dan
mutasi, kemungkinan untuk kehilangan kromosom yang terbaik sangat
besar. Proses elitism ini dilakukan dengan menggantikan kromosom
terburuk dari generasi berikutnya dengan kromosom terbaik dari
generasi sebelumnya apabila kromosom yang baru tersebut tidak lebih
buruk dari yang lama.
2.2. PENJADWALAN
Penjadwalan merupakan proses untuk menyusun suatu jadwal atau
urutan proses yang diperlukan dalam sebuah persoalan. Persoalan
penjadwalan biasanya berhubungan dengan penjadwalan kelas dalam
sekolah atau perkuliahan dan juga dalam lingkup yang tidak jauh
berbeda seperti penjadwalan pelajaran sekolah, penjadwalan ujian,
atau bisa juga penjadwalan karyawan, baik dalam suatu perusahaan
ataupun dalam rumah sakit. Dalam penjadwalan kuliah, akan dibahas
tentang pembagian jadwal untuk tiap mahasiswa pada kuliah tertentu
sekaligus dosen pengajarnya, dalam penjadwalan pelajaran sekolah
akan dibahas tentang pembagian jadwal pelajaran untuk tiap-tiap
kelas yang ada beserta guru pengajar pelajaran tersebut, dalam
penjadwalan ujian akan dibahas pengaturan dosen yang menjaga ujian
dan mahasiswa atau murid yang menempati ruang ujian yang ada,
sedangkan pada penjadwalan karyawan, dilakukan pengaturan karyawan
yang akan bekerja pada waktu tertentu di bagian tertentu.
-
Bab II. Teori Penunjang 18 Proses tersebut tentu saja dibuat
berdasarkan permasalahan yang
ada. Beberapa proses umum ynag perlu dilakukan untuk
menyelesaikan suatu proses penjadwalan menurut Research Group
Computer Science (BGU) adalah:
1. Mendefinisikan atau membuat model dari permasalahan. Model
yang dibuat mencakup proses apa saja yang akan dikerjakan dalam
persoalan penjadwalan yang ada. Atau lebih jelasnya jadwal apa saja
yang akan dibuat.
2. Mendesign metode penyelesaian untuk permasalahan penjadwalan
tersebut. Dari model yang telah ada, ditentukan metode yang akan
digunakan untuk menyelesaikan permasalahan penjadwalan
tersebut.
3. Mencari bermacam-macam contoh permasalahan penjadwalan yang
telah dibuat. Dalam proses ini dilakukan pencarian penyelesaian
penjadwalan yang pernah digunakan agar dapat dipakai sebagai
referensi dalam proses yang sedang dilakukan.
Sedangkan pembahasan penjadwalan menurut Tomas Muller dan Roman
Bartak sebagai berikut :
1. Aktivitas yang dilakukan Maksudnya adalah bahwa penentuan
dari permasalahan penjadwalan yang dibahas. Misalnya penjadwalan
pelajaran di SMU.
2. Sumber-sumber yang dipakai Sumber-sumber yang dipakai berarti
hal-hal yang dapat digunakan untuk menyelesaikan permasalahan
penjadwalan (aktifitas) yang telah ditentukan atau bisa juga
dikatakan sebagai data yang digunakan. Misalnya pada penjadwalan
pelajaran SMU diperlukan data pelajaran, guru, kelas dan sumber
lain yang diperlukan.
3. Syarat-syarat yang diperlukan Syarat disini adalah hal-hal
yang perlu diperhatikan ketika menyusun suatu penjadwalan. Misalnya
saja dalam penjadwalan pelajaran SMU terdapat syarat bahwa seorang
guru tidak boleh mengajar dua kelas yang berbeda dalam waktu / jam
pelajaran yang sama.
-
Bab II. Teori Penunjang 19 4. Hubungan Timbal Balik
Yang dimaksud hubungan timbal balik disini adalah bagaimana
jadwal yang telah dibuat tersebut dapat sesuai dengan yang
diinginkan oleh user.
2.3. SEKILAS TENTANG JAVA Java.lang dan java.utils merupakan dua
package yang terdapat
di dalam java. Package java.lang memuat sejumlah class penting,
termasuk class-class wrapper dan package ini bisa langsung diimport
secara otomatis tanpa mendeklarasikannya. Sedangkan yang tidak
kalah pentingnya adalah package java.util. Package ini memuat
class-class Vector dan Hashtable.
2.3.1 Vector Class Vector merupakan class yang dirancang dapat
menangani
penambahan dan pengurangan elemen array serta menggunakan memori
seefisien mungkin. Dibandingkan dengan Class array, penggunaan
Class ini mempunyai keuntungan jika :
1. Berhubungan dengan variable dari sekumpulan obyek, sehingga
obyek tersebut dapat ditambah atau dikurangi jumlahnya.
2. Seluruh element array berupa obyek atau dapat
direpresentasikan sebagai obyek. Untuk mengkonversi data tipe
sederhana ke obyek menggunakan class wrapper di java.lang.
3. Obyek berada dalam array dan posisinya pada array.
Satu pertimbangan penting sebelum menggunakan vector adalah
bahwa Vector tidak dapat menyimpan tipe data sederhana secara
langsung. Vector hanya boleh menyimpan Objek. Sebagai
konsekuensinya, digunakan class wrapper ketika akan menyimpan
integer dan harga numeric lainnya ke dalam vector array.
Menggunakan Vector Vector dialokasikan dengan cara yang sama
dengan Objek, yakni menggunakan operator new. Saat sebuah vector
dibuat, di dalamnya dibuat array private internal yang akan memuat
elemen-elemen yang akan ditambahkan kepadanya. Apabila penambahan
elemen tersebut melebihi ukuran array, maka array tersebut akan
dialokasikan ulang. Class Vector tidak akan
-
Bab II. Teori Penunjang 20 memperlihatkan rincian proses ini.
Namun, jika bermaksud mengoptimasi kode lebih jauh lagi, dapat
dilihat pilihan konstruktor dan Method yang ada di referensi API.
Berikut ini contoh dasar pengalokasian Objek Vector :
VectortheVector=newVector();
Pada contoh di atas, digunakan konstruktor default, yang akan
bekerja di hamper semua kasus.
Menambahkan Elemen ke Vector Begitu vector dibuat, dapat
ditambahkan objek-Objek ke dalamnya menggunakan Method
addElement(). Method addElement() didefinisikan sebagai berikut
:
publicfinalsynchronizedvoidaddElement(Objectobj)
Method menggunakan Objek sebagai parameternya dan menambahkannya
ke akhir vector. Berikut ini contoh penambahan tiga Objek Integer
ke sebuah vector
for(inti=0;i
-
Bab II. Teori Penunjang 21
current_name=joko;
nameVector.addElement(current_name);
Menghapus Elemen Vector Objek dapat dihapus dari dalam vector
menggunakan Method-method remove Element(). Remove ElementAt(),
atau remove ElementAll(). Method removeElement() menghapus Object
yang ditentukan dari Objek Vector. Method ini didefinisikan sebagai
berikut :
public final synchronized void Boolean
removeElement(Objectobj)
Apabila terdapat lebih dari satu objek yang sama di dalam array
vector, removeElement() akan menghapus elemen yang pertama. Berikut
ini contoh penggunaan remove Element() untuk menghapus Objek
newName dari contoh sebelum ini:
nameVector.removeElement(newName);
Mengambil dan Menset Elemen Vector Agar dapat menggunakan elemen
vector sebagai array, class Vector menyediakan dua Method dalam
mengambil dan menset elemen vector dengan menentukan posisi elemen
atau indeks. Method-method ini adalah elemenAt() dan
setElementAt().
Definisi kedua Method tersebut adalah sebagai berikut:
publicfinalsynchronizedObjectElementAt(intindex)
publicfinalsynchronizedvoidsetElement(Objectobj,intindex)
Method elementAt() menggunakan posisi sebagai parameternya dan
mengembalikannya referensi Objek yang dimuat oleh elemen vector.
Method setElementAt() menyimpan referensi Objek yang disampaikan
melalui parameter pertaman7a ke dalam elemen vector yang dinyatakan
oleh parameter kedua. Elemen vector diberi nomor mulai 0 sampai
jumlah objek-1.
System.out.println(elementAt(0));
-
Bab II. Teori Penunjang 22
Mencari Objek di Vector Salah satu keindahan class Vector adalah
bahwa class ini memiliki sejumlah Method yang memudahkan dalam
mencari apakah suatu Object ada di dalam vector dan menentukan
letaknya. Sebagian besar Method ini akan dijelaskan disini.
publicfinalBooleancontains(Objectelem)
Method contains memeriksa apakah vector memuatObject yang
ditanyakan atau tidak. Method ini akan mengembalikan harga true
jika objek tersebut ada di dalam vector dan false jika
sebaliknya.
publicfinalintindexOf(Objectelem)
Method indexOf() akan menelusuri setiap elemen vector dan
mengembalikan nomor elemen dari Objek yang ditanyakan apabila Objek
tersebut ada di dalam vector. Apabila Objek yang ditanya tidak
ditemukan, Method ini akan mengembalikan harga 1.
publicfinalsynchronizedintindexof(Objectelem,intindex)
-
23
BAB III PERENCANAAN DAN PEMBUATAN
SISTEM
3.1 Perencanaan Sistem Berdasarkan observasi yang telah
dilakukan dengan bagian
kesiswaan di SMU Negeri I Mojoagung, untuk menyusun sistem
penjadwalan Pelajaran diperlukan suatu proses yang dapat kita lihat
pada gambar 3.1.
Gambar 3.1 Proses Pembuatan Sistem
Bagian Kesiswaan bertanggung jawab dalam menyusun Jadwal
Pelajaran yang harus disesuaikan dengan beberapa persyaratan.
Antara lain: 1. Seorang guru tidak boleh mengajar dua kelas yang
berbeda dalam
satu waktu (dalam jam pelajaran yang sama). 2. Masing-masing
kelas hanya boleh mengikuti pelajaran tertentu saja
Proyek akhir ini dimaksudkan untuk membuat sistem
komputasi dengan hanya memasukkan data yang diperlukan dalam
membuat penjadwalan Pelajaran SMU tersebut dan nantinya akan
menghasilkan hasil yang sama dengan proses diatas. Dalam hal ini
proses yang dikerjakan adalah pembuatan jadwal Pelajaran SMU dengan
data Kelas, Pelajaran dan Guru sebagai input yang telah tersusun.
Konfigurasi sistem secara keseluruhan dapat dilihat pada gambar
3.2.
BAGIAN KESISWAAN
JADWAL PELAJARAN
GURU PELAJARAN KELAS
-
Bab III. Perencanaan Dan Pembuatan Sistem 24
Gambar 3.2 Konfigurasi Sistem Secara Keseluruhan
Dari sistem tersebut, nantinya data yang dipakai adalah data
pelajaran, guru dan kelas yang ada yang nanti akan dijelaskan lebih
lengkap di bawah. Kemudian data tersebut akan disimpan dalam sebuah
database agar dapat diakses dan diolah melalui program yang
menggunakan metode Algoritma Genetika sehingga nantinya akan
menghasilkan output sesuai dengan yang diinginkan. Hasil dari
proses tersebut akan diserahkan kembali ke bagian Kesiswaan agar
selanjutnya dapat digunakan. 3.1.1. Blok Diagram Sistem
Dari konfigurasi sistem tersebut di atas, proses Algoritma
Genetika diperlukan dalam penyusunan Jadwal Pelajaran SMU Negeri I
Mojoagung. Dimana dalam proses tersebut dibutuhkan data yang
meliputi jumlah kelas, pelajaran dan guru pengajar.
Dalam proses penyusunan Jadwal Pelajaran SMU akan dilakukan
perhitungan terhadap kelas yang ada dan jumlah pelajaran yang
diterima oleh masing-masing kelas beserta guru pengajarnya.
Penjelasan diatas dapat dilihat pada gambar 3.3.
INPUT DATA PELAJARAN DATABASE
ALGORITMA GENETIKA
OUTPUT JADWAL PELAJARAN
BAGIAN KESISWAAN
-
Bab III. Perencanaan Dan Pembuatan Sistem 25
KELAS MENGHITUNG KELASMENYESUAIKAN
DATA PELAJARAN
BAGIAN KESISWAAN
Jadwal Pelajaran
Gambar 3.3 Blok Diagram Sistem
Dari proses yang telah dijelaskan di atas, dalam menyusun
Jadwal Pelajaran SMU haruslah sesuai dengan persyaratan yang
telah disebutkan sebelumnya. Yang nantinya persyaratan tersebut
dapat dijadikan sebagai fungsi fitness dari algoritma genetika yang
akan diproses. 3.1.2. Entity Relationship Diagram (ERD)
Dari blok diagram sistem yang telah dibuat, berikutnya akan
disusun ERD yang sesuai dengan sistem yang akan dibuat. Dalam ERD
tersebut terdapat 2 entitas dengan masing-masing atribut seperti
pada gambar 3.4.
Gambar 3.4 ER Diagram
Dari ER Diagram yang telah dibuat diatas, akan didapatkan 3
tabel dengan 2 tabel murni yang mewakili tiap entitas dan 1
tabel yang
-
Bab III. Perencanaan Dan Pembuatan Sistem 26 menghubungkan
relasi antara tabel Kelas dan pelajaran. Rincian tentang nama field
dan tipe data yang akan digunakan dapat dilihat pada tabel 3.1
sampai tabel 3.3 .
1. Kelas
Tabel 3.1 Properties Tabel Kelas Nama Field Tipe Data
Nama Tingkat
Number (Integer) Primary Key Text (25) Primary Key
2. Pelajaran
Tabel 3.2 Properties Tabel Pelajaran Nama Field Tipe Data
kode_pelajaran mata_pelajaran guru
Number (Integer) Primary Key Text (50) Text (50)
3. Pelajaran_Kelas
Tabel 3.3 Properties Tabel Pelajaran_Kelas Nama Field Tipe Data
Kelas tingkat kpelajaran jam
Number (Ineteger) Primary Key Text (25) Primary Key Number
(Integer) Primary Key Number (Integer)
Pada tabel Pelajaran, setiap mata pelajaran mempunyai kode yang
unik sesuai dengan guru pengajarnya. Setiap mata pelajaran bisa
mempunyai lebih dari satu kode jika dibawakan lebih dari satu
pengajar. Untuk lebih jelasnya dapat dilihat pada gambar 3.6. 3.2
Pembuatan Sistem Adapun untuk pembuatan sistem yang telah dilakukan
melibatkan tiga elemen yaitu database, GUI, dan program. Database
yang akan dibuat menggunakan MS.Access 2000 dan bahasa pemrograman
Java untuk program yang akan dibuat. Untuk lebih jelasnya akan
dijelaskan di bawah ini.
-
Bab III. Perencanaan Dan Pembuatan Sistem 27
3.2.1 Database Sesuai dengan ERD yang telah dibuat, database
yang akan dibuat terdiri dari 3 tabel ( Kelas, pelajaran dan
Pelajaran_Kelas ), relationship antar tabel dan satu query yang
nantinya dibutuhkan untuk mencari guru yang mengajar mata pelajaran
tertentu. Database tersebut nantinya akan diberi nama data. 3.2.1.1
Tabel Sesuai dengan ERD yang telah dibuat, terdapat 2 tabel yaitu
tabel Kelas, pelajaran dan 1 tabel tambahan yaitu tabel
Pelajaran_Kelas untuk menghubungkan tabel Kelas dan tabel
pelajaran.
Gambar 3.5. Tabel Kelas
-
Bab III. Perencanaan Dan Pembuatan Sistem 28
Gambar 3.6. Tabel pelajaran
-
Bab III. Perencanaan Dan Pembuatan Sistem 29
Gambar 3.7. Tabel Pelajaran_Kelas
3.2.1.2 Relationship Untuk menghubungkan tabel-tabel yang akan
dibuat tersebut diperlukan adanya relationsip yang dapat dilihat
pada gambar 3.5.
KELAS MENGAMBIL PELAJARAN1 M M 1
Gambar 3.8 Relationship dari database data
Penjelasan dari relationship pada gambar 3.8 adalah sebagai
berikut : 1. Setiap kelas bisa mengambil satu atau lebih mata
pelajaran.
-
Bab III. Perencanaan Dan Pembuatan Sistem 30 2. Setiap mata
pelajaran bisa diambil oleh satu kelas atau lebih. 3.2.2. Graphic
User Interface ( GUI )
Pada aplikasi ini hanya terdapat satu form sebagai halaman depan
saja.
3.2.2.1 Form Pada form sebagai halaman depan di bawah ini
terdapat 2 sub menu yaitu :
1. Menu Proses Pada menu proses terdapat dua submenu algoritma
genetika yang meminta user untuk menginputkan parameter algoritma
genetika dan Grafik Fitness yang menampilkan grafik dari fitness
maksimum dari setiap generasi.
2. Menu About Pada Menu About akan menampilkan keterangan dari
Tugas Akhir itu sendiri.
Gambar 3.9 Form halaman depan
-
Bab III. Perencanaan Dan Pembuatan Sistem 31 3.2.2.2 Menu
Proses
Gambar 3.10 Menu Proses
Terdapat dua sub menu dalam menu Proses yaitu algoritma genetika
dan grafik fitness. Pada sub menu algoritma genetika user diminta
untuk menginputkan 4 nilai parameter seperti yang tampak pada
gambar 3.11, antara lain : 1. Input Jumlah Populasi 2. Input Jumlah
Generasi 3. Input Probabilitas Crossover 4. Input Probabilitas
Mutasi Pada sub menu grafik fitness akan menampilkan grafik fitness
maksimum dari tiap generasi.
-
Bab III. Perencanaan Dan Pembuatan Sistem 32
Gambar 3.11 Form masukan
3.2.2.3 Menu About
Gambar 3.12 Form About
-
Bab III. Perencanaan Dan Pembuatan Sistem 33 Pada saat menu item
About di klik maka akan ditampilkan form keterangan dari Tugas
Akhir tersebut, seperti yang tampil pada gambar di bawah ini.
Gambar 3.13 Form Keterangan
3.2.3. Koneksi Database Dalam proyek akhir ini database yang
digunakan menggunakan MS-Access 2000. Untuk mengakses database
MS-Access, dalam hal ini JDBC memerlukan Driver yang menjembatani
Aplikasi dengan ODBC (Open Database Connectivy) yang ada di
lingkungan Microsoft Windows.
Untuk mengaktifkan hubungan antar aplikasi dan database, maka
sebuah connection harus dibentuk dengan menggunakan JDBC Driver.
Connection dibentuk melalui 1 class java.sql.DriverManager dan 2
interface, yaitu java.sql.Driver dan java.sql.Connection. Class
untuk JDBC diakses melalui java.sql.* .
Connectioncon;Stringdatabase=jdbc:odbc:data;Stringusername=;Stringpassword=;try{
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
-
Bab III. Perencanaan Dan Pembuatan Sistem 34
con=DriverManager.getConnection(database,,);}catch(ClassNotFoundExceptionex){
ex.printStackTrace(); System.exit(1);}catch(SQLExceptionex){
System.err.println(TidakberhasilkoneksidenganDatabase);
System.exit(1);} Class.forName(nama_driver) Loading driver, artinya
koneksi akan dibuat dengan menggunakan jalur dari driver tersebut.
DriverManager.getConnection(url, username, passwd) Menghubungkan
aplikasi dengan nama database yang akan diakses, dilengkapi dengan
otentifikasi berupa nama user dan password. Hasil dari metoda
getConnection() memberikan variable yang dapat digunakan untuk
mengakses database melalui instruksi SQL.
Connectioncon;......con=DriverManager.getConnection(dbname,username,password);
Akses ke Driver dan DriverManager dapat menyebabkan Exception yang
harus dikendalikan oleh program. Try{...
-
Bab III. Perencanaan Dan Pembuatan Sistem 35
...}catch(ClassNotFoundExceptionex){
System.err.println(Drivererror);Ex.printStackTrace();System.exit(1);
}catch(SQLExceptionex){
System.err.println(Unabletoconnect);System.exit(1);
} Sebelum dapat mengakses Database pada Windows, maka
ODBC-Driver harus dipersiapkan lebih dahulu. Caranya : tekan
Control Panel Performance and MaintenanceAdministrative ToolsData
Source (ODBC)
Gambar 3.14 Data Source (ODBC)
3.2.4. Program Adapun implementasi dari Algoritma Genetika dalam
program adalah :
-
Bab III. Perencanaan Dan Pembuatan Sistem 36 3.2.4.1. Individu /
Kromosom Individu yang digunakan dalam proses pembuatan Jadwal
Pelajaran terdiri dari 2904 ( 12C2 x 44 jumlah jam pelajaran) gen
dengan setiap gen mewakili mata pelajaran tertentu dan guru yang
mengajar yang dinyatakan dalam suatu kode dalam bentuk integer.
Pendefinisian individu adalah sebagai berikut :
publicclassSelectextendsJFrame{privateConnectioncon;privateStatementsmtn;privateResultSetrs;privateintindividu[][][]=newint[20][20][44];privateintinduk[][][]=newint[20][20][44];
privateintanak[][][]=newint[20][20][44];Select()
{smtn=null;rs=null; con=null;
}publicvoiddbopen()
{Stringdatabase=jdbc:odbc:data;Stringusername=;Stringpassword=;Stringkelas[]=newString[20];Stringtingkat[]=newString[20];inti=0;try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);con=DriverManager.getConnection(database,,);Vectorvector=newVector();Vectorvector1=newVector();Vectorvector2=newVector();
-
Bab III. Perencanaan Dan Pembuatan Sistem 37
Vectorvector3=newVector();if(con==null){System.out.println(Koneksikedatabasegagal);}else{System.err.println(Koneksikedatabaseberhasil);}smtn=con.createStatement();StringSQL=SELECTKelas.*FROMKelas;rsKelas=smtn.executeQuery(SQL);while(rsKelas.next()){i=rsKelas.getRow();kelas[i1]=rsKelas.getString(Nama);tingkat[i1]=rsKelas.getString(Tingkat);}
}catch(ClassNotFoundExceptionex){
ex.printStackTrace();
System.exit(1);}catch(SQLExceptionex){System.err.println(TidakberhasilkoneksidenganDatabase);System.exit(1);}finally{try{if(rs==null){rs.close();}
-
Bab III. Perencanaan Dan Pembuatan Sistem 38
if(smtn==null){smtn.close();}if(con==null){con.close();}
}catch(SQLExceptionsqlexception){
sqlexception.printStackTrace();}}} 3.2.4.2. Fitness Fitness dari
Jadwal pelajaran SMU dilakukan dengan menghitung jumlah pelajaran
dan guru yang mengajar dalam satu waktu di kelas yang berbeda atau
kres (a). Terdapat tiga fungsi fitness yaitu fitness , fitnessInduk
dan fitnessAnak. Dimana ketiganya mempunyai algoritma yang sama.
Rumusnya adalah sebagai berikut :
Fitness=1/(a+e)Keterangan : a= jumlah pelajaran yang mengalami
kress e=bilangan kecil (0.00001)
Algoritma yang digunakan untuk menghitung a adalah : 3. m 0;
selama m < (populasi) kerjakan baris 2-9 4. n 0 ; selama n <
(session) kerjakan baris 3-8 5. o1 0 ; selama o1 < jumlahKelas-1
kerjakan baris 4-7 6. o2 0 ; selama o2 < jumlahKelas+1 kerjakan
baris 5 7. jika individu[m][o1][n] = individu[m][o2][n] maka
fitness=fitness+1 8. o2 = o2 + 1 9. o1 = o1+1 10. n = n+1 11. m
= m+1
-
Bab III. Perencanaan Dan Pembuatan Sistem 39
12. a = fitness Keterangan: populasi = jumlah populasi sesuai
parameter input session = jumlah jam pelajaran masing-masing kelas
fitness = suatu variable yang akan bertambah satu jika terjadi
mata
pelajaran yang kres
3.2.4.3. Proses Algoritma Genetika Adapun proses algoritma
genetika yang dilakukan setelah mendefinisikan individu dan
fitnessnya adalah membangkitkan populasi awal, menghitung nilai
fitness tiap individu, melakukan seleksi, crossover, mutasi, dan
elitism. Lebih jelasnya akan dijelaskan dibawah ini : 1.
Membangkitkan Populasi Awal Dari pendefinisian individu yang telah
dilakukan diatas,
selanjutnya, proses Algoritma Genetika pertama yang dilakukan
adalah membangkitkan N individu sesuai dengan jumlah individu (N)
yang dimasukkan oleh user 2904 gen dalam bentuk integer dari Jadwal
Pelajaran SMU yang dibangkitkan secara acak.
Algoritma pembangkitan populasi awal untuk Jadwal Pelajaran
adalah: 1. m 0, selama m < (populasi) kerjakan baris 2 - 8 2. i
0, selama i < (kelas) kerjakan baris 3 - 7 3. j 0, selama j <
(session) kerjakan baris 4 - 6 4. n = Acak (jumlah record dari
tabel Pelajaran_Kelas) 5. pelajaran ( m,i,j ) = baris ke-n dari
tabel Pelajaran_kelas 6. j = j+1 7. i = i+1 8. m = m+1 Berikut
merupakan coding untuk membangkitkan populasi awal pada jadwal
pelajaran sesuai dengan algoritma di atas. for(intm=0;m
-
Bab III. Perencanaan Dan Pembuatan Sistem 40
for(intj=0;j
-
Bab III. Perencanaan Dan Pembuatan Sistem 41
Enumerationenumeration1=vector3.elements();while(enumeration.hasMoreElements()){Strings6=enumeration.nextElement().toString();Strings7=enumeration1.nextElement().toString();}booleanflag=false;intai[]=newint[44];intj1=0;for(intk1=0;k1
-
Bab III. Perencanaan Dan Pembuatan Sistem 42
Strings8=enumeration2.nextElement().toString();Strings9=enumeration3.nextElement().toString();if(i2!=i1)continue;k2=Integer.parseInt(s9);i3=Integer.parseInt(s8);break;}for(inti4=0;i4
-
Bab III. Perencanaan Dan Pembuatan Sistem 43
{System.out.print(individu[m][j][l2+7]);System.out.print();}System.out.println();System.out.print(Rabu|);System.out.print();for(intj3=0;j3
-
Bab III. Perencanaan Dan Pembuatan Sistem 44
System.out.print();for(intj4=0;j4
-
Bab III. Perencanaan Dan Pembuatan Sistem 45
}}}System.out.print(JumlahkresIndividuke);System.out.print(m+1);System.out.print(=);System.out.println(fit);fitnes[m]=(1/(fit+e));System.out.print(FitnessIndividuke);System.out.print(m+1);System.out.print(=);System.out.println(fitnes[m]);if(fitnes[m]>maks){maks=fitnes[m];index=m;}}System.out.println(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~);System.out.print(FitnesMaksimum:);System.out.println(maks);System.out.print(Indexke);System.out.println(index);returnfitnes;}
3. Seleksi Proses ini menyeleksi N individu yang bisa dijadikan
induk untuk
proses selanjutnya dengan metode roulette wheel yaitu
membangkitkan bilangan random sebanyak jumlah fitness dan memilih
individu tersebut sebagai induk berdasarkan nilai fitness yang
terpilih. Jadi, proses yang dilakukan adalah :
-
Bab III. Perencanaan Dan Pembuatan Sistem 46 Menghitung total
fitness dari populasi yang telah dibangkitkan Memberikan nilai 1
untuk angka 1 sampai dengan nilai fitness
dari individu pertama, nilai 2 untuk angka dari nilai fitness
individu pertama sampai nilai fitness individu kedua dan seterusnya
hingga individu terakhir.
Membangkitkan bilangan acak dari 1 sampai dengan total fitness
dan menggunakan individu yang mempunyai nilai fitness sama dengan
hasil bilangan acak tersebut sebagai induk.
Algoritma dari proses seleksi yang digunakan adalah : 1.
JumFitnes = jumlahFitness( generasi ke a ) 2. o = 0 3. m 0, selama
m< (populasi) kerjakan baris 4 - 8 4. prosen = 100 * (fitness[m]
/ JumFitnes) 5. n 0, selama n
-
Bab III. Perencanaan Dan Pembuatan Sistem 47
intprosen;intpilih;fitnes=fitness();for(intm=0;m
-
Bab III. Perencanaan Dan Pembuatan Sistem 48
2. r2 = Acak (jumlah jam pelajaran) 3. dummy = anak (m, i, j) 4.
anak (m, i, j+r1) = anak (m, i, (r1+(r2 - j))) 5. anak (m, i,
(r1+(r2 - j))) = dummy Berikut merupakan coding crossover sesuai
dengan algoritma di atas :
publicvoidCross(){doubleprobCO=0.9;intdummy;intr1,r2;for(intm=0;m
-
Bab III. Perencanaan Dan Pembuatan Sistem 49
Gambar 3.16. Ilustrasi Mutasi
Algoritma proses mutasi untuk Jadwal Pelajaran adalah :
1. m 0, selama m < (populasi) kerjakan baris 2 - 11 2. i 0,
selama i < (kelas) kerjakan baris 3 - 10 3. p = Acak ( 0 sampai
1) 4. jika p < probMut maka : 5. r1 = Acak(jumlah jam pelajaran)
6. r2 = Acak(jumlah jam pelajaran) 7. a = anak (m, i, r1 ) 8.
anak(m, i, r1 ) = anak (m, i, r2 ) 9. anak(m, i, r2 ) = a 10. i = i
+ 1 11. m = m + 1 Berikut merupakan coding dari algoritma di atas :
publicvoidMutation(){doubleprobMut=0.1;intr1,r2;inta;for(intm=0;m
-
Bab III. Perencanaan Dan Pembuatan Sistem 50
}}}
6. Elitism
Proses elitism ini dilakukan untuk mempertahankan individu
terbaik dari setiap generasi. Proses yang dilakukan adalah
menggantikan individu terburuk dari generasi yang baru dengan
individu terbaik dari generasi sebelumnya, dengan syarat bahwa
individu yang menggantikan tersebut lebih baik dari yang digantikan
. Algoritma dari proses elitism untuk Jadwal Pelajaran adalah : 1.
fitnessmin = fitnessmin (generasi ke- i) 2. fitnessmaks =
fitnessmaks (generasi ke- i + 1) 3. m 0 , selama m < (populasi)
, kerjakan baris 4 - 5 4. Jika fitnesInduk(m) < fitnessmin maka
fitnessmin =
fitnesInduk(m) 5. m = m+ 1 6. m 0 , selama m < (populasi),
kerjakan baris 7 - 8 7. Jika fitnesAnak(m) > fitnessmaks maka
fitnessmaks =
fitnesAnak(m) 8. m = m+1 9. i 0, selama i < jumlah kelas ,
kerjakan baris 10 - 13 10. j 0, selama j < jumlah jam pelajaran,
kerjakan baris 11 -12 11. induk(min, i, j) = anak (maks, i, j ) 12.
j = j + 1 13. i = i + 1 Berikut coding berdasarkan algoritma
elitism di atas :
publicvoidElitism(){intfitnessmin=0;intfitnessmaks=0;intmin=1,maks=1;intfitnesAnak[]=newint[100];intfitnesInduk[]=newint[100];fitnesInduk=fitnessInduk();for(intm=0;m
-
Bab III. Perencanaan Dan Pembuatan Sistem 51
fitnessmin=fitnesInduk[m];min=m;}}fitnesAnak=fitnessAnak();for(intm=0;mfitnessmaks){fitnessmaks=fitnesAnak[m];maks=m;}}//menggantianakyangmemilikifitnesterkecildenganindividuawalyangmemilikifitnesterbesarfor(inti=0;i
-
Bab III. Perencanaan Dan Pembuatan Sistem 52
----------Halaman ini sengaja dikosongkan------------
-
53
BAB IV PENGUJIAN PROGRAM DAN
ANALISA
4.1 Hasil Running Program Tampilan yang dihasilkan dari program
dalam proyek akhir ini berupa form seperti yang telah dijabarkan
pada bab sebelumnya. Tampilan pada saat pertama kali program
dijalankan adalah Form Halaman Depan ang dapat dilihat pada gambar
4.1. Form ini hanya berisi dua menu yaitu Proses Algoritma Genetika
dan About tentang keterangan dari program tersebut.
Gambar 4.1 Form Halaman Depan Dua menu utama tersebut akan
dijelaskan lebih lanjut di bawah ini :
-
Bab IV. Pengujian Program Dan Analisa 54
4.1.1 Menu Proses Pada menu Proses ini akan melakukan proses
Algoritma Genetika pada Penyusunan Jadwal Pelajaran di SMU. Pada
saat menu Proses diklik maka akan muncul kotak dialog yang meminta
user untuk memilih dua sub menu, algoritma genetika dan grafik
fitness. Pada sub menu algoritma genetika, user diminta untuk
memberikan inputan pada empat parameter.
Gambar 4.2 Menu Proses
Empat parameter tersebut antara lain : 1. Menginputkan banyaknya
jumlah populasi yang ingin dibangkitkan
dari suatu individu. 2. Menginputkan banyaknya jumlah generasi
yang diinginkan oleh
user sehingga nantinya akan dihasilkan Jadwal Pelajaran SMU. 3.
Menginputkan besarnya probabilitas crossover untuk menentukan
terjadinya crossover pada suatu individu. 4. Menginputkan
besarnya probabilitas mutasi yang menentukan
sering tidaknya terjadi suatu mutasi pada suatu individu.
-
Bab IV. Pengujian Program Dan Analisa 55
Gambar 4.3 Menentukan inputan
Setelah memberikan masukan seperti di atas, ketika tombol OK di
klik maka akan dilakukan serangkaian proses Algoritma Genetika pada
penyusunan jadwal pelajaran SMU yang terdiri dari : 1.
Membangkitkan populasi awal yang dilakukan secara acak.
Hasilnya adalah sebagai berikut :
-
Bab IV. Pengujian Program Dan Analisa 56
-
Bab IV. Pengujian Program Dan Analisa 57
-
Bab IV. Pengujian Program Dan Analisa 58
Gambar 4.4 Pembangkitan populasi awal
-
Bab IV. Pengujian Program Dan Analisa 59 Yang diacak adalah kode
mata pelajaran yang diambil dari tabel Pelajaran_Kelas untuk
tiap-tiap kelas ( kelas 1 , 2 dan 3). Dihasilkan sebanyak 10
populasi individu pada setiap generasi. Gambar di atas merupakan
contoh dari satu generasi.
2. Menghitung Nilai Fitness pada tiap-tiap individu Tabel 4.1
Nilai Fitness
Generasi Nilai Fitness Maksimum 1 0.0018622 2 0.00186567 3
0.00187617 4 0.0018797 5 0.0018797 6 0.00190476 7 0.00190476 8
0.00190114 9 0.00192308
10 0.00193798
Grafik Fitness
0.001820.001840.001860.001880.0019
0.001920.001940.00196
1 2 3 4 5 6 7 8 9 10
Generasi
Fitn
ess
Mak
sim
um
Gambar 4.5. Grafik Fitness
-
Bab IV. Pengujian Program Dan Analisa 60 3. Algoritma Genetika
dengan Parameter Tertentu
Dilakukan percobaan dengan memperhatikan perubahan hasil fitness
maksimum individu sesuai dengan parameter yang diberikan, yaitu
jumlah populasi, jumlah generasi, nilai probabilitas crossover dan
mutasi yang akan ditunjukkan pada tabel 4.2.
Tabel 4.2 Hasil Percobaan jadwal Pelajaran SMU
Jumlah Populasi
Jumlah Generasi
Probabilitas Crossover
Probabilitas Mutasi
Fitness Maksimum
Kress
0.05 0.001916 522 0.1 0.001901 526
10 0.15 0.001905 525 0.05 0.001934 517 0.1 0.001908 524
20 0.15 0.001912 523 0.05 0.001908 524 0.1 0.001901 526
30 0.7 0.15 0.001908 524 0.05 0.001923 520 0.1 0.001905 525
10 0.15 0.001916 522 0.05 0.001916 522 0.1 0.001905 525
20 0.15 0.001923 520 0.05 0.001923 520 0.1 0.001923 520
30 0.8 0.15 0.001923 520 0.05 0.001905 525 0.1 0.001923 520
10 0.15 0.001931 518 0.05 0.001905 525 0.1 0.001919 521
20 0.15 0.001942 515 0.05 0.001916 522 0.1 0.001919 521
10 30 0.9 0.15 0.001919 521 0.05 0.001919 521 20 10 0.7 0.1
0.001919 521
-
Bab IV. Pengujian Program Dan Analisa 61 0.15 0.001923 520 0.05
0.001934 517 0.1 0.001919 521
20 0.15 0.001919 521 0.05 0.001919 521 0.1 0.001919 521
30 0.15 0.001934 517 0.05 0.001919 521 0.1 0.001916 522
10 0.15 0.001916 522 0.05 0.001919 521 0.1 0.001923 520
20 0.15 0.001926 519 0.05 0.001916 522 0.1 0.001965 509
30 0.8 0.15 0.00198 505 0.05 0.001937 516 0.1 0.001934 517
10 0.15 0.001934 517 0.05 0.001919 521 0.1 0.001931 518
20 0.15 0.001937 516 0.05 0.001916 522 0.1 0.002016 496
30 0.9 0.15 0.001976 506 Pada kasus penyusunan jadwal pelajaran
SMU hanya memakai satu nilai fitness yaitu mencari guru yang berada
dalam dua ruang yang berbeda dalam satu jam pelajaran yang sama.
Hasil fitness ini dapat berubah ubah pada saat program dijalankan
kembali, sehingga nilai tersebut di atas bukanlah nilai tetap.
-
Bab IV. Pengujian Program Dan Analisa 62 4. Hasil jadwal
pelajaran SMU
Gambar 4.6 Jadwal Pelajaran
Pada sub menu grafik fitness akan menampilkan grafik fitness
maksimum dari setiap generasi.
-
Bab IV. Pengujian Program Dan Analisa 63
Gambar 4.7 Grafik Fitness2
4.2 Analisa Hasil Program
Pada hasil jadwal pelajaran SMU, didapatkan bahwa individu akan
semakin baik pada nilai probabilitas crossover dan mutasi yang
lebih besar, tetapi tidak didapatkan perubahan / perbedaan yang
terlalu besar diantara tiap-tiap individu. Waktu yang diperlukan
untuk melakukan proses tergantung pada besar kecilnya parameter
yang diinputkan, jika generasi ditambah, maka waktu yang diperlukan
akan bertambah juga, tetapi tidak sebanyak waktu yang diperlukan
pada saat jumlah populasinya yang diproses juga bertambah. Hal ini
diakibatkan karena penambahan jumlah populasi akan menyebabkan
penambahan juga pada seluruh proses dalam algoritma genetika itu
sendiri, sedangkan penambahan jumlah generasi hanya berpengaruh
pada beberapa kali proses algoritma genetika yang dilakukan.
Program ini terbatas hanya mempunyai jumlah gen yang tetap
sesuai dengan jumlah ruang kelas dan jam pelajaran yang ada yaitu
12 kelas dengan 44 jumlah jam pelajaran pada masing masing kelas
dalam satu minggunya, perubahan yang dilakukan akan memerlukan
perubahan pada program dasarnya. Diharapkan hal tersebut bisa
dijadikan masukan untuk pengembangan software ini selanjutnya.
Sedangkan input user yang terdapat pada program ini adalah jumlah
generasi, populasi, probabilitas crossover dan probabilitas mutasi.
Nilai probabilitas crossover dan mutasi berkisar antara 0 sampai
dengan 1.
-
Bab IV. Pengujian Program Dan Analisa 64
------------Halaman ini sengaja dikosongkan-------------
-
65
BAB V PENUTUP
5.1. Kesimpulan Dari hasil analisa yang telah dilakukan pada bab
sebelumnya, dapat diambil beberapa poin kesimpulan sebagai berikut
: 1. Algoritma genetika dapat digunakan untuk mengoptimalkan
penyusunan jadwal pelajaran SMU Negeri Mojoagung dibandingkan
dengan cara manual.
2. Pada proses pembangkitan populasi tidak ditemukan masalah
yang terlalu besar karena dengan metode acak yang mengandung
persyaratan di dalamnya sudah didapatkan populasi yang beragam atau
bisa dikatakan cukup bagus.
3. Dengan algoritma genetika didapatkan nilai fitness yang
semakin membaik dalam setiap generasinya.
4. Dalam mengoptimalkan penyusunan jadwal pelajaran diperlukan
empat parameter antara lain jumlah populasi, jumlah generasi, nilai
probabilitas crossover dan mutasi. Besar kecilnya masing-masing
perameter sangat mempengaruhi jadwal pelajaran yang dihasilkan.
Semakin besar nilai parameternya maka semakin baik pula nilai
fitness yang dihasilkan atau jadwal pelajaran yang dihasilkan
semakin optimal.
5. Kelebihan dari metode algoritma genetika adalah terletak pada
pendefinisian fitness yang beragam dan dapat ditambah dengan syarat
syarat yang diinginkan sebagai tambahan fungsi fitness.
5.2. Saran
Untuk pengembangan system yang telah dibuat, maka diperlukan
saran yang dapat membantu proses tersebut, diantaranya adalah : 1.
Dilakukan pengembangan terhadap operator yang ada untuk
mengoptimalkan metode Algoritma Genetika yang digunakan sehingga
dapat menghasilkan jadwal pelajaran SMU dengan lebih optimal.
-
Bab V. Penutup 66 2. Metode yang telah digunakan dapat
diaplikasikan untuk
permasalahan penjadwalan yang lainnya, seperti halnya jadwal
kuliah dengan data yang kompleks juga.
-
xii
DAFTAR PUSTAKA
[ 1] Gen, Mitsuo and Runwei Cheng, Genetic Algoritm and
Engineering Design, John Wiley & Sons Inc, New York,
1997
[ 2 ] , The Hitch-Hikers Guide to Evolutionary Computation,
ftp://rtfm.mit.edu/pub/usenet/news. answer/ai_faq/genetic/
[ 3 ] Khoiriyah, Shulhu, 2004, Penjadwalan Ujian Akhir Semester
dengan Algoritma Genetika, PENS-ITS, Surabaya
[ 4 ] http://www.IlmuKomputer.com [ 5 ] Budi Sukmawan,Sekilas
tentang Algoritma Genetika dan
Aplikasinya pada Optimasi Jaringan Pipa Air Bersih,
http://bimacipta.tripod.com/, Desember 2003
-
BIODATA
Nama : Ira Lia Agustina Tempat,tanggal lahir : Jombang, 29 Mei
1985 Alamat : Sumobito, Jombang Telepon : - 0856-48616858 -
081-332574661 Hobi : Membaca Motto : Failure is efficacy which
delay
Riwayat Pendidikan : RA Perwanida , tahun 1990-1991 SDN I Kedung
Papar, tahun 1991-1997 SLTP Negeri 1 Sumobito, tahun 1997-
2000 SMU Negeri Mojoagung, tahun 2000-
2003 Politeknik Elektronika Negeri Surabaya-
ITS, jurusan Teknologi Informasi tahun 2003- 2006.
Penulis telah mengikuti Seminar Proyek Akhir pada tanggal 2
Agustus 2006, sebagai salah satu persyaratan untuk memperoleh Gelar
Ahli Madya (A.Md)