• Tidak ada hasil yang ditemukan

Analisis performansi algoritma knapsack untuk optimalisasi pemilihan proyek di PT.Gits Indonesia

N/A
N/A
Protected

Academic year: 2017

Membagikan "Analisis performansi algoritma knapsack untuk optimalisasi pemilihan proyek di PT.Gits Indonesia"

Copied!
172
0
0

Teks penuh

(1)

SURAT KETERANGAN

PENYERAHAN HAK EKSKLUSIF

Bahwa yang bertanda tangan dibawah ini, penulis dan pihak perusahaan tempat penelitian, bersedia :

“Bahwa hasil penelitian dapat didaringkan (online) sesuai dengan peraturan yang berlaku, untuk kepentingan riset dan pendidikan”.

Bandung, 18 Februari 2013

Penulis,

Bagja Gumelar NIM. 10108070

Perusahaan,

Rahmat Izwan Heroza

(2)
(3)
(4)
(5)

BIODATA PENULIS

1. DATA PRIBADI

Nama : Bagja Gumelar

Jenis kelamin : Laki-laki

Tempat, tanggal lahir : Bandung, 11 Februari 1991

Agama : islam

Kewarganegaraan : indonesia

Status : belum kawin

Anak ke : dua dari dua bersaudara

Alamat : KOMP BSPI Sindang Panon RT 003 RW

012 Desa Sindang Panon Kecamatan

Banjaran Kabupaten Bandung 40377

Telepon : +62956 7203 63966

Email : gumelarbagja@gmail.com

2. RIWAYAT PENDIDIKAN

1. Sekolah Dasar : SD Nilem IV Bandung, Jawa Barat

1995 - 2002

2. Sekolah Menegah Pertama : SLTPN 1 Banjaran Bandung Jawa

Barat 2002 - 2005

3. Sekolah Menengah Atas : Sekolah Menengah Atas Negeri 1

(6)

Demikian riwayati hidup ini saya buat dengan sebenar-benarnya dalam keadaan

sadar dan tanpa paksaan.

Bandung,

(7)

ANALISIS PERFORMANSI ALGORITMA

KNAPSACK

UNTUK OPTIMALISASI PEMILIHAN PROYEK DI PT. GITS

INDONESIA

SKRIPSI

Diajukan untuk Menempuh Ujian Akhir Sarjana Program Strata Satu Jurusan Teknik Informatika

Fakultas Teknik dan Ilmu Komputer

Oleh:

BAGJA GUMELAR

10108070

PROGRAM STUDI S1

JURUSAN TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

(8)

iii Asalammu alaikum Wr. Wb

Alhamdulillah, segala Puji dan syukur penulis panjatkan bagi Allah SWT, karena atas segala rahmat dan karunia-Nya yang memberikan kesehatan dan hikmat kepada penulis sehingga penelitian ini dapat diselesaikan dengan baik sesuai dengan waktu yang direncanakan.

Skripsi yang berjudul “Analisis Performansi Algoritma Knapsack Untuk Optimalisasi Pemilihan Proyek Di PT. GITS Indonesia”, disusun untuk

memperoleh gelar Sarjana Teknik Informatika, Fakultas Teknik dan Ilmu Komputer Universitas Komputer Indonesia.

Pada kesempatan ini penulis hendak menyampaikan terima kasih kepada :

1. Allah SWT atas karunia-Nya sehingga penulis mampu menyelesaikan tugas akhir ini.

2. Ibunda dan Almarhum Ayahanda, terima kasih yang tak terhingga atas segala kasih sayang, segala dukungan dan doa restu yang tidak henti-hentinya bagi penulis.

3. Keluarga besar penulis, terutama kakak yang selalu memberikan dukungan dan motivasi.

4. Bapak Adam Mukharil Bachtiar, S.Kom. selaku dosen pembimbing skripsi sekaligus dosen wali yang telah banyak memberikan bimbingan dan saran-saran kepada penulis sejak awal penelitian sampai dengan selesainya penulisan skripsi ini.

5. Ibu Tati Harihayati M., S.T., M.T. selaku dosen reviewer yang telah memberikan masukan dan saran-saran dalam penyusunan penelitian skripsi ini.

6. Segenap dosen dan staf jurusan Teknik Informatika.

7. Rekan-rekan mahasiswa jurusan Teknik Informatika khususnya IF-2 yang telah menjadi partner yang sangat baik selama masa perkuliahan.

(9)

iv

untuk melaksanakan penelitian di tempat tersebut dan telah berbagi pengalaman serta ilmunya.

9. Daeng Rosanda, Ami Rakhmiati, Andi Insanuddin dan Line yang membantu penulis dalam penyelesaian penyusunan penelitian ini.

10.Seluruh pihak yang telah memberikan kontribusi dan bantuannya bagi penulis, namun tidak sempat dicantumkan namanya satu per satu.

Penulis telah berupaya dengan semaksimal mungkin dalam penyelesaian skripsi ini, namun penulis menyadari masih banyak kelemahan baik dari segi isi maupun tata bahasa, untuk itu penulis mengharapkan kritik dan saran yang bersifat membangun dari pembaca demi kesempurnaan skripsi ini. Tak lupa penulis memohon maaf apabila dalam penulisan laporan tugas akhir ini, penulis telang menyinggung perasaan atau telah menyakiti hati semua orang baik yang

disengaja maupun yang tidak disengaja. Kiranya isi skripsi ini bermanfaat dalam memperkaya khasanah ilmu pendidikan dan juga dapat dijadikan sebagai salah

satu sumber referensi bagi peneliti selanjutnya yang berminat meneliti hal yang sama.

Wassalamu’alaikum Wr.Wb.

Bandung, Februari 2013

(10)

v

ABSTRAK ... i

ABSTRACT ... ii

KATA PENGANTAR ... iii

DAFTAR ISI ... v

DAFTAR GAMBAR ... viii

DAFTAR TABEL... ix

DAFTAR SIMBOL ... xi

DAFTAR LAMPIRAN ... xiii

BAB I PENDAHULUAN ... 1

I.1 Latar Belakang Masalah ... 1

I.2 Perumusan Masalah ... 2

I.3 Maksud dan Tujuan ... 2

I.4 Batasan Masalah ... 3

I.5 Metodologi Penelitian ... 3

I.5.1 Metode Pengumpulan Data ... 3

I.5.2 Metode Pembangunan Perangkat Lunak ... 4

I.6 Sistematika Penulisan ... 6

BAB II TINJAUAN PUSTAKA ... 7

II.1 Profil Instansi ... 7

II.1.1Sejarah Instansi ... 7

II.1.2Visi dan Misi Instansi ... 7

II.1.3Struktur Organisasi Instansi ... 8

II.1.4Deskripsi Kerja Instansi ... 9

(11)

vi

II.2.1 Optimalisasi ... 10

II.2.2 Algoritma ... 12

II.2.3 Tools Pemodelan ... 23

II.2.4 Tools Implementasi ... 26

II.2.4.1. Bahasa Pemrograman ... 26

II.2.4.2. Borland Delphi ... 27

II.2.5 Pengujian Perangkat Lunak ... 28

BAB III ANALISIS ALGORITMA ... 34

III.1 Analisis Sistem ... 34

III.1.1 Analisis Masalah ... 34

III.1.2 Analisis Struktur Data ... 35

III.1.3 Analisis Strategi... 35

III.1.4 Analisis Algoritma knapsack ... 39

III.1.5 Spesifikasi Kebutuhan Perangkat Lunak ... 47

III.1.6 Analisis Kebutuhan Non Fungsional ... 48

III.1.6.1 Analisis Kebutuhan Perangkat Keras ... 48

III.1.6.2 Analisis Kebutuhan Perangkat Lunak ... 49

III.1.6.3 Analisis Kebutuhan Perangkat Pikir ... 49

BAB IV IMPLEMENTASI DAN PENGUJIAN ... 51

IV.1 Implementasi Simulasi ... 51

IV.1.1 Implementasi Perangkat Keras ... 51

IV.1.2 Implementasi Perangkat Lunak ... 52

IV.1.3 Implementasi Antarmuka ... 52

IV.2 Pengujian Simulasi ... 53

IV.2.1 Rencana Pengujian ... 53

(12)

IV.2.3 Pengujian Black Box ... 61

IV.2.4 Kesimpulan Pengujian ... 65

BAB V KESIMPULAN DAN SARAN ... 66

V.1 Kesimpulan ... 66

V.2 Saran ... 66

(13)

67

DAFTAR PUSTAKA

[1] M.Kom Agus Winarno, Analisa & Perancangan Sistem Informasi.

[2] Muhamad Pramana Baharsyah, Sulistyo Unggul Wicaksono, Teguh Pamuji, and Rinaldi Munir, "Eksplorasi Algoritma Brute Force, Greedy, dan Dynamic Programming untuk Persoalan Integer Knapsack," 2005.

[3] David Pisinger, Alghoritm For Knapsack Problems. Copenhagen, Denmark, 1995.

[4] Ian Sommervile, Software Engineering, 8th ed.: Addison-Wesley., 2007.

[5] Thomas Weise, Practical Optimization Algorithm Design. Anhui, China, 2012.

[6] Rinaldi Munir, Algoritma & Pemrograman Dalam Bahasa Pascal dan C. Bandung: Informatika Bandung, 2007.

