PENJADWALAN PERAWAT KAMAR OPERASI
MENGGUNAKAN PEMROGRAMAN INTEGER:
STUDI KASUS DI RUMAH SAKIT OMNI INTERNASIONAL
TANGERANG
VIANEY CHRISTINE AMBARITA
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
ABSTRAK
VIANEY CHRISTINE AMBARITA. Penjadwalan Perawat Kamar Operasi Menggunakan
Pemrograman Integer: Studi Kasus di Rumah Sakit OMNI Internasional Tangerang. Dibimbing oleh PRAPTO TRI SUPRIYO dan FARIDA HANUM.
Penjadwalan perawat kamar operasi merupakan permasalahan yang sering dihadapi pengelola rumah sakit. Peraturan-peraturan yang diberlakukan rumah sakit serta keterbatasan jumlah perawat menjadi faktor penentu dalam penjadwalan. Karya ilmiah ini menyajikan model pemrograman
integer untuk membangun jadwal bagi perawat kamar operasi dengan fungsi objektif
meminimumkan biaya operasional dengan memperhatikan kendala-kendala yang terkait dengan peraturan dari rumah sakit serta ketersediaan jumlah perawat. Implementasi model pada Rumah Sakit OMNI Internasional Tangerang menghasilkan jadwal perawat yang lebih baik dibandingkan dengan jadwal yang dibuat secara manual oleh kepala kamar operasi.
ABSTRACT
VIANEY CHRISTINE AMBARITA. Nurse Scheduling on Operating Room Using Integer
Programming: A Case Study in OMNI Internasional Hospital Tangerang. Supervised by PRAPTO
TRI SUPRIYO and FARIDA HANUM.
A nurse scheduling on operating room problem is often faced by the hospital management. Regulations and limitations of nurse imposed lead to be a determining factor in scheduling. This paper presents an integer programming model to build schedule on operating room nurses which minimizes operational costs by taking into account the constraints associated with the regulation of hospitals and the number of available nurse as an objective function. Implemented model in the OMNI Internasional Hospital Tangerang produces better nurse schedule compared to the schedule created manually.
PENJADWALAN PERAWAT KAMAR OPERASI
MENGGUNAKAN PEMROGRAMAN INTEGER:
STUDI KASUS DI RUMAH SAKIT OMNI INTERNASIONAL
TANGERANG
VIANEY CHRISTINE AMBARITA
Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Sains pada
Departemen Matematika
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
Judul Skripsi : Penjadwalan
Perawat
Kamar
Operasi
Menggunakan
Pemrograman Integer: Studi Kasus di Rumah Sakit OMNI
Internasional Tangerang
Nama
: Vianey Christine Ambarita
NIM
: G54070047
Menyetujui
Tanggal Lulus:
Pembimbing I,
Drs. Prapto Tri Supriyo, M.Kom.
NIP: 19630715 199002 1 002
Pembimbing II,
Dra. Farida Hanum, M.Si.
NIP: 19651019 199103 2 002
Mengetahui:
Ketua Departemen,
Dr. Berlian Setiawaty, M.S.
NIP: 19650505 198903 2 004
KATA PENGANTAR
Puji syukur kepada Tuhan Yang Maha Esa atas berkat, kasih dan karunia-Nya sehingga penulis mampu menyelesaikan karya ilmiah ini. Selama proses penulisan karya ilmiah, penulis banyak mendapat bantuan dari beberapa pihak. Oleh karena itu, pada kesempatan ini penulis ingin mengucapkan terimakasih kepada:
1. keluarga terkasih Papa, Mama, Guido Lubertus Ambarita, Felix Ferdinando Ambarita, dan Roy Vandy Ambarita, yang telah memberikan kasih sayang, doa, semangat dan pengertian selama proses penyusunan skripsi ini,
2. Drs. Prapto Tri Supriyo, M.Kom. selaku dosen pembimbing I yang telah meluangkan waktu dan pikiran dalam membimbing, memberi motivasi, semangat dan doa,
3. Dra. Farida Hnum, M.Si. selaku dosen pembimbing II yang telah memberikan ilmu, kritik dan saran, motivasi serta doanya,
4. Muhammad Ilyas, S.Si, M.Sc. selaku dosen penguji yang telah memberikan ilmu, saran dan doanya,
5. Cahyono Susanto, SE dan Sugeng Suryanto, ST, SKM selaku HRD dan kepala ruang operasi Rumah Sakit OMNI Internasional Tangerang,
6. semua dosen Departemen Matematika, terima kasih atas ilmu yang telah diberikan, 7. nantulang Yura dan keluarga, kak Erlina Sitinjak, kak Mannawati Sitinjak, bang Jimmi
Sitinjak atas bantuan, dukungan, doa dan semangatnya,
8. sahabat yang selalu memberikan semangat dan doa: Aditya Sutrisna, Dionita Kristi Napitupulu, Adian Romiani Naibaho, Paulina Yuniarsih dan Chatarina Ganis Ratna Wardani,
9. abang kos yang sabar menjadi teman bertukar pikiran: Christo Esvaldo Damanik, Endrico TN Dolok Saribu, Sugandi Putra Ginting, Wastin Midian Simanjuntak dan Ednan Setriawan,
10. teman yang menjadi keluarga: Yeni Chrisna Siregar, Fitrina A Simanjuntak,
11. semua teman matematika 44 atas kenangan, motivasi dan dukungan untuk terus berkembang,
12. teman-teman bulutangkis: Aci, Andri, Arbi, Benny, Dita, Feni, Fuka, Herlan, Irwan dan Uda,
13. semua pihak yang telah membantu dalam penyusunan karya ilmiah ini.
Semoga karya ilmiah ini dapat bermanfaat bagi dunia ilmu pengetahuan khususnya bidang matematika dan menjadi inspirasi bagi penelitian selanjutnya.
Bogor, April 2013
RIWAYAT HIDUP
Penulis dilahirkan di Kabupaten Pasaman, Sumatera Barat pada tanggal 19 September 1989. Penulis merupakan anak pertama dari empat bersaudara, anak dari pasangan Bapak H. Ambarita dan Ibu R. Gultom.
Pendidikan formal dimulai dari SD Negeri 01 Pasar Rao pada tahun 1995-2001. Penulis kemudian melanjutkan pendidikan ke SLTP Negeri 1 Rao pada tahun 2001-2004. Pendidikan selanjutnya adalah SMA Negeri 1 Rao pada tahun 2004-2007. Pada tahun yang sama penulis melanjutkan pendidikan ke jenjang universitas dan lulus seleksi masuk IPB melalui jalur USMI (Undangan Seleksi Masuk IPB) di Program Studi Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam.
Selama menjalani masa pendidikan di IPB, penulis menjadi asisten mata kuliah Agama Katolik. Penulis juga aktif dalam mengajar Matematika bimbingan belajar privat maupun kelompok mahasiswa. Selain itu, penulis juga terlibat dalam beberapa kegiatan, antara lain Divisi Humas Pesta Sains se-Indonesia 2009, Divisi Pencarian Dana Usaha Lomba Karya Cipta Mahasiswa se-Indonesia 2009, Divisi Pencarian Dana Usaha Natal Civa IPB 2009, Koordinator Pencarian Dana dan Usaha Hari Kasih KEMAKI IPB 2010, Koordinator Divisi Doa Natal Civa IPB 2010.
DAFTAR ISI
Halaman DAFTAR TABEL ... ix DAFTAR GAMBAR ... ix DAFTAR LAMPIRAN ... ix I PENDAHULUAN 1.1 Latar Belakang ... 1 1.2 Tujuan ... 1 II LANDASAN TEORI 2.1 Pemrograman Linear ... 12.2 Pemrograman Linear Integer ... 2
2.3 Relaksasi Pemrograman Linear ... 2
2.4 Metode Branch and Bound ... 3
III DESKRIPSI DAN FORMULASI MASALAH 3.1 Deskripsi dan Formulasi Masalah... 5
3.1.1 Notasi ... 5
3.1.2 Fungsi Objektif ... 6
IV STUDI KASUS DAN PENYELESAIANNYA ... 7
V SIMPULAN DAN SARAN 5.1 Simpulan ... 12
5.2 Saran ... 12
DAFTAR PUSTAKA ... 12
LAMPIRAN ... 13
DAFTAR TABEL
Halaman
1 Parameter pada sudi kasus ... 7 2 Perbandingan hasil penjadwalan perawat penanggungjawab bedah menggunakan metode
konvensional dan PLI ... 9 3 Jumlah setiap shift untuk perawat penanggungjawab bedah menggunakan metode
konvensional ... 10 4 Jumlah setiap shift untuk perawat penanggungjawab bedah menggunakan PLI ... 10 5 Kendala yang dilanggar oleh perawat penanggungjawab bedah pada penjadwalan
konvensional ... 10 6 Jumlah setiap shift untuk perawat pelaksana bedah menggunakan metode konvensional .... 11 7 Jumlah setiap shift untuk perawat pelaksana bedah menggunakan PLI ... 11 8 Jumlah setiap shift untuk perawat anestesi menggunakan metode konvensional ... 11 9 Jumlah setiap shift untuk perawat anestesi menggunakan PLI ... 11 10 Kendala yang dilanggar oleh perawat pelaksana bedah dan perawat anestesi pada
penjadwalan konvensional ... 11 11 Perbandingan hasil penjadwalan perawat pelaksana bedah menggunakan metode
konvensional dan PLI ... 27 12 Perbandingan hasil penjadwalan perawat anestesi menggunakan metode konvensional
dan PLI ... 28
DAFTAR GAMBAR
Halaman
1 Daerah fisibel relaksasi-PL (6) ... 4 2 Daerah fisibel Subproblem 2 danSubproblem 3 ... 4 3 Bagan penyelesaian PLI (6) dengan algoritme branch and bound ... 5
DAFTAR LAMPIRAN
Halaman
1 Sintak program LINGO 11.0 untuk menyelesaikan masalah pemrograman linear dengan metode Branch and Bound beserta hasil yang diperoleh ... 14 2 Sintaks dan hasil komputasi program LINGO 11.0 untuk menyelesaikan masalah
penjadwalan perawat penanggungjawab bedah ... 17 3 Sintaks dan hasil komputasi program LINGO 11.0 untuk menyelesaikan masalah
penjadwalan perawat pelaksana bedah dan perawat anestesi... 22 4 Jadwal perawat pelaksana bedah menggunakan metode konvensional dan PLI ... 27 5 Jadwal perawat anestesi menggunakan metode konvensional dan PLI ... 28
I PENDAHULUAN
1.1 Latar BelakangPermasalahan penjadwalan perawat kamar operasi adalah permasalahan yang sering terjadi di berbagai instansi kesehatan seperti klinik dan rumah sakit. Peraturan-peraturan yang diberlakukan oleh pihak klinik ataupun rumah sakit, dan keterbatasan jumlah serta spesialisasi dari perawat itu sendiri, menjadi beberapa faktor penentu dalam permasalahan penjadwalan perawat. Sebagai rumah sakit yang memiliki banyak pelanggan, kamar operasi Rumah Sakit OMNI Internasional Tangerang tidak luput dari permasalahan ini.
Selama ini penjadwalan perawat masih dilakukan secara manual (metode konvensional) oleh kepala kamar operasi. Akibatnya penjadwalan membutuhkan waktu yang relatif lebih lama. Selain itu, penjadwalan secara manual juga dapat menyebabkan adanya ketidakseimbangan dalam pembagian shift jaga, seperti adanya perawat yang lebih banyak mendapatkan
shift pagi dibandingkan dengan perawat lain
dan ketidakpastian jumlah hari libur sehingga perawat tidak bisa mengatur waktu istirahat.
Oleh karena itu penjadwalan perawat secara otomatis menjadi sangat penting. Pengoptimalan sumber daya manusia dipilih sebagian besar pihak manajemen rumah sakit untuk tetap menjaga performa kerja perawat dan kualitas pelayanan rumah sakit. Permasalahan penjadwalan perawat kamar operasi ini akan dimodelkan sebagai masalah Pemrograman Linear Integer (PLI). PLI adalah masalah optimasi dengan fungsi objektif dan kendala yang linear serta variabel yang integer. Model penjadwalan perawat kamar operasi dalam karya ilmiah ini dimodifikasi dari artikel berjudul Nurse
Scheduling Using Integer Linear Programming and Constraint Programming
yang ditulis oleh Lorraine Trilling, Alain Guinet, dan Dominique Le Magny tahun 2006.
1.2 Tujuan
Tujuan dari karya ilmiah ini ialah memodelkan masalah penjadwalan perawat kamar operasi dalam bentuk Pemrograman Linear Integer (PLI), serta menerapkan model tersebut pada Rumah Sakit OMNI Internasional Tangerang.
II LANDASAN TEORI
Untuk membuat model penjadwalan perawat kamar operasi dan teknik-teknik pemecahan yang digunakan dalam karya tulis ini, diperlukan pemahaman tentang Pemrograman Linear (PL), Pemrograman Linear Integer (PLI), dan metode
branch-and bound.
2.1 Pemrograman Linear
Fungsi linear dan pertidaksamaan linear merupakan salah satu konsep dasar yang harus dipahami terkait dengan konsep pemrograman linear.
Definisi 1 (Fungsi Linear)
Suatu fungsi f dalam variabel-variabel adalah suatu fungsi linear jika dan hanya jika untuk suatu himpunan konstanta , f dapat ditulis sebagai
= . (Winston 2004)
Sebagai contoh,
merupakan fungsi linear, sementara
bukan fungsi linear.
Definisi 2 (Pertidaksamaan dan Persamaan Linear)
Untuk sembarang fungsi linear f dan sembarang bilangan c, pertidaksamaan
dan
adalah pertidaksamaan linear, sedangkan suatu persamaan merupakan persamaan linear.
(Winston 2004) Menurut Winston (2004), Pemrograman Linear (PL) adalah suatu masalah optimasi yang memenuhi ketentuan-ketentuan sebagai berikut:
a. Tujuan masalah tersebut adalah memaksimumkan atau meminimumkan suatu fungsi linear dari sejumlah variabel keputusan. Fungsi yang akan dimaksimumkan atau diminimumkan ini disebut fungsi objektif.
2
b. Nilai variabel-variabel keputusannya harus memenuhi suatu himpunan kendala. Setiap kendala harus berupa persamaan linear atau pertidaksamaan linear.
c. Ada pembatasan tanda untuk setiap variabel dalam masalah ini. Untuk sembarang variabel , pembatasan tanda menentukan harus taknegatif ( ) atau tidak dibatasi tandanya (unrestricted
in sign).
Suatu PL mempunyai bentuk standar seperti yang didefinisikan sebagai berikut.
Definisi 3 (Bentuk Standar Pemrograman Linear)
Pemrograman linear
min z = cTx (1) terhadap Ax = b
x 0 dikatakan PL dalam bentuk standar, dengan x dan c vektor-vektor berukuran n, vektor b berukuran m, dan A matriks berukuran m n yang disebut sebagai matriks kendala, dengan m n.
(Nash & Sofer 1996) Sebagai catatan, yang dimaksud dengan vektor berukuran n adalah vektor yang memiliki dimensi (ukuran) n 1.
Definisi 4 (Daerah Fisibel)
Daerah fisibel dari suatu PL adalah himpunan semua titik yang memenuhi semua kendala dan pembatasan tanda pada PL tersebut.
(Winston 2004)
Definisi 5 (Solusi Optimum)
Untuk masalah maksimisasi, solusi optimum suatu PL adalah suatu titik dalam daerah fisibel dengan nilai fungsi objektif terbesar. Untuk masalah minimisasi, solusi optimum suatu PL adalah suatu titik dalam daerah fisibel dengan nilai fungsi objektif terkecil.
(Winston 2004)
2.2 Pemrograman Linear Integer
Pemrograman linear integer adalah suatu model pemrograman linear dengan variabel yang digunakan berupa bilangan bulat (integer). Jika semua variabel harus berupa
integer, maka masalah tersebut dinamakan pure integer programming. Jika hanya
sebagian yang harus berupa integer, maka disebut mixed integer programming (MIP). PLI dengan semua variabelnya harus bernilai 0 atau 1 disebut 0-1 PLI.
(Garfinkel & Nemhauser 1972) Berikut diberikan contoh masalah PLI.
Contoh 2
Misalkan diberikan masalah PLI sebagai berikut: Maksimumkan z = (2) terhadap integer. Masalah PLI (2) merupakan pure integer
programming. Maksimumkan z = (3) terhadap integer. Masalah PLI (3) merupakan mixed integer
programming.
Maksimumkan z = (4) terhadap
. Masalah PLI (4) merupakan 0-1 PLI.
2.3 Relaksasi Pemrograman Linear
Konsep relaksasi pemrograman linear atau relaksasi-PL diberikan dalam definisi berikut ini.
Definisi 6 (Relaksasi Pemrograman Linear)
Relaksasi pemrograman linear atau sering disebut relaksasi-PL merupakan suatu pemrograman linear yang diperoleh dari suatu PLI dengan menghilangkan kendala
integer atau kendala 0-1 pada setiap
variabelnya.
Untuk masalah maksimisasi, nilai optimal fungsi objektif relaksasi-PL lebih besar atau sama dengan nilai optimal fungsi objektif PLI, sedangkan untuk masalah minimisasi, nilai optimum fungsi objektif
3
relaksasi-PL lebih kecil atau sama dengan nilai optimum fungsi objektif PLI.
(Winston 2004) Berikut diberikan relaksasi-PL dari PLI (2). Maksimumkan z = (5) terhadap 6
2.4 Metode Branch and Bound
Dalam karya ilmiah ini, untuk memperoleh solusi optimum dari masalah PLI digunakan software LINGO 11.0, yaitu sebuah program yang dirancang untuk menentukan solusi model linear, nonlinear, dan optimisasi integer. Software LINGO 11.0 ini menggunakan metode
branch-and-bound untuk menyelesaikan masalah PLI.
Prinsip dasar metode branch-and-bound adalah memecah daerah fisibel dari masalah relaksasi-PL dengan membuat subproblem-subproblem. Terdapat dua konsep dasar dalam algoritme branch-and-bound.
1. Branch (Cabang)
Branching (pencabangan) adalah proses
membagi permasalahan menjadi subproblem-subproblem yang mungkin mengarah ke solusi.
2. Bound (Batas)
Bounding (pembatasan) adalah suatu
proses untuk mencari atau menghitung batas atas (dalam masalah minimisasi) dan batas bawah (dalam masalah maksimisasi) untuk solusi optimum pada subproblem yang mengarah ke solusi.
(Taha 1975) Metode branch-and-bound diawali dari menyelesaikan relaksasi-PL dari suatu pemrograman linear integer. Jika semua nilai variabel keputusan solusi optimum sudah berupa integer, maka solusi tersebut merupakan solusi optimum PLI. Jika tidak, dilakukan pencabangan dan penambahan batasan pada relaksasi-PLnya kemudian diselesaikan.
Winston (2004) menyebutkan bahwa untuk masalah maksimisasi nilai fungsi objektif optimum untuk PLI lebih kecil atau sama dengan nilai fungsi objektif optimum untuk relaksasi-PL, sehingga nilai fungsi objektif optimum relaksasi-PL merupakan batas atas bagi nilai fungsi objektif optimum
untuk masalah PLI. Diungkapkan pula oleh Winston (2004) untuk masalah maksimisasi bahwa nilai fungsi objektif optimum untuk suatu kandidat solusi merupakan batas bawah nilai fungsi objektif optimum untuk masalah PLI asalnya. Suatu kandidat solusi diperoleh jika solusi dari suatu subproblem sudah memenuhi kendala integer pada masalah PLI, artinya fungsi objektif dan semua variabelnya sudah bernilai integer.
Sebelumnya akan dibahas terlebih dahulu pengertian subproblem yang terukur. Menurut Winston (2004), suatu subproblem dikatakan terukur (fathomed) jika salah satu kondisi berikut terpenuhi:
a. Subproblem tersebut takfisibel, sehingga tidak dapat menghasilkan solusi optimum bagi PLI.
b. Subproblem tersebut menghasilkan suatu solusi optimum dengan semua variabelnya bernilai integer. Jika solusi optimum ini mempunyai nilai fungsi objektif yang lebih baik daripada solusi fisibel yang diperoleh sebelumnya, maka solusi ini menjadi kandidat solusi optimum dan nilai fungsi objektifnya menjadi batas bawah (dalam masalah maksimisasi) dan batas atas (dalam masalah minimisasi) nilai fungsi objektif optimum bagi masalah PLI pada saat itu. Bisa jadi subproblem ini menghasilkan solusi optimum untuk masalah PLI. c. Nilai fungsi objektif optimum untuk
subproblem tersebut tidak melebihi (untuk masalah maksimisasi) batas bawah saat itu, maka subproblem ini dapat dieliminasi.
Berikut ini adalah langkah-langkah penyelesaian suatu masalah maksimisasi dengan metode branch-and-bound :
• Langkah 0
Didefinisikan z sebagai batas bawah dari solusi PLI yang optimum. Pada awalnya tetapkan z = dan i = 0.
• Langkah 1
Subproblem dipilih sebagai bagian masalah berikutnya untuk diperiksa. Subproblem diselesaikan dan diukur
dengan kondisi yang sesuai.
a) Jika terukur, maka batas bawah z dapat diperbarui. Batas bawah z dapat diperbaharui jika solusi PLI yang lebih baik telah ditemukan. Jika tidak, maka bagian masalah (subproblem) baru i dipilih dan langkah 1 diulangi. Jika
4
semua subproblem telah diteliti, maka proses dihentikan.
b) Jika tidak terukur, lanjutkan ke
langkah 2 untuk melakukan pencabangan .
• Langkah 2
Dipilih salah satu variabel yang nilai optimumnya adalah yang tidak memenuhi batasan integer dalam solusi . Bidang [ ] [ ] dipecah
menjadi dua subproblem, yaitu [ ] dan [ ]
dengan [ ] didefinisikan sebagai integer terbesar yang kurang dari atau sama dengan . Jika masih tidak terukur, maka
kembali ke Langkah 1.
(Taha 1996) Untuk memudahkan pemahaman mengenai metode branch-and-bound
diberikan contoh sebagai berikut:
Contoh 2
Misalkan diberikan PLI berikut:
maksimumkan z = (6) dengan kendala
integer Solusi optimum relaksasi-PL dari masalah PLI (6) adalah , , dan (yang dapat dilihat di Lampiran 1). Batas atas nilai optimum fungsi objektif masalah ini adalah . Daerah fisibel relaksasi-PL masalah (6) ditunjukkan pada Gambar 1.
x2
Langkah berikutnya adalah memartisi daerah fisibel relaksasi-PL menjadi dua bagian berdasarkan variabel yang bernilai pecahan (non-integer). Dipilih salah satu variabel karena kedua variabel bernilai pecahan, misalkan , sebagai dasar pencabangan. Jika masalah relaksasi-PL dari PLI (6) diberi nama Subproblem 1, maka pencabangan tersebut menghasilkan dua subproblem, yaitu:
• Subproblem 2: Subproblem 1 ditambah kendala .
• Subproblem 3: Subproblem 1 ditambah kendala .
Daerah fisibel untuk kedua subproblem di atas diilustrasikan secara grafis pada Gambar 2.
x2
Gambar 2 Daerah fisibel Subproblem 2 dan Subproblem 3.
Setiap titik (solusi) fisibel dari PLI (6) termuat dalam daerah fisibel Subproblem 2 dan Subproblem 3. Setiap subproblem ini saling lepas. Sekarang dipilih subproblem yang belum diselesaikan, misalkan dipilih Subproblem 2. Solusi optimum untuk Subproblem 2 , , dan (lihat Lampiran 1). Dapat dilihat bahwa solusi optimum subproblem ini semuanya berupa
integer maka tidak perlu dilakukan pencabangan di Subproblem 2. Solusi dari Subproblem 2 menjadi batas bawah bagi nilai optimum PLI.
Pada Subproblem 3 diperoleh solusi optimum , , dan (lihat Lampiran 1). Karena solusi optimum yang dihasilkan Subproblem 3 bukan solusi
integer, maka dipilih pencabangan atas ,
Gambar 1 Daerah fisibel relaksasi-PL (6).
sehingga diperoleh dua subproblem lagi, yaitu:
Subproblem 4 : Subproblem 3 ditambah kendala .
x1
Solusi optimum relaksasi-PL (6)
x1
x1
Subproblem 3
5
Subproblem 5: Subproblem 3 ditambah kendala .
Untuk Subproblem 4 dihasilkan solusi optimum x1 = 4.5, x2 = 0, dan z = 22.5 (lihat
Lampiran 1). Karena variabelnya bukan solusi integer, maka seharusnya dibuat subproblem baru. Akan tetapi nilai z maksimum yang dihasilkan lebih kecil dari batas bawah, maka tidak perlu dibuat subproblem baru.
Subproblem 5 merupakan satu-satunya masalah yang belum diselesaikan. Solusi dari Subproblem 5 ternyata takfisibel. Dengan demikian, diperoleh Subproblem 2 sebagai solusi optimum dari permasalahn PLI (6), yakni x1= 3, x2= 2 dan z= 23. Bagan
yang menunjukkan penyelesaian PLI (6) dengan menggunakan algoritme branch and
bound ditunjukkan pada pada Gambar 3.
t = 1
(
) 4)t = 2
t = 3× ( ) ( )
t = 4 t = 7
×
t = 7×
Keterangan: BB = Batas Bawah; × = Fathomed; t = Iterasi
Gambar 3 Bagan penyelesaian PLI (6) dengan algoritme branch and bound.
III DESKRIPSI DAN FORMULASI MASALAH
3.1 Deskripsi dan Formulasi MasalahPerawat kamar operasi Rumah Sakit OMNI Internasional terdiri dari beberapa spesialisasi yakni perawat penanggungjawab bedah, perawat pelaksana bedah, dan perawat anestesi. Perawat penanggungjawab bedah bertugas menjadi penanggungjawab pelaksanaan pada saat bedah berlangsung, perawat pelaksana bedah bertugas untuk membantu dokter bedah, perawat anestesi bertugas membantu dokter anestesi.
Pihak manajemen rumah sakit mengambil kebijakan untuk membagi jam kerja perawat menjadi 3 shift, yakni shift pagi, shift siang, dan shift malam. Durasi waktu untuk shift pagi ialah pukul 07.00-14.00, shift siang pukul 14.00-21.00, dan
shift malam pukul 21.00-07.00. Setiap
perawat bertugas selama 26 hari dalam satu
periode. Untuk meminimumkan biaya yang harus dikeluarkan rumah sakit, kepala kamar operasi selaku pembuat jadwal perawat diharapkan dapat mengoptimalkan jumlah perawat yang ada serta menciptakan penjadwalan perawat yang efektif dan efisien.
Formulasi berikut ini digunakan untuk ketiga jenis spesialisasi perawat yakni perawat penanggungjawab bedah, perawat pelaksana bedah dan perawat anestesi.
3.1.1 Notasi
Dalam penjadwalan perawat kamar bedah diberikan notasi-notasi sebagai berikut:
n : banyaknya hari yang digunakan pada penjadwalan dalam satu periode, Subproblem 1 x1 = 3.75, x2 = 1.25, z= 23.75 (batas atas) Subproblem 2 x1 = 3, x2 = 2 , z = 23 BB 1 = 23 Subproblem 3 x1 = 4, x2 = 0.83, z = 23.33
Subproblem 4 x1 = 4.5, x2 = 0, z = 22.5
Subproblem 5 Solusi takfisibel
×
6
m : banyaknya perawat yang bertugas di kamar operasi,
j : indeks hari (j=1,2...n),
i : indeks perawat (i=1,2...m),
Ajmax : jumlah maksimum perawat yang bertugas untuk shift pagi di hari ke-j,
Ajmin : jumlah minimum perawat yang bertugas untuk shift pagi di hari ke-j,
Bjmax : jumlah maksimum perawat yang bertugas untuk shift siang di hari ke-j,
Bjmin : jumlah minimum perawat yang bertugas untuk shift siang di hari ke-j,
Cj : jumlah minimum perawat yang bertugas untuk shift malam di hari ke-j,
XMij : biaya yang dikeluarkan oleh pihak rumah sakit untuk perawat ke-i yang bertugas pada
shift pagi di hari ke-j,
XEij : biaya yang dikeluarkan oleh pihak rumah sakit untuk perawat ke-i yang bertugas pada
shift siang di hari ke-j,
XNij : biaya yang dikeluarkan oleh pihak rumah sakit untuk perawat ke-i yang bertugas pada
shift malam di hari ke-j,
Qtot : banyaknya hari kerja yang harus dipenuhi oleh setiap perawat dalam satu periode,
Pmin : minimum banyaknya shift pagi yang harus dipenuhi oleh setiap perawat dalam satu periode,
Pmax : maksimum banyaknya shift pagi yang harus dipenuhi oleh setiap perawat dalam satu periode,
Smin : minimum banyaknya shift siang yang harus dipenuhi oleh setiap perawat dalam satu periode,
3.1.2 Fungsi Objektif
Fungsi Objektif dari permasalahan ini adalah meminimumkan biaya yang dikeluarkan oleh pihak rumah sakit, sehingga fungsi objektif dimodelkan sebagai berikut: Min z= ∑ ∑ Variabel Keputusan { { { { Kendala-kendala
1. Banyaknya perawat yang bertugas di
shift pagi minimum sebanyak dan maksimum sebanyak setiap hari
ke-j.
∑ , j=1,2...n
2. Banyaknya perawat yang bertugas di
shift siang minimum sebanyak dan maksimum sebanyak setiap hari
ke-j.
∑ , j=1,2...n
3. Banyaknya perawat yang bertugas di
shift malam minimum sebanyak
setiap hari ke-j.
∑ , j=1,2...n
4. Setiap perawat bertugas sebanyak- banyaknya satu shift dalam satu hari.
+
j=
5. Jika seorang perawat sudah bertugas pada
shift malam, maka perawat tersebut tidak
boleh bertugas pada shift pagi di hari berikutnya.
, j=1,2...(n-1), i=1,2...m.
Setiap perawat tidak boleh bertugas pada
shift malam selama dua hari
berturut-turut.
, j=1,2...(n-1), i=1,2...m.
Total hari kerja yang harus dipenuhi setiap perawat dalam satu periode adalah sebanyak Qtot .
∑ Qtot
untuk i=1,2....m.
8. Setiap perawat bertugas di shift pagi minimum sebanyak Pmin kali dan maksimum sebanyak Pmax kali.
∑
, i=1,2...m.
7
Setiap perawat bertugas di shift siang minimum sebanyak Smin kali dan maksimum sebanyak Smax kali..
∑
, i=1,2...m.
Semua variabel keputusan bernilai 0 atau 1.
, untuk setiap i dan j. , untuk setiap i dan j. , untuk setiap i dan j. , untuk setiap i dan j.
IV STUDI KASUS DAN PENYELESAIANNYA
Untuk memahami permasalahan penjadwalan perawat kamar operasi menggunakan PLI, dalam karya ilmiah ini diberikan suatu contoh kasus. Misalkan rumah sakit menetapkan satu periode penjadwalan ialah 31 hari. Banyaknya perawat kamar operasi adalah 16 orang yang terbagi dalam tiga spesialisasi, yakni perawat penanggungjawab bedah, perawat pelaksana bedah dan perawat anestesi. Perawat penanggungjawab bedah berjumlah 6 orang, perawat pelaksana bedah berjumlah 5 orang dan perawat anestesi berjumlah 5 orang. Pihak manajemen rumah sakit mengambil kebijakan untuk membagi jam kerja perawat menjadi 3 shift, yakni shift pagi, shift siang, dan shift malam. Durasi
waktu untuk shift pagi pukul 07.00-14.00,
shift siang pukul 14.00-21.00, dan shift
malam pukul 21.00-07.00. Setiap perawat bertugas selama 26 hari dalam satu periode. Untuk shift pagi dan shift siang, setiap perawat minimum bertugas sebanyak 9 kali dalam satu periode jadwal dan maksimum bertugas 11 kali dalam satu periode jadwal.
Indeks yang digunakan dalam studi kasus ini ialah sebagai berikut:
i : indeks untuk perawat, i=1, 2, 3...m, j : indeks untuk hari, j=1, 2, 3...n.
Sedangkan untuk nilai-nilai parameter yang digunakan dalam studi kasus ini disajikan pada tabel berikut:
Tabel 1 Parameter pada studi kasus
Parameter Keterangan Perawat Penanggungjawab Bedah Perawat Pelaksana Bedah Perawat Anestesi
n Banyaknya hari yang digunakan pada penjadwalan satu periode
31 31 31
m Banyaknya perawat yang bertugas di kamar operasi
6 5 5
Ajmax Maksimum perawat yang bertugas untuk shift pagi di hari ke-j.
3 2 2
Ajmin Minimum perawat yang bertugas untuk shift pagi di hari ke-j.
2 1 1
Bjmax Maksimum perawat yang bertugas untuk shift siang di hari ke-j.
2 2 2
Bjmin Minimum perawat yang bertugas untuk shift siang di hari ke-j.
1 1 1
Cj Minimum perawat yang bertugas untuk shift malam di hari ke-j.
1 1 1
Qtot Banyaknya hari kerja yang harus dipenuhi perawat dalam satu periode.
26 26 26
Pmin Minimum banyaknya shift pagi yang harus dipenuhi perawat dalam satu periode
8
Tabel 1 Parameter pada studi kasus (lanjutan)
Parameter Keterangan Perawat Penanggungjawab Bedah Perawat Pelaksana Bedah Perawat Anestesi
Pmax Maksimum banyaknya shift pagi yang harus dipenuhi perawat dalam satu periode
11 11 11
Smin Minimum banyaknya shift siang yang harus dipenuhi perawat dalam satu periode
9 9 9
Smax Maksimum banyaknya shift
siang yang harus dipenuhi perawat dalam satu periode
11 11 11
Perawat Penanggungjawab Bedah Fungsi Objektif Min z= ∑ ∑ Variabel Keputusan { { { { Kendala-kendala
1. Banyaknya perawat yang bertugas di
shift pagi minimum sebanyak dan
maksimum sebanyak setiap hari ke-j.
∑ , j=1,2...31
2. Banyaknya perawat yang bertugas di
shift siang minimum sebanyak dan
maksimum sebanyak setiap hari ke-j.
∑ , j=1,2...31.
3. Banyaknya perawat yang bertugas di
shift malam minimum sebanyak setiap
hari ke-j.
∑ , j=1,2...31.
4. Setiap perawat bertugas sebanyak-banyaknya satu shift dalam satu hari. +
j= .
5. Jika seorang perawat sudah bertugas pada
shift malam, maka perawat tersebut tidak
boleh bertugas pada shift pagi di hari berikutnya.
,
j=1,2...30, i=1,2...6.
Setiap perawat tidak boleh bertugas pada
shift malam selama dua hari
berturut-turut.
,
j=1,2...30, i=1,2...6.
Total hari kerja yang harus dipenuhi setiap perawat dalam satu periode adalah sebanyak Qtot.
∑ 26
untuk i=1,2....6.
8. Setiap perawat bertugas di shift pagi minimum sebanyak dan maksimum sebanyak . ∑ , i=1,2...6.
Setiap perawat bertugas di shift siang minimum sebanyak dan maksimum sebanyak .
∑ , i=1,2...6.
Semua variabel keputusan bernilai 0 atau 1.
, untuk setiap i dan j. , untuk setiap i dan j. , untuk setiap i dan j. , untuk setiap i dan j.
9
Formulasi untuk masalah penjadwalan perawat pelaksana bedah dan perawat anestesi serupa dengan formulasi untuk perawat penanggungjawab bedah, yang membedakannya hanyalah nilai-nilai parameter n, m, Ajmax, Ajmin, Bjmax, Bjmin, Cj.
Penyelesaian masalah penjadwalan perawat kamar operasi pada bulan Maret 2012 di rumah sakit OMNI Internasional Tangerang pada karya ilmiah ini dilakukan dengan bantuan software LINGO 11.0 menggunakan metode branch-and-bound.
Sintaks program dan hasil komputasinya dicantumkan pada Lampiran 2, dan 3. Solusi yang diperoleh adalah solusi optimum dengan nilai fungsi objektif untuk perawat penanggungjawab bedah, pelaksana bedah dan perawat anestesi masing-masing adalah 1622000, 1362000 dan 1362000. Jadwal perawat penanggungjawab bedah bulan Maret 2012 yang dibuat rumah sakit dengan cara konvensional dibandingkan dengan PLI disajikan pada tabel berikut ini.
Tabel 2 Perbandingan hasil penjadwalan perawat penanggungjawab bedah menggunakan metode konvensional dan PLI
Tanggal
Metode Konvensional PLI Kode Perawat Kode Perawat
1 2 3 4 5 6 1 2 3 4 5 6 1 P P P M S S M P S P P S 2 P S P L M S L P M S S P 3 P S P P M S L M S P S P 4 S S L M L P L S S P M P 5 P S P S L M M P S L S P 6 P P P M S L L P M S P L 7 P S P M P L M S S P P L 8 M L P L S S S L M P P S 9 M S P P L S S S L P P M 10 L M P L S S S M P L P S 11 L M L L S P P L P S M S 12 P L P P M S P P M S S L 13 P L P S M P S M L S P P 14 P S P S L M M S P P L S 15 P L P S L M S S P M L P 16 P S P M S L P S P S L M 17 P S P M S S P S S M P L 18 L M L L S P P P L S S M 19 P M P L P S P P M S S L 20 M S P S P S P S S L M P 21 M S P S P S S M P P L S 22 L P P S L M P S P M P S 23 L P L P S M P P L L S M 24 P S P M S L P S M P L S 25 L S P M S P S P L P S M 26 M S P L S S L P P S M S 27 M P P L S S P L S M S P 28 L S P P P S
M L S S P P
10
Tabel 2 Perbandingan hasil penjadwalan perawat penanggungjawab bedah menggunakan metode konvensional dan PLI (lanjutan)
Tanggal
Metode Konvensional PLI Kode Perawat Kode Perawat
1 2 3 4 5 6 1 2 3 4 5 6
29 P L P S M S S M P L P S
30 P M P S P P S L S P M P
31 P M P S P P M P P S S P Keterangan: P = Pagi, S = Siang, M = Malam, L = Libur.
Perbandingan banyaknya shift untuk perawat penanggungjawab bedah menggunakan
metode konvensional dengan metode PLI diberikan pada Tabel 3 dan 4.
Tabel 3 Jumlah setiap shift untuk perawat penanggungjawab bedah mengunakan metode konvensional
Metode Konvensional
Perawat Shift Total Pagi Siang Malam
1 17 1 6 24 2 5 15 6 26 3 27 - 1 28 4 5 10 7 22 5 7 13 5 25 6 7 15 5 27
Tabel 4 Jumlah setiap shift untuk perawat penanggungjawab bedah mengunakan PLI
PLI
Perawat Shift Total Pagi Siang Malam
1 11 9 6 26 2 11 10 5 26 3 10 10 6 26 4 11 11 4 26 5 11 10 5 26 6 11 10 5 26 Dari Tabel 3 dan 4 dapat dilihat bahwa
banyaknya shift yang diterima oleh setiap perawat menggunakan metode konvensional tidak sama jika dibandingkan dengan metode PLI yang menghasilkan banyaknya
shift yang diterima oleh setiap perawatnya
adalah sama. Untuk kendala yang dilanggar pada penjadwalan perawat penanggungjawab bedah menggunakan metode konvensional disajikan pada tabel berikut.
Tabel 5 Kendala yang dilanggar oleh perawat penanggungjawab bedah pada penjadwalan konvensional
Kendala Pelanggaran Persentase Perawat Penanggungjawab Bedah
1 hari ke 4, 8, 10, 11, 18, 26, 30, dan 31 25.80 % 2 hari ke 17, 20, 21, dan 26 12.90 % 3 hari ke 4, dan 28 6.45 % 5 perawat ke 5 16.67 % 6 perawat ke 1, 2, 4, 5, dan 6 83.33 % 7 perawat ke 1, 2, 3, 4, 5, dan 6 100% 8 perawat ke 1, 2, 3, 4, 5, dan 6 100% 9 perawat ke 1, 2, 3, 5, dan 6 83.33 %
11
Banyaknya shift yang diterima oleh perawat pelaksana bedah dan perawat anesetsi menggunakan metode konvensional tidak sama jika dibandingkan dengan PLI yang menghasilkan banyaknya shift yang diterima oleh setiap perawatnya adalah sama (lihat Lampiran 4 dan 5). Perbandingan shift untuk perawat pelaksana bedah menggunakan metode konvensional dengan PLI diberikan pada tabel berikut.
Tabel 6 Jumlah setiap shift untuk perawat pelaksana bedah mengunakan metode konvensional
Metode Konvensional
Perawat Shift Total Pagi Siang Malam
1 4 11 8 26
2 7 10 6 26
3 15 8 4 26
4 8 6 8 26
5 11 9 2 26
Tabel 7 Jumlah setiap shift untuk perawat pelaksana bedah mengunakan PLI
PLI
Perawat Shift Total Pagi Siang Malam
1 9 11 6 26
2 9 11 6 26
3 9 11 6 26
4 9 10 7 26
5 9 11 6 26
Perbandingan shift untuk perawat pelaksana bedah menggunakan metode konvensional dengan PLI diberikan pada tabel berikut. Tabel 8 Jumlah setiap shift untuk perawat
anestesi mengunakan metode konvensional
Metode Konvensional
Perawat Shift Total Pagi Siang Malam
1 7 6 8 21
2 19 7 2 28
3 3 9 8 20
4 11 3 5 19
5 7 9 8 24
Tabel 9 Jumlah setiap shift untuk perawat anestesi mengunakan PLI
PLI
Perawat Shift Total Pagi Siang Malam
1 9 11 6 26
2 9 11 6 26
3 9 11 6 26
4 9 10 7 26
5 9 11 6 26
Untuk kendala yang dilanggar pada penjadwalan perawat pelaksana bedah dan perawat anestesi menggunakan metode konvensional disajikan pada tabel berikut.
Tabel 10 Kendala yang dilanggar oleh perawat pelaksana bedah dan perawat anestesi pada penjadwalan konvensional
Kendala Pelanggaran
Perawat Pelaksana Bedah Persentase Perawat Anestesi Persentase 1 hari ke 5, 7, 13, 23, 26, dan 31 19.35 % - - 2 hari ke 3, 5, 7, 13, 26, dan 29 19.35 % - - 3 hari ke 20, 25, 30, dan 31 12.90 % - - 5 - 0% perawat ke 5 20%
6 perawat ke 1, 2, 3, 4, dan 5 100% perawat ke 1, 2, 3, 4, dan 5
12
Tabel 10 Kendala yang dilanggar oleh perawat pelaksana bedah dan perawat anestesi pada penjadwalan konvensional (lanjutan)
Kendala Pelanggaran
Perawat Pelaksana Bedah Persentase Perawat Anestesi Persentase 7 perawat ke 1, 2, 3, 4, dan 5 100% perawat ke 1, 2, 3, 4,
dan 5
100% 8 perawat ke 1, 2, 3, dan 4 80% perawat ke 1, 2, 3, dan 5 80% 9 perawat ke 3, dan 4 40% perawat ke 1, 2, dan 4 60%
V SIMPULAN DAN SARAN
5. 1 SimpulanDalam karya ilmiah ini telah diperlihatkan masalah penjadwalan perawat kamar operasi rumah sakit OMNI Internasional Tangerang. Masalah ini dipandang sebagai masalah PLI dengan fungsi objektif meminimumkan biaya yang dikeluarkan oleh rumah sakit.
Dengan menggunakan PLI, maka diperoleh penjadwalan perawat yang lebih baik dibandingkan dengan jadwal yang dibuat secara manual. Jadwal yang dihasilkan dengan PLI dapat memenuhi seluruh kendala. Selain itu menggunakan PLI lebih fleksibel, di mana pengguna dapat
dengan mudah menambahkan data maupun kendala-kendala baru yang diperlukan.
5. 2 Saran
Penggunaan model penjadwalan PLI, dapat menjadi alternatif bagi manajemen rumah sakit dalam menentukan jadwal perawatnya. Penelitian ini masih dapat dilanjutkan dengan melakukan penelitian ataupun pengambilan data pada rumah sakit yang berbeda. Selain itu dapat pula membangun model penjadwalan perawat kamar operasi menggunakan metode yang berbeda.
DAFTAR PUSTAKA
Garfinkel R S, Nemhauser G L. 1972.
Integer Programming. New York: John
Wiley & Sons.
Nash S G, Sofer A. 1996. Linear and
Nonlinear Programming. New York:
McGraw-Hill.
Taha H A. 1975. Integer Programming:
Theory, Applications, and Computations.
Academic Press, New York.
Taha H A. 1996. Pengantar Riset Operasi. Wirajaya D, penerjemah. Jakarta:
Binarupa Aksara. Terjemahan dari:
Operations Research.
Winston W L. 2004. Operations Research
Applications and Algorithms 4th ed.
Duxbury, New York.
Trilling L, Guinet A, dan Maghy D L. 2006.
Nurse Scheduling Using Integer Linear Programming and Constraint Programming [internet]. [diunduh 2011
Maret 31]. Tersedia pada :
http://hal.inria.fr/docs/00/17/30/72/PDF/ Trilling
14
Lampiran 1
Sintaks Program LINGO 11.0 untuk Menyelesaikan Masalah Pemrograman Linear dengan Metode Branch-and-Bound beserta Hasil yang Diperoleh.
1) Mencari solusi relaksasi-PL dari Subproblem 1 (masalah 6) Maksimumkan z = 5 x1 + 4 x2
terhadap x1 + x2 5
10x1 + 6 x2
x1,x2 0 dan integer
Sintaks program pada Lingo 11.0: max=5*x1+4*x2; x1+x2<=5; 10*x1+6*x2<=45; x1>=0;
x2>=0;
Hasil yang diperoleh:
Global optimal solution found.
Objective value: 23.75000 Infeasibilities: 0.000000 Total solver iterations: 2 Variable Value Reduced Cost
X1 3.750000 0.000000 X2 1.250000 0.000000
Row Slack or Surplus DualPrice 1 23.75000 1.000000 2 0.000000 2.500000 3 0.000000 0.2500000 4 3.750000 0.000000 5 1.250000 0.000000
Karena solusi yang diperoleh bukan solusi integer , maka dipilih pencabangan atas x1, sehingga
diperoleh dua subproblem baru, yakni:
Subproblem 2: Subproblem 1 ditambah kendala (x1 .
Subproblem 3: Subproblem 1 ditambah kendala (x1
2) Mencari solusi LP dari Subproblem 2 Maksimumkan z = 5x1 + 4x2 terhadap x1 + x2 5 10 x1 + 6x2 45 x1 3 x1,x2 0 dan integer
Sintaks program pada Lingo 11.0 :
max=5*x1+4*x2; x1+x2<=5; 10*x1+6*x2<=45; x1>=0; x2>=0; x1<=3; Hasil yang diperoleh:
Global optimal solution found at iteration: 3 Objective value: 23.00000
Variable Value Reduced Cost X1 3.000000 0.000000 X2 2.000000 0.000000
15
Row Slack or Surplus Dual Price 1 23.00000 1.000000 2 0.000000 4.000000 3 3.000000 0.000000 4 3.000000 0.000000 5 2.000000 0.000000 6 0.000000 1.000000
Dapat dilihat bahwa solusi otimum subproblem ini semuanya berupa integer maka tidak perlu dilakukan pencabangan di Subproblem 2. Solusi dari Subproblem 2 menjadi batas bawah bagi nilai optimum PLI.
3) Mencari solusi LP dari Subproblem 3 Maksimumkan z = 5x1 + 4x2 terhadap x1 + x2 5 10 x1 + 6x2 45 x1 4 x1,x2 0 dan integer
Sintaks program pada Lingo 11.0 :
max=5*x1+4*x2; x1+x2<=5; 10*x1+6*x2<=45; x1>=0; x2>=0; x1>=4; Hasil yang diperole:
Global optimal solution found at iteration: 5 Objective value: 23.33333
Variable Value Reduced Cost X1 4.000000 0.000000 X2 0.8333333 0.000000
Row Slack or Surplus Dual Price 1 23.33333 1.000000 2 0.1666667 0.000000 3 0.000000 0.6666667 4 4.000000 0.000000 5 0.8333333 0.000000 6 0.000000 -1.666667
Karena solusi yang diperoleh bukan solusi integer , maka dipilih pencabangan atas x2, sehingga
diperoleh dua subproblem baru, yakni:
Subproblem 4: Subproblem 3 ditambah kendala ( ). Subproblem 5: Subproblem 3 ditambah kendala ( 4) Mencari solusi LP dari subproblem 4
Maksimumkan z = 5x1 + 4x2 terhadap x1 + x2 5 10 x1 + 6x2 45 x1 4 x2 0 x1,x2 0 dan integer
Sintaks program pada Lingo 11.0 :
16 x1+x2<=5; 10*x1+6*x2<=45; x1>=0; x2>=0; x1>=4; x2<=0; Hasil yang diperoleh:
Global optimal solution found at iteration: 3 Objective value: 22.50000
Variable Value Reduced Cost X1 4.500000 0.000000 X2 0.000000 0.000000
Row Slack or Surplus Dual Price 1 22.50000 1.000000 2 0.500000 0.000000 3 0.000000 0.500000 4 4.500000 0.000000 5 0.000000 0.000000 6 0.500000 0.000000 7 0.000000 1.000000
Karena variabelnya bukan solusi integer, maka seharusnya dibuat subproblem baru. Akan tetapi nilai z maksimum yang dihasilkan lebih kecil dari batas bawah, maka tidak perlu dibuat subproblem baru.
5) Mencari solusi LP dari subproblem 5 Maksimumkan z = 5x1 + 4x2 terhadap x1 + x2 5 10 x1 + 6x2 45 x1 4 x2 1 x1,x2 0 dan integer
Sintaks program pada Lingo 8.0 : max=5*x1+4*x2; x1+x2<=5; 10*x1+6*x2<=45; x1>=0; x2>=0; x1>=4; x2>=1; Hasil yang diperoleh:
17
Lampiran 2
Sintaks dan Hasil Komputasi Program LINGO 11.0 untuk Menyelesaikan Masalah Penjadwalan Perawat Penanggungjawab Bedah.
model :
title : punya vianey ;
sets : SHIFT/P,S,M,L/; DAY/1..31/; PERAWAT/1..6/; LINK1(PERAWAT,DAY):P,S,M,L; endsets data: Ajmax=3; Ajmin=2; Bjmax=2; Bjmin=1; Cj=1; Qtot=26; Pmin=9; Pmax=11; Smin=9; Smax=11; enddata !Fungsi Objektif;
MIN=@SUM(DAY(j):@SUM(PERAWAT(i):((100000*P(i,j))+(100000*S(i,j))+( 120000*M(i,j)))));
!Kendala 1 : Jumlah perawat yang harus tersedia untuk setiap shift di hari ke-j;
@FOR(DAY(j):@SUM(PERAWAT(i):P(i,j))<=Ajmax);
@FOR(DAY(j):@SUM(PERAWAT(i):P(i,j))>=Ajmin);
@FOR(DAY(j):@SUM(PERAWAT(i):S(i,j))<=Bjmax);
@FOR(DAY(j):@SUM(PERAWAT(i):S(i,j))>=Bjmin);
@FOR(DAY(j):@SUM(PERAWAT(i):M(i,j))>=Cj);
!Kendala 2 : Setiap perawat bertugas sebanyak-banyaknya satu shift dalam satu hari;
@FOR(LINK1(i,j):P(i,j)+S(i,j)+M(i,j)+L(i,j)=1);
!Kendala 3 : Jika seorang perawat sudah bertugas pada shift malam, maka perawat tersebut tidak boleh bertugas pada shift pagi di hari berikutnya ;
@FOR(LINK1(i,j)|j#LE#30:M(i,j)+P(i,j+1)<=1);
!Kendala 4 : setiap perawat tidak boleh bertugas pada shift malam selama 2 hari berturut-turut;
@FOR(LINK1(i,j)|j#LE#30:M(i,j)+M(i,j+1)<=1);
!Kendala 5 : Total hari kerja yang harus dipenuhi oleh setiap perawat adalah 26 hari dalam satu periode;
@FOR(PERAWAT(i):@SUM(DAY(j):P(i,j)+S(i,j)+M(i,j))= Qtot);
!Kendala 6 : Untuk shift pagi, setiap perawat minimum telah melaksanakan Pmin kali dari total hari kerja ;
18
!Kendala 7 : Untuk shift pagi, setiap perawat maksimum telah melaksanakan sebanyak Pmax kali dari total hari kerja ;
@FOR(PERAWAT(i):@SUM(DAY(j):P(i,j))<=Pmax);
!Kendala 8 : Untuk setiap shift siang, setiap perawat minimum telah melaksanakan sebanyak Smin kali dari total hari kerja ; @FOR(PERAWAT(i):@SUM(DAY(j):S(i,j))>=Smin);
!Kendala 9 : Untuk setiap shift siang, setiap perawat maksimum telah melaksanakan sebanyak Smax kali dari total hari kerja ; @FOR(PERAWAT(i):@SUM(DAY(j):S(i,j))<=Smax);
!Kendala 10 : Semua variabel keputusan bernilai nol atau satu ; @FOR(LINK1(i,j):@BIN(P(i,j)));
@FOR(LINK1(i,j):@BIN(S(i,j)));
@FOR(LINK1(i,j):@BIN(M(i,j)));
END
Hasil yang diperoleh adalah sebagai berikut :
(Tidak semua hasil ditampilkan, hanya untuk variabel bernilai 1 saja yang ditampilkan) Global optimal solution found.
Objective value: 0.1622000E+08 Objective bound: 0.1622000E+08 Infeasibilities: 0.000000 Extended solver steps: 0 Total solver iterations: 1898
Model Title: : punya vianey
Variable Value Reduced Cost AJMAX 3.000000 0.000000 AJMIN 2.000000 0.000000 BJMAX 2.000000 0.000000 BJMIN 1.000000 0.000000 CJ 1.000000 0.000000 QTOT 26.00000 0.000000 PMIN 9.000000 0.000000 PMAX 11.00000 0.000000 SMIN 9.000000 0.000000 SMAX 11.00000 0.000000 P( 1, 11) 1.000000 100000.0 P( 1, 12) 1.000000 100000.0 P( 1, 16) 1.000000 100000.0 P( 1, 17) 1.000000 100000.0 P( 1, 18) 1.000000 100000.0 P( 1, 19) 1.000000 100000.0 P( 1, 20) 1.000000 100000.0 P( 1, 22) 1.000000 100000.0 P( 1, 23) 1.000000 100000.0 P( 1, 24) 1.000000 100000.0 P( 1, 27) 1.000000 100000.0 P( 2, 1) 1.000000 100000.0 P( 2, 2) 1.000000 100000.0 P( 2, 5) 1.000000 100000.0 P( 2, 6) 1.000000 100000.0 P( 2, 12) 1.000000 100000.0 P( 2, 18) 1.000000 100000.0
19 P( 2, 19) 1.000000 100000.0 P( 2, 23) 1.000000 100000.0 P( 2, 25) 1.000000 100000.0 P( 2, 26) 1.000000 100000.0 P( 2, 31) 1.000000 100000.0 P( 3, 10) 1.000000 100000.0 P( 3, 11) 1.000000 100000.0 P( 3, 14) 1.000000 100000.0 P( 3, 15) 1.000000 100000.0 P( 3, 16) 1.000000 100000.0 P( 3, 21) 1.000000 100000.0 P( 3, 22) 1.000000 100000.0 P( 3, 26) 1.000000 100000.0 P( 3, 29) 1.000000 100000.0 P( 3, 31) 1.000000 100000.0 P( 4, 1) 1.000000 100000.0 P( 4, 3) 1.000000 100000.0 P( 4, 4) 1.000000 100000.0 P( 4, 7) 1.000000 100000.0 P( 4, 8) 1.000000 100000.0 P( 4, 9) 1.000000 100000.0 P( 4, 14) 1.000000 100000.0 P( 4, 21) 1.000000 100000.0 P( 4, 24) 1.000000 100000.0 P( 4, 25) 1.000000 100000.0 P( 4, 30) 1.000000 100000.0 P( 5, 1) 1.000000 100000.0 P( 5, 6) 1.000000 100000.0 P( 5, 7) 1.000000 100000.0 P( 5, 8) 1.000000 100000.0 P( 5, 9) 1.000000 100000.0 P( 5, 10) 1.000000 100000.0 P( 5, 13) 1.000000 100000.0 P( 5, 17) 1.000000 100000.0 P( 5, 22) 1.000000 100000.0 P( 5, 28) 1.000000 100000.0 P( 5, 29) 1.000000 100000.0 P( 6, 2) 1.000000 100000.0 P( 6, 3) 1.000000 100000.0 P( 6, 4) 1.000000 100000.0 P( 6, 5) 1.000000 100000.0 P( 6, 13) 1.000000 100000.0 P( 6, 15) 1.000000 100000.0 P( 6, 20) 1.000000 100000.0 P( 6, 27) 1.000000 100000.0 P( 6, 28) 1.000000 100000.0 P( 6, 30) 1.000000 100000.0 P( 6, 31) 1.000000 100000.0 S( 1, 8) 1.000000 100000.0 S( 1, 9) 1.000000 100000.0 S( 1, 10) 1.000000 100000.0 S( 1, 13) 1.000000 100000.0 S( 1, 15) 1.000000 100000.0 S( 1, 21) 1.000000 100000.0 S( 1, 25) 1.000000 100000.0 S( 1, 29) 1.000000 100000.0 S( 1, 30) 1.000000 100000.0 S( 2, 4) 1.000000 100000.0 S( 2, 7) 1.000000 100000.0
20 S( 2, 9) 1.000000 100000.0 S( 2, 14) 1.000000 100000.0 S( 2, 15) 1.000000 100000.0 S( 2, 16) 1.000000 100000.0 S( 2, 17) 1.000000 100000.0 S( 2, 20) 1.000000 100000.0 S( 2, 22) 1.000000 100000.0 S( 2, 24) 1.000000 100000.0 S( 3, 1) 1.000000 100000.0 S( 3, 3) 1.000000 100000.0 S( 3, 4) 1.000000 100000.0 S( 3, 5) 1.000000 100000.0 S( 3, 7) 1.000000 100000.0 S( 3, 17) 1.000000 100000.0 S( 3, 20) 1.000000 100000.0 S( 3, 27) 1.000000 100000.0 S( 3, 28) 1.000000 100000.0 S( 3, 30) 1.000000 100000.0 S( 4, 2) 1.000000 100000.0 S( 4, 6) 1.000000 100000.0 S( 4, 11) 1.000000 100000.0 S( 4, 12) 1.000000 100000.0 S( 4, 13) 1.000000 100000.0 S( 4, 16) 1.000000 100000.0 S( 4, 18) 1.000000 100000.0 S( 4, 19) 1.000000 100000.0 S( 4, 26) 1.000000 100000.0 S( 4, 28) 1.000000 100000.0 S( 4, 31) 1.000000 100000.0 S( 5, 2) 1.000000 100000.0 S( 5, 3) 1.000000 100000.0 S( 5, 5) 1.000000 100000.0 S( 5, 12) 1.000000 100000.0 S( 5, 18) 1.000000 100000.0 S( 5, 19) 1.000000 100000.0 S( 5, 23) 1.000000 100000.0 S( 5, 25) 1.000000 100000.0 S( 5, 27) 1.000000 100000.0 S( 5, 31) 1.000000 100000.0 S( 6, 1) 1.000000 100000.0 S( 6, 8) 1.000000 100000.0 S( 6, 10) 1.000000 100000.0 S( 6, 11) 1.000000 100000.0 S( 6, 14) 1.000000 100000.0 S( 6, 21) 1.000000 100000.0 S( 6, 22) 1.000000 100000.0 S( 6, 24) 1.000000 100000.0 S( 6, 26) 1.000000 100000.0 S( 6, 29) 1.000000 100000.0 M( 1, 1) 1.000000 120000.0 M( 1, 5) 1.000000 120000.0 M( 1, 7) 1.000000 120000.0 M( 1, 14) 1.000000 120000.0 M( 1, 28) 1.000000 120000.0 M( 1, 31) 1.000000 120000.0 M( 2, 3) 1.000000 120000.0 M( 2, 10) 1.000000 120000.0 M( 2, 13) 1.000000 120000.0 M( 2, 21) 1.000000 120000.0
21 M( 2, 29) 1.000000 120000.0 M( 3, 2) 1.000000 120000.0 M( 3, 6) 1.000000 120000.0 M( 3, 8) 1.000000 120000.0 M( 3, 12) 1.000000 120000.0 M( 3, 19) 1.000000 120000.0 M( 3, 24) 1.000000 120000.0 M( 4, 15) 1.000000 120000.0 M( 4, 17) 1.000000 120000.0 M( 4, 22) 1.000000 120000.0 M( 4, 27) 1.000000 120000.0 M( 5, 4) 1.000000 120000.0 M( 5, 11) 1.000000 120000.0 M( 5, 20) 1.000000 120000.0 M( 5, 26) 1.000000 120000.0 M( 5, 30) 1.000000 120000.0 M( 6, 9) 1.000000 120000.0 M( 6, 16) 1.000000 120000.0 M( 6, 18) 1.000000 120000.0 M( 6, 23) 1.000000 120000.0 M( 6, 25) 1.000000 120000.0 L( 1, 2) 1.000000 0.000000 L( 1, 3) 1.000000 0.000000 L( 1, 4) 1.000000 0.000000 L( 1, 6) 1.000000 0.000000 L( 1, 26) 1.000000 0.000000 L( 2, 8) 1.000000 0.000000 L( 2, 11) 1.000000 0.000000 L( 2, 27) 1.000000 0.000000 L( 2, 28) 1.000000 0.000000 L( 2, 30) 1.000000 0.000000 L( 3, 9) 1.000000 0.000000 L( 3, 13) 1.000000 0.000000 L( 3, 18) 1.000000 0.000000 L( 3, 23) 1.000000 0.000000 L( 3, 25) 1.000000 0.000000 L( 4, 5) 1.000000 0.000000 L( 4, 10) 1.000000 0.000000 L( 4, 20) 1.000000 0.000000 L( 4, 23) 1.000000 0.000000 L( 4, 29) 1.000000 0.000000 L( 5, 14) 1.000000 0.000000 L( 5, 15) 1.000000 0.000000 L( 5, 16) 1.000000 0.000000 L( 5, 21) 1.000000 0.000000 L( 5, 24) 1.000000 0.000000 L( 6, 6) 1.000000 0.000000 L( 6, 7) 1.000000 0.000000 L( 6, 12) 1.000000 0.000000 L( 6, 17) 1.000000 0.000000 L( 6, 19) 1.000000 0.000000
Row Slack or Surplus Dual PricS 1 0.1622000S+08 -1.000000 2 0.000000 0.000000
. .
22
Lampiran 3
Sintaks dan Hasil Komputasi Program LINGO 11.0 untuk Menyelesaikan Masalah Penjadwalan Perawat Pelaksana Bedah dan Perawat Anestesi.
model :
title : punya vianey ;
sets : SHIFT/P,S,M,L/; DAY/1..31/; PERAWAT/1..5/; LINK1(PERAWAT,DAY):P,S,M,L; endsets data: Ajmax=2; Ajmin=1; Bjmin=1; Bjmax=2; Cj=1; Qtot=26; Pmin=9; Pmax=11; Smin=9; Smax=11; enddata !Fungsi Objektif;
MIN=@SUM(DAY(j):@SUM(PERAWAT(i):((100000*P(i,j))+(100000*S(i,j))+( 120000*M(i,j)))));
23
!Kendala 1 : Jumlah perawat yang harus tersedia untuk setiap shift di hari ke-j;
@FOR(DAY(j):@SUM(PERAWAT(i):P(i,j))>=Ajmin);
@FOR(DAY(j):@SUM(PERAWAT(i):P(i,j))<=Ajmax);
@FOR(DAY(j):@SUM(PERAWAT(i):S(i,j))>=Bjmin);
@FOR(DAY(j):@SUM(PERAWAT(i):S(i,j))<=Bjmax);
@FOR(DAY(j):@SUM(PERAWAT(i):M(i,j))>=Cj);
!Kendala 2 : Setiap perawat bertugas sebanyak-banyaknya satu shift dalam satu hari;
@FOR(LINK1(i,j):P(i,j)+S(i,j)+M(i,j)+L(i,j)=1);
!Kendala 3 : Jika seorang perawat sudah bertugas pada shift malam, maka perawat tersebut tidak boleh bertugas pada shift pagi di hari berikutnya ;
@FOR(LINK1(i,j)|j#LE#30:M(i,j)+P(i,j+1)<=1);
!Kendala 4 : setiap perawat tidak boleh bertugas pada shift malam selama 2 hari berturut-turut;
@FOR(LINK1(i,j)|j#LE#30:M(i,j)+M(i,j+1)<=1);
!Kendala 5 : Total hari kerja yang harus dipenuhi oleh setiap perawat adalah 26 hari dalam satu periode;
@FOR(PERAWAT(i):@SUM(DAY(j): P(i,j)+S(i,j)+M(i,j))= Qtot);
!Kendala 6 : Untuk shift pagi, setiap perawat minimum telah melaksanakan Pmin kali dari total hari kerja ;
@FOR(PERAWAT(i):@SUM(DAY(j):P(i,j))>=9);
!Kendala 7 : Untuk shift pagi, setiap perawat maksimum telah melaksanakan Pmax kali dari total hari kerja ;
@FOR(PERAWAT(i):@SUM(DAY(j):P(i,j))<=11);
!Kendala 8 : Untuk setiap shift siang, setiap perawat minimum telah melaksanakan Smin kali dari total hari kerja ;
@FOR(PERAWAT(i):@SUM(DAY(j):S(i,j))>=9);
!Kendala 9 : Untuk setiap shift siang, setiap perawat maksimum telah melaksanakan Smax kali dari total hari kerja ;
@FOR(PERAWAT(i):@SUM(DAY(j):S(i,j))<=11);
!Kendala 10 : Semua variabel keputusan bernilai nol atau satu ; @FOR(LINK1(i,j):@BIN(P(i,j)));
@FOR(LINK1(i,j):@BIN(S(i,j)));
@FOR(LINK1(i,j):@BIN(M(i,j)));
END
Hasil yang diperoleh adalah sebagai berikut :
(Tidak semua hasil ditampilkan, hanya untuk variabel bernilai 1 saja yang ditampilkan)
Global optimal solution found.
Objective value: 0.1362000E+08 Objective bound: 0.1362000E+08 Infeasibilities: 0.000000 Extended solver steps: 0 Total solver iterations: 1085
24
Variable Value Reduced Cost AJMAX 2.000000 0.000000 AJMIN 1.000000 0.000000 BJMAX 2.000000 0.000000 BJMIN 1.000000 0.000000 CJ 1.000000 0.000000 QTOT 26.00000 0.000000 PMIN 9.000000 0.000000 PMAX 11.00000 0.000000 SMIN 9.000000 0.000000 SMAX 11.00000 0.000000 P( 1, 5) 1.000000 100000.0 P( 1, 10) 1.000000 100000.0 P( 1, 13) 1.000000 100000.0 P( 1, 14) 1.000000 100000.0 P( 1, 17) 1.000000 100000.0 P( 1, 18) 1.000000 100000.0 P( 1, 19) 1.000000 100000.0 P( 1, 20) 1.000000 100000.0 P( 1, 23) 1.000000 100000.0 P( 2, 4) 1.000000 100000.0 P( 2, 6) 1.000000 100000.0 P( 2, 7) 1.000000 100000.0 P( 2, 13) 1.000000 100000.0 P( 2, 16) 1.000000 100000.0 P( 2, 17) 1.000000 100000.0 P( 2, 20) 1.000000 100000.0 P( 2, 24) 1.000000 100000.0 P( 2, 30) 1.000000 100000.0 P( 3, 2) 1.000000 100000.0 P( 3, 3) 1.000000 100000.0 P( 3, 6) 1.000000 100000.0 P( 3, 7) 1.000000 100000.0 P( 3, 9) 1.000000 100000.0 P( 3, 24) 1.000000 100000.0 P( 3, 25) 1.000000 100000.0 P( 3, 26) 1.000000 100000.0 P( 3, 31) 1.000000 100000.0 P( 4, 1) 1.000000 100000.0 P( 4, 8) 1.000000 100000.0 P( 4, 9) 1.000000 100000.0 P( 4, 15) 1.000000 100000.0 P( 4, 16) 1.000000 100000.0 P( 4, 21) 1.000000 100000.0 P( 4, 22) 1.000000 100000.0 P( 4, 26) 1.000000 100000.0 P( 4, 27) 1.000000 100000.0 P( 5, 1) 1.000000 100000.0 P( 5, 3) 1.000000 100000.0 P( 5, 11) 1.000000 100000.0 P( 5, 12) 1.000000 100000.0 P( 5, 14) 1.000000 100000.0 P( 5, 22) 1.000000 100000.0 P( 5, 28) 1.000000 100000.0 P( 5, 29) 1.000000 100000.0 P( 5, 30) 1.000000 100000.0 S( 1, 4) 1.000000 100000.0 S( 1, 6) 1.000000 100000.0 S( 1, 11) 1.000000 100000.0
25 S( 1, 12) 1.000000 100000.0 S( 1, 15) 1.000000 100000.0 S( 1, 16) 1.000000 100000.0 S( 1, 22) 1.000000 100000.0 S( 1, 24) 1.000000 100000.0 S( 1, 25) 1.000000 100000.0 S( 1, 27) 1.000000 100000.0 S( 1, 29) 1.000000 100000.0 S( 2, 1) 1.000000 100000.0 S( 2, 3) 1.000000 100000.0 S( 2, 5) 1.000000 100000.0 S( 2, 9) 1.000000 100000.0 S( 2, 14) 1.000000 100000.0 S( 2, 19) 1.000000 100000.0 S( 2, 23) 1.000000 100000.0 S( 2, 26) 1.000000 100000.0 S( 2, 28) 1.000000 100000.0 S( 2, 29) 1.000000 100000.0 S( 2, 31) 1.000000 100000.0 S( 3, 1) 1.000000 100000.0 S( 3, 8) 1.000000 100000.0 S( 3, 11) 1.000000 100000.0 S( 3, 13) 1.000000 100000.0 S( 3, 17) 1.000000 100000.0 S( 3, 20) 1.000000 100000.0 S( 3, 21) 1.000000 100000.0 S( 3, 22) 1.000000 100000.0 S( 3, 23) 1.000000 100000.0 S( 3, 27) 1.000000 100000.0 S( 3, 30) 1.000000 100000.0 S( 4, 2) 1.000000 100000.0 S( 4, 3) 1.000000 100000.0 S( 4, 4) 1.000000 100000.0 S( 4, 7) 1.000000 100000.0 S( 4, 10) 1.000000 100000.0 S( 4, 14) 1.000000 100000.0 S( 4, 18) 1.000000 100000.0 S( 4, 19) 1.000000 100000.0 S( 4, 28) 1.000000 100000.0 S( 4, 30) 1.000000 100000.0 S( 5, 2) 1.000000 100000.0 S( 5, 5) 1.000000 100000.0 S( 5, 7) 1.000000 100000.0 S( 5, 8) 1.000000 100000.0 S( 5, 10) 1.000000 100000.0 S( 5, 13) 1.000000 100000.0 S( 5, 16) 1.000000 100000.0 S( 5, 17) 1.000000 100000.0 S( 5, 24) 1.000000 100000.0 S( 5, 26) 1.000000 100000.0 S( 5, 31) 1.000000 100000.0 M( 1, 1) 1.000000 120000.0 M( 1, 3) 1.000000 120000.0 M( 1, 7) 1.000000 120000.0 M( 1, 21) 1.000000 120000.0 M( 1, 26) 1.000000 120000.0 M( 1, 30) 1.000000 120000.0 M( 2, 2) 1.000000 120000.0 M( 2, 8) 1.000000 120000.0