Upload
independent
View
1
Download
0
Embed Size (px)
Citation preview
Implementasi Algoritma Genetika Paralel
Untuk Penyusunan Jadwal Pelajaran ( Studi Kasus : Sekolah Menengah Kejuruan Nurul Jadid )
Proposal Skripsi
Diajukan Sebagai Tugas Besar Untuk Mata Kuliah
Komputasi Paralel
Oleh :
Hendra Dwi Saputra
1210652030
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH JEMBER
2 0 1 4
i
ABSTRAK
Implementasi Algoritma Genetika Paralel Untuk Penyusunan Jadwal Pelajaran
(Studi Kasus : Sekolah Menengah Kejuruan Nurul Jadid)
Penelitian ini bertujuan memberikan solusi dalam penyusunan jadwal pelajaran yang
berbasis Komputasi Paralel dengan memanfaatkan Algoritma Genetika menggunakan
Bahasa C dan Pustaka OpenMP. Hal ini bertujuan untuk membantu pihak sekolah agar
lebih mudah dan lebih dini dalam penyusunan jadwal pelajaran sehingga dapat
mendukung kegiatan belajar mengajar (KBM) lebih baik daripada menggunakan cara
konvensional.
Algoritma Genetika adalah algoritma untuk optimasi pencarian yang areanya sangat besar
berbasiskan populasi. Sejumlah data direpresentasikan ke dalam individu dan setiap
atribut datanya dikumpulkan menjadi kromosom. Nantinya setiap individu (induk)
dikawinkan dengan individu yang lain yang akan menghasilkan individu yang baru.
Individu baru (anak) kemudian dikenai fungsi fitness (kesesuaian) dimana individu (anak)
yang tidak sesuai fungsi fitness tersebut maka akan dibuang dalam tahap evolusi. Untuk
menciptakan solusi-solusi individu yang lebih baik dan beragam maka dapat juga dikenai
operator genetika yaitu mutasi (mutation) dan tukar-silang (crossover). Hal ini terus diulang
hingga menemukan solusi terbaik dari suatu permasalahan. Algoritma genetika ini merupakan
bagian dari algoritma evolusi yang berbasiskan teori evolusi (Darwin). Tentunya, algoritma
genetika ini tidak dapat menyelesaikan semua permasalahan mengganti cara konvensional, ada
beberapa permasalahan yang justru hanya dapat diselesaikan dengan cara konvensional.
Hasil yang diharapkan dari penelitian ini adalah (1) dapat membuat aplikasi menggunakan
bahasa C dan pustaka OpenMP yang berfungsi untuk membuat jadwal pelajaran bagi sekolah,
dan (2) memanfaatkan perangkat komputer yang berbasiskan multicore processor yang dimiliki
oleh pihak sekolah agar lebih efisien dan maksimal dalam menyelesaikan pekerjaan-pekerjaan
di sekolah yang salah satunya adalah penjadwalan mata pelajaran.
Kata Kunci : Penjadwalan, Komputasi Paralel, Algoritma Genetika, C, OpenMP
ii
DAFTAR ISI
Abstrak ............................................................................................................ i
Daftar Isi ........................................................................................................ ii
Daftar Tabel ............................................................................................................. iii
Daftar Gambar ......................................................................................................... iv
Bab I – Pendahuluan ............................................................................................... 1
1.1. Latar Belakang ...................................................................................... 1
1.2. Rumusan Masalah ................................................................................. 2
1.3. Tujuan Penelitian ................................................................................... 2
1.4. Batasan Masalah .................................................................................... 2
1.5. Manfaat Penelitian ................................................................................. 2
Bab II - Landasan Teori .......................................................................................... 4
2.1. Pengertian Algoritma Genetika ............................................................. 4
2.2. Teknik Penggunaan Algoritma Genetika .............................................. 5
2.3. Pseucode Algoritma Genetika ............................................................... 7
2.4. Pemrograman Paralel dengan OpenMP ................................................. 7
Bab III - Metodologi Penelitian ............................................................................... 13
3.1. Tempat dan Waktu Penelitian ............................................................... 13
3.2. Alat dan Bahan ...................................................................................... 13
3.3. Metodologi Penelitian ........................................................................... 14
3.4. Jadwal Penelitian ................................................................................... 17
Daftar Pustaka ......................................................................................................... 18
iii
DAFTAR TABEL
Tabel 3.1 - Jadwal Penelitian ..................................................................................... 17
iv
DAFTAR GAMBAR
Gambar 2.1 - Contoh penggunaan algoritma genetika ............................................... 6
Gambar 2.2 - Ekstensi bahasa OpenMP ..................................................................... 8
1
BAB I
PENDAHULUAN
1. 1. Latar Belakang
Di semua sekolah baik sekolah dasar maupun sekolah menengah, agar
kegiatan belajar mengajar (KBM) dapat berjalan dengan baik maka hal yang perlu
disusun pertama kali adalah jadwal pelajaran. Jadwal Pelajaran adalah jadwal yang
mengatur seorang guru untuk mengajar mata pelajaran pada jam/hari tertentu di
ruangan kelas yang ditentukan oleh bagian kurikulum di sekolah tersebut. Dalam
penyusunan jadwal pelajaran di sekolah biasanya menggunakan aplikasi
spreadsheet (seperti excel) yang mengalokasikan jam pelajaran untuk guru
mengajar di suatu kelas dengan cara manual, yaitu memasangkan dan mengisi
kekosongan jam pelajaran untuk guru dan kelas yang masih belum mendapatkan
jam pelajaran. Guru yang mengajar di jam dan kelas tertentu tidak boleh
mendapatkan jadwal pada jam yang sama di kelas yang berbeda. Selain itu, dalam
waktu dan kelas yang sama yang diisi oleh seorang guru, tidak boleh diisi oleh guru
yang berbeda. Sehingga memungkinkan di dalam jadwal pelajaran yang dibuat
tidak ada guru yang bentrok jam mengajarnya dalam satu periode mengajar (dalam
suatu kelas pada jam yang sama).
Solusi permasalahan penjadwalan pelajaran ini dapat menggunakan algoritma
genetika. Algoritma Genetika adalah algoritma optimasi yang menyelesaikan
permasalahan dengan analogi seleksi alam (teori Darwin) berbasiskan populasi.
Untuk lebih meningkatkan dan mepercepat penyusunan jadwal pelajaran
menggunakan algoritma genetika ini, maka kita gabungkan dengan pemrograman
paralel dimana setiap instruksi dan proses di dalam komputer dilaksanakan oleh
beberapa (inti) processor sehingga lebih cepat dalam komputasinya. Dikarenakan
hampir seluruh teknologi yang digunakan di dalam komputer (baik itu PC, laptop
ataupun mobile) yang ada di sekolah saat ini telah mendukung multicore processor,
maka hal ini dapat diimplementasikan dengan mudah tanpa perlu membeli alat baru
dan memaksimalkan kinerja dari perangkat-perangkat yang telah dimiliki oleh
sekolah tersebut.
2
1. 2. Rumusan Masalah
1) Faktor apa saja yang menjadi kendala dalam penyusunan jadwal ideal
menggunakan algoritma genetika pararel ?
2) Apakah penyusunan jadwal pelajaran dengan menggunakan algoritma genetika
paralel lebih cepat performanya daripada algoritma genetika ?
1. 3. Tujuan Penelitian
1.4.1. Tujuan Umum
Solusi permasalahan dari penyusunan jadwal pelajaran menggunakan
algoritma genetika di sekolah berbasis komputasi paralel dengan
pemrograman bahasa C dan pustaka OpenMP.
1.4.2. Tujuan Khusus
1) Mengembangkan desain dan analisa algoritma genetika paralel khusus
untuk penyusunan jadwal pelajaran di sekolah.
2) Membuat aplikasi penyusunan jadwal pelajaran otomatis berbasis
komputasi paralel menggunakan bahasa C dan pustaka OpenMP.
1. 4. Batasan Masalah
Penelitian ini tentang penyusunan Jadwal Pelajaran yang dilakukan di
Sekolah Menengah Kejuruan Nurul Jadid, Paiton - Probolinggo dengan memanfaat-
kan Algoritma Genetika Paralel berbasis komputasi menggunakan Bahasa
Pemrograman C dan Pustaka OpenMP.
1. 5. Manfaat Penelitian
Berdasarkan tujuan penelitian tersebut diharapkan dengan penelitian ini dapat
diperoleh manfaat sebagai berikut :
1.5.1. Bagi Penulis
1) Sebagai salah satu syarat untuk memperoleh gelar Strata Satu (S1) di
Program Studi Teknik Informatika Fakultas Teknik Universitas
Muhammadiyah Jember.
2) Dapat menerapkan ilmu-ilmu dan pengalaman yang telah didapat
selama menempuh kuliah seperti Komputasi Paralel, Pengenalan Pola,
Pemrogaman API, dan ilmu-ilmu lainnya.
3
1.5.2. Bagi Sekolah
1) Dapat menyusun jadwal pelajaran dengan lebih mudah dan cepat
berbasis komputasi untuk mendukung kinerja kurikulum.
2) Memaksimalkan dan memanfaatkan teknologi komputer yang dimiliki
oleh sekolah yang mendukung multicore processor.
.
4
BAB II
LANDASAN TEORI
2. 1. Pengertian Algoritma Genetika
Algoritma genetika adalah algoritma yang berusaha menerapkan pemahaman
mengenai evolusi alamiah pada tugas-tugas pemecahan-masalah (problem solving).
Pendekatan yang diambil oleh algoritma ini adalah menggabungkan secara acak
berbagai pilihan solusi terbaik di dalam suatu kumpulan untuk mendapatkan
genenasi solusi terbaik berikutnya yaitu pada suatu kondisi yang memaksimalkan
kecocokannya atau lazim disebut dengan fitness. Generasi ini akan mempresentasi-
kan perbaikan-perbaikan pada populasi awalnya. Dengan melakukan proses ini
secara berulang, algoritma ini diharapkan dapat mensimulasikan proses
evolusioner. Pada akhirnya, akan didapatkan solusi-solusi yang paling tepat bagi
permasalahan yang dihadapi.
Untuk menggunakan algoritma genetika, solusi permasalahan direpresentasi-
kan sebagai kromosom. Tiga aspek yang yang penting untuk penggunaan algoritma
genetika antara lain :
1. Definisi fitness function
2. Definisi dan implementasi reprentasi genetika
3. Definisi dan implementasi operasi genetika
Jika ketiga aspek di atas telah didefinisikan, algoritma genetika generik akan
bekerja dengan baik.
Tentu saja, algoritma genetika bukanlah solusi terbaik untuk memecahkan
segala masalah. Sebagai contoh, metode tradisional telah diatur untuk mencari
penyelesaian dari fungsi analitis convex yang “berperilaku baik” yang variabelnya
sedikit. Pada kasus-kasus ini, metode berbasis kalkulus lebih unggul dari algoritma
genetika karena metode ini dengan cepat menemukan solusi minimum ketika
algoritma genetika masih menganalisa bobot dari populasi awal. Untuk problem-
problem ini pengguna harus mengakui fakta dari pengalaman ini dan memakai
metode tradisional yang lebih cepat tersebut. Akan tetapi, banyak persoalan realistis
yang berada di luar golongan ini. Selain itu, untuk persoalan yang tidak terlalu
5
rumit, banyak cara yang lebih cepat dari algoritma genetika. Jumlah besar dari
populasi solusi, yang merupakan keunggulan dari algoritma genetika, juga harus
mengakui kekurangannya dalam dalam kecepatan pada sekumpulan komputer yang
dipasang secara seri –fitness function– dari tiap solusi harus dievaluasi. Namun, bila
tersedia komputer-komputer yang paralel, tiap prosesor dapat mengevaluasi fungsi
yang terpisah pada saat yang bersamaan. Karena itulah, algoritma genetika sangat
cocok untuk perhitungan yang paralel.
2. 2. Teknik Penggunaan Algoritma Genetika
Algoritma genetika dimulai dengan sekumpulan status yang dipilih secara
acak, yang disebut populasi. Algoritma ini mengkombinasikan dua populasi induk.
Setiap status atau individual direpresentasikan sebagai sebuah string.
Fitness
Setiap individual dievaluasi dengan fitness function. Sebuah fitness function
mengembalikan nilai tertinggi untuk individual yang terbaik. Individu akan
diurutkan berdasarkan nilai ata disebut dengan selection.
Crossover
Untuk setiap pasang induk, sebuah titik crossover akan dipilih secara acak
dari posisi di dalam string. Pada gambar titik crossover terletak pada indeks ketiga
dalam pasangan pertama dan setelah indeks kelima pada pasangan kedua.
Mutation
Pada mutasi, tiap lokasi menjadi sasaran mutasi acak, dengan probabilitas
independen yang kecil. Sebuah digit dimutasikan pada anak pertama, ketiga dan
keempat. Algoritma ini mengkombinasikan suatu kecenderungan menaik dengan
pengeksplorasian acak di antara thread pencarian paralel. Keuntungan utamanya,
bila ada, datang dari operasi crossover. Namun, secara matematis dapat ditunjukkan
bahwa bila posisi dari kode genetika dipermutasikan di awal dengan urutan acak,
crossover tidak memberikan keunggulan. Secara intuisi, keuntungannya didapat
dari kemampuan crossover untuk menggabungkan blok-blok huruf berukuran besar
yang telah berevolusi secara independen untuk melakukan fungsi yang bermanfaat
sehingga menaikkan tingkat granularity di mana pencarian dilakukan.
6
Schema
Teori dari algoritma genetika menjelaskan cara kerjanya menggunakan ide
dari suatu schema, suatu substring di mana beberapa posisi tidak disebutkan. Dapat
ditunjukkan bahwa, bila fitness rata-rata dari schema berada di bawah minimal
maka jumlah instansi dari schema di dalam polusi akan bertambah seiring ber-
tambahnya waktu. Jelas sekali bahwa efek ini tidak akan signifikan bila bit-bit yang
bersebelahan sama sekali tidak berhubungan satu sama sekali, karena akan ada
beberapa blok berkelanjutan yang memberikan keuntungan yang konsisten.
Algoritma genetika paling efektif dipakai bila schema-schema berkorespondensi
menjadi komponen berarti dari sebuah solusi. Sebagai contoh, bila string adalah
representasi dari sebuah antena, maka schema mempresentasikan komponen-
komponen dari sebuah antena, seperti reflector dan deflector. Sebuah komponen
yang baik cenderung akan bekerja baik pada rancangan berbeda. Ini menunjukkan
bahwa penggunaan algoritma genetika yang benar memerlukan rekayasa yang baik
pada representasinya.
Gambar 2.1 – Contoh penggunaan algoritma genetika
7
2. 3. Pseucode Algortima Genetika
function
GenetikAlgorithm(population,Fitness-FN)
-> an individual
{input berupa population, sebuah kumpulan individual dan Fitness-
FN, sebuah fungsi yang mengukur fitness suatu individual}
deklarasi
i,x,y : integer
algoritma
repeat
new_population<-empty set
for i=1 to size(population) do
x<-RandomSelection(population, Fitness-FN)
y<-RandomSelection(population, Fitness-FN)
child<-Reproduce(x,y)
if(smallRandomProbability) then
child<-mutate(child)
add child to new_population
population<-new_population
until some individual is fit enough
or the time has elapsed
return the best individual in population(based on Fitness-FN)
function Reproduce(x,y : parent individuals)-> individual
deklarasi
algoritma
n<-length(x)
c<-random number from 1 to n
return Append(substring(x,1,c), substring(y,c +1,n))
2. 4. Pemrograman Paralel dengan OpenMP
OpenMP (Open Multi Processing) adalah sebuah antarmuka pemrograman
aplikasi (API) yang mendukung pemrograman multi processing shared memory di
C, C++ dan Fortran di berbagai arsitektur, termasuk platform Unix dan Windows.
OpenMP terdiri dari satu kumpulan perintah kompilasi, pustaka rutin, dan variabel
lingkungan yang mempengaruhi performa aplikasi. Banyak aplikasi dibangun
dengan model pemrograman paralel hybrid dapat dijalankan pada komputer cluster
dengan menggunakan OpenMP dan MPI (Message Passing Interface), atau lebih
transparan dengan menggunakan ekstensi OpenMP non-shared memory systems.
OpenMP mengimplementasi multithreading. Bagian kode yang akan dijalan-
kan secara paralel ditandai sesuai dengan preprocessor direktif sehingga akan
membuat thread-thread sebelum dijalankan. Setiap thread memiliki id yang dibuat
menggunakan fungsi (fungsi omp_get_thread_num() pada C/C++ dan fungsi
OMP_GET_TREAD_NUM() pada FORTRAN). Secara default, setiap thread
mengeksekusi kode secara paralel dan independen.”work-sharing construct” dapat
8
digunakan untuk membagi tugas antar thread sehingga setiap thread menjalankan
sesuai bagian alokasi kodenya. Fungsi OpenMP berada pada file header yang
berlabel “omp.h” di C/C++.
Bagian OpenMP
Gambar 2.2 – Ekstensi bahasa OpenMP
Unsur inti OpenMP adalah pembuatan konstruksi thread, distribusi beban
kerja (pembagian kerja), pengelolaan lingkungan data, sinkronisasi thread, bagian
user-level runtime dan variable environment. Sebuah direktif kompiler C/C++ ini
disebut #pragma (pragmatis informasi). Kompilasi mengarahkan spesifikasi untuk
OpenMP dalam C/C++ yang ditulis dalam kode yaitu # pragma omp.
Pembuatan Thread
Pembuatan thread dilakukan oleh omp paralel. Hal ini digunakan membagi
tugas secara paralel. Proses utama akan dinyatakan sebagai master thread dengan
thread ID 0. Contoh untuk menampilkan hello world menggunakan beberapa
thread.
int main(int argc, char *argv[])
{
#pragma omp pararel
printf(“Halo dunia!.\n”);
return 0;
}
9
Work-Sharing Constructs
Digunakan untuk menentukan kerja secara independen untuk menetapkan
satu atau semua thread.
omp for atau omp do digunakan untuk memisahkan perulangan iterasi antara
thread, sering disebut loop construcs.
sections menugaskan secara berturut-turut blok kode independen kepada
thread lain
single menetapkan sebuah blok kode yang dijalankan oleh hanya satu thread
master mirip dengan single tetapi blok kode akan dieksekusi hanya oleh
thread master
Contoh inisialisasi nilai array yang besar secara paralel, menggunakan setiap
thread untuk melakukan sebagian pekerjaan.
int main(int argc, char *argv[])
{
const int N = 10000;
int i, a[N];
# pragma omp parallel for
for(i=0; i<N; i++)
{
a[i] = 2 * 1;
}
return 0;
}
Klausa OpenMP
OpenMP adalah model pemrograman memori bersama, sebagian besar
variabel dalam kode OpenMP terlihat oleh semua thread secara default. Tetapi
kadang-kadang variabel private diperlukan untuk menghindari race conditions dan
ada kebutuhan untuk melewatkan nilai-nilai antara part dan region paralel
berurutan (blok kode dijalankan secara paralel), sehingga lingkungan data
pengelolaan dikenal sebagai sharing attribute clauses dengan menambahkan
clauses OpenMP direktif. Berbagai jenis-jenis klausa :
shared Data di dalam wilayah paralel digunakan bersama-sama, yang berarti
terlihat dan dapat diakses oleh semua thread secara bersamaan. Secara default,
semua variabel dalam wilayah work sharing region adalah shared kecuali loop
iteration counter.
10
private Data di dalam wilayah paralel adalah untuk pribadi masing-masing
thread, yang berarti masing-masing thread akan memiliki salinan lokal dan
menggunakannnya sebagai variabel sementara. Variabel private tidak
diinisialisasi dan nilai tidak dipertahankan untuk digunakan di luar wilayah
paralel. Secara default, iterasi loop counter pada loop OpenMP adalah private.
default Memungkinkan para programmer untuk menyatakan bahwa data pada
default scope sehingga parallel region akan saling shared, atau none untuk
C/C++, shared, firstprivate, private, atau none untuk FORTRAN. Pilihan none
memaksa programmer untuk mendeklarasikan setiap variabel di wilayah paralel
menggunakan data sharing attribute clauses.
firstprivate Seperti private kecuali untuk melakukan inisialisasi nilai aslinya.
lastprivate Seperti private kecuali untuk nilai asli diperbarui setelah dibuat.
reduction Cara yang aman menggabungkan kerja dari semua thread setelah
dibuat.
Sinkronisasi Klausa
critical section Blok kode yang tertutup akan dilaksanakan oleh satu thread
pada satu waktu, dan tidak secara simultan dilaksanakan oleh bebepa thread. Hal
ini sering digunakan untuk melindungi data dari berbagai race conditions.
atomic Mirip dengan critical section, tetapi memberitahu compiler untuk
menggunakan instruksi perangkat keras khusus untuk performa yang lebih baik.
Compiler dapat memilih untuk mengabaikan pengguna dan menggunakan
critical section saja.
ordered Blok yang terstruktur dilaksanakan dalam urutan iterasi akan
dieksekusi dalam loop berurutan.
barrier Setiap thread menunggu sampai semua thread lainnya dari sebuah
tim telah mencapai titik ini. Sebuah work-sharing construct memiliki implisit
barrier synchronization di akhir.
nowait Menetapkan bahwa thread menyelesaikan pekerjaan yang ditugaskan
dapat dilanjutkan tanpa menunggu semua thread dalam tim untuk menyelesai-
kan. Dengan tidak adanya klausa ini, thread menghadapi masalah sinkronisasi
pada akhir work-sharing construct.
11
Penjadwalan Klausa
schedule(type, chunk) Ini berguna jika work-sharing construct melakukan do-
loop atau for-loop. Iterasi dalam work-sharing construct ditugaskan untuk
thread sesuai dengan metode scheduling yang ditetapkan oleh ketentuan ini.
Tiga jenis penjadwalan adalah :
1. statis Di sini, semua thread mengalokasikan iterasi sebelum mereka
menjalankan iterasi loop. Iterasi dibagi diantara thread yang sama secara
default. Namun, integer untuk menentukan parameter “chunk” akan
mengalokasikan “chunk” sesuai jumlah pengulangan susunan thread
tertentu.
2. dinamis Di sini, beberapa iterasi dialokasikan untuk sejumlah kecil
thread. Setelah selesai thread tertentu maka dialokasikan iterasinya, ini
berguna untuk mendapatkan satu dari iterasi yang tersisa. Parameter “chunk”
mendefinisikan jumlah pengulangan susunan yang dialokasikan kepada
thread pada suatu waktu.
3. guided Sebuah potongan susunan iterasi dialokasikan untuk setiap thread
secara dinamis. Ukuran sepotong berkurang secara eksponensial dengan
alokasi masing-masing berturut-turut ukuran minimum yang ditentukan
dalam parameter “bongkahan”.
Kontrol JIKA
if Hal ini akan menyebabkan thread melakukan tugas hanya jika kondisi
terpenuhi. Kalau tidak menjalankan blok kode seterusnya.
Inisialisasi
firstprivate Data private untuk masing-masing thread, tapi diinisialisasi
dengan menggunakan nilai dari variabel dengan menggunakan nama yang sama
dari master thread.
lastprivate Data private untuk setiap thread. Nilai dari data pribadi ini akan
disalin ke variabel global dengan menggunakan nama yang sama di luar region
paralel jika iterasi saat ini adalah yang terakhir dalam iteration loop. Sebuah
variabel dapat firstprivate dan lastprivate.
12
threadprivate Data adalah data global, tetapi pribadi paralel di masing-masing
daerah selama runtime. Perbedaan antara threadprivate dan private adalah ruang
lingkup global yang terkait dengan threadprivate dan nilai yang disimpan paralel
di suatu region daerah.
Data Copying
copying Mirip dengan variabel firstprivate untuk private, threadprivate
variabel yang belum diinisialisasi, kecuali menggunakan copying untuk
melewatkan nilai dari variabel global yang sesuai. Tidak melakukan copyout
diperlukan karena nilai suatu variabel threadprivate dipelihara selama
pelaksanaan seluruh program.
copyprivate Digunakan dengan sendiri untuk mendukung penyalinan data
nilai dari objek private di satu thread (thread tunggal) untuk objek yang sesuai
pada thread lain dalam tim.
Reduction
reduction Variabel memiliki salinan lokal di setiap thread, tetapi nilai-nilai
dari salinan lokal akan diringkas (dikurangi) ke dalam variabel global. Hal ini
sangat berguna jika operasi tertentu (ditentukan dalam “operator” klausa khusus
ini) pada tipe data yang berjalan dengan interaktif sehingga nilai pada iterasi
tertentu tergantung pada nilai pada iterasi sebelumnya. Pada dasarnya, langkah-
langkah yang mengarah ke kenaikan operasional adalah paralisme, tetapi thread
mengumpulkan dan menunggu sebelum memperbarui tipe data, lalu akan
menambahkan tipe data ke dalam kerangka untuk menghindari race condition.
Ini akan diperlukan dalam paralel fungsi Integrasi Numerik dan Persamaan
Diferensial, sebagai contoh umum.
13
BAB III
METODOLOGI PENELITIAN
3. 1. Tempat dan Waktu Penelitian
Penelitian akan dilaksanakan di Sekolah Menengah Kejuruan Nurul Jadid,
yang beralamat di Jl. KH. Zaini Mun’in, Kelurahan Karanganyar Kecamatan Paiton
Kabupaten Probolinggo Kode Pos 67291 pada bulan September sampai dengan
Desember 2014.
3. 2. Alat dan Bahan
Bahan yang digunakan dalam penelitian ini adalah alat tulis untuk desain dan
pecatatan algoritma di atas kertas sebelum diaplikasikan ke dalam bentuk
komputasi. Sedangkan alat-alat yang dibutuhkan terbagi menjadi dua yaitu
perangkat keras (hardware) dan perangkat lunak (software) yang akan dijelaskan
sebagai berikut :
3.2.1. Perangkat Keras
Perangkat keras yang akan digunakan dalam penelitian ini adalah Lenovo
ThinkPad Edge135 dengan spesifikasi seperti berikut :
Proc. AMD E2-2000 APU with Radeon HD Graphics 1.75 GHz
RAM. 6 GBytes
HDD. 500 GBytes
3.2.2. Perangkat Lunak
Dalam penelitian ini akan menggunakan beberapa perangkat lunak,
diantaranya adalah :
Microsoft Windows 8.1 Starter
Pelles C IDE 8.0 RC4
Pustaka OpenMP 3.0
Microsoft Excel 2013
Command Prompt
Notepad
14
3. 3. Metodologi Penelitian
3.3.1. Alur Pelaksanaan Penelitian
Mengumpumpulkan
data berupa guru,
kelas, dan mata
pelajaran
Selesai
Membuat Populasi dari
data yang diperoleh
Fungsi
Kesuaian
(fitness)
Melakukan Reproduksi
(Algoritma Paralel)
Jadwal Mata Pelajaran
Tid
ak S
esu
ai
Sesuai
15
3.3.2. Persiapan Penelitian
Penulis menanyakan dan menyalin data jadwal pelajaran yang telah
dibuat sebelumnya dengan cara manual sebagai data awal dan target
pencapaian penelitian ini. Kemudian mempelajari algoritma genetika serta
pemodelannya di atas kertas sebelum diaplikasikan ke dalam komputasi.
Setelah itu melakukan instalasi sistem operasi, Pelles C IDE yang
terintegrasi dengan pustaka OpenMP dan melakukan ujicoba “hello world”
menggunakan pemrograman paralel.
3.3.3. Prosedur Penelitian
Penelitian ini dibagi dalam beberapa tahap pelaksanaan penelitian,
yaitu : (1) Desain dan Analisa Algoritma Genetika untuk penjadwalan mata
pelajaran. (2) Instalasi Pelles C IDE 8.0 RC4 dan ujicoba pemrograman
paralel “hello world”. (3) Implementasi Algoritma Genetika (biasa) untuk
penjadwalan mata pelajaran menggunakan Bahasa C dan menghitung waktu
pemrosesannya. (4) Implementasi Algoritma Genetika digabungkan dengan
Pemrograman Paralel menggunakan Bahasa C dan pustaka OpenMP yang
dihitung waktu proses serta dibandingkan performanya dengan Algoritma
Genetika (biasa).
Tahap 1 : Desain dan Analisa Algoritma Genetika untuk
penjadwalan mata pelajaran.
Sebagai persiapan kita harus melakukan pengumpulan data berupa
contoh format jadwal pelajaran yang teah dibuat dari pihak kurikulum
sekolah. Kemudian kita melakukan desain analisa algoritma genetika terkait
dengan penjadwalan mata pelajaran dan melakukan uji coba terlebih dahulu
secara manual di atas kertas sehingga kita dapat secara dini menemukan
berbagai kendala dan pemodelan yang tepat untuk implementasinya nanti.
Setelah kita menemukan aplikasi yang tepat untuk algoritma genetika secara
manual barulah kita dapat mengaplikasikannya pada tahap komputasi yang
selanjutnya.
Tahap 2 : Instalasi Pelles C IDE 8.0 RC4 dan ujicoba pemrograman
paralel “hello world”.
16
Sebagai perangkat lunak utama dalam pemrograman paralel serta
implementasi algoritma ke dalam komputasi maka perlu kita instalasi
terlebih dahulu Integrated Development Environment (IDE) untuk Bahasa
C menggunakan Pelles C IDE 8.0 RC4 ke dalam laptop yang menggunakan
multicore processor. Lakukan ujicoba terlebih dahulu apakah IDE yang
telah diinstalasi berjalan dengan baik dan sudah mendukung pemrograman
paralel menggunakan pustaka OpenMP.
Tahap 3 : Implementasi Algoritma Genetika (biasa) untuk
penjadwalan mata pelajaran menggunakan Bahasa C dan
menghitung waktu pemrosesannya.
Dari desain dan analisa algoritma genetika yang telah dibuat
kemudian diaplikasikan ke dalam program menggunakan bahasa c. Program
yang dihasilkan harus diintegrasikan juga untuk menghitung waktu yang
dibutuhkan untuk menyelesaikan permasalah menggunakan algoritma
genetika tersebut. Jika dirasa kurang optimal, maka desain dan analisa
algoritma genetika harus terus disesuaikan kembali hingga kebutuhan
penjadwalan mata pelajaran di sekolah terpenuhi. Dalam pemrograman ini
masih belum dimanfaatkan pemrograman paralel menggunakan pustaka
OpenMP, dan hanya menggunakan Bahasa C murni dan pustaka standar.
Tahap 4 : Implementasi Algoritma Genetika digabungkan dengan
Pemrograman Paralel menggunakan Bahasa C dan
pustaka OpenMP yang dihitung waktu proses serta
dibandingkan performanya dengan Algoritma Genetika
(biasa).
Langkah selanjutnya, ketika algoritma genetika pada langkah
sebelumnya dirasa telah optimal kemudian pemrograman mulai
memanfaatkan pustaka OpenMP yang berbasis komputasi paralel. Pada
tahap ini algoritma genetika paralel diaplikasikan pada komputasi, sama
halnya dengan program sebelumnya maka program ini juga harus
terintegrasi fungsi untuk menghitung waktu yang dibutuhkan oleh program
tersebut untuk menyelesaiakan masalah penjadwalan mata pelajaran dengan
menggunakan algoritma genetika paralel. Langkah yang paling akhir,
17
adalah membandingkan performa pemrograman berbasis algoritma genetika
dengan algoritma genetika paralel yang kita analisa penyebabnya.
3. 4. Jadwal Penelitian
Rencana jadwal penyusunan skripsi.
No. Kegiatan Sep Okt Nop Des
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
1. Pengumpulan Data dan
Bahan
2. Analisa dan Pengolahan
Data
3. Penulisan Bab I dan Bab II
4. Penulisan Bab III
5. Penulisan Bab IV
6. Penulisan Bab V
7. Penyelesaian Skripsi
Tabel 3.1 - Jadwal Penelitian
18
DAFTAR PUSTAKA
[1] Abramson, D., & Abela, J. (1992). A Pararllel Genetic Algorithm for Solving the School
Timetabling Problem. Australian Computer Science Conference, 15, 1-9.
[2] Nugraha, Ivan. (2008). Aplikasi Algoritma Genetik Untuk Optimasi Penjadwalan Kegiatan
Belajar Mengajar. Strategi Algoritmik, IF2551, 1-6.
[3] Qusyairi, Ahmad. (2010). OpenMP (Open Multi Processing). Diunduh 18 Juni 2014, dari
http://ahmadqusyairi.blogspot.com/2010/03/openmp-open-multi-processing.html.