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.
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
Kunjungan lapangan Informasi dan data
Observasi penunjang yang di-
Riset butuhkan
Menentukan penggunaan Pedoman yang jelas
Menetukan tujuan untuk mencari peme-
Menentukan batasan - batasan cahan yang dibutuhkan
Peralatan RO Model yang berfungsi
Antar hubungan model matematika di bawah batasan ling- Pemecahan yang diketahui riset kungan yang telah di-
tetapkan
Data internal dan eksternal Input yang memadai
Kenyataan untuk mengerjakan dan
Pendapat menguji model
Data bank komputer
Pengujian Pemecahan yang dapat
Batasan membantu pencapaian
Pembuktian tujuan organisasi
Pembahasan perilaku Pemahaman oleh mana-
Mengemukakan ide jemen untuk menunjang
Pelibatan manajemen model operasi dalam
Penjelasan jangka panjang
Sumber : Budnick F. S., Mojena R. & Vollman T. E. (1977).
Gambar 2.1 Langkah – langkah dalam Proses Riset Operasional Aktifitas Proses Langkah-langkah Proses
Langkah 1 :
Observasi lingkungan persoalan
Langkah 2 :
Analisis dan pengenalan masalah
Langkah 3 :
Pengembangan Model
Langkah 4 :
Memilih data masukan yang sesuai
Langkah 5:
Perumusan pemecahan dan pengetesan yang dapat
dipertanggungjawabkan
Langkah 6 :
Penerapan pemecahan
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).
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).
• 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
Tabel 2.1 Sumber Daya dari Furniture Manufacturing Company
Keuntungan Waktu proses tiap barang di
Produk (per unit) Bagian Bagian
Perakitan Pemolesan
Meja Parson S20 3 4
Bangku Deacons S24 6 2
Waktu yang tersedia untuk tiap bagian 60 32 (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)
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.
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). Pembatasan-pembatasan harus dinyatakan dalam ketidaksamaan linier (inequality function) maupun persamaan linier (linear equation).
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)
• Mengarsir ruang solusi.
2. 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):
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) E (8,0) C (0,20) x1 0 2 4 6 8 10 12 14 16 18 20
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) 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
c) 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.
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
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.
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
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
Variabel-variabel yang terdapat pada model
x1 x2 s1 s2
s1 3 6 1 0 60
s2 4 2 0 1 32
-20 -24 0 0 0
Indikator 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
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
X2 1/2 1 1/6 0 10
s2 3 0 -1/3 1 20
-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
x2 0 1 2/9 -1/6 8
x1 1 0 -1/9 1/3 4
0 0 28/9 8/3 272
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:
• 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
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
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
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
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
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
x1 = 2, x2 = 1.5, z0 = 9 x2 ≤ 1 x2 ≥ 2 x1= 1.5, x2 = 2 z0 = 8.5 x1 = 2, x2 = 1 z0 = 8 (Optimal) x1 ≤ 1 x1 ≥ 2 (fathomed) x1 = 1, x2 = 2 Infeasible z0 = 7 (fathomed) (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.
Node -1 PL-1 Node -2 PL-2 Node -3 PL-3 Node -4 PL-3.1 Node -5PL-3.2
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.
• 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 PL-3
Maksimumkan: Z = cx Maksimumkan: Z = cx
Kendala-kendala: Ax = b 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.
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
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.
solusi pecahan
Z0=Z1 batas atas
xj ≤ bj xj ≥ Bj
solusi pecahan solusi pecahan
Z0=Z2 Z0=Z3
xi ≤ bi xi ≥ Bi xk ≤ bk xk ≥ Bk
solusi integer infeasible solusi pecahan solusi pecahan Z0=Z4 (fathomed) Z0=Z6 Z0=Z7 batas bawah Z6 < Z4
(fathomed) (fathomed)
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.
Node -1 PL-1
Node -2
PL-2 Node -3 PL-3
Node -4
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:
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 unsur-unsur yang sama. Representasi ini berguna untuk memberi gambaran visual agar algoritma B&B dapat lebih mudah dipahami dan juga mempermudah tracking
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.
• 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 tahap-tahap sebelumnya, meningkatkan implementasi unit-unit sistem dan mempertinggi pelayanan sistem sebagai kebutuhan baru yang ditemukan.
Sumber : Sommerville (1995)
Analisis dan penentuan kebutuhan
Desain sistem dan perangkat lunak Implementasi dan pengujian unit Pengoperasian dan pemeliharaan Integrasi dan pengujian sistem
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).
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.