23
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

Komputasi Paralel

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.