IMPLEMENTASI PENDEKATAN NETWORK DAN METODE STATISTIK DALAM MANAJEMEN PROYEK DENGAN DURASI DAN BIAYA ACAK Zainudin Syuhada1 - Bilqis Amaliyah, S.Kom, M.Kom2 - Rully Soelaiman, S.Kom, M.Kom3 Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember Kampus Keputih, Sukolilo, Surabaya 60111, Indonesia Email :
[email protected],
[email protected],
[email protected] boundary dari permintaan yang mengacu pada (d,B) dimana d merupakan demand dan B adalah budget. Penelitian tersebut mendiskusikan sebuah stochastic-flow network dari kasus komoditas tunggal ke kasus multi komoditas. Penelitian [3] merupakan penelitian pendahulu dari [2]. Penelitian [3] juga dilakukan pada kasus yang sama tetapi belum menggunakan metode minimal cuts. Penelitian [4] mengenalkan teknik heuristic untuk menghasilkan minimal path dan minimal cuts dari general network. Sedangkan penelitian [5] berisi tentang algoritma baru untuk menghasilkan minimal path dan minimal cut. Proyek besar dapat dimodelkan dalam sebuah project netwotk. Sedangkan untuk penjadwalan proyek dapat digunakan pendekatan network (network approaches) yang dalam hal ini durasi aktivitas dan biaya pada tiap aktivitas di-generate dari variable random dengan distribusi probabilitas. Tanpa disadari, ternyata semakin cepat durasi pengerjaan sebuah proyek maka kebutuhan biaya yang dikeluarkan akan semakin besar. Semua itu bukanlah suatu alasan penggelembungan tetapi lebih ke arah percepatan, semakin cepat maka semakin mahal. Ada dua algoritma yang akan dibahas disini untuk menghasilkan semua durasi vektor upper dan lower pada sebuah proyek. Semua durasi aktivitas yang mungkin, ada diantara durasi vektor upper dan lower. Akhirnya, meskipun waktu dan biaya berubah-ubah kita tetap bisa melakukan penjadwalan ulang kebutuhan penyelesaian proyek secara efisien sesuai dengan algoritma tersebut. Secara umum, asumsi distribusi probabilitas yang dipakai untuk menentukan durasi aktivitas(waktu yang dibutuhkan untuk menyelesaikan aktivitas) adalah suatu distribusi beta tingkat lanjut, yaitu menggunakan tiga estimasi (paling umum, paling optimis, paling pesimis) untuk sebuah durasi aktivitas[4,5].
Abstrak Dalam pengelolaan proyek besar sebuah aplikasi evaluasi sangat diperlukan untuk mengelola data yang berorientasi pada waktu, biaya serta kualitas pengerjaan. Sebuah proyek besar bisa dimodelkan dalam sebuah proyek network. Untuk penjadwalan proyek digunakan pendekatan network dengan menganalisa keterkaiatan antara nilai durasi aktivitas dan nilai biayanya yang keduanya dibangkitkan dari variabel random dengan fungsi distribusi probabilitas. Dengan mengacu pada batasan waktu pengerjaan proyek dan anggaran proyek, tugas akhir ini memperlihatkan bagaimana mengatur penjadwalan pengerjaan. Algoritma untuk membangkitkan upper durasi dan lower durasi digunakan untuk mendapatkan solusi yang memungkinkan yang nantinya dijadikan suatu jadwal. Dengan menggunakan algoritma ini, penjadwalan ulang proyek karena adanya perubahan waktu dan biaya menjadi lebih mudah. Kata kunci: manajemen proyek, pendekatan network, upper durasi, lower durasi 1. Pendahuluan Dalam sebuah pengelolaan proyek yang besar, ternyata dibutuhkan sebuah program evaluasi yang bermanfaat mengelola data yang berorientasi pada waktu dan biaya serta kualitas juga tentunya. Acuan waktu digunakan untuk menentukan sejauh mana lama durasi per aktivitas/tugas hingga penyelesaian, sedangkan acuan biaya memberikan gambaran detail tentang seberapa besar dana yang dikeluarkan dalam sebuah proyek. Waktu dan biaya per aktivitas tersebut nantinya akan dikombinasikan dalam bentuk penjadwalan. Penelitian tentang penjadwalan dengan batasan durasi dan biaya yang terkait adalah [2,3,4,5]. Penelitian [2] menggunakan metode minimal cuts untuk menghasilkan nilai-nilai upper
1
Pada evaluasi proyek terdapat tiga jenis perkiraan/dugaan waktu yaitu dugaan paling mungkin, dugaan optimis dan dugaan pesimis. 1) Dugaan paling mungkin (dinotasikan dengan m) dimaksudkan sebagai suatu dugaan yang realistis / paling sering terjadi bila aktivitas dilakukan berulang-ulang, dan pelaksanaannya berjalan normal. Pada statistik, ini merupakan dugaan modus (nilai tertinggi) dari sebaran peluangnya. 2) Dugaan optimis (dinotasikan dengan a) dimaksudkan sebagai waktu yang dibutuhkan jika pada pelaksanaan aktivitas semua hal berlangsung dengan lancar (baik sekali tidak terjadi kesalahan sedikitpun pada pelaksanaan). Secara statistik ini merupakan dugaan batas bawah dari sebaran peluangnya. 3) Dugaan pesimis (dinotasikan dengan b), dimaksudkan sebagai waktu yang dibutuhkan bila terjadi kesalahan pada pelaksanaan aktivitas (jika semua hal berlangsung dengan buruk), sehingga aktivitas akan selesai lebih lambat. Hal ini dapat disebabkan karena keterbatasan alat. Adanya hambatan yang disebabkan oleh alam seperti banjir, hujan dan keadaan lainnya seperti keadaan politik dan sebagainya di luar kekuasaan perusahaan tidak termasuk dalam hal ini, sehingga hal-hal tersebut diasumsikan tidak akan terjadi. Secara statistik ini merupakan batas atas dari sebaran peluangnya.
Tabel 1.1 berikut menggambarkan tiga macam perkiraan durasi dari masing-masing aktivitas sebuah proyek.
Penjadwalan ulang pada saat terjadi perubahan pada batasan proyek seperti waktu dan biaya pada saat proyek tengah berjalan menjadi issue penting yang harus ditanggapi secara serius. Dengan mengacu pada batasan waktu proyek (total waktu yang dibutuhkan untuk menyelesaikan proyek) dan batasan biaya proyek (total biaya aktivitas) penulis akan mencoba melakukan penjadwalan semua durasi, yaitu menemukan semua kemungkinan durasi vektor. Bagaimanapun juga, durasi dan biaya yang berkorelasi memiliki hubungan negatif. Biaya aktivitas akan bertambah pada saat durasi berkurang dan durasi akan bertambah saat biaya aktivitas berkurang. Ada dua algoritma yang akan digunakan dalam tugas akhir ini untuk menghitung semua upper durasi vektor dan lower durasi vektor sesuai dengan batasan yang dberikan. Upper durasi vektor dan lower durasi vektor keduanya merupakan pola-pola dari durasi. Pola durasi yang mungkin adalah durasi yang berada diantara upper durasi vektor dan lower durasi vektor. Dengan demikian, kapanpun batasan waktu proyek dan biaya proyek diubah dalam periode pengerjaan proyek, kita dapat melakukan penjadwalan ulang secara efisien dengan mengaplikasikan metode tersebut.
Dengan adanya ketiga macam dugaan waktu dan berdasarkan model gambar sebaran peluang maka sebaran yang digunakan adalah sebaran yang paling mendekati sebaran beta dengan titik unimodalnya di m dan titik akhirnya di a dan b. Maka nilai harapan untuk setiap aktivitas diperkirakan adalah :
Te =
a + 4m + b atau 6
1 1 Te = [2m + (a + b)] 3 2 ( Frederick S.Hiller dkk, 1996 : 377)
2. Durasi Acak Seorang manager proyek perlu untuk menyelesaikan proyek dalam waktu deadline T dan tidak lebih dari biaya B. Dengan mengacu pada batasan waktu proyek, durasi kemungkinan dapat dipercepat, tetapi hal ini akan berakibat pada bertambahnya biaya aktivitas. Dalam rangka memenuhi batasan biaya, biaya aktivitas kemungkinan dapat dikurangi, tetapi hal
Dengan asumsi bahwa simpangan baku (V) adalah seperenam dari rentang kebutuhan waktu yang mungkin, maka dugaan variansnya adalah :
1 V 2 = [ (b − a )]2 6 ( Frederick S.Hiller dkk, 1996 : 377)
2
sebuah panah ap yang tidak terletak pada lintasan kritis lalu set Z1 = X + (slack time ap) . ep. Setelah itu T(Z1) = T dan ap berada dalam lintasan kritis. Hitung kelonggaran waktu pada masingmasing aktivitas dibawah Z1. Ulangi prosedur ini untuk panah yang lain yang tidak berada pada lintasan kritis. Prosedur ini akan berhenti dalam sebuah bilangan step tertentu (bilangan terbatas), yaitu ketika terdapat sebuah integer k sedemikian hingga Zk > Zk-1 > …> Z1 dimana T(Zk) = T dan setiap minimal path dibawah Zk merupakan lintasan kritis. Oleh karena itu, maka Z = (z1, z2, …, zn) dapat diganti sebagai Zk, kemudian ∑ai∈Pj z1 = T untuk setiap Pj. (ii) jika T(X) < T : tanpa menghilangkan sifat umumnya, kita asumsikan T(X) = T – 1. Kemudian terdapat sebuah minimal path Pj sedemikian hingga ∑ai∈Pj z1 = T-1. Pilih sebuah panah aq ∈ Pj , set Z* = X + eq sehingga T(Z*)=T. Ganti X dengan Z* pada pembuktian (i) diatas. Dan ulangi prosedur pembuktian (i). Ini akan menyempurnakan pembuktian teorema 1.
ini akan mengakibatkan bertambahnya durasi. Tujuan dari tugas akhir ini adalah untuk menemukan kemungkinan durasi vektor X dengan mengacu pada kedua batasan tersebut yaitu untuk membangkitkan semua durasi vektor X sedemikian sehingga T(X) ≤ T dan B(X) ≤ B. Untuk pendekatan, sebuah durasi vektor X didefinisikan agar mengikuti formula (T,B). Bagaimanapun juga pendekatan seperti ini tidak selalu cocok dengan menghitung semua kemungkinan durasi vektor karena akan ada banyak sekali kemungkinan untuk sebuah proyek skala besar. Karena itu kita mencoba sebuah konsep yang berkaitan dengan upper durasi vektor dan lower durasi vektor untuk (T,B). Sebuah durasi vektor X didefinisikan sebagai sebuah upper durasi vektor untuk (T,B) jika X memenuhi (T,B) dan B(Y) > B untuk semua durasi vektor Y dengan Y > X. Dengan ketentuan tersebut, maka semua durasi vektor yang lebih besar dari upper durasi vektor tidak dapat memenuhi (T,B). begitu juga ketika X didefinisikan sebagai lower durasi vektor untuk (T,B), jika X memenuhi (T,B) dan B(Y) > B untuk setiap durasi vektor Y sedemikian hingga Y < X. Maka dengan aturan tersebut, semua durasi vektor yang lebih kecil dari lower durasi vektor tidak akan memenuhi (T,B). Dalam tujuan untuk membangkitkan semua upper durasi vektor dan lower durasi vektor untuk (T,B), penulis menggunakan pseudo durasi vektor Z = (z1, z2, …, zn) dan pseudo cost vektor D = (d1, d2, …, dn). Perlu dicatat bahwa setiap nilai zi memiliki nilai dalam{xi1, xi1+1, xi1+2, …} tetapi xi memiliki nilai dalam {xi1, xi2, …, xiui}. Begitu juga dengan d, d memiliki nilai dalam {ciui, ciui+1, ciui+2, …} tetapi xi memiliki nilai dalam {ciui, ci(ui1), …, ci}. Teorema berikut memiliki peranan penting dalam membangkitkan semua upper durasi vektor untuk (T,B).
Setelah itu, kita akan membangkitkan terlebih dahulu semua pseudo durasi vektor Z sedemikian hingga T(Z) = T dan T(Z`) > T untuk setiap pseudo durasi vektor Z` > Z. Untuk masing-masing Z, pembuktian Teorema 1 mengindikasikan bahwa ∑ai∈Pj z1 = T untuk setiap Pj . Kemudian untuk masing-masing Z, temukan durasi vektor terbesar dari X sedemikian hingga X ≤ Z. Setiap X adalah merupakan kandidat untuk upper durasi vektor (T,B). Teorema 2 Jika X merupakan sebuah lower durasi vektor untuk (T,B) dan ini berelasi dengan cost vektor C=(c1,c2,…,cn) kemudian terdapat minimal satu pseudo cost vektor D = (d1, d2, …, dn) dimana D ≥ C sedemikian hingga d1 + d2 + … + dn = B. Pembuktian (i) untuk kasus dimana T(X) = T : jika c1 + c2 + … + cn = B maka D diganti sebagai C. (ii) untuk kasus dimana T(X) < T : tanpa menghilangkan sifat umumnya, kita asumsikan c1+c2+…+cn = B-1. Pilih sebuah panah ap dengan cp < cp1 maka didapatkan d1+d2+…+dn=B.
Teorema 1 Setiap upper durasi vektor X untuk (T,B), terdapat setidaknya satu pseudo durasi vektor Z dengan Z ≥ X sedemikian hingga T(Z) = T dan T(Z`) > T untuk setiap pseudo durasi vektor Z` > Z. Pembuktian Perlu dicatat bahwa setiap aktivitas pada lintasan kritis memiliki kelonggaran waktu = 0 (slack time). (i) untuk kasus dimana T(X) = T : jika semua aktivitas memiliki kelonggaran waktu = 0, maka Z dianggap sebagai X. Sebaliknya, pilih
3. Algoritma Generate Upper Duration Vektor untuk (T,B) Algoritma ini diperkenalkan oleh Yi Kuei Lin [5] dalam riset yang berkaitan dengan manajemen proyek dengan batasan (T,B) pada tahun 2008.
3
Dalam paper tersebut dipaparkan langkah-langkah untuk membangkitkan upper durasi vektor untuk (T,B) adalah sebagai berikut : 1. Temukan semua pseudo durasi vektor Z = (z1,z2,…,zn) yang memenuhi persamaan (1) dan (2)
∑z
ai ∈Pj
i
zi ≥ xi1 2.
4.
(1)
untuk i = 1,2,...,m
(2)
Untuk setiap Z, temukan durasi terbesar vektor X=(x1,x2,…,xn) sedemikian hingga X ≤ Z dengan aturan sebagai berikut:
xi = 3.
= T untuk j=1,2,...,m
terakhir inilah yang merupakan kumpulan lower durasi vektor untuk (T,B). 5. Asumsi Dalam pengerjaan tugas akhir ini, penulis menggunakan beberapa asumsi sebagai bagian dari batasan permasalahan. Asumsi tersebut antara lain : 1. durasi xi adalah sebuah variabel random yang memiliki kemungkinan nilai: xi1 < xi2 < ... < xiui dengan probabilitas distribusi dan ini berkorelasi dengan cost ci yang memiliki nilai: ci1 > ci2 > ... > ciui. Dengan kata lain, cost ci adalah random variabel yang yang memiliki kemungkinan nilai: ci1 > ci2 > ... > ciui dengan probabilitas distribusi yang sama. 2. minimal path didefinisikan user secara manual. 3. durasi yang berbeda, berarti secara statistik berdiri sendiri-sendiri. 6. Desain Aplikasi Rancangan masukan pada aplikasi ini adalah:
{
xip ifx ≤ z ≤ x ip i i(p +1 ) ifx ≤ zi iui x i ui
i = 1,2,...,n (3) Untuk setiap X, cek apakah total cost B(X) melebihi biaya B. Jika benar, hilangkan X dari kandidat. Dimana sisa dari kumpulan X adalah {X1,X2,…,Xw}. Hilangkan X yang bukan maksimal dari {X1,X2,…,Xw} untuk menghasilkan kumpulan upper durasi vektor (T,B).
1. 2. 3. 4.
jumlah aktivitas batasan durasi proyek (T) batasan biaya proyek (B) definisi minimal path Masukan nomor 4 merupakan inisialisasi alur mulai dari aktivitas pertama hingga aktivitas terakhir yang harus dilakukan pengguna sebelum masuk ke perhitungan.
4. Algoritma Generate Lower Duration Vektor untuk (T,B) Berdasarkan pada teorema 2, maka dapat disimpulkan langkah-langkah untuk membangkitkan semua lower durasi vektor untuk (T,B) adalah sebagai berikut: 1. Temukan semua pseudo cost vektor D = (d1,d2,...,dn) yang memenuhi persamaan (4) dan (5). d1 + d2 + ... + dn = B d1 ≥ ciui untuk i = 1,2,...,n 2.
Tabel 2 Data Random Duration
Aktivitas
A1
(4) (5)
Untuk setiap D = (d1,d2,...,dn), temukan cost vektor terbesar dari C = (c1,c2,...,cn) sedemikian hingga C ≤ D sesuai dengan aturan berikut :
ci =
{
A2
A3
cip ifc i ( p −1) ≤ d i ≤ cip ifd i ≥ ci1
ci1
i = 1,2,...,n (6) 3. Ubah setiap C yang berelasi dengan X = (x1,x2,...,xn) dan cek apakaj T(X) > T, jika benar maka hilangkan X. Dimana sisa dari kumpulan X adalah {X1,X2,...,Xv}. Hilangkan X yang bukan minimal dari {X1,X2,...,Xv}. X yang tersisa dalam kumpulan
A4
Durasi (weeks)
Cost Aktivitas ($)
1
500
2
300
3
200
2 4
400 300
6
200
3
350
4 5
200 150
2 5
650 450
7
350
Untuk rancangan luaran, pada dasarnya aplikasi ini memiliki satu jenis data luaran yaitu sebuah jadwal aktivitas durasi yang memenuhi
4
(T,B). Akan tetapi untuk memonitoring kinerja dua metode yang penulis implementasikan, maka data luaran penulis rincikan berdasarkan langkahlangkah pada dua metode tersebut, baik metode upper durasi vektor maupun lower durasi vektor. 1. Algoritma upper durasi vektor Data luaran dari algoritma ini antara lain : - pseudo durasi vektor Z - durasi vektor X - total nilai biaya aktivitas B(X) - daftar kandidat upper durasi vektor 2. Algoritma lower durasi vektor Data luaran dari algoritma ini antara lain: - pseudo cost vektor D - cost vektor C, hasli transformasi vektor C ke vektor X - total nilai durasi aktivitas T(X) daftar kandidat lower durasi vektor 3. Relasi upper durasi dan lower durasi. Relasi ini memperlihatkan hubungan yang sebenarnya merupakan batas atas dan batas bawah dari beberapa feasible durasi.
Gambar 1 Flowchart proses tugas akhir
Rancangan alur algoritma upper durasi vektor adalah sebagai berikut: 1. Temukan pseudo durasi vektor Z Untuk menemukan pseudo durasi vektor Z, pertama harus dicari terlebih dahulu nilai minimum dari masing-masing Z. Nilai minimum ini nantinya digunakan sebagai nilai awal ataupun sebagai batasan berhentinya sebuah looping. Rancangan alur pencarian nilai minimum ini bisa dilihat secara detil pada Gambar 2. Setelah itu hitung baris maksimal yang bisa didapatkan dari perkalian antara jumlah aktivitas dengan jumlah varian pada masing-masing aktivitas. Setelah itu, untuk setiap baris, kita cari nilai Z dengan memperhatikan batasan minimum masing-masing Z dan juga memperhatikan jumlah durasi masing-masing minimal path yang tidak boleh melebihi total durasi proyek. Hasil dari perpaduan dua batasan tersebut akan menghasilkan pseudo durasi dan akan dimasukkan pada grid tabel pada form aplikasi. Rancangan alur proses pencarian pseudo durasi vektor ini dapat dilihat pada Gambar 3. 2. Temukan durasi vektor terbesar di vektor X untuk setiap Z Pada proses ini, akan dilakukan pencarian nilai pseudo Z yang paling mendekati dengan nilai durasi inputan. Untuk itu, pada masingmasing Z, temukan durasi vektor X yang paling besar yang memenuhi X ≤ Z. Pada proses sebelumnya, didapatkan pseudo durasi vektor Z. hasil tersebut ditampilkan dalam grid. Banyaknya kolom yang dihasilkan sama dengan banyaknya aktivitas yang ada.
Perancangan algoritma digunakan untuk mengetahui alur dari algoritma yang digunakan dalam pencarian baik upper maupun lower durasi vektor. Alur secara umum yang terdapat dalam tugas akhir ini adalah: 1. Tahap input untuk seluruh data masukan 2. Tahap membangkitkan data random durasi dan cost 3. Tahap pencarian upper durasi vektor 4. Tahap menampilkan hasil proses 3 5. Tahap pencarian lower durasi vektor 6. Tahap menampilkan hasil proses 5 7. Tahap merelasikan antara upper durasi dan lower durasi Pada awalnya, user menginputkan data-data masukan seperti pada Tabel 2. Inputan data juga bisa dilakukan dengan cara me-generate data inputan. Setelah itu data inputan diproses untuk mendapatkan nilai upper durasi vektor dan nilai lower durasi vektor. Gambar detil dari tahapan diatas, bisa dilihat pada Gambar 1. Pencarian nilai upper dan lower ini bisa dilakukan bersamaan ataupun tidak. Kedua proses tersebut tidak memerlukan prioritas untuk dikerjakan terlebih dahulu atau dikerjalan belakangan. Setelah nilai upper durasi dan nilai lower durasi didapatkan, dilakukan proses relasi. Proses ini menghubungkan antara nilai-nilai upper dan lower. Dari relasi tersebut, kita akan mendapatkan feasible durasi yang memenuhi batasan (T,B).
5
lagi sehingga didapatkan durasi upper yang bagus. Proses pemilahan ini sebenarnya merupakan proses perbandingan element suatu durasi vektor dengan elemen durasi vektor yang lain. Perbandingan disini ada 2 macam compare1() dan compare2(). Pada compare1(), akan membanding dua durasi vektor X, Y apakah X < Y. Sedangkan pada compare2() akan membandingkan antara dua vektor apakah X,Y apakah X ≤ Y. Durasi vektor yang dibandingkan disini merupakan durasi vektor yang belum masuk dalam sebuah stack, dalam hal ini kita gunakan fungsi cekDalamStack() untuk melakukan pengecekan apakah durasi vektor yang akan diproses sudah ada dalam stack atau belum. Dan isian stack ini bertambah saat suatu duari vektor melewati baik compare1() maupun compare2(). Proses tersebut diulangi sampai i= W , dimana W merupakan jumlah index dari array kandidat. Hasil dari proses ini adalah kumpulan nilau upper durasi vektor. Detil alur proses-nya terdapat pada gambar 3.6.
Sekarang perlu mencari kedekatan nilai pseudo durasi vektor Z tersebut dengan nilai durasi pada tabel inputan. Misalkan pada Z1, nilai pseudo yang didapatkan adalah 7 sedangkan nilai durasi A1 pada tabel 2,3,4. Dengan demikian nilai durasi vektor Z1 adalah 4. Begitu juga dengan kolom Z2 hingga Zn. Setelah itu pindah ke baris berikutnya dan melakukan hal yang sama untuk mendapatkan nilai terdekat antara pseudo durasi dengan durasi inputan. Proses ini berlangsung sampai pada baris terakhir. Dengan memperhatikan formula (3) pada bab sebelumnya, maka akan didapatkan durasi vektor X. Hasil durasi vektor X ini kemudian ditampilkan dalam grid pada tabel yang ada di form aplikasi. Rancangan algoritma ini digambarkan pada Gambar 4. 3. Hitung B(X), tandai B(X) yang ≤ Budget untuk setiap X Pada proses sebelumnya dalam tabel output telah didapatkan dua buah kelompok kolom. Kelompok yang pertama merupakan kelompok pseudo durasi sedangkan kelompok yang kedua merupakan kelompok durasi vektor X. Sekarang kita akan menghitung biaya total / B(X) dari vektor durasi tersebut. Biaya total ini nantinya akan menjadi parameter penting kita untuk melakukan pemilahan mana durasi vektor yang memenuhi budget awal proyek dan mana durasi vektor yang melebihi budget awal proyek. Misalkan kita memiliki durasi vektor (3,2,5,7) untuk (X1,X2,X3,X4). Dan di tabel input kita memiliki data seperti pada Tabel 3.1 diatas. Maka B(X1-4) = 200+400+150+350 = 1200. Nilai total ini lalu kita cek apakah ≤ budget awal proyek atau tidak. Jika tidak maka durasi vektor tersebut kita masukkan ke dalam array penampung serta kita beri tanda pada kolom disampingnya di tabel output. Setelah itu, pindah ke baris selanjutnya begitu seterusnya sampai dengan baris terakhir. Dari proses ini akan didapatkan array kandidat upper durasi. Rancangan algoritmanya dapat dilihat secara detil pada Gambar 5. 4. Hapus non-maximal dari daftar kandidat yang didapat pada step 3. Pada proses sebelumnya didapatkan array yang menampung kandidat upper durasi. Kandidat ini telah memenuhi baik batasan waktu maupun batasan biaya. Tetapi ada beberapa kandidat yang sebenarnya bukan merupakan kandidat yang bagus. Maka dari itu diperlukan proses lagi untuk memilah sekali
Rancangan alur algoritma lower durasi vektor adalah sebagai berikut: 1. Temukan pseudo cost vektor D 2. Temukan cost vektor terbesar di vektor C untuk setiap D, transformasikan ke dalam vektor X. 3. Hitung T(X), tandai T(X) yang <= Budget untuk setiap C 4. Hapus non-maximal dari daftar kandidat yang didapat pada step 3. Proses ke empat langkah ini hampir sama dengan empat proses pada algoritma upper durasi vektor. Perbedaannya terletak pada data yang diolah. Pada upper, data yang diolah adalah data durasi sedangkan pada lower, data yang diolah adalah data cost dari aktivitas. Pada langkah kedua, di lower terdapat proses transformasi vektor D ke vektor X sedangkan langkah kedua pada upper tidak ada proses transformasi. 6. Uji Coba dan Analisis Uji coba dilakukan pada sebuah PC dengan prosesor Intel Pentium 4 2.0 GHz dengan memori sebesar 512 MB RAM. Sistem operasi yang digunakan adalah Windows XP dan bahasa komputasi yang digunakan untuk implementasi metode adalah Visual Basic 6.0. Pada pengujian pertama ini penulis memberikan inputan yang sama persis dengan inputan dari studi kasus yang ada pada paper tersebut. Inputan yang dimaksud adalah seperti dalam Gambar 2 dan Tabel 2.
6
pembuatan pondasi, pembuatan dinding dan atap, dan yang terakhir adalah finishing. Masing-masing aktivitas memiliki 3 varian durasi(week) dan tiga varian cost(US$) seperti yang tertera pada Tabel 2.
Gambar 3 Project network
Alur aktivitasnya direpresentasikan dengan sebuah project network dengan lima panah dan empat node seperti pada Gambar 2. Dari project network tersebut, dapat dilihat bahwa terdapat 3 path alur dari aktivitas awal sampai aktivitas akhir, yaitu P1 = {A1,A2}, P2 = {A1,A3,A5} dan P3 = {A4,A5}. Manager Proyek harus menyelesaikan proyek dalam waktu 10 minggu dengan biaya total proyek sebesar US$ 1400. Untuk menyelesaikan proyek sesuai dengan batasan waktu dan biaya total, manager proyek harus melakukan penjadwalan aktivitas-aktivitas yang ada dalam proyek. Disini kita akan menggunakan algoritma upper durasi vektor dan lower durasi vektor untuk menentukan jadwal aktivitas yang paling efisien. Pada aplikasi, untuk inputan studi kasus ini, penulis langsung mengisikan tabel inputan sesuai dengan tabel inputan durasi dan cost yang ada pada paper [1]. Untuk ujicoba selanjutnya penulis akan menggunakan fungsi generate variabel random sebagai data inputannya. Tampilan tabel inputan pada form aplikasi dapat dilihat pada Gambar 3. Pada gambar tersebut terdapat 5 aktivitas yang diwakili dengan notasi A1, A2, A3, A4 dan A5
Gambar 2 Form inputan
Untuk inputan, user harus mendefinisikan juga project network seperti dalam gambar diatas (B). Aktivitas pertama ditandai dengan lingkaran warna hijau, sedangkan aktivitas terakhir ditandai dengan warna merah. Bagian (C),merupakan grid output dari algoritma upper durasi vektor, sedangkan bagian (D) merupakan grid output untuk algoritma lower durasi vektor. Tabel 2 Data inputan durasi dan cost Aktivitas
Notasi
Studi lapangan
A1
Desain
Pondasi
Dinding+atap
Finishing
A2
A3
A4
A5
Durasi (weeks)
Cost Aktivitas ($)
2 4
400 300
6
200
3 4
350 250
5
150
1 3
400 300
4
200
2 4
350 250
6
150
3 5
400 300
7
200
Pada studi kasus pertama ini, kita misalkan proyek untuk membangun sebuah rumah memiliki 5 aktivitas, mulai studi lapangan, desain,
Gambar 4. Inset form tabel inputan
7
Dari tabel inputan tersebut, kita akan mengimplementasikan algoritma upper durasi vektor untuk (10,1400) dan lower durasi vektor untuk (10,1400). Prosedurnya adalah sebagai berikut : Upper durasi vektor Langkah 1 : Temukan pseudo durasi vektor Z = (z1, z2, z3, z4, z5) yang memenuhi batasan (1) dan (2). Kedua batasan tersebut sebenarnya memiliki tujuan untuk memastikan total durasi semua path yang ada (P1,P2,P3) = T. z1 + z2 = 10 z1 + z3 + z5 = 10 z4 + z5 = 10 dimana z1 ≥ 2, z2 ≥ 3, z3 ≥ 1, z4 ≥ 2, z5 ≥ 3 Hasil dari langkah 1 ini akan ditampilkan pada tabel output upper pada form aplikasi seperti pada Tabel 3.
Tabel 5.Lanjuta hasil durasi vektor X
Langkah 3: Untuk setiap X, hitung B(X) dan cek apakah B(X) melebihi B. Tandai durasi vektor X yang total B(X) nya tidak melebihi B. Hasil dari proses ini dapat dilhat pada Tabel 5. Tabel 5. Hasil perhitungan B(X)
Tabel 3. Hasil pseudo durasi vektor Z
Langkah 4: Dari kandidat upper durasi yang didapat pada langkah 3, hilangkan yang non-maksimal. Hasil dari proses ini ada pada Tabel 6.
Langkah 2 : Untuk setiap Z, temukan durasi terbesar vektor X = (x1, x2, x3, x4, x5) sedemikian hingga X ≤ Z. Dengan mengacu pada batasan (3) didapatkan hasil durasi vektor X seperti pada Tabel 4.
Tabel 6. Hasil remove non-maximal
Tabel 4. Hasil durasi vektor X
8
Tabel 7 Lanjutan hasil remove non-maximal
Gambar 6. Form hasil perhitungan T(X)
Lower durasi vektor Langkah 1: Temukan semua pseudo cost vektor D yang memenuhi batasan (4) dan (5). Hasil dari proses ini dapat diamati pada Gambar 4.
Langkah 4: Dari 11 kandidat lower durasi vektor yang didapat pada langkah 3, hilangkan yang non-maksimal. Hasilnya, didapatkan 9 lower durasi vektor yaitu : X1=(6,4,1,6,3), X2=(4,5,3,4,3), X3=(4,5,1,6,3), X4=(4,5,1,4,5), X5=(4,4,3,6,3), X6=(2,5,4,4,3), X7=(2,5,3,6,3), X8=(2,5,3,4,5), X9=(2,4,4,6,3). Hasil dari proses ini tergambar dalam Gambar 7.
Gambar 7. Hasil remove non-maksimal lower durasi
Gambar 4. Form hasil pseudo cost vektor D
Setelah temuan nilai upper durasi dan lower durasi didapatkan, maka langkah terakhir untuk mendapatkan feasible solution yang berupa jadwal aktivitas yang sesuai dengan batasan waktu dan biaya adalah merelasikan nilai-nilai upper dan lower. Hasil relasinya dapat dilihat pada Gambar 8.
Langkah 2: Untuk setiap D, temukan cost terbesar dari vektor C sedemikian hingga C ≤ D sesuai dengan batasan (6). Ubah nilai cost C dengan nilai durasi X yang saling memiliki hubungan. Hasilnya adalah pada Gambar 5.
Gambar 5. Form hasil temuan cost terbesar dari vektor C dan transformasi dari cost C ke durasi X
Langkah 3: Hitung nilai T(X) dan cek apakah T(X) ≥ T. Tandai T(X) yang tidak melebihi T. Hasil dari langkah 3 ini dapat dilihat pada Gambar 9. Ada 11 lower durasi vektor (X1-X11) yang didapatkan pada langkah ini yaitu : X1=(6,4,1,6,3), X2=(4,5,3,6,3), X3=(4,5,3,4,3), X4=(4,5,1,6,3), X5=(4,5,1,4,5), X6=(4,4,3,6,3), X7=(2,5,4,6,3), X8=(2,5,4,4,3), X9=(2,5,3,6,3), X10=(2,5,3,4,5), X11=(2,4,4,6,3). Gambar 8. Hasil relasi lower- upper durasi
9
Kotak biru merupakan nilai-nilai lower durasi, sedangkan kotak merah merupakan nilai-nilai upper durasi. Garis penghubung ungu merupakan garis yang menerangkan bahwa kotak yang saling berhubungan tersebut merupakan satu relasi. Misal durasi vektor X=(3,5,3,6,3), dan sesuai dengan relasi pada Gambar 8, vektor tersebut terletak diantara upper durasi vektor X4=(4,5,3,6,3) dan lower durasi vektor X7=(2,5,3,6,3) sedemikian hingga X4 > X > X7. Dengan kata lain, (3,5,3,6,3) merupakan feasible durasi vektor yang mengacu pada batasan waktu proyek dan biaya proyek (T,B)=(10,1400). 7. Kesimpulan Setelah dilakukan uji coba dan analisis terhadap perangkat lunak yang dibuat, maka dapat diambil simpulan sebagai berikut: 1. Dengan menggunakan algoritma upper duration vector dan lower duration vector, kita bisa mendapatkan beberapa pilihan solusi yang efektif sesuai dengan biaya dan waktu yang dibutuhkan proyek. 2. Nilai-nilai upper durasi vektor dan lower durasi vektor merupakan feasible solution yang memenuhi batasan durasi dan biaya proyek, begitu juga dengan nilai yang berada diantara upper dan lower yang saling berelasi. 8. Daftar Pustaka [1] Y.K. Lin, 2008, Project Management for arbitrary random durations and cost attributes by applying network approaches, Elsevier. [2] Y.K. Lin, 2007, An Algorithm To Generate All Upper Boundary Points For (D,B) In Term Minimal Cuts, Elsevier . [3] Y.K. Lin, 2004, Reliability Of A StochasticFlow Network With Unreliable Branches & Nodes Under Budget Constraint, IEEE Transactions on Reliability. [4] A.M.Al-Ghanim, 1999, A Heuristic Technique For Generating Minimal Path And Cutsets Of General Network, Computer adn Industrial Engineering. [5] Y.Shen, 1995, A New Simple Algorithm For Enumerating All Minimal Path And Cuts Of A Graph, Microelectronics and Reliability .
10