[7] Eko Budi Purwanto, Perencanaan dan Analisis Algoritma, 1st ed.: Graha Ilmu, 2008.

[8] Leman, Metodologi Pengembangan Sistem Informasi. Jakarta, Indonesia: PT Elex Media Komputindo, 1998.

[9] Roger S. Pressman, Software Engineering: A practical Approach , 7th ed., Mcgraw-hill, Ed., 2009.

(14)

1

I.1 Latar Belakang Masalah

Masalah optimasi merupakan hal yang sering kita jumpai dalam pekerjaan sehari-hari, seperti optimasi pemilihan proyek, penjadwalan dan lain-lain. Menyelesaikan masalah optimasi dapat dilakukan dengan berbagai macam strategi, diantaranya adalah algoritma greedy, bruteforce, dynamic programming maupun genetika. Strategi algoritma greedy adalah yang paling populer diantara strategi algoritma yang lainnya, dikarenakan kesederhanaannya dan kemudahan penerapannya. Strategi algoritma greedy sering digunakan karena berguna untuk menghasilkan solusi yang menghampiri (approximation) optimum, dari pada menggunakan algoritma yang lebih rumit untuk menghasilkan solusi yang eksak

[1].

Salah satu algoritma yang mengadopsi strategi algoritma greedy untuk

diterapkan dalam penyelesaian kasus optimasi adalah algoritma knapsack. Knapsack dapat diilustrasikan seperti cara memasukkan beberapa barang ke

dalam suatu kantong (knapsack). Kapasitas kantong ini memiliki keterbatasan ruang sehingga barang yang dimasukkan kedalam kantong tidak melebihi batas dan diperoleh keuntungan yang optimal. David Pisinger dalam Alghoritm for Knapsack Problems menyebutkan beberapa contoh penerapan kasus yang dapat diselesaikan dengan algoritma knapsack antara lain adalah masalah dalam muat barang kargo, pemotongan stok barang, pengkontrolan budget dan manajemen keuangan [3].

(15)

2

daya manusia). Jumlah sumber daya manusia yang terdapat di perusahaan ini dapat diibaratkan dengan kantong (knapsack) yang memiliki keterbatasan jumlah. Profit dan resources atau sumber daya manusia dalam kasus pemilihan proyek di PT. GITS Indonesia ini akan menjadi parameter dalam analisis algoritma knapsack yang dilakukan. Kemiripan karateristik kasus ini akan menjadi lebih baik ketika algoritma yang digunakan dianalisis performansinya terlebih dahulu, sehingga keoptimalannya dapat dibuktikan.

Analisis performansi algoritma dilakukan agar diketahui efisiensi dan kelayakan algoritma pada kasus yang sedang diuji. Tanpa dilakukannya analisis algoritma maka akan terjadi masalah terhadap pengimplementasian algoritma pada kebutuhan dan masalah yang dihadapi. Algoritma yang akan digunakan tidak harus mewah atau canggih namun menggunakan sebuah algoritma sebaiknya tepat dan cocok pada kasus yang sedang diuji. Sebagai contoh jika kita membutuhkan

algoritma yang tepat untuk diterapkan dalam kasus pemilihan proyek maka algoritma yang dapat diterapkan dengan baik adalah algoritma knapsack.

Berdasarkan dari permasalahan yang telah dipaparkan pada paragraf sebelumnya maka diperlukan analisis performansi algoritma knapsack terhadap kasus pemilihan proyek. Penerapan algoritma terhadap perangkat lunak merupakan salah satu cara yang dapat digunakan untuk menganalisis dan mengetahui performansi algoritma knapsack terhadap kasus pemilihan proyek ini.

I.2 Perumusan Masalah

Berdasarkan latar belakang masalah maka perumusan masalah pada penelitian ini adalah bagaimana mengoptimalkan hasil pemilihan proyek dengan menganalisis performansi algoritma Knapsack.

I.3 Maksud dan Tujuan

Maksud dari penelitian skripsi ini adalah untuk melakukan analisis performansi algoritma knapsack pada kasus pemilihan proyek.

Adapun tujuan dari pembuatan skripsi ini adalah :

(16)

2. Mendapatkan hasil yang optimal dari kasus pemilihan proyek menggunakan strategi algoritma greedy by density dengan jenis algoritma fractional knapsack.

I.4 Batasan Masalah

Batasan masalah yang ditentukan dalam penelitian ini adalah sebagai berikut :

1. Strategi algoritma yang digunakan untuk menyelesaikan permasalahan yang sedang diuji menggunakan stretegi algoritma greedy dengan pendekatan greedy by density.

2. Jenis algoritma yang dianalisis adalah fractionalKnapsack.

3. Model analisis yang digunakan adalah model kompleksitas waktu (Tn).

4. Notasi asimtotik yang digunakan adalah O (big oh).

5. Sumber data proyek yang akan diuji berasal dari PT. GITS Indonesia. 6. Simulasi yang dilakukan untuk pengujian performansi algoritma

knapsack menggunakan perangkat lunak berbasis desktop.

I.5 Metodologi Penelitian

Metodologi penelitian yang akan digunakan dalam pembuatan skripsi ini menggunakan metodologi Analisis deskriptif. Analisis deskriptif adalah metode analisis dengan mendeskripsikan atau menggambarkan data yang telah terkumpul sebagaimana adanya tanpa membuat kesimpulan yang berlaku untuk umum. Metodologi ini terbagi menjadi dua metode yaitu metode pengumpulan data dan metode pembangunan perangkat lunak.

I.5.1 Metode Pengumpulan Data

Metode pengumpulan data yang digunakan terdiri dari dua cara, diantaranya :

1. Studi literatur

(17)

4

2. Studi Lapangan

Studi lapangan adalah metode pengumpulan data dengan cara berinteraksi langsung dengan orang-orang yang berada di lingkungan tempat studi kasus. Studi lapangan yang dilakukan adalah dengan melakukan wawancara atau tanya jawab dengan kepala kepegawaian.

I.5.2 Metode Pembangunan Perangkat Lunak

Pengembangan perangkat lunak dalam penelitian ini mengadopsi metode pengembangan classic life style atau waterfall. Metode pembangunan perangkat lunak waterfall dapat dilihat pada Gambar I-1. Tahapan yang ada pada metode pengembangan waterfall adalah sebagai berikut :

a. Requirements analysis and definition

Tahap Requirements analysis and definition merupakan tahap pengumpulan kebutuhan secara lengkap kemudian dianalisis dan

didefinisikan kebutuhan yang harus dipenuhi oleh program yang akan dibangun. Fase ini harus dikerjakan secara lengkap untuk bisa menghasilkan desain yang lengkap.

b. System and software design

Tahap System and software design merupakan tahap mendesain perangkat lunak yang dikerjakan setelah kebutuhan selesai dikumpulkan secara lengkap.

c. Implementation and unit testing

Tahap Implementation and unit testing merupakan tahap hasil desain program diterjemahkan ke dalam kode-kode dengan menggunakan bahasa pemrograman yang sudah ditentukan. Program yang dibangun langsung diuji baik secara unit.

d. Integration and system testing

Tahap Integration and system testing merupakan tahap penyatuan unit-unit program kemudian diuji secara keseluruhan (system testing).

(18)

Tahap Operation and maintenance merupakan tahap mengoperasikan program dilingkungannya dan melakukan pemeliharaan, seperti penyesuaian atau perubahan karena adaptasi dengan situasi sebenarnya.

Gambar I-1 Model Proses Waterfal [3] Requirements definition

System and Software Design

Implementation and unit testing

Integration and sytem testing

(19)

6

I.6 Sistematika Penulisan

Sistematika penulisan skripsi ini disusun untuk memberikan gambaran umum tentang penelitian yang dijalankan. Adapun sistematika penulisan skripsi ini adalah sebagai berikut :

BAB I PENDAHULUAN

Bab I merupakan proses yang menguraikan tentang latar belakang permasalahan, mencoba merumuskan inti permasalahan yang dihadapi, menentukan maksud dan tujuan penelitian, yang kemudian diikuti dengan pembatasan masalah, metodologi penelitian, dan sistematika penulisan.

BAB II TINJAUAN PUSTAKA

Bab II membahas tentang berbagai konsep dasar dan teori-teori yang berkaitan

dengan topik yang diangkat dan hal-hal yang berguna dalam proses analisis permasalahan serta tinjauan terhadap penelitian-penelitian serupa yang pernah

dilakukan sebelumnya termasuk sintesisnya. BAB III ANALISIS ALGORITMA

Bab III berisi tentang analisis algoritma, pendekatan strategi algoritma, dan kebutuhan untuk alat simulasi berupa perangkat lunak yang dibangun sesuai dengan metode pengembangan perangkat lunak yang digunakan.

BAB 4 IMPLEMENTASI DAN PENGUJIAN

Bab 4 berisi hasil implementasi analisis dan perancangan simulasi yang dilakukan, serta hasil pengujian simulasi untuk mengetahui apakah aplikasi yang dibangun sudah memenuhi kebutuhan. Pengujian yang diakukan dalam penelitian ini adalah dengan menggunakan white boxtesting dan black box testing.

BAB V KESIMPULAN DAN SARAN

(20)

7

II.1 Profil Instansi

GITS Indonesia adalah perusahaan pengembang aplikasi Android. Berpengalaman selama hampir 3 tahun mengembangkan aplikasi, membuat GITS Indonesia dikenal sebagai developer Android paling produktif di Indonesia saat ini. Selain Android, hingga saat ini GITS Indonesia juga banyak mengembangkan aplikasi di berbagai platform mobile seperti iOS, Symbian, JavaME, Nokia Seri 40 dan Blackberry.

II.1.1 Sejarah Instansi

GITS Indonesia pertama kali berdiri pada September 2008 dengan nama Ganesha IT Solution (GITS). Akhir 2009 GITS memutuskan untuk memfokuskan

pada pengembangan teknologi mobile terutama Android. Pada Juli 2011, GITS resmi menjadi badan usaha yang terdaftar dengan nama PT. GITS Indonesia.

Sejak masa awal berdirinya, GITS telah menjalin kerja sama dengan berbagai instansi swasta maupun pemerintah di antaranya Departemen Pekerjaan Umum, Telkom Indonesia, Sarihusada, Nokia Indonesia serta Samsung Elektronik Indonesia. Beberapa produk mobile yang telah dikembangkan di antaranya adalah Toresto, Kosakata, Bahasa Dictionary, KoranDroid, dan Imsakiyah. Selain produk sendiri, terdapat juga beberapa aplikasi hasil kerja sama dengan kliennya seperti MindSocial for Mindtalk, Telkom H!Bandung, dan SGM Babies Doctor. Tagline

GITS Indonesia adalah “get it simple”. Tagline tersebut menunjukan keinginan

besar untuk menjadi pioneer teknologi mobile terutama Android yang selalu produktif mengembangkan aplikasi untuk membantu penggunanya menjalankan aktivitasnya sehari-hari.

II.1.2 Visi dan Misi Instansi

(21)

8

1. Produktif

Meningkatkan produktivitas perusahaan dan sumber daya manusianya untuk terus aktif dalam pengembangan aplikasi.

2. Estetis

Mengutamakan estetika dan ergonomi pada setiap aplikasi yang dikembangkan demi kemudahan pengguna.

3. Solutif

Tidak berhenti untuk mencari solusi terbaik menggunakan teknologi mobile yang memudahkan aktivitas penggunanya.

II.1.3 Struktur Organisasi Instansi

Struktur organisasi instansi adalah gambar bagan yang menjelaskan posisi dan hierarki struktur kerja pegawai di dalam perusahaan. Struktur organisasi perusahaan dapat dilihat padaGambar II-1 Struktur Organisasi PT. GITS

Indonesia. CEO SEKRETARIS

VP OF HR CFO CMO CTO

(22)

II.1.4 Deskripsi Kerja Instansi

Deskripsi kerja Struktur Organisasi adalah penjelasan tentang bagian kerja. Deskripsi kerja dapat dilihat pada Tabel II-1 Deskripsi Kerja PT. GITS Indonesia.

Tabel II-1 Deskripsi Kerja PT. GITS Indonesia

No Jabatan Deskripsi Kerja

1 CFO (Chief Executive

Officer)

Komunikator, pengambil keputusan,

pemimpin, pengelola dan eksekutor 2 Sekertaris Meliputi pengetikan, pembuatan surat

menyurat, membuat laporan, pengaturan

jadwal dan absensi. 3 VP (Vice President) of HR

(Human Resources)

Manajemen sumber daya manusia (MSDM) dalam memberikan kontribusi

pada pencapaian efektivitas organisasi. Melakukan pemilihan SDM untuk

melaksanakan proyek. 4 CFO (Chief Financial

Officer)

CFO bertanggung jawab untuk mengelola keuangan risiko

perusahaan. Petugas ini juga bertanggung jawab untuk perencanaan keuangan dan

pencatatan, serta pelaporan keuangan kepada manajemen yang lebih tinggi. 5 CMO (Chief Marketing

Officer

CMO adalah seorang eksekutif perusahaan

bertanggung jawab atas kegiatan pemasaran dalam suatu organisasi.

Dengan tanggung jawab utamanya

adalah pengembangan produk, manajemen saluran distribusi, komunikasi pemasaran (termasuk iklan dan promosi), harga, riset pasar dan layanan pelanggan

(23)

10

Officer) dalam sebuah perusahaan atau badan lain yang penghuni difokuskan pada isu-isu

ilmiah dan teknologi dalam sebuah organisasi.

II.2 Landasan Teori

Bab ini akan memaparkan tentang landasan teori yang digunakan untuk

melakukan penelitian skripsi. Adapun landasan teori yang akan dibahas adalah tentang algoritma, bahasa pemrograman yang digunakan dan tools pembangunan perangkat lunak simulasi.

II.2.1 Optimalisasi

Optimasi adalah salah satu disiplin ilmu dalam matematika yang fokus untuk mendapatkan nilai minimum atau maksimum secara sistematis dari suatu fungsi, peluang, maupun pencarian nilai lainya dalam berbagai kasus. Optimasi global adalah algoritma optimasi yang menggunakan ukuran atau rentang yang luas daerah pencariannya tidak terbatas atau global. Kelebihan dari penggunaan optimasi global ini menurut Weise, Thomas (2008) adalah untuk mencegah tindakan fokus pada daerah masalah saja akan tetapi lebih meningkatkan kemungkinan untuk mencari sebuah global optimum pada daerah yang lebih luas. [5] Jadi, optimasi global adalah optimasi yang bertujuan untuk mencari solusi terbaik secara global atau menyeluruh pada sebuah model permasalahan. Pada optimasi global ini, batasannya adalah waktu, dimana rentang waktunya bersifat global, sehingga daerah penyelesaiannya lebih luas. Optimasi sangat berguna di

hampir segala bidang dalam rangka melakukan usaha secara efektif efisien untuk mencapai target hasil yang ingin dicapai. Tentunya hal ini akan sangat sesuai

dengan prinsip ekonomi yang berorientasikan untuk senantiasa menekan pengeluaran untuk menghasilkan outputan yang maksimal. Optimasi ini juga penting karena persaingan saat ini sudah benar benar sangat ketat.

(24)

Processing, Telekomunikasi, Ekonomi, Transportasi, Perdagangan, Pertanian, Perikanan, Perkebunan, Perhutanan, dan sebagainya.

Teknik optimasi secara umum dapat dibagi menjadi dua bagian, yang pertama adalah Mathematical Programming, dan yang kedua adalah Combinatorial Optimatimization. Dalam bidang mathematical programming dapat dibagi menjadi dua kembali, yaitu support vector machines dan gradient descent. Dan pada bidang Combinatorial Optimization kembali difokuskan lagi ke dalam dua bidang, yaitu Graph Theory dan Genetic Algorithm. Pemfokusan pemfokusan bidang tersebut dikarenakan beberapa parameter, diantaranya, Restoration, Feature selection, Classification, Clustering, RF assignment,

Compression, dan sebagainya.

Adapun hal lain secara global yang penting untuk diperhatikan adalalh fokus terhadap model dan masalah serta cara berfikir yang analitis. Kita harus

fokus terhadap model dan masalah agar tujuan utama dari kasus tersebut tercapai, jangan sampai terlalu konsen pada optimasi tetapi goalnya sendiri malah tidak

tercapai. Sedangkan berfikir analitis dimaksudkan agar kita peka terhadap keadaan dan mampu berfikir secara bebas untuk menemukan solusi solusi yang diperlukan.

Sebagai contoh implementasi teknik optimasi ini, kita lihat ambil cara mudah untuk mengoptimalkan performance computer pada saat memakai suatu program agar berjalan lebih lancer. Caranya adalah dengan mematikan program program yang running namun sebenarnya tidak diperlukan. Jika computer kita tidak sedang membutuhkan koneksi dengan jaringan, sebaiknya semua service yang mendukung ataupun berhubungan dengan jaringan, ada baiknya dimatikan. Selain

itu, jika kita pun tidak terkoneksi dengan ‘jalan masuknya virus’, ada baiknya

(25)

12

II.2.2 Algoritma

Algoritma adalah Urutan langkah-langkah untuk memecahkan suatu masalah. Terdapat beberapa definisi lain dari algoritma tetapi pada prinsipnya senada dengan definisi yang diungkapkan diatas yang kita kutip dari berbagai literatur, antara lain [6]:

1. Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukan menjadi keluaran.

2. Algoritma adalah deretan instruksi yang jelas untuk memecahkan masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang terbatas.

3. Algoritma adalah Prosedur komputasi yang terdefinisi dengan baik yang menggunakan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi, algoritma adalah deretan langkah komputasi yang mentransformasikan masukan menjadi keluaran.

Algortima adalah jantung ilmu computer atau informatika. Banyak cabang

dari ilmu komputer yang diacu dalan terminologi algoritma, misalnya algoritma perutean (routing) pesan di dalam jaringan komputer, algoritma Brensenham untuk menggambar garis lurus (bidang grafik kumputer), algoritma Knuth-Morris-Pratt untuk mencari suatu pola di dalam teks (bidang information retrievel), dan sebagainya.

Ditinjau dari asal usul kata, kata “algoritma” sendiri mempunyai sejarah

yang cukup aneh. Kata ini tidak muncul di dalam kamus Webster sampai akhir tahun 1957. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka Arab. Anda dikatakan algorist jika Anda menggunakan angka Arab. Para ahli bahasa berusaha menemukan asal kata algorism ini, namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika menemukan asal mula kata tersebut. Kata algorism berasal dari nama penulis buku arab yang

terkenal, yaitu Abu Ja’afarMuhammad Ibnu Musa al-Khuwarizmi (al-Khuwarizmi dibaca orang barat menjadi algorism). Al-Khuwarizmi menulis buku yang berjudul Kital al jabar wal-muqabala, yang artinya “Buku pemugaran dan

(26)

menjadi algoritm muncul karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran –sm beubah menjadi –thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa/lumrah, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya. Dalam bahasa Indonesia, kata algorithmdiserap menjadi “algoritma”.

Kata algoritma perama kali digunakan pada tahun 1950 dalam kata

“algoritma Euclidean” (Euclid’s algorithm). Euclid, seorang matematikawan

Yunani (lahir pada tahun 350 M), dalam bukunya yang berjudul Element menuliskan langkah-langkah untuk menemukan pembagi bersama terbesar (common greatest divisor atau gcd), dari dua buah bilangan bulat, m dan n (tapi Euclid tidak menyebut metodenya itu sebagai algoritma, baru abad modernlah ornag-orang menybut metodenya itu sebagai “algoritma Euclidean”), Pembagi terbesar dari dua buah bilangan bulat tak-negatif adalah bilangan bulat positif terbesar yang habis membagi kedua bilangan tersebut. [6]

II.2.2.1. Analisis Algoritma

Analisis algoritma dilakukan untuk mengetahui seberapa baik sebuah algoritma diimplementasikan untuk menyelesaikan suatu kasus. Penilaian terhadap algoritma melibatkan analisis algoritma sehingga terdapat 2 (dua) tipe analisis algoritma yaitu:

1. Aspek kualitatif

Aspek kualitatif yaitu analisis untuk memeriksa kebenaran algoritma. Analisis dengan aspek kualitatif dilakukan dengan penelusuran algoritma, dilakukan penelusuran logik menggunakan teknik matematika untuk

membuktikan kebenaran atau implementasi algoritma atau mengujinya dengan data. Sebagai contoh adalah algoritma pengurutan data (sorting) tidak dapat disebut sebagai algoritma pengurutan jika algoritma tidak dapat mengurutkan sembarang masukan barisan data.

2. Aspek kuantitatif

(27)

14

daya yang diperlukan suatu algoritma 2 (dua) sumber daya yang diukur adalah kecepatan bekerja algoritma dan ruang yang diperlukan untuk bekerja. Notasi untuk menyatakan kinerja antara lain adalah big-oh (O) yaitu waktu komputasi algoritma berbanding terhadap satu fungsi tertentu. Big-O biasanya hanya dinyatakan dengan suku yang paling berarti dan menghilangkan konstanta pengalinya. Jadi O((n2-n)/2) hanya dinyatakan dengan O(n2).

Terdapat tiga cara yang dapat dilakukan dalam melakukan analisis algoritma yaitu :

1. Analisis untuk memeriksa kebenaran algoritma.

2. Analisis efisiensi algoritma (kompleksitas komputasi dan ruang). 3. Analisis optimalitas algoritma.

1. Analisis Kebenaran Algoritma

Beberapa hal yang dapat dilakukan dalam menguji kebenaran suatu

algoritma antara lain adalah: 1. Penelusuran algoritma

2. Penelusuran logik (assertion) 3. Implementasi algoritma 4. Pengujian dengan data

5. Teknik pengujian matematis untuk pembuktian kebenaran

Analisis kebenaran algoritma juga sering dimasukkan sebagai proses validasi algoritma.

2. Analisis Efisiensi Algoritma

Fase dalam analisis efisiensi algoritma terdapat dua hal yaitu a priori analysis dan a priori testing.

1. A priori analysis

(28)

2. A posteriori testing

Pada fase ini dikumpulkan statistik nyata konsumsi waktu dan ruang suatu algoritma pada mesin dan bahasa pemrograman tertentu.

Tujuan dari dilakukannya fase ini dalah untuk :

Menentukan jumlah waktu dan ruang penyimpanan yang diperlukan program. Kegunaan dari fase ini adalah untuk memvalidasi a priori analysis.

3. Analisis Optimalitas Algoritma

Algoritma disebut optimal jika tidak terdapat algoritma lain di kelas persoalan itu yang mempunyai jumlah operasi yang lebih sedikit dibanding algoritma itu. Harus ditemukan lower bound jumlah operasi minimum yang perlu dilakukan untuk penyelesaian masalah. Jika algoritma menyelesaikan masalah dengan jumlah operasi yang sama dengan lower bound maka algoritma disebut optimal.

4. Kompleksitas Waktu Asimptotik

Kompleksitas waktu asimptotik merupakan waktu yang dibutuhkan suatu

Algoritma menyelesaikan tiap langkahnya. Setiap Algoritma memiliki kompleksitas waktu yang berbeda-beda. Komplesitas waktu asimptotik diperlukan untuk menghitung performansi suatu Algoritma. Untuk menghitung kompleksitas

waktu asimptotik suatu Algoritma digunakanlah notasi “O-Besar” (Big-O) yang merupakan notasi kompleksitas waktu asimptotik.

Perhitungan kompleksitas waktu asimptotik dilakukan dengan menghitung nilai O-besar dari setiap instruksi di dalam Algoritma. Aturan dalam perhitungan teorema O-Besar adalah sebagai berikut [6] :

1. Pengisian nilai (assignment), perbandingan, operasi aritmetik, read, write membutuhkan waktu O(1).

2. Pengaksesan elemen larik atau memilih field tertentu dari sebuah record membutuhkan waktu O(1).

Kompleksitas waktu di atas adalah O(1), didapat dari read(x); O(1)

(29)

16

= O(1)+ O(1)+ O(1) = O(max(1,1))+ O(1) = O(1)+ O(1)

= O(max(1,1)) = O(1)

3. If c then s1 else s2. Membutuhkan waktu Tc + max(Ts1,Ts2).

Kompleksitas waktu di atas adalah O(1), didapat dari = O(1) + O(1) max (O(1)+ O(1), O(1))

= O(1) + max(O(1), O(1)) = O(1)

4. Kalang for. Kompleksitas waktu kalang for adalah jumlah pengulangan dikali dengan kompleksitas waktu badan kalang.

Kompleksitas waktu di atas adalah O(n), didapat dari = O(n) . O(1)

= O(n.1) = O(n)

5. While c do s; dan repeat s until c; untuk kedua buah kalang, kompleksitas waktunya adalah jumlah pengulangan dikali dengan waktu badan c dan s.

read(x); O(1) if x mod 2=0 then O(1) begin

x:=x+1; O(1) writeln(x); O(1) end

else

writeln(x); O(1)

(30)

Kompleksitas waktu di atas adalah O(1), didapat dari = O(1)+ O(n){O(1)+O(1)}

= O(1)+ O(n) O(1) = O(1)+ O(n.1) = O(1)+ O(n) = O(n)

II.2.2.2. Strategi Algoritma

Strategi algoritmik adalah kumpulan metode atau teknik untuk

memecahkan masalah guna mencapai tujuan yang ditentukan, yang dalam hal ini deskripsi metode atau teknik tersebut dinyatakan dalam suatu urutan langkah-langkah penyelesaian.

Secara umum, strategi pemecahan masalah dapat dikelompokan menjadi: 1. Strategi solusi langsung, metode yang termasuk ke dalam strategi ini

adalah Algoritma Brute Force dan Algoritma Greedy

2. Strategi berbasis pencarian pada ruang status, metode yang termasuk ke dalam strategi ini adalah Algoritma Backtracking dan Algoritma Brach and Bound.

3. Strategi solusi atas-bawah, metode yang termasuk ke dalam strategi ini adalah Algoritma Divide and Conquer.

4. Strategi solusi bawah-atas, metode yang termasuk ke dalam strategi ini adalah Dynamic Programming.

Algoritma Greedy merupakan salah satu metode yang paling populer untuk menyelesaikan persoalan optimasi. Yang dimaksud dengan persoalan optimasi adalah persoalan yang mencari solusi optimal, baik yang bersifat

maksimal (maksimalisasi), atau minimal (minimalisasi). Dalam bahasa inggris, i:=2; O(1)

while i<=n do O(n) begin

(31)

18

Greedy berarti rakus atau tamak. Hal ini mencerminkan prinsip dari algoritma ini,

yaitu “take what you can get now!”. Algoritma ini akan membentuk solusi langkah per langkah. Pada setiap langkah, algoritma ini akan mengeksplorasi segala kemungkinan pilihan yang ada. Dari seluruh kemungkinan pilihan tersebut, akan diambil pilihan yang paling baik untuk setiap langkahnya. Pilihan terbaik ini disebut solusi optimal lokal.

Harapannya, dengan terus menerus mengambil pilihan optimal terbaik untuk tiap langkahnya, akan dihasilkan solusi global (solusi dari keseluruhan langkah) yang juga optimal. Kekurangan dari algoritma ini adalah tidak adanya perhatian terhadap konsekuensi dari tiap langkah yang diambil, sehingga bisa saja rangkaian langkah yang dihasilkan bukan merupakan solusi optimal global.

Algoritma greedy banyak digunakan dalam berbagai penyelesaian masalah, antara lain adalah :

1. Optimal Storage on Tapes Problem.

2. Knapsack Problem.

3. Minimum Spanning Tree Problem

4. Shortest Path Problem

Ada tiga pendekatan algoritma greedy dalam menyelesaikan persoalan Integer Knapsack, dimana salah satu pendekatan ini akan digunakan untuk cara memasukkan objek ke dalam knapsack [2]. Adapun tiga jenis pendekatannya yaitu :

1. Greedy byprofit (Pi)

Greedy by profit memprioritaskan objek dengan keuntungan paling besar. Cara ini digunakan untuk mengoptimalkan keuntungan dengan memilih objek yang memiliki keuntungan terbesar terlebih dahulu. Diketahui sebuah kapasitas knapsack W = 41, kemudian akan dimasukkan barang dengan bobot dan profit sebagai berikut :

(32)
[image:32.595.107.517.196.449.2]

Dari properti objek diatas maka perhitungan dengan menggunakan greedy by profit akan ditunjukkan pada Tabel II-2 Contoh Kasus dan Pemilihan Objek Dengan Greedy By Profit.

Tabel II-2 Contoh Kasus dan Pemilihan Objek Dengan Greedy By Profit

Properti Proyek Greedy by profit

I wi pi Knapsack 0/1 Fractional Knapsack

1 5 30 0 0,2 atau 20%

2 15 36 1 1

3 25 125 1 1

4 15 27 0 0

Total bobot 40 41

Total keuntungan 161 167

Pada tabel baris greedy by profit, angka 1 (satu) menunjukkan bahwa kolom tersebut terpilih sebagai nilai paling optimal sedangkan angka 0 (nol) menunjukkan bahwa kolom tidak dipilih sebagai objek yang optimal dengan menggunakan cara greedy by profit.

2. Greedybyweight (Wi)

Greedy by weight memprioritaskan objek dengan berat paling

(33)
[image:33.595.122.503.115.388.2]

20

Tabel II-3 Contoh Kasus dan Pemilihan Objek Dengan Greedy By Weight

Properti Proyek Greedy By Weight

I wi pi Knapsack 0/1

Fracrtional Knapsack

1 5 30 1 1

2 15 36 1 1

3 25 125 0 0,24 atau 24%

4 15 27 1 1

Total bobot 35 41

Total keuntungan 93 123

Pada Tabel II-3 untuk pemilihan proyek dengan knapsack 0/1 solusi optimalnya adalah (1, 1, 0, 1) dengan total keuntungan 93 dimana nilai 1 (satu) adalah terpilih dan nilai 0 (nol) adalah tidak terpilih sebagai solusi optimal. Pemilihan proyek dengan fractional knapsack solusi optimalnya adalah (1, 1, 24%, 1) dengan total keuntungannya 123.

3. Greedybydensity (Pi/Wi)

Greedy by density memprioritaskan objek dengan densitas (pi / wi)

terbesar. Cara ini digunakan untuk memaksimumkan keuntungan dengan memilih objek yang memiliki keuntungan per unit berat terbesar. Contoh

(34)
[image:34.595.116.510.115.390.2]

Tabel II-4 Contoh Kasus dan Pemilihan Objek Dengan Greedy By Density

Properti Proyek Greedy By Density I wi pi pi /wi Knapsack 0/1

Fractional Knapsack

1 5 30 6 0 0,2 atau 20%

2 15 36 2,4 1 1

3 25 125 5 1 1

4 15 27 1,8 0 0

Total bobot 40 41

Total keuntungan 161 167

Tabel II-4 menunjukkan solusi optimal untuk pemilihan dengan greedy by density dengan knapsack 0/1 adalah (0, 1, 1, 0) dengan total keuntungan adalah 161. Nilai 0 (nol) berarti proyek ke-i tidak terpilih sebagai solusi optimal dan nilai 1 (satu) berarti proyek ke-i dinyatakan terpilih sebagai solusi optimal.

Pemilihan dengan fractional knapsack menunjukkan solusi optimalnya adalah (20%, 1, 1, 0) dengan total keuntungan 167. Nilai 20% atau 0,2 mengindikasikan bahwa proyek ke-i memenuhi solusi optimal dengan besar

pertimbangan sebesar 20%.

Ketiga contoh pendekatan algoritma pada Tabel II-2, Tabel II-3 dan Tabel

II-4 mengindikasikan bahwa yang selalu menghasilkan solusi yang paling optimum adalah algoritma fractional knapsack dengan menggunakan pendekatan greedy by density. Diperkuat dengan teori dari Rinaldi Munir bahwa Algoritma greedy untuk persoalan fractional knapsack dengan strategi pemilihan objek berdasarkan pi /wi terbesar akan selalu memberikan solusi optimal.

(35)

22

menggunakan fractional knapsack, objek yang tidak muat ke dalam pilihan (dikarenakan melebihi total constraint) masih dapat dipertimbangkan dengan satuan persentase sehingga keuntungan dapat dioptimalkan.

Pencarian solusi algoritma greedy melibatkan pencarian sebuah himpunan bagian S, dari himpunan kandidat, C; yang dalam hal ini, S harus memenuhi beberapa kriteria yang ditentukan, yaitu menyatakan suatu solusi dan S dioptimisasi oleh fungsi obyektif.

Berikut akan dijelaskan apa itu himpunan-himpunan atau elemen yang terdapat dalam algoritma greedy :

1. Himpunan kandidat

Himpunan yang berisi elemen-elemen pembentuk solusi. 2. Himpunan solusi

Himpunan yang berisi kandidat-kandidat yang terpilih sebagai solusi.

3. Fungsi seleksi

Memilih kandidat yang paling memungkinkan mencapai solusi optimal.

4. Fungsi kelayakan

Memeriksa apakah himpunan kandidat yang telah terpilih dapat menjadi solusi yang layak, yaitu tidak melanggar constraint yang ada. Kandidat yang layak dimasukkan ke dalam himpunan solusi, sedangkan kandidat yang tidak layak dibuang dan tidak pernah dipertimbangkan lagi.

5. Fungsi objektif

Fungsi yang memaksimumkan atau meminimumkan nilai soulsi (misalkan keuntungan, panjang lintasan, dan lain-lain).

II.2.2.3. Algoritma Knapsack

Knapsack telah dipelajari secara intensif sejak karya perintis Dantzig yaitu abad ke pada 50-an. Pada saat itu algoritma Knapsack diimplementasikan baik untuk aplikasi langsung dalam industri maupun manajemen keuangan, tetapi lebih sering digunakan untuk penelitian dan hal yang bersifat teoritis. Sebagai sebuah masalah, knapsack yang sering terjadi dengan relaksasi berbagai masalah integer programming [3].

(36)

tepat dari barang-barang yang akan dibawa dalam sebuah tas pada sebuah perjalanan. Sejumlah barang yang tersedia ini, masing-masing memiliki berat dan nilai, yang menentukan jumlah barang yang dapat dibawa sehingga total berat tidak melebihi kapasitas tas dan dengan total nilai yang sebesar mungkin.

Terdapat beberapa jenis knapsack problem antara lain adalah :

1. 0/1 Knapsack

Pada knapsack 0/1 setiap barang hanya tersedia 1 unit, take it or leave it. Cara pemilihan solusi optimumnya hanya tidak atau ya (0 atau 1) atau dengan kata lain objek lain yang tidak memenuhi aturan constraint tidak dapat dipertimbangkan lagi. Contoh kasus knapsack 0/1 dapat dilihat dalam Tabel II-2, Tabel II-3 dan Tabel II-4 pada sub bab sebelumnya.

2. Fractionalknapsack

Barang boleh dibawa sebagian saja (unit dalam pecahan). Versi problem

ini menjadi masuk akal apabila barang yang tersedia dapat dibagi-bagi misalnya gula, tepung, dan sebagainya. Pada algoritma fractional

knapsack cara pemilihan solusi optimumnya bisa tidak, ya, dan dipertimbangkan dalam pecahan (0 atau 1 atau 1/x) sehingga bobot totalnya dapat dioptimalkan dengan total nilai constraintnya. Contoh pemilihan objek yang optimal fractional knapsack dapat dilihat dalam Tabel II-2, Tabel II-3, dan Tabel II-4 pada subbab sebelumnya.

II.2.3 Tools Pemodelan

Tools pemodelan adalah alat atau pernagkat dan metode yang digunakan untuk memodelkan perancangan perangkat lunak simulasi. Adapun tools pemodelan yang digunakan dalam penelitian ini adalah :

1. Basis Data

2. Flow Chart

3. Diagram Konteks

4. DFD (Data Flow Diagram)

II.2.3.1. Basis Data

(37)

24

secara implisit. Data dapat dinyatakan dalam bentuk angka, karakter atau simbol, sehingga bila data dikumpulkan dan saling berhubungan maka dikenal dengan istilah basis data (database). Sedangkan menurut George Tsu-der Chou basis data merupakan kumpulan informasi bermanfaat yang diorganisasikan ke dalam aturan yang khusus. Informasi ini adalah data yang telah diorganisasikan ke dalam bentuk yang sesuai dengan kebutuhan seseorang. Menurut Encyclopedia of Computer Science and Engineer, para ilmuwan di bidang informasi menerima definisi standar informasi yaitu data yang digunakan dalam pengambilan keputusan.

Definisi lain dari basis data menurut Fabbri dan Schwab adalah sistem berkas terpadu yang dirancang terutama untuk meminimalkan duplikasi data. Menurut Ramez Elmasri mendefinisikan basis data lebih dibatasi pada arti implisit yang khusus, yaitu:

1. Basis data merupakan penyajian suatu aspek dari dunia nyata (real world).

2. Basis data merupakan kumpulan data dari berbagai sumber yang secara logika mempunyai arti implisit. Sehingga data yang terkumpul secara acak dan tanpa mempunyai arti, tidak dapat disebut basis data.

3. Basis data perlu dirancang, dibangun dan data dikumpulkan untuk suatu tujuan. Basis data dapat digunakan oleh beberapa user dan beberapa aplikasi yang sesuai dengan kepentingan user.

Dari beberapa definisi-definisi tersebut, dapat dikatakan bahwa basis data memounyai berbagai sumber data dalam pengumpulan data, bervariasi derajat interaksi kejadian dari dunia nyata, dirancang dan dibangun agar dapat digunakan oleh beberapa user untuk berbagai kepentingan.

II.2.3.2. Flowchart

(38)

1. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan. 2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi

ini harus dapat dimengerti oleh pembacanya.

3. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.

4. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata kerja, misalkan “Menghitung Pajak Penjualan”.

5. Setiap langkah dari aktivitas harus berada pada urutan yang benar.

6. Lingkup dan range dari aktifitas yang sedang digambarkan harus ditelusuri dengan hati-hati. Percabangan-percabangan yang memotong aktivitas yang sedang digambarkan tidak perlu digambarkan pada flowchart yang sama. Simbol konektor harus digunakan dan percabangannya diletakan pada halaman yang terpisah atau hilangkan seluruhnya bila percabangannya tidak berkaitan dengan sistem.

7. Gunakan simbol-simbol flowchart yang standar.

Flowchart terbagi dalam lima jenis yaitu : 1. Flowchart Sistem (System Flowchart)

2. Flowchart Paperwork / Flowchart Dokumen (Document Flowchart) 3. Flowchart Skematik (Schematic Flowchart)

4. Flowchart Program (Program Flowchart) 5. Flowchart Proses (Process Flowchart)

Simbol-simbol flowchart yang biasanya dipakai adalah simbol-simbol flowchart standar yang dikeluarkan oleh ANSI dan ISO. Simbol-simbol ini dapat dilihat pada Gambar simbol standar flowchart.

II.2.3.3. Diagram Konteks

(39)

26

sistem dengan bagian-bagian luar (kesatuan luar). Kesatuan luar ini merupakan sumber arus data atau tujuan data yang berhubungan dengan sistem informasi tersebut. Diagram konteks bisa disebut dengan “Model sistem pokok (fundamental system model) mewakili keseluruhan elemen software dengan masukan (input)

dan keluaran (output) yang diidentifikasi dengan anak panah masuk dan keluar

memperlihatkan sumber data”.

II.2.3.4. Data Flow Diagram (DFD)

Data Flow Diagram (DFD) adalah representasi grafik dari sebuah sistem. DFD menggambarkan komponen-komponen sebuah sistem, aliran-aliran data di mana komponen-komponen tersebut, dan asal, tujuan, dan penyimpanan dari data tersebut [8]. Data Flow Diagram digunakan untuk menggambarkan suatu sistem yang telah ada atau sistem baru yang akan dikembangkan secara logika tanpa mempertimbangkan lingkungan fisik dimana data tersebut mengalir atau

lingkungan fisik dimana data tersebut akan disimpan. Data Flow Diagram juga digunakan pada metodologi pengembangan sistem yang terstruktur.

II.2.4 Tools Implementasi

Tools implementasi adalah alat-alat atau metode yang digunakan untuk mengimplementasikan perangkat lunak simulasi yang dibangun. Tools implementasi perangkat lunak yang dibangun antara lain adalah :

1. Bahasa Pemrograman 2. Borland Delphi

II.2.4.1. Bahasa Pemrograman

(40)

Turbo Pascal dan C merupakan program compiler. Compiler sendiri berarti program yang menerjemahkan tulisan berupa kode program menjadi bahasa mesin yang dapat dimengerti oleh komputer. Proses yang dilakukan disebut compile atau compiling. Suatu program dapat di-compile dengan menggunakan kombinasi tombol Alt + F9. Sedangkan untuk menjalankan program, tombol yang dapat digunakan adalah Ctrl + F9. Bila selama proses compile terdapat error atau kesalahan dalam penulisan program, maka Turbo Pascal atau C akan memberitahukan letak kesalahan tersebut sehingga pengguna dapat memperbaikinya di halaman editor. Turbo Pascal merupakan bahasa yang case insensitive yang berarti penulisan dalam huruf kapital maupun huruf kecil tidak dipermasalahkan. Akan tetapi pada C yang case sensitive, maka penulisan huruf kapital atau kecil harus benar-benar diperhatikan.

Pada setiap kode pemrograman, terdapat aturan yang harus dipatuhi agar

program tersebut dapat menjalankan (compile) suatu program dengan baik tanpa error. Struktur utama pada Turbo Pascal adalah sebagai berikut :

program ... ; {deklarasi nama program} uses ... ; {deklarasi penggunaan unit} label ... ; {deklarasi label}

const ... ; {deklarasi konstant} type ... ; {deklarasi tipe data} var ... ; {deklarasi variabel} procedure ... ; {deklarasi procedure} function ... ; {deklarasi function} begin

statement; {program ditulis di sini} ...

end.

II.2.4.2. Borland Delphi

(41)

28

aplikasi dapat dibuat dengan Delphi, termasuk aplikasi untuk mengolah teks, grafik, angka, database dan aplikasi web.

Secara umum, kemampuan Delphi adalah menyediakan komponen-komponen dan bahasa pemrograman yang andal, sehingga memungkinkan untuk dapat membuat program aplikasi sesuai dengan keinginan, dengan tampilan dan kemampuan yang canggih.

Untuk mempermudah programer dalam membuat program aplikasi, Delphi menyediakan fasilitas pemrograman yang sangat lengkap. Fasilitas pemrograman tersebut dibagi dalam 2 kelompok, yaitu object dan bahasa pemrograman. Secara ringkas, object adalah suatu komponen yang mempunyai bentuk fisik dan biasanya dapat dilihat (visual). Object biasanya dipakai untuk melakukan tugas tertentu dan mempunyai batasan-batasan tertentu. Sedangkan bahasa pemrograman secara singkat dapat disebut sebagai sekumpulan teks yang

mempunyai arti tertentu dan disusun dengan aturan tertentu serta untuk menjalankan tugas tertentu. Delphi menggunakan struktur bahasa pemrograman

Object Pascal yang sudah sangat dikenal di kalangan pemrogram profesional. Gabungan dari object dan bahasa pemrograman ini sering disebut sebagai bahasa pemrograman berorientasi object atau Object Oriented Programing (OOP).

Delphi telah memberikan komponen-komponen yang mudah dalam membangun aplikasi. Dalam grafis pun delphi dapat mengolah data yang membuat tampilan gambar seperti grafik equalizer dengan menggunakan komponen khsus. Secara matematis delphi 7 telah menyediakan operator untuk mengolah data sehingga dalam membuat aplikasinya pun lebih mudah, adapun tingkatan operator dalam delphi 7 sehingga jika muncul fungsi matematis maka akan diolah secara otomatis.

II.2.5 Pengujian Perangkat Lunak

(42)

.

II.2.5.1. Metode Pengujian White-box

Merupakan metode perancangan test case yang menggunakan struktur kontrol dari perancangan prosedural untuk mendapatkan test case. Dengan menggunakan metode white box, analis sistem akan dapat memperoleh test case yang:

1. Menjamin seluruh independent path di dalam modul yang dikerjakan sekurang-kurangnya sekali

2. Mengerjakan seluruh keputusan logikal

3. Mengerjakan seluruh loop yang sesuai dengan batasannya

4. Mengerjakan seluruh struktur data internal yang menjamin validitas

Dua teknik dalam metode pengujian white-box adalah dengan uji coba basis path dan pengujian loop.

II.2.5.1.1. Basis Path

Merupakan teknik uji coba white box yang diusulkan Tom McCabe.

[image:42.595.114.514.560.668.2]

Metode ini memungkinkan perancang test case mendapatkan ukuran kekompleksan logical dari perancangan prosedural dan menggunakan ukuran ini sebagai petunjuk untuk mendefinisikan basis set dari jalur pengerjaan. Test case yang didapat digunakan untuk mengerjakan basis set yang menjamin pengerjaan setiap perintah minimal satu kali selama uji coba. Test case dapat dilakukan dengan membuat diagram alir dari suatu algortima. Jenis notasi diagram alir dapat dilihat pada Gambar II-2.

Gambar II-2 Notasi Diagram Alir Pengujian

(43)

30

[image:43.595.148.545.164.441.2]

menggambarkan aliran kontrol. Setiap node harus mempunyai tujuan node. Region adalah daerah yang dibatasi oleh edge dan node. Termasuk daerah diluar grafik alir.

Gambar II-3 Contoh Diagram Alir (Flow Graph) dan Predicate Node

Node dibuat terpisah untuk masing-masing kondisi A dan B dari pernyataan IF A OR B. Masing-masing node berisi kondisi yang disebut pridicate nodedan mempunyai karakteristik dua atau lebih edge darinya.

Cyclomatic complexity adalah metrik software yang menyediakan ukuran kuantitatif dari kekompleksan logikal program. Apabila digunakan dalam konteks

(44)
[image:44.595.116.491.82.278.2]

Gambar II-4 Contoh Diagram Alir

Dari gambar Gambar II-4 Contoh Diagram Alir maka langkah perhitungannya adalah sebagai berikut :

Path 1 = 1 - 11

Path 2 = 1 - 2 - 3 - 4 - 5 - 10 - 1 - 11 Path 3 = 1 - 2 - 3 - 6 - 8 - 9 ...: 10 - 1 - 11 Path 4 = 1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11

Path 1,2,3,4 yang telah didefinisikan diatas merupakan basis set untuk diagram alir.

1. Cyclomatic complexity

Cyclomatic complexity digunakan untuk mencari jumlah path dalam satu flowgraph. Dapat dipergunakan rumusan sebagai berikut :

1. Jumlah region grafik alir sesuai dengan cyclomatic complexity.

2. Cyclomatix complexity V(G) untuk grafik alir dihitung dengan rumus:

V(G) = E - N + 2

Dimana:

E = jumlah edge pada grafik alir N = jumlah node pada grafik alir

3. Cyclomatix complexity V(G) juga dapat dihitung dengan rumus: V(G) = P + 1

(45)

32

Pada Gambar dapat dihitung cyclomatic complexity: 1. Flowgraph mempunyai 4 region

2. V(G) = 11 edge - 9 node + 2 = 4 3. V(G) = 3 predicate node + 1 = 4

Jadi cyclomatic complexity untuk flowgraph adalah 4.

2. Graph Metrik

Graph metrik merupakan software yang dikembangkan untuk membantu uji coba basis path atau struktur data. Graph metrik adalah matrik empat persegi yang mempunyai ukuran yang sama dengan jumlah node pada flowgraph. Masing-masing baris dan kolom mempunyai hubungan dengan node yang telah ditentukan dan pemasukan data matrik berhubungan dengan hubungan (edge) antar node.

Hubungan bobot menyediakan tambahan informasi tentang aliran kontrol. Secara simpel hubungan bobot dapat diberi nilai 1 jika ada hubungan antara node

atau nilai 0 jika tidak ada hubungan. Dapat juga hubungan bobot diberi tanda dengan:

1. Kemungkinan link (edge) dikerjakan

2. Waktu yang digunakan untuk proses selama traversal dari link

3. Memori yang diperlukan selama traversal link

4. Sumber daya yang diperlukan selama traversal link

II.2.5.1.2. Pengujian Loop

Loop merupakan kendala yang sering muncul untuk menerapkan algoritma dengan tepat. Uji coba loop merupakan teknik pengujian white box yang fokusnya pada validitas dari loop. Kelas loop yaitu : loop sederhana, loop tersarang, loop terangkai, loop tidak terstruktur.

II.2.5.2. Metode Pengujian Black-Box

(46)

ujicoba whitebox, tetapi merupakan pendekatan yang melengkapi untuk menemukan kesalahan lainnya, selain menggunakan metode whitebox.

Ujicoba blackbox berusaha untuk menemukan kesalahan dalam beberapa kategori, diantaranya :

1. Fungsi-fungsi yang salah atau hilang 2. Kesalahan interface

3. Kesalahan dalam struktur data atau akses database eksternal 4. Kesalahan performa

5. kesalahan inisialisasi dan terminasi

Tidak seperti metode whitebox yang dilaksanakan diawal proses, ujicoba blackbox diaplikasikan dibeberapa tahapan berikutnya. Karena ujicoba blackbox dengan sengaja mengabaikan struktur kontrol, sehingga perhatiannya difokuskan pada informasi domain. Ujicoba didesain untuk dapat menjawab

pertanyaanpertanyaan berikut :

1. Bagaimana validitas fungsionalnya diuji.

2. Jenis input seperti apa yang akan menghasilkan kasus uji yang baik. 3. Apakah sistem secara khusus sensitif terhadap nilai input tertentu. 4. Bagaimana batasan-batasan kelas data diisolasi.

5. Berapa rasio data dan jumlah data yang dapat ditoleransi oleh sistem. 6. Apa akibat yang akan timbul dari kombinasi spesifik data pada operasi

sistem.

Dengan mengaplikasikan ujicoba blackbox, diharapkan dapat menghasilkan sekumpulan kasus uji yang memenuhi kriteria berikut :

1. Kasus uji yang berkurang, jika jumlahnya lebih dari 1, maka jumlah dari ujikasus tambahan harus didesain untuk mencapai ujicoba yang cukup beralasan.

(47)

34

BAB III

ANALISIS ALGORITMA

III.1 Analisis Sistem

Bab ini akan membahas tentang analisis dan perancangan sistem algoritma knapsack dengan data proyek yang digunakan bersumber dari PT. GITS

Indonesia. Terdapat langkah-langkah yang dilakukan dalam analisis sistem yaitu : 1. Analisis masalah

2. Analisis struktur data 3. Analisis strategi 4. Analisis algoritma

III.1.1 Analisis Masalah

Analisis algoritma knapsack dilakukan karena ditemukannya masalah dalam penggunaan algoritma knapsack. Masalah yang ditemukan saat analisis dilakukan antara lain adalah belum ditemukannya analisis performansi algoritma knapsack terhadap kasus pemilihan proyek yang terjadi di PT. GITS Indonesia. Hal ini menyebabkan hanya pada kasus-kasus tertentu saja mungkin suatu algoritma lebih efektif dari yang lainnya. Penerapan Algoritma knapsack terhadap pemilihan proyek ini di PT. GITS Indonesia ini memiliki kesamaan karateristik dengan kasus uji yang dilakukan peneliti lain terhadap algoritma knapsack terutama pada parameter yang digunakan. Kapasitas knapsack (W) diasumsikan dengan jumlah sumber daya manusia yang tersedia di perusahaan, bobot (wi) diasumsikan dengan jumlah sumber daya manusia yang dibutuhkan untuk menangani sebuah proyek dan profit (pi) diasumsikan dengan keuntungan dari sebuah proyek.

Hasil penelitian yang dilakukan terhadap beberapa literatur ditemukan

(48)

daya manusia yang dibutuhkan per proyek dan profit proyek yang ditangani. Berdasarkan analisis masalah yang dipaparkan diatas maka diperlukan analisis performansi terhadap algoritma knapsack.

III.1.2 Analisis Struktur Data

Struktur data yang digunakan didalam penelitian ini adalah struktur data array dinamis. Parameter yang menggunakan array dinamis antara lain adalah :

1. Parameter profit (profit : Larik Of Int)

2. Parameter sumber daya manusia (SDM : Larik Of Int) 3. Parameter density (density : Larik Of Double)

4. Parameter status proyek (optimum : Larik Of Double)

Parameter diatas menggunakan array dinamis dengan jumlah elemen sebesar max, dimana max ini adalah parameter yang dapat dirubah pada saat

runtime program. Banyaknya elemen dipanggil dan ditentukan dengan

menggunakan setlength. Pemanggilan setLength untuk setiap parameter dalam

potongan program adalah sebagai berikut : 1. setLength(SDM,max)

2. setLength(profit,max) 3. setLength(density,max) 4. setlength(optimum,max)

III.1.3 Analisis Strategi

Persoalan pemilihan proyek dalam penelitian ini akan diselesaikan dengan strategi algoritma Greedy. Sebelum kita menganalisis algoritma knapsack maka kita harus menganalisis algoritma greedy terlebih dahulu. Adapun karateristik algoritma Greedy yaitu:

1. Tidak melihat masalah secara global.

2. Mengambil langkah terbaik pada setiap langkah pencariannya untuk segera mendapatkan solusi.

3. Berguna dalam banyak kasus dimana tujuan atau kendala tidak diketahui secara pasti.

(49)

36

5. Mudah untuk menerapkan dan penginterprestasikan hasil.

Seperti yang telah dijelaskan pada bab tinjauan pustaka strategi algoritma greedy memiliki tiga pendekatan yang berbeda, yaitu greedy by weight, greedy by profit dan greedy by density. Percobaan perhitungan pendekatan strategi algoritma greedy dilakukan untuk menentukan pemilihan pendekatan yang akan digunakan dalam kasus pemilihan proyek. perbandingan perbandingan pendekatan algoritma greedy akan disajikan dalam Tabel III-1. Diketahui data proyek sebagai berikut :

1) Jumlah sumber daya manusia yang tersedia di perusahaan ( W ) = 10. 2) Jumlah projek yang akan dikerjakan ( i ) = 6

3) (wi) = weight atau jumlah SDM yang dibutuhkan untuk pengerjaan proyek.

[image:49.595.84.543.424.635.2]

4) (pi) = profit.

Tabel III-1 Perhitungan Perbandingan Pendekatan Algoritma Greedy

dengan Fractional Knapsack Ke-1

Properti Proyek Fractional Knapsack With Greedy by

i wi pi pi /wi profit Weight density

1 2 50000 25000 1/2 or 50% 1 1

2 3 51000 17000 1 2/3 or 66% 0

3 2 45000 22500 0 1 1

4 4 123000 30750 1 0 1

5 2 40000 20000 0 1 0

6 2 56000 28000 1 1 1

Total SDM Terpakai 10 10 10

Total keuntungan 255000 225000 274000

(50)

angka pecahan ( / ) atau persen (%) menunjukkan proyek ke-i terpilih sebagai solusi optimal dengan pertimbangan pecahan atau persentase tersebut.

[image:50.595.89.537.245.447.2]

Perhitungan perbandingan algoritma greedy akan dilakukan sekali lagi untuk memastikan kebaikan strategi algoritma yang akan digunakan untuk pemilihan proyek. perhitungan perbandingan algoritma greedy ke-2 dapat dilihat pada tabel Tabel III-2.

Tabel III-2 Perhitungan Perbandingan Pendekatan Algoritma Greedy

dengan Fractional Knapsack Ke-2

Properti Proyek Fractional Knapsack With Greedy by i wi pi pi /wi profit weight density

1 2 10000 5000 0 1 1

2 3 45000 15000 1 1 1

3 2 37250 18625 1 1 1

4 3 12500 4166,66667 67% 1 0

5 3 41600 13866,6667 1 0 1

Total SDM Terpakai 10 10 10

Total keuntungan 50269,44 42791,67 52491,67

Hasil perhitungan pada Tabel III-2 menunjukkan bahwa pendekatan strategi algoritma greedy by density lagi-lagi menghasilkan keuntungan paling optimal. Total keuntungan untuk pendekatan strategy algoritma greedy by density

adalah 52491,67. Berdasarkan hasil percobaan tersebut maka pendekatan strategi algoritma yang akan digunakan dalam pemilihan proyek di PT GITS Indonesia

adalah dengan menggunakan greedy by density. Teori ini diperkuat dengan teori yang dikemukkan Rinaldi Munir yaitu algoritma greedy untuk persoalan fractional knapsack dengan strategi pemilihan objek berdasarkan density (pi /wi) terbesar akan selalu memberikan solusi optimal [8].

Penjelasan langkah atau proses algoritma greedy dalam mencari solusi akan dijelaskan untuk mempermudah pemahaman langkah algoritma. Proses diilustrasikan dengan penukaran uang W=500 yang akan ditukar dengan himpunan nilai uang 100, 50, 100, 200, 100, 50.

(51)

38

2. Langkah pertama yang dilakukan algoritma greedy adalah menyusun himpunan-himpunan yang mempresentasikan solusi optimal. Contoh himpunan koin yang mempresentasikan solusi optimal adalah K={50, 50, 100, 100, 100, 200}.

3. Langkah kedua yang dilakukan adalah memilih solusi yang nilainya mendekati atau sama dengan solusi optimal. Contoh himpunan yang mendekati solusi optimal adalah S={200, 100, 100, 100} atau S={200, 100, 100, 50, 50}.

4. Langkah berikutnya yaitu menyeleksi himpunan yang nilainya paling tinggi dari himpunan kandidat yang tersisa.

5. Langkah keempat yaitu memeriksa total nilai himpunan solusi yang diseleksi. Total nilai himpunan solusi harus lebih kecil atau sama dengan constrain yang telah ditentukan.

Jika hasil nilai diatas true maka himpunan proyek terpilih akan diseleksi menjadi solusi optimal.

6. Langkah terakhir adalah menyusun nilai solusi yang paling optimal. Algoritma greedy mencari solusi terbaik dengan cara memilih himpunan yang dianggap paling baik, sehingga pilihan ini disebut sebagai solusi lokal. Solusi lokal yang dipilih diharapkan dapat mengarah ke solusi global.

III.1.4 Analisis Algoritma knapsack

Algoritma fractional knapsack merupakan algoritma yang digunakan untuk menyelesaikan permasalahan pemilihan proyek. Pada Gambar III-1 Flowchart Algoritma Knapsack dapat dilihat alur proses algoritma Knapsack.

(52)

1. Memasukkan harga ke dalam SDM[ i ], profit[ i ] dan k.

SDM [i] adalah jumlah SDM yang dibutuhkan untuk sebuah proyek, p[i] adalah profit proyek dan k adalah constraint atau jumlah SDM yang tersedia di perusahaan.

2. Hitung rasio density atau Pi/Wi (keuntungan per unit) untuk setiap proyek. 3. Urutkan proyek secara menurun berdasarkan rasio density proyek.

4. Inisialisasi opt_sol = 0 dan i=1.

5. Pilih proyek dengan keuntungan terbesar tanpa melampaui jumlah SDM yang tersedia di perusahaan.

for i  to n do if SDM[i] > k then eof

else

optimum[i]  1 kk-SDM[i] endif

if i<= n then optimum[i]  k/SDM[i] else opt_sol0

6. Tampilkan daftar proyek dengan solusi yang terbaik.

Ketika proses pemilihan solusi, algoritma knapsack menginisialisasikan jumlah SDM yang dibutuhkan untuk proyek, keuntungan proyek dan jumlah SDM yang tersedia di perusahaan. Setelah inisialisasi himpunan penyusun solusi algoritma knapsack akan menghitung rasio density (pi / wi) proyek. Proses berikutnya algoritma akan malakukan pengurutan secara descending (menurun) berdasarkan density.

Tahapan berikutnya adalah inisialisasi nilai solusi optimal dan inisialisasi iterasi. Setelah itu baru algoritma kapsack mulai menyeleksi proyek dengan nilai density terbaik, penyeleksian akan dilakukan tanpa melebihi jumlah SDM yang

tersedia di perusahaan. Jika jumlah total SDM telah memenuhi atau kurang dari sama dengan constraint maka himpunan proyek yang telah diseleksi akan disusun

(53)

40

Mulai

SDM[ i ] < k

Ya

Selesai

Tidak Density[ i ] = profit[ i ] / SDM[ i ]

Inisialisasi Opt_sol = 0

i = 1

K = K - SDM[ i ] SDM[ i ], Profit[ i ],

k

[image:53.595.226.427.73.584.2]

SDM[ i ], profit[ i ], density[ i ], optimum[ i ], opt_sol Mengurutkan density[ i ]

Gambar III-1 Flowchart Algoritma Knapsack

(54)

Mulai

Mengurutkan density[ i ]

for l = i + 1 to n do

temp = density[ l ] Density[ l ] = density[ i ]

Density[ i ] = temp density[ i ] < desity[ l ] ?

ya

Selesai

Mengurutkan density[ i ]

tidak

[image:54.595.198.436.79.543.2]

Data density[ i ] yang terurut secara descending

Gambar III-2 Flowchart Prosedur Mengurutkan Nilai Berdasarkan Density

(55)

42

Tabel III-3 Pseudo-Code Pengurutan Algoritma Knapsack

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

procedure PengurutanNilaiBerdasarkanDensity(input density[i]:Larik of double)

{mengurutkan nilai proyek berdasarkan density proyek secara menurun}

{I.S : nilai density telah terdefinisi sebelumya} {F.S : menampilkan pengurutan density proyek}

Algoritma :

//Pengurutan berdasarkan density

i1

for li+1 to n do

if (density[i]<density[l]) then tempdensity[l]

density[l]density[i] density[i]temp

endif endfor

write(density[i])

Tabel III-4 Pseudo-code Utama Algoritma Fractional Knapsack

1 2 3 4 5 6 7 8 9 1

Gambar

Tabel II-2 Contoh Kasus dan Pemilihan Objek Dengan  Greedy By Profit
Tabel II-3 Contoh Kasus dan Pemilihan Objek Dengan  Greedy By Weight
Tabel II-4 Contoh Kasus dan Pemilihan Objek Dengan  Greedy By Density
Gambar II-2 Notasi  Diagram Alir Pengujian
+7

Referensi

Dokumen terkait

penelitian ini yaitu Algoritma Greedy dapat digunakan untuk menyelesaikan knapsack problem pada jasa pengiriman barang di Kota Makassar. Adapun hasil menggunakan Algoritma Greedy

Pada penelitian ini algoritma genetika akan digunakan dalam penyelesaian 0-1 multi- dimensional knapsack problem yang bertujuan melakukan optimasi beban angkut kendaraan

Pada algoritma Knapsack akan terjadi penambahan ukuran file teks, hal ini dapat dilihat pada contoh kasus yang mana ukuran plaintext (pesan asli) adalah 12 bytes,

Dataset yang digunakan pada penelitian ini adalah dataset ulasan obat dan ulasan film untuk melakukan analisis sentimen dengan mengulas performansi algoritma

Pada Tugas Akhir ini, dilakukan implementasi ke dalam sebuah perangkat lunak (software) dan selanjutnya menganalisis perbandingan performansi antara Algoritma Helix dan

Pada penelitian ini Algoritma Genetika berhasil diterapkan untuk pemilihan pekerja bangunan dengan inputan nilai kompetensi tukang kemudian diproses dengan parameter

Adapun tujuan penelitian ini adalah untuk mendapatkan keuntungan maksimal dengan mengaplikasikan algoritma greedy dalam menyelesaikan permasalahan integer knapsack

Dengan ini saya menyatakan bahwa tugas akhir dengan judul “ANALISIS PERFORMANSI ALGORITMA C5.0 DALAM PENGKLASIFIKASIAN SPAM EMAIL” beserta seluruh isinya adalah