BAB 2 LANDASAN TEORI
2.1
Algoritma Dalam Kamus Besar Bahasa Indonesia, terbitan Balai Pustaka 1988, algoritma
diartikan sebagai urutan logis pengambilan putusan untuk pemecahan masalah. Menurut Munir R. (1999, p4), algoritma adalah urutan langkah – langkah logis penyelesaian masalah yang disusun secara sistematis. Menurut Hariyanto B. (2000, p8), algoritma adalah suatu metode presisi yang dapat digunakan komputer untuk menyelesaikan masalah tertentu. Algoritma disusun dari sekumpulan langkah terbatas, yang masing – masing mungkin memerlukan satu operasi atau lebih. Ciri – ciri algoritma adalah sebagai berikut: [KNU-69, HOR-90] 1. Input Terdapat nol atau lebih masukan yang diberikan secara eksternal. 2. Output Sedikitnya terdapat satu keluaran yang dihasilkan. 3. Definite Harus secara sempurna menyatakan apa yang dilakukan. Contoh: 1. Hitung 5/0 Tidak definite, karena tidak jelas apa hasil yang diperoleh dari operasi tersebut.
8
2. Tambahkan 6 atau 7 ke x Tidak definite, karena tidak jelas apa yang harus dilakukan. 4. Effective Setiap instruksi harus dapat dilakukan secara manual menggunakan pensil atau kertas dalam sejumlah waktu berhingga. 5. Terminate Harus berhenti setelah sejumlah terbatas operasi.
2.2
Riset Operasional Riset Operasional (RO) atau riset pada operasional, menunjukkan bahwa RO
digunakan untuk menyelesaikan masalah operasional dalam organisasi. Kata riset pada RO menunjukkan bahwa RO menggunakan pendekatan yang menyerupai suatu riset, di mana riset ini ditunjang oleh bidang keilmuan. Peran RO adalah sebagai alat bantu untuk mempelajari sebuah sistem, sehingga RO sering digunakan untuk membantu para manajer dalam mengambil keputusan. Pada umumnya, manajer mengambil keputusan hanya berdasarkan perasaan dan pengalaman. Tetapi keputusan yang baik harus dapat dibuat berdasarkan suatu pendekatan formal tertentu. Dalam melakukan pendekatan formal ini, para manajer harus melakukan studi secara sistematik terlebih dahulu terhadap sistem yang ada. Studi ini dimulai dari pengumpulan data, penyusunan model matematika, percobaan model, prediksi operasi selanjutnya, dan pencarian dukungan pihak manajemen untuk penggunaan model tersebut. Studi inilah yang disebut Riset Operasional [Levin at al (1992, p23)]. RO menggunakan model untuk membantu menyelesaikan masalah, maka langkah-langkah dalam proses RO ditujukan untuk menjalankan model tersebut. 9
Aktifitas Proses
Langkah-langkah Proses
Output Proses
Kunjungan lapangan Observasi Riset
Langkah 1 : Observasi lingkungan persoalan
Informasi dan data penunjang yang dibutuhkan
Menentukan penggunaan Menetukan tujuan Menentukan batasan - batasan
Langkah 2 : Analisis dan pengenalan masalah
Pedoman yang jelas untuk mencari pemecahan yang dibutuhkan
Peralatan RO Antar hubungan model matematika Pemecahan yang diketahui riset
Langkah 3 : Pengembangan Model
Model yang berfungsi di bawah batasan lingkungan yang telah ditetapkan
Data internal dan eksternal Kenyataan Pendapat Data bank komputer
Langkah 4 : Memilih data masukan yang sesuai
Langkah 5: Perumusan pemecahan dan pengetesan yang dapat dipertanggungjawabkan
Pengujian Batasan Pembuktian
Pembahasan perilaku Mengemukakan ide Pelibatan manajemen Penjelasan
Langkah 6 : Penerapan pemecahan
Input yang memadai untuk mengerjakan dan menguji model
Pemecahan yang dapat membantu pencapaian tujuan organisasi
Pemahaman oleh manajemen untuk menunjang model operasi dalam jangka panjang
Sumber : Budnick F. S., Mojena R. & Vollman T. E. (1977). Gambar 2.1 Langkah – langkah dalam Proses Riset Operasional
10
2.3
Model Secara umum, model adalah representasi atau abstraksi dari sebuah objek atau
situasi aktual. Karena model adalah abstraksi dari suatu realita, maka model tersebut akan terlihat lebih sederhana daripada kenyataannya sendiri. Model digunakan sebagai pengganti dari suatu objek. Hal ini dilakukan karena seringkali suatu percobaan akan lebih mudah dilakukan terhadap model, dibandingkan dengan objek yang sesungguhnya. Beberapa jenis model yang diketahui, antara lain: 1. Model Ikonik (physical) Penampilan fisik dari suatu objek dalam bentuk ideal atau dalam skala yang berbeda, misalnya globe dunia, foto. 2. Model Analog (diagrammatic) Menggunakan objek lain (umumnya diagram) dalam menggambarkan karakteristik suatu objek, misalnya flowchart, Data Flow Diagram, kurva permintaan. 3. Model Matematika (symbolic) Menggunakan bentuk bilangan, simbol dan matematika dalam melukiskan sifat suatu objek, misalnya model pemrograman linier, model antrian. Model matematika pada umumnya digunakan untuk kebutuhan-kebutuhan pemrograman linier, analisis sistem dan lainnya (Law and Kelton, 2000, p4 ; Budnick, Mojena, dan Vollman, 1977, p11). Model matematika tersebut berbentuk struktur matematika yang menunjukkan hubungan input (variabel, kendala, parameter) dengan output (nilai yang diekspresikan pada fungsi tujuan).
11
2.4
Pemrograman Linier (Linear Programming)
2.4.1
Definisi-definisi Menurut Soemartojo N. (1998, p1.1), linier mengandung arti bahwa hubungan
yang dijumpai dalam masalah khusus yang dapat diselesaikan adalah linier. Kata program menandakan bahwa proses penentuan suatu langkah atau tindakan dikenal sebagai suatu program. Pemrograman linier (PL) timbul jika dua atau lebih “kegiatan” bersaing untuk menggunakan “sarana” yang tersedia dalam jumlah yang terbatas. Menurut Nash S. G. dan Sofer A. (1996, p6), sebuah model PL berhubungan dengan proses optimalisasi suatu fungsi linier, yang berhubungan dengan kendala linier yang terdapat pada variabel-variabel. Walaupun fungsi linier merupakan fungsi yang sederhana, fungsi tersebut seringkali muncul dalam bidang ekonomi, penjadwalan dan aplikasi lain. Dapat disimpulkan bahwa pemrograman linier adalah suatu cabang ilmu yang mempelajari proses optimalisasi suatu fungsi dengan memperhatikan kendala-kendala yang ada, di mana hubungan pada fungsi dan kendala tersebut bersifat linier. Menurut Winston, L. W. (1993, p53), definisi dari sebuah masalah PL adalah suatu masalah optimalisasi yang dikerjakan menyangkut 3 hal sebagai berikut: •
Menentukan maksimisasi atau minimisasi suatu fungsi linier dari variabel-variabel keputusan
(decision
variables).
Fungsi
yang
akan
dimaksimumkan
atau
diminimumkan ini disebut dengan fungsi objektif (objective function). •
Nilai dari variabel-variabel keputusan harus memenuhi sebuah himpunan dari kendala-kendala (constraints). Setiap kendala harus berbentuk persamaan linier (linear equation) atau pertidaksamaan linier (linear inequality).
12
•
Sebuah batasan tanda (sign restriction) berhubungan dengan variabel. Untuk tiap variabel xi , batasan tanda menunjukkan bahwa xi harus tidak negatif (xi ≥ 0) atau xi tidak memiliki batasan tanda. Untuk mempermudah pemahaman, berikut ini dipaparkan suatu contoh
penggunaaan pemrograman linier dalam kehidupan sehari-hari. Masalah 2.1 Sebuah perusahaan manufaktur harus menentukan kombinasi produk yang harus mereka buat untuk kemudian dijual. Furniture Manufacturing Company, memproduksi meja Parson dan bangku Deacons. Perusahaan tersebut akan memperoleh keuntungan $20 untuk setiap penjualan meja dan S24 untuk setiap penjualan bangku. Kapasitas produksi perusahaan dibatasi oleh 2 hal, yaitu setiap produk harus diproses di bagian perakitan dan bagian pemolesan. Setiap meja membutuhkan waktu 3 jam untuk diproses pada bagian perakitan, dan 4 jam untuk diproses pada bagian pemolesan. Setiap bangku, membutuhkan 6 jam untuk diproses pada bagian perakitan, dan 2 jam pada bagian pemolesan. Pada saat ini, bagian perakitan dapat melayani maksimal 60 jam kerja per hari, sedangkan bagian pemolesan dapat melayani maksimal 32 jam per hari. Sumber daya setiap produk, dan keuntungan masing-masing produk dapat dilihat pada tabel 2.1
13
Tabel 2.1 Sumber Daya dari Furniture Manufacturing Company
Keuntungan Produk
(per unit)
Waktu proses tiap barang di Bagian
Bagian
Perakitan
Pemolesan
Meja Parson
S20
3
4
Bangku Deacons
S24
6
2
60
32
Waktu yang tersedia untuk tiap bagian
(Sumber: Linear Programming : An Emphasis on Decision Making, p10) Masalah yang muncul adalah bagaimana menentukan secara optimal jumlah meja dan bangku yang akan diproduksi agar laba perusahaan ini akan maksimal. Untuk menyelesaikan masalah tersebut, maka dibuat suatu model pemrograman linier, yang terdiri dari 3 komponen dasar, yaitu : 1. Variabel keputusan yang akan ditentukan nilainya. 2. Fungsi objektif atau tujuan yang ingin dicapai. 3. Kendala-kendala yang harus dipenuhi. Sehingga, dapat dibentuk model pemrograman linier terhadap masalah di atas adalah: Model PL 2.1 Maksimumkan:
p = 20x1 + 24x2 (p = profit/keuntungan)
Dengan:
x1 = jumlah meja Parson yang akan diproduksi x2 = jumlah bangku Deacons yang akan diproduksi
Kendala-kendala:
3x1 + 6x2 ≤ 60 (kendala di perakitan) 4x1 + 2x2 ≤ 32 (kendala di pemolesan)
Batasan tanda:
x1, x2 ≥ 0 14
Dari model tersebut, dapat dilihat bahwa: 1. Variabel keputusan adalah x1 dan x2. Dimana x1 adalah jumlah meja Parson yang akan diproduksi, dan x2 adalah jumlah bangku Deacons yang akan diproduksi. 2. Fungsi objektifnya adalah memaksimumkan profit (p) atau keuntungan perusahaan yaitu dengan menjumlahkan total keuntungan yang didapat dari jumlah meja dan bangku yang diproduksi. 3. Kendala bahwa jumlah jam kerja yang dapat digunakan di bagian perakitan tidak lebih dari 60 jam kerja, dan jumlah jam kerja di bagian pemolesan tidak lebih dari 32 jam kerja. Ada beberapa istilah berkaitan dengan proses penyelesaian model pemrograman linier, antara lain: 1. Feasible solution adalah himpunan semua solusi yang memenuhi semua kendala-kendala. 2. Optimal solution adalah feasible solution yang memberikan hasil paling optimal pada fungsi tujuan, baik itu maksimum mau pun minimum. Untuk mendapatkan optimal solution, dapat dilakukan pengujian satu per satu terhadap feasible solution. Akan tetapi, hal ini sukar dilakukan, karena jumlah feasible solution sangatlah banyak. Sehingga proses pengecekan tersebut menjadi tidak efektif. Karenanya dibutuhkan suatu cara atau prosedur yang mampu mendapatkan optimal solution secara efisien. Prosedur tersebut dapat menggunakan pendekatan geometri maupun pendekatan aljabar. Kedua pendekatan tersebut sebenarnya sama, hanya saja pendekatan yang satu 15
atau pendekatan yang lainnya mungkin lebih nyaman digunakan untuk menyelesaikan suatu model pemrograman linier tertentu (Nash, S. G.:linear and non linear programming p.67). Pendekatan aljabar berbasiskan pada penulisan pemrograman linier ke dalam suatu cara tertentu, yang memungkinkan koefisien matriks dari kendala-kendala pada pemrograman linier dapat dianalisis menggunakan aljabar linier. Pendekatan aljabar ini digunakan sebagai dasar pada metode simplex. Pendekatan geometri berbasiskan pada geometri dan ruang feasible dan menggunakan ide-ide seperti konektivitas dapat digunakan untuk menganalisis pemrograman linier. Penggunaan geometri, memungkinkan konsep pemrograman linier dapat dipahami dengan mudah, karena bisa dijelaskan dengan menggunakan gambar. Pendekatan geometri ini digunakan sebagai dasar pada metode grafik.
2.4.2
Asumsi-asumsi Pemrograman Linier Beberapa asumsi pemrograman linier adalah sebagai berikut: 1. Tujuan (objective) yang akan dicapai harus dapat dinyatakan dalam bentuk fungsi linier. Fungsi ini disebut fungsi tujuan (objective function). 2. Harus ada alternative pemecahan. Pemecahan yang membuat nilai fungsi tujuan optimal (laba yang maksimum, biaya yang minimum) yang harus dipilih. 3. Sumber-sumber tersedia dalam jumlah yang terbatas (bahan mentah terbatas, modal terbatas, ruangan untuk menyimpan barang terbatas). Pembatasanpembatasan harus dinyatakan dalam ketidaksamaan linier (inequality function) maupun persamaan linier (linear equation). 16
2.4.3
Metode Penyelesaian Pemrograman Linier Metode
penyelesaian
pemrograman
linier
dapat
diselesaikan
dengan
menggunakan pendekatan aljabar yang mendasari metode simplex, dan dengan menggunakan pendekatan geometri yang mendasari metode grafik. 2.4.3.1
Metode Grafik Pada metode grafik, terdapat 2 langkah utama yaitu: 1.
Menentukan ruang solusi yang menunjukkan semua feasible solution, dengan cara: •
Menggambar semua persamaan kendala (satu garis lurus untuk satu persamaan)
• 2.
Mengarsir ruang solusi.
Menentukan optimal solution dari semua feasible point pada ruang solusi, dengan cara: •
Menentukan semua koordinat titik pojok
•
Menentukan nilai fungsi tujuan untuk semua titik pojok
•
Titik pojok dengan nilai fungsi tujuan yang maksimum atau minimum, untuk persoalan maksimisasi atau minimisasi adalah titik optimal.
Berikut adalah penyelesaian model pemrograman linier dengan menggunakan metode grafik untuk masalah 2.1 (model PL 2.1): Model PL 2.1
17
Maksimumkan:
p = 20x1 + 24x2 (p = profit/keuntungan)
Dengan:
x1 = jumlah meja Parson yang akan diproduksi x2 = jumlah bangku Deacons yang akan diproduksi
Kendala-kendala: 3x1 + 6x2 ≤ 60 (kendala di perakitan) 4x1 + 2x2 ≤ 32 (kendala di pemolesan) Batasan tanda:
x1, x2 ≥ 0
Penyelesaian dengan metode grafik 1.
Menentukan ruang solusi Sumbu horizontal mewakili x1 dan sumbu vertikal mewakili x2. Gambar 2.1
menunjukkan
penggambaran
garis-garis,
yang
mewakili
pertidaksamaan-pertidaksamaan kendala yang ada. x2
16 D (0,16) 14 12 10
B (0,10)
F 8 6 4 2 A (0,0)
0
2
4
E (8,0)
6
8
10
C (0,20)
12
14
16
18
20
x1
Gambar 2.2 Feasible solution dan persamaan kendala
18
Dari gambar di atas, dapat dilihat bahwa ruang solusi (ABFE) dan garis yang membatasinya mewakili semua kemungkinan kombinasi meja dan bangku yang akan diproduksi, yang memenuhi semua kendala yang ada. 2.
Menentukan optimal solution a)
Menentukan semua koordinat titik pojok Titik A(0,0), B(0,10), dan E(8,0), sedangkan untuk titik F dicari dengan menyelesaikan persamaan matematika sederhana, yaitu dengan mencari titik potong antara garis 3x1 + 6x2 = 60 dengan 4x1 + 2x2 = 32, sehingga didapat titik F(4,8)
b)
c)
Menentukan nilai fungsi tujuan untuk semua titik pojok Titik A(0,0)
: p = $20 (0) + S24 (0) = $0
Titik B(0,10)
: p = $20 (0) + S24 (10) = $240
Titik E(8,0)
: p = $20 (8) + S24 (0) = $160
Titik F(4,8)
: p = $20 (4) + S24 (8) = $272
Menentukan titik pojok dengan nilai fungsi tujuan yang paling maksimal. Didapatkan titik F dengan profit sebesar $272
Dari penyelesaian diatas, dapat dilihat bahwa metode grafik cukup sederhana untuk digunakan. Akan tetapi, mengingat bahwa hanya ada 2 sumbu yang bisa dipakai, maka metode grafik hanya dapat digunakan pada model pemrograman linier dengan 2 macam variabel. Untuk model dengan 2 variabel atau lebih, dapat digunakan metode simplex.
19
2.4.3.2
Metode Simplex Metode grafik menunjukkan bahwa optimal solution suatu pemrograman linier
selalu berhubungan dengan titik sudut dari ruang solusi. Hasil inilah yang menjadi kunci pembangunan metode simplex. Metode simplex adalah metode yang paling luas dan paling umum pemakaiannya pada pemrograman linier dan merupakan satu dari algoritma numerik yang paling banyak digunakan. Walaupun permasalahan-permasalahan yang ada sekarang menjadi lebih besar dan kompleks, dengan kemajuan dalam bidang teknologi komputer, metode simplex tetap dapat beradaptasi dan tetap menjadi metode pilihan bagi banyak orang. Kunci utama dari metode simplex adalah iterasi atau pengulangan. Setiap iterasi menggerakan solusi dari titik sudut yang satu ke titik sudut yang baru yang mempunyai potensi untuk meningkatkan nilai dari fungsi tujuan. Metode ini melibatkan proses komputasi yang rumit dan dalam jumlah yang cukup besar, sehingga menjadikan komputer sebagai alat bantu yang sangat penting, dalam menyelesaikan masalah pemrograman linier. Menurut Huges dan Grawiog (1973,p43), metode simplex pada dasarnya adalah suatu teknik pencarian. Metode tersebut secara kontinu melakukan usaha untuk menemukan hasil yang lebih baik. Hal tersebut dilakukan dengan melakukan pencarian dari titik sudut yang satu ke titik sudut yang lain pada area feasible solution. Pada setiap titik sudut, akan dilakukan pengujian apakah masih ada nilai-nilai yang mampu memberikan hasil yang lebih baik terhadap fungsi tujuan. Jika telah ditemukan suatu titik sudut, di mana pergerakan ke titik sudut yang lain tidak dapat memberikan hasil
20
yang lebih baik, maka pencarian akan dihentikan. Titik sudut tersebut merupakan optimal solution. Sehingga dapat disimpulkan bahwa, metode simplex adalah metode pencarian optimal solution, dengan melakukan sejumlah metode pengujian dari titik sudut yang satu ke titik sudut yang lain. Algoritma metode simplex adalah sebagai berikut: 1. Tuliskan model pemrograman linier dalam bentuk standar. Bentuk standar diperoleh dengan mengubah setiap pertidaksamaan kendala menjadi persamaan. Perubahan tersebut dilakukan dengan menggunakan variabel slack. 2. Tuliskan model standar tersebut ke dalam tabel awal. 3. Lakukan uji optimalitas Memilih nilai indikator, di mana untuk: a) Masalah maksimisasi, pilih kolom dengan nilai indikator paling negatif b) Masalah minimisasi, pilih kolom dengan nilai indikator paling positif Kolom terpilih merupakan kolom pivot. 4. Lakukan uji rasio Rasio = ruas kanan / koefisien kolom pivot Baris yang memiliki rasio, dengan nilai positif terkecil merupakan baris pivot. 5. Perbaharui tabel awal dengan operasi pivot Perpotongan antara baris pivot dan kolom pivot disebut nilai pivot. Operasi pivot dilakukan dengan cara: a) Lakukan pembagian baris pivot dengan nilai pivot untuk mendapatkan baris pivot baru. Masukkan baris baru tersebut ke posisi sesuai dengan posisi awal. Ganti label baris dengan label pada kolom pivot.
21
b) Pindahkan semua baris lainnya, dari tabel lama ke tabel baru dengan prosudur sebagai berikut: 1. Kalikan baris pivot baru dengan nilai pada kolom pivot dari baris yang akan ditransfer 2. Kurangkan hasil yang didapat dari perhitungan poin 1 dengan baris yang akan ditransfer 3. Masukkan hasil yang didapat dari perhitungan poin 2 ke tabel baru sesuai dengan posisi awal 4. Jangan mengganti label baris 6. Ulangi langkah 3-5 sampai optimal, yaitu jika semua rasio bernilai negatif, atau semua indikator bernilai ≥ 0 (untuk kasus maksimisasi) atau bernilai ≤ 0 (untuk kasus minimisasi) Berikut adalah penyelesaian model pemrograman linier dengan menggunakan metode simplex untuk masalah 2.1 (model PL 2.1): Maksimumkan:
p = 20x1 + 24x2 (p = profit/keuntungan)
Dengan:
x1 = jumlah meja Parson yang akan diproduksi x2 = jumlah bangku Deacons yang akan diproduksi
Kendala-kendala:
3x1 + 6x2 ≤ 60 (kendala di perakitan) 4x1 + 2x2 ≤ 32 (kendala di pemolesan)
Batasan tanda:
x1, x2 ≥ 0
Penyelesaian dengan metode simplex:
22
1. Mengubah model pemrograman linier ke dalam bantuk standar Maksimumkan:
p = 20x1 + 24x2 + 0s1 + 0s2 (p = profit/keuntungan)
Kendala-kendala:
3x1 + 6x2 + s1 + 0s2 = 60 4x1 + 2x2 + 0s1 + s2 = 32 x1,x2,s1,s2 ≥ 0
Di mana: x1 = jumlah meja Parson yang akan diproduksi x2 = jumlah kursi Deacons yang akan diproduksi s1 = jumlah jam kerja yang tidak terpakai (bagian perakitan) s2 = jumlah jam kerja yang tidak terpakai (bagian pemolesan) 2. Tulis model standar kedalam tabel awal Tabel 2.2 Tabel Simplex Awal
s1 s2
Variabel-variabel yang terdapat pada model x1 x2 s1 s2 3 6 1 0 4 2 0 1 -20 -24 0 0 Indikator
60 32 0
Nilai awal fungsi tujuan (Sumber: Linear Programming : An Emphasis on Decision Making, p48) 3. Lakukan uji optimalitas Masalah maksimisasi, maka dipilih kolom dengan nilai indikator paling negatif. Sehingga kolom pivot adalah kolom x2 karena nilai indikatornya sama dengan -24. 4. Lakukan uji rasio a. Untuk baris 1, rasio = 60/6 = 20 b. Untuk baris 2, rasio = 32/2 = 16 Baris pivot yang dipilih adalah baris ke-1. 23
5. Update tabel awal dengan operasi pivot Nilai pivot = 6 Untuk baris ke-1 (3 6 1 0 60) / 6 = (1/2 1 1/6 0 10) Ganti label baris s1 dengan kolom pivot x2 Untuk baris ke-2 (1/2 1 1/6 0 10) x 2 = (1 2 1/3 0 20) (4 2 0 1 32) – (1 2 1/3 0 20) = (3 0 -1/3 1 12) Untuk baris ke-3 (1/2 1 1/6 0 10) x (-24) = (-12 -24 -4 0 -240) (-20 -24 0 0 0) – (-12 -24 -4 0 -240) = (-8 0 4 0 240) Sehingga, tabel simplex menjadi Tabel 2.3 Tabel simplex ke-2
x1 x2 s1 s2 1/2 1 1/6 0 10 X2 3 0 -1/3 1 20 s2 -8 0 4 0 240 (Sumber: Linear Programming : An Emphasis on Decision Making, p63) 6. Ulangi langkah 3-5 sampai optimal. Iterasi pada langkah 3-5 dilakukan terus, sehingga tabel simplex menjadi: Tabel 2.4 Tabel simplex hasil
x1 x2 s1 s2 0 1 2/9 -1/6 8 x2 1 0 -1/9 1/3 4 x1 0 0 28/9 8/3 272 (Sumber: Linear Programming : An Emphasis on Decision Making, p71)
24
Karena ini merupakan masalah maksimisasi, dan semua nilai indikator bernilai ≥ 0, maka iterasi dihentikan. Tabel simplex hasil menggambarkan optimal solution untuk masalah 2.1. model PL 2.1. Variabel-variabel solusinya adalah x1 dan x2. Koefisien untuk masing-masing variabel solusi ditunjukkan pada kolom paling kanan, di mana optimal solution didapat dari produksi 4 buah meja dan 8 buah bangku. Pada sudut kanan bawah terdapat keuntungan masksimal sebesar $272. Karena s1 dan s2 tidak termasuk dalam variabel basis, maka koefisien kedua variabel tersebut adalah 0. Hal ini berarti tidak ada yang tidak dipergunakan, baik di bagian perakitan maupun di bagian pemolesan.
2.5
Metode Dua Fase (Two-Phase Method) Variabel buatan timbul karena adanya kendala-kendala dalam masalah
pemrograman linier yang bertanda (=) maupun yang bertanda (≥). Kendala-kendala seperti ini tidak dapat diselesaikan dengan menggunakan metode simplex biasa. Metode dua fase sebenarnya merupakan metode simplex yang direvisi dengan menambahkan variabel buatan pada kendala-kendala yang bertanda (=) maupun yang bertanda (≥). Maksud dari metode dua fase adalah memecahkan persoalan PL menjadi 2 bagian, yaitu: 1. Mengubah fungsi tujuan asli menjadi meminimalkan jumlah dari semua variabel buatan : Z* = Σ ai, dengan ai adalah semua variabel buatan yang terdapat dalam basis. Proses ini disebut dengan Fase I. Pada akhir fase pertama, terdapat tiga kemungkinan hasil dari Z* yaitu:
25
•
Z* < 0 , satu atau lebih variabel buatan berada dalam basis dengan tingkat nilai yang positif. Persoalan PL yang asli tidak memiliki pemecahan yang fisibel.
•
Z* = 0 , tidak ada variabel buatan yang berada dalam basis. Pemecahan dasar yang fisibel pada PL asli telah diperoleh.
•
Z* > 0 , satu atau lebih variabel buatan berada dalam basis dan pada tingkat nilai nol. Pemecahan dasar yang fisibel pada PL asli telah diperoleh.
2. Memaksimalkan atau meminimalkan fungsi tujuan yang sesungguhnya, dimulai dari suatu pemecahan dasar yang fisibel baik yang memuat variabel-variabel buatan dengan nilai variabel pada tingkat atau tidak memuat varibel buatan sama sekali. Proses ini disebut dengan Fase II. Fase II dilakukan jika nilai Z* = 0 ataupun nilai Z* > 0, dan dihentikan jika Z* < 0.
2.6
Pemrograman Integer (Integer Programming) Menurut Bronson (1982, p2) integer programming atau pemrograman integer
(metode branch & bound) merupakan suatu pemrograman linier dengan satu syarat tambahan di mana nilai variabel hasilnya harus berupa bilangan bulat. Nilai koefisien dan konstanta pada fungsi kendala dan fungsi tujuannya tidak perlu integer, tetapi ada juga kasus tertentu yang mensyaratkan hal ini. Menurut Taha (1992, p303) integer programming pada dasarnya berhubungan dengan pemrograman linier dimana beberapa atau semua variabelnya diharapkan bernilai bulat atau diskrit. Diperlukannya pemrograman integer ini karena pemrograman linier biasa mungkin menghasilkan solusi yang tidak bulat, karena banyak kasus memang
26
menunjukkan demikian. Cara pembulatan ke bilangan bulat terdekat yang sering dilakukan seperti teknik pemotongan (truncation) dan pembulatan (rounding) tidaklah menjamin bahwa hasil tersebut akan merupakan solusi yang optimal. Dalam kasus tertentu bisa mengakibatkan solusi yang diperoleh dengan teknik-teknik seperti itu bahkan bisa saja menjadi tidak memenuhi kendala yang ada terutama untuk fungsi kendala yang bertanda sama dengan (=). Menurut Winston, L. W. (1993, p464), integer programming dapat digolongkan menjadi 3 kategori, yaitu : 1. Pure Integer Programming (PIP) Suatu pemrograman integer (PI), di mana semua variabel yang diperlukan merupakan integer (bilangan bulat) disebut dengan pemrograman integer murni atau pure integer programming. Sebagai contoh, Maksimumkan:
z = 3x1 + 2x2
Kendala-kendala:
x1 + x2≤ 6 x1,x2 ≥ 0, x1,x2 integer
adalah sebuah masalah pemrograman integer murni. 2. Mixed Integer Programming (MIP) Suatu pemrograman integer (PI), di mana sebagian variabel yang diperlukan merupakan integer (bilangan bulat) disebut dengan pemrograman integer campuran atau mixed integer programming. Sebagai contoh, Maksimumkan:
z = 3x1 + 2x
Kendala-kendala:
x1 + x2≤ 6 x1,x2 ≥ 0, x1 integer
27
adalah sebuah masalah pemrograman integer campuran karena x2 tidak harus bulat.. 3. 0 – 1 Integer Programming (0-1 IP) Suatu pemrograman integer (PI), di mana semua variabelnya harus sama dengan 0 atau 1 disebut dengan pemrograman integer 0 – 1 atau 0 – 1 integer programming. Sebagai contoh, Maksimumkan:
z = x1 - x2
Kendala-kendal:
x1 + 2x2 ≤ 2 2x1 - x2 ≤ 1 x1,x2 = 0 or 1
adalah sebuah masalah pemrograman integer 0 – 1.
2.7
Branch & Bound
2.7.1
Algoritma Branch & Bound Algoritma Branch and Bound (B&B) merupakan algoritma yang paling banyak
digunakan dalam menyelesaikan dengan baik masalah Pure Integer Programming maupun Mixed Integer Programming. Banyak pemograman komputer dalam menyelesaikan integer programming menggunakan basis pendekatan ini. Pada dasarnya algoritma B&B adalah prosedur yang efisien dalam pemeriksaan semua kemungkinan integer yang feasible. Pendekatan praktis untuk menyelesaikan pemrograman integer (PI) pada awalnya adalah dengan mengabaikan syarat integer dan menyelesaikannya dengan pemrograman linier. Jika solusi optimal PL mengandung nilai pecahan untuk variabel integer, maka dengan menggunakan metode pemotongan dan pembulatan, akan 28
didapatkan nilai yang mendekati solusi integer yang optimal. Sebagai contoh, jika terdapat 2 variabel integer, x1 dan x2 dengan nilai pecahan 3.5 dan 4.4, maka dengan metode pemotongan dan pembulatan, akan didapatkan 4 kemungkinan solusi integer (3,4), (4,4), (4,5), (3,5). Melalui observasi didapat solusi integer optimal yang sebenarnya mungkin saja bukan didapat dari kemungkian-kemungkinan diatas, karena ada kemungkinan x1 memiliki nilai integer optimal yang lebih kecil dari 3 dan lebih besar dari 5. Dengan demikian, untuk mendapatkan solusi integer optimal yang sebenarnya, harus dipikirkan semua kemungkinan nilai-nilai integer x1 yang lebih kecil dan lebih besar dari 3.5. Dengan kata lain, solusi integer optimal harus memenuhi : x1 ≤ 3 atau x1 ≥ 4 Ketika suatu masalah mengandung angka yang besar dari variabel integer, sangatlah penting untuk memiliki metode yang sistematis yang dapat melihat semua kemungkinan kombinasi solusi integer yang didapat dari solusi optimal PL. Algoritma B&B dapat melakukan ini dalam banyak situasi.
2.7.2
Prinsip – prinsip Dasar Ilustrasi prinsip-prinsip dasar dari metode B&B dengan masalah PI berikut ini : Model PI 2.1 Maksimumkan:
z = 3x1 + 2x2
Kendala-kendala:
x1 ≤ 2 x2 ≤ 2 x1 + x2 ≤ 3.5 x1,x2 ≥ 0, x1,x2, integer
29
Langkah pertama adalah menyelesaikan PI sebagai sebuah PL dengan mengabaikan syarat integer terhadap x1 dan x2. Kita sebut saja PL-1. Solusi optimal PL-1 adalah x1 = 2, x2 = 1.5, dan nilai maksimum z0 = 9. Karena x2 merupakan pecahan, maka belum didapatkan solusi optimal untuk masalah PI diatas. Tetapi solusi integer optimal tidak dapat memiliki nilai z lebih besar dari 9, sehingga diperoleh batas atas (upper bound) nilai maksimum z untuk pemrograman integer dari nilai optimal pada PL-1. Langkah berikutnya dari metode B&B adalah memeriksa kemungkinan nilai integer lain dari x2, yang lebih besar atau lebih kecil dari 1.5. Masalah ini diselesaikan dengan menambahkan kendala baru x2 ≤ 1 dan x2 ≥ 2 pada PL-1. pemrograman integer Jadi pemrograman linier yang baru adalah PL-2 dan PL-3 sebagai berikut. PL-2
PL-3
Maksimumkan:
z = 3x1 + 2x2
Maksimumkan:
z = 3x1 + 2x2
Kendala-kendala:
x1 ≤ 2
Kendala-kendala:
x1 ≤ 2
x2 ≤ 2
x2 ≤ 2
x1 + x2 ≤ 3.5
x1 + x2 ≤ 3.5
(kendala baru):x2 ≤ 1
(kendala baru):x2 ≥ 2
x1,x2 ≥ 0
x1,x2 ≥ 0
Solusi optimal untuk PL-2 adalah x1 = 2, x2 = 1, dan z0 = 8. Jadi diperoleh solusi integer yang feasible untuk PI diatas. Walaupun PL-2 mungkin memiliki solusi integer yang lain, tapi nilai untuk fungsi objektif z tidak akan lebih besar dari 8. Nilai z0 = 8 adalah batas bawah (lower bound) dari nilai maksimum z untuk PI di atas. Dengan kata lain, nilai optimal dari z untuk PI tersebut tidak akan lebih kecil dari 8. Tetapi karena 30
telah ditetapkan batas atas adalah 9, PL-2 tidak dapat disebut solusi optimal PI tanpa mengevaluasi PL-3. Solusi optimal untuk PL-3 adalah x1 = 1.5, x2 = 2, dan z0 = 8.5. Hasil ini tidak feasible karena x1 masih merupakan bilangan pecahan. Tampak bahwa nilai maksimum z (8.5) lebih besar dari batas bawah (8). Untuk itu diperlukan evaluasi kemungkinan solusi integer di dalam daerah feasible PL-3 dengan nilai z lebih besar dari 8. Kendala-kendala baru yang ditambahkan adalah x1 ≤ 1 dan x1 ≥ 2 pada PL-3, sehingga terdapat dua pemrograman linier baru PL-3.1 dan PL-3.2 adalah sebagai berikut. PL-3.1
PL-3.2
Maksimumkan:
z = 3x1 + 2x2
Maksimumkan:
z = 3x1 + 2x2
Kendala-kendala:
x1 ≤ 2
Kendala-kendala:
x1 ≤ 2
x2 ≤ 2
x2 ≤ 2
x1 + x2 ≤ 3.5
x1 + x2 ≤ 3.
x2 ≥ 2
x2 ≥ 2
(kendala baru):x1 ≤ 1
(kendala baru):x1 ≥ 2
x1,x2 ≥ 0
x1,x2 ≥ 0
Solusi optimal untuk PL-3.1 adalah x1 = 1.5, x2 = 2, dan z0 = 8.5, sedangkan solusi PL-3.2 tidak feasible (infeasible). Solusi optimal PL-3.1 mengakibatkan setiap solusi integer dalam daerah feasible PL-3 tidak mungkin memiliki nilai z yang lebih baik dari 7. Akibatnya, solusi integer yang didapat dengan menyelesaikan PL-2, yaitu x1 = 2, x2 = 1, dan z0 = 8, adalah solusi integer optimal untuk masalah PI diatas. Langkah-langkah masalah pemrograman integer yang diselesaikan dengan metode B&B untuk Model PI 2.1 dapat direpresentasikan dengan bentuk network atau tree seperti ditunjukkan oleh gambar 2.3 di bawah ini. 31
Node -1 PL-1
x1 = 2, x2 = 1.5, z0 = 9
x2 ≤ 1
x2 ≥ 2
Node -2 PL-2
Node -3 PL-3
x1 = 2, x2 = 1 z0 = 8 (Optimal) (fathomed)
x1 ≤ 1
x1= 1.5, x2 = 2 z0 = 8.5
x1 ≥ 2
Node -4 PL-3.1 x1 = 1, x2 = 2 z0 = 7 (fathomed)
Node -5 PL-3.2 Infeasible (fathomed)
Sumber : Ravindran, K. & Wiley, P.J. (1987). Gambar 2.3 Representasi tree metode B&B untuk Model PI 2.1 Node-1 merepresentasikan PL-1 untuk masalah PI di atas dengan mengabaikan batasan integer. Dari node-1 diperoleh cabang (branch) node-2 (PL-2) dengan variabel x2 dan tambahan kendala x2 ≤ 1 pada PL-1. Karena telah diperoleh solusi integer pada node-2, maka tidak
diperlukan percabangan lebih lanjut untuk ini. Node-2 disebut fathomed.. Percabangan x2 ≥ 2 dari node-1 menghasilkan node-3 (PL-3). Karena solusi optimal untuk PL-3 pecahan, maka dilakukan percabangan lebih lanjut dari node-3 dengan menggunakan variabel x1. Ini menghasilkan node-4 (PL-3.1) dan node-5 (PL-3.2). Keduanya fathomed karena PL-3.1 memiliki solusi integer dan PL-3.2 tidak feasible. Solusi integer terbaik terdapat pada node fathomed, dalam kasus ini node-2 menjadi solusi integer optimal untuk model PI 2.1 di atas.
32
2.7.3
Rincian Algoritma Anggap sebuah pemrograman integer memiliki bentuk seperti berikut: Maximize:
Z = cx
Kendala – kendala:
Ax = b x≥0 xj adalah integer untuk tiap j ∈ I
Langkah-langkah penyelesaiannya adalah sebagai berikut: 1. Menyelesaikan pemrograman integer pada awalnya sebagai sebuah pemrograman linier tanpa memperhatikan syarat integernya. Pemrograman linier ini adalah PL-1 di mana nilai optimal fungsi objektifnya adalah Z1. Asumsikan solusi optimal PL-1 mengandung variabel integer yang bernilai pecahan. Sementara ini solusi untuk masalah pemrograman integer belum diperoleh. Tetapi Z1 adalah batas atas (upper bound) dari nilai maksimum Z untuk masalah pemrograman integer ini. 2. Partisikan daerah feasible dari PL-1 dengan mencabangkan variabel integer yang bernilai pecahan. Beberapa aturan ditetapkan untuk memilih variabel yang tepat untuk dicabangkan, yakni: a) Memilih variabel integer yang memiliki nilai pecahan terbesar dalam solusi PL b) Ada hirarki prioritas pada variabel integer, sehingga dicabangkan variabel yang terpenting terlebih dahulu. Pentingnya variabel integer yang diprioritaskan memiliki satu atau lebih kriteria berikut. •
Merepresentasikan keputusan yang penting dalam model.
33
•
Variabel yang memiliki koefisien yang lebih besar pada fungsi objektif dibandingkan dengan yang lain baik dalam kasus biaya (costs) atau laba (profit).
•
Nilainya sangat kritis dalam model menurut pengalaman user.
c) Memilih variabel dengan indeks terkecil terlebih dahulu. 3. Anggap variabel integer xj terpilih untuk percabangan lebih lanjut dan nilai pecahannya adalah βj
pada solusi PL-1. Kemudian dibentuk dua
pemrograman linier baru PL-2 dan PL-3 dengan kendala baru xj ≤ bj dan xj ≥ Bj, di mana bj adalah integer terbesar yang lebih kecil dari βj dan Bj adalah integer terkecil yang lebih besar dari βj. Dengan kata lain, PL-2 Maksimumkan:
PL-3 Z = cx
Kendala-kendala: Ax = b
Maksimumkan:
Z = cx
Kendala-kendala:
Ax = b
xj ≤ bj
xj ≤ Bj
x ≥0
x ≥0
PL-2 dan PL-3 dapat diselesaikan dengan metode simplex untuk mendapatkan solusi optimal yang baru. Asumsikan bahwa solusi optimal untuk PL-2 dan PL-3 masih mengandung nilai pecahan, dan menjadi tidak feasible untuk masalah pemrograman integer. 4. Pilihlah PL-2 atau PL-3 untuk dicabangkan dengan menambahkan kendala baru. Beberapa aturan yang dianjurkan dalam memilih node yang tepat untuk dicabangkan adalah sebagai berikut.
34
a) Menggunakan nilai optimal dari fungsi objektif. Node yang akan dipilih untuk dicabangkan lebih lanjut tergantung dari nilai PL terbesar (untuk masalah maksimisasi). Alasan rasional terhadap aturan ini adalah bahwa area feasible PL dengan nilai Z terbesar mengandung solusi integer yang lebih baik. Jadi, solusi integer mana saja yang didapat dari percabangan PL-2 tidak akan memiliki nilai Z lebih baik daripada nilai optimal Z pada PL-2. b) Aturan Last In First Out (LIFO). Masalah PL yang terakhir diselesaikanlah yang dipilih untuk percabangan lebih lanjut. Jika node yang cocok telah dipilih untuk percabangan selanjutnya, maka dipilih satu variabel integer dengan nilai pecahan. Proses ini berlanjut terus hingga suatu solusi integer tercapai untuk satu PL. Nilai Z untuk solusi integer ini merupakan batas bawah bagi masalah PL diatas. Pada saat ini semua node pada area PL yang nilai Z-nya tidak lebih baik dari batas bawah dapat dihilangkan. Node ini disebut fathomed karena tidak mungkin lagi mencari solusi integer yang lebih baik di area PL ini dibandingkan solusi integer yang telah diperoleh sebelumnya. Sebagai ilustrasi, akan dibuat diagram tree pada gambar 2.4 di bawah ini. Dengan solusi yang didapatkan PL-4, maka batas bawah untuk nilai maksimum Z adalah Z4 untuk masalah pemrograman integer di atas. Dengan kata lain, solusi optimal untuk masalah pemrograman integer di atas tidak boleh memiliki nilai Z yang lebih kecil dari Z4. Percabangan berikutnya dari node 4 menjadi tidak perlu lagi, sebab semua solusi di bawah node 4 memiliki nilai lebih kecil dari Z4. Dikatakan bahwa node 4 fathomed. Node 5 juga fathomed karena penambahan kendala baru memyebabkan PL-5 menjadi 35
tidak feasible. Maka tinggal node 6 dan 7 yang masih dapat dicabangkan lebih lanjut. Anggap Z6 < Z4 dan Z7 > Z4. Ini berarti node 6 juga fathomed (secara implisit), sebab tidak ada lagi solusi-solusi integer di bawah node 6 yang memiliki nilai lebih baik dari Z4. Di samping itu, ada kemungkinan area PL node 7 memiliki solusi integer lebih baik dari node 4 sebab Z7 > Z4. Oleh karena itu, node 7 dipilih untuk percabangan berikutnya. Dalam kondisi ini, suatu intermediate node untuk masalah PL secara eksplisit atau implisit “sudah terdalam” ketika telah memenuhi salah satu kondisi berikut ini. 1. Solusi optimal PL pada node tersebut bernilai integer; yang mana feasible untuk masalah PI. 2. Masalah PL menjadi tidak feasible (infeasible). 3. Nilai optimal Z dari masalah PL tidak lebih baik daripada batas bawah yang ada kini.
36
Node -1 PL-1
solusi pecahan Z0=Z1 batas atas
xj ≤ bj
solusi pecahan Z0=Z2
xj ≥ Bj
Node -2 PL-2
Node -3 PL-3
solusi pecahan Z0=Z3
xi ≤ bi
xi ≥ Bi
xk ≤ bk
xk ≥ Bk
Node -4 PL-4
Node -5 PL-5
Node -6 PL-6
Node -7 PL-7
solusi integer Z0=Z4 batas bawah (fathomed)
infeasible (fathomed)
solusi pecahan Z0=Z6 Z6 < Z4 (fathomed)
solusi pecahan Z0=Z7
Sumber : Ravindran, K. & Wiley, P.J. (1987). Gambar 2.4 Representasi Tree untuk masalah Pemrograman Integer
Algoritma B&B berlanjut dengan memilih sebuah node untuk percabangan berikutnya sampai semua node fathomed. Node fathomed dengan nilai Z terbesar (masalah maksimisasi) atau terkecil (masalah minimisasi) menjadi solusi optimal untuk masalah PI. Efisiensi algoritma ini tergantung seberapa cepat node fathomed ditemukan. Untuk mencapai kondisi 1 dan 2 di atas secara umum memerlukan waktu yang lama.
37
Kondisi 3 tidak dapat dipakai sebelum batas bawah dari masalah PI ditemukan. Meskipun demikian, batas bawah tidak akan ditemukan sampai solusi integer yang feasible didapatkan untuk masalah PI-nya (kondisi 1). Akan sangat membantu jika solusi integer yang feasible untuk masalah PI dapat ditemukan sebelum prosedur B&B dimulai. Nilai ini akan menyediakan batas bawah awal untuk masalah PI sampai ditemukan lagi batas bawah yang lebih baik dengan algoritma B&B.
2.7.4
Panduan pada Formulasi Masalah Waktu yang diperlukan untuk menemukan solusi dalam menyelesaikan masalah
PI sangat sensitif, tergantung bagaimana awal masalah itu diformulasikan. Di bawah ini diberikan panduan (bukan merupakan larangan tetapi lebih merupakan pertimbangan) yang dapat meminimalkan waktu komputasi dalam prakteknya. 1. Pertahankan nilai variabel integer sekecil mungkin. Salah satu caranya adalah dengan memperlakukan semua variabel integer yang nilainya paling tidak 20 sebagai variabel kontinu. 2. Sediakan batas atas dan bawah yang baik (ketat) pada variabel integer jika mungkin. 3. Penambahan kendala baru pada masalah PI secara umum mengurangi waktu komputasi atau perhitungan, apalagi ada syarat integernya. 4. Jika tidak begitu penting untuk menemukan hasil eksak (pasti) suatu solusi optimal integer, maka untuk masalah maksimisasi, kita dapat menghentikan prosedur B&B ketika memenuhi: ((batas atas – batas bawah) / batas atas ) < 5%
38
5. Urutan pemilihan variabel integer untuk percabangan memberikan efek pada waktu komputasi. Maka itu, sangat dianjurkan untuk memilihnya dengan menggunakan urutan prioritas berdasarkan nilai signifikan dan pengalaman user.
2.8
Trees Dalam bukunya Fundamentals of Data Structures in C (Horowitz, E., Sahni, S. &
Anderson-Freed, S., 1993, p187), sebuah tree (pohon) didefinisikan sebagai himpunan terbatas dari satu atau lebih node sehingga: 1. Ada node khusus yang disebut root. 2. Node – node yang lain terbagi menjadi n ≥ 0 himpunan terpisah T1,…,Tn, yang tiap himpunan ini merupakan tree juga. Kita sebut T1,…,Tn adalah sub-tree dari root. Binary tree didefinisikan sebagai suatu himpunan terbatas node – node kosong atau mengandung sebuah root dan dua binary tree terpisah yang disebut subtree kiri dan subtree kanan. Algoritma B&B dapat direpresentasikan dalam sebuah tree, khususnya binary tree seperti yang terlihat pada gambar 2.4. Root dari binary tree tersebut adalah node-1 yang mewakili PL-1 dengan variabel-variabel x1, x2, dan nilai fungsi objektif Z. Himpunan terpisah dari root masing-masing adalah node-2 (PL-2) dan node-3 (PL-3) sebagai subtree kiri dan subtree kanan dari root (node-1) yang juga mengandung unsurunsur yang sama. Representasi ini berguna untuk memberi gambaran visual agar algoritma B&B dapat lebih mudah dipahami dan juga mempermudah tracking (pelacakan) nilai-nilai penting yang berhubungan (misal: batas bawah, solusi integer 39
optimal) yang berguna sebagai acuan yang baru untuk perbadingan . Tetapi pada prakteknya mungkin tidak dapat digambarkan secara keseluruhan, karena ada terlalu banyak node sehingga tree menjadi besar. Karena itu, diperlukan alat bantu seperti komputer dalam menyelesaikannya.
2.9
Dasar Perancangan Software (Perangkat Lunak) Menurut Pressman (2002, p10) : Perangkat lunak adalah (1) perintah (program komputer) yang bila dieksekusi akan
memberikan fungsi dan unjuk kerja seperti yang diinginkan. (2) struktur data yang memungkinkan program memanipulasi informasi secara proporsional, dan (3) dokumen yang menggambarkan operasi dan kegunaan program. Salah satu cara perancangan perangkat lunak adalah dengan menggunakan model air terjun (waterfall model). Menurut Sommerville (1995), tahap – tahap utama dalam model air terjun dapat digambarkan dalam aktivitas dasar pengembangan seperti berikut ini. •
Analisis dan penentuan kebutuhan Tugas, kendala, dan tujuan sistem ditentukan melalui konsultasi dengan pengguna sistem. Kemudian ditentukan cara yang dapat dipahami baik oleh pengguna maupun staf pengembang.
•
Desain sistem dan perangkat lunak Proses desain sistem terbagi dalam kebutuhan perangkat keras dan perangkat lunak. Hal ini menentukan arsitektur perangkat lunak secara keseluruhan. Desain perangkat lunak mewakili fungsi sistem perangkat lunak dalam suatu bentuk yang dapat ditransformasikan ke dalam satu atau lebih program yang dapat dieksekusi. 40
•
Implementasi dan pengujian unit Dalam tahap ini, desain perangkat lunak direalisasikan dalam suatu himpunan program atau unit-unit program. Pengujian unit mencakup kegiatan verifikasi terhadap setiap unit sehingga memenuhi syarat spesifikasinya.
•
Integrasi dan pengujian sistem Unit program secara individual diintegrasikan dan diuji sebagai satu sistem yang lengkap untuk memastikan bahwa kebutuhan perangkat lunak telah terpenuhi. Setelah pengujian, sistem perangkat lunak disampaikan kepada pengguna.
•
Pengoperasian dan pemeliharaan Secara normal,walaupun tidak selalu diperlukan, tahap ini merupakan fase siklus hidup yang terpanjang. Sistem telah terpasang dan sedang dalam penggunaan. Pemeliharaan mencakup perbaikan kesalahan yang tidak ditemukan dalam tahaptahap sebelumnya, meningkatkan implementasi unit-unit sistem dan mempertinggi pelayanan sistem sebagai kebutuhan baru yang ditemukan. Analisis dan penentuan kebutuhan Desain sistem dan perangkat lunak Implementasi dan pengujian unit Integrasi dan pengujian sistem Pengoperasian dan pemeliharaan
Sumber : Sommerville (1995) Gambar 2.5 Perancangan Perangkat Lunak Model Air Terjun
41
2.10
Alat Bantu Perancangan
2.10.1 State Trasition Diagram (STD) State transition diagram menggambarkan jalannya suatu program dalam kondisi tertentu. Notasi yang digunakan adalah sebagai berikut:
State, menunjukkan satu atau lebih kegiatan atau keadaan atau atribut yang menjelaskan bagian tertentu dari program.
Kondisi Aksi
Anak panah berarah, menunjukkan perubahan state yang disebabkan oleh aksi (action) terhadap kondisi (condition) tertentu. Kondisi merupakan suatu event pada lingkungan eksternal yang dapat dideteksi oleh sistem, misalnya sinyal, interupsi, atau data. Hal ini akan menyebabkan perubahan dari satu state ke state lainnya atau satu aktivitas ke aktivitas lainnya. Aksi merupakan hal yang dilakukan oleh sistem jika terjadi perubahan state atau merupakan reaksi terhadap kondisi. Aksi dapat menghasilkan output, tampilan pesan pada layar, kalkulasi atau kegiatan lainnya.
2.10.2 Pseudocode Pseudocode adalah suatu bahasa pemrograman yang informal dan sangat fleksibel, yang tidak dimaksudkan untuk dieksekusi pada mesin, tetapi hanya digunakan untuk mengatur pemikiran pemrogram sebelum melakukan pengkodean (Pege-Jones, 1980, p11).
42
Pseudocode dapat merupakan alternatif lain dalam perancangan perangkat lunak di samping alat-alat bantu berupa diagram. Tidak ada standarisasi dalam hal penulisan pseudocode. Pemrogram dapat menulisnya dalam bahasa apa saja yang mereka sukai dengan dipadukan dengan basaha pemrograman tertentu. Pemrogram juga bebas menggunakan teknik dan aturannya sendiri. Robertson (1993, p6-7), menulis pseudocodenya dengan perjanjian sebagai berikut: 1. Pernyataan ditulis dalam bahasa Inggris sederhana. 2. Setiap perintah ditulis pada baris tersendiri. 3. Kata kunci atau indentasi (penulisan yang menjorok ke dalam) digunakan untuk menandai struktur kontrol khusus. 4. Setiap himpunan perintah ditulis dari atas ke bawah dengan hanya satu awal dan satu akhir program. 5. Kumpulan pernyataan-pernyataan dapat dibentuk dalam modul-modul yang diberi nama tertentu.
43