PENERAPAN PEMROGRAMAN INTEGER BINER PADA PENJADWALAN PERAWAT
PENERAPAN PEMROGRAMAN INTEGER BINER
PADA PENJADWALAN PERAWAT
Evelyn Lameria Christine 1 dan Agus Sukmana 2
1
Jurusan Matematika Universitas Katolik Parahyangan Bandung
e-mail: triva3rie@yahoo.com
2
Jurusan Matematika FMIPA Universitas Katolik Parahyangan Bandung
e-mail: asukmana@home.unpar.ac.id
Abstrak. Perawat merupakan salah satu unit pelayanan medis di rumah sakit, sehingga
penjadwalan tugas untuk para perawat menjadi penting. Penjadwalan ini membantu pihak
rumah sakit agar penugasan perawat menjadi efektif dan adil. Penjadwalan perawat sering
dihadapkan dengan beberapa kendala, seperti waktu libur, jumlah perawat, jumlah shift dan
lainnya. Untuk memaksimumkan ketersediaan perawat yang dibatasi oleh kendala-kendala
tersebut, dapat digunakan pemrograman integer biner 0-1, akan tetapi memerlukan jumlah
variabel yang sangat banyak sehingga diperlukan program komputer yaitu MPL (Mathematical
Programming Language) untuk menyelesaikannya. Hasil yang diperoleh telah sesuai dengan
aturan-aturan yang dibuat oleh pihak rumah sakit
Kata kunci: pemrograman integer biner 0-1, metode Branch and Bound, penjadwalan
perawat, MPL (Mathematical Programming Language).
1. Pendahuluan
Perawat merupakan salah satu unit pelayanan medis, dan memegang peranan penting dalam
pelayanan suatu rumah sakit. Oleh karena itu, penting sekali untuk melakukan penjadwalan
tugas untuk para perawat. Penjadwalan ini salah satu langkah yang diambil oleh pihak rumah
sakit untuk melakukan pengaturan waktu demi mencapai pelayanan yang maksimal.
Penjadwalan ini membantu pihak rumah sakit agar penugasan perawat menjadi efektif dan adil.
Pada penjadwalan satuan unit perawat sering dihadapkan dengan beberapa kendala, seperti
waktu libur, jumlah perawat, jumlah shift dan lainnya. Untuk mengatasi kendala-kendala
tersebut, salah satu caranya dengan membuat model penjadwalan yang diselesaikan dengan
bantuan suatu perangkat lunak komputer.
Pembatasas makalah dibatasi sebagai berikut:
1. Pemodelan menggunakan pemrograman integer biner 0-1.
2. Masalah penjadwalan perawat sesuai aturan penjadwalan rawat inap di Rumah Sakit
Harapan Internasional, Bekasi.
3. Solusi optimal model diselesaikan dicari dengan menggunakan bantuan program MPL.
Rumah Sakit Harapan Internasional yang terletak di Jalan Kasuari Raya kav. IA-IB Kota
Jababeka, Cikarang Baru, Bekasi 17550, ini berdiri pada tanggal 30 November 2005. Rumah
sakit ini didirikan untuk memberikan pelayanan kesehatan bagi masyarakat sekitar. Perawat
memegang peranan penting dalam memberikan layanan yang berkualitas. Agar perawat dapat
melayani pasien dengan baik antara lain harus disusun jadwal penugasan yang baik dan
menciptakan rasa keadilan diantara mereka. Penjadwalan perawat yang dibahas pada makalah
ini dikhususkan bagi perawat du bagian rawat inap.
416
Perawat-perawat bagian rawat inap terdiri dari: kepala bagian ruangan, penanggung jawab
shift (perawat senior), dan perawat pelaksana. Mereka bertugas maksimal satu shift tiap hari.
Satu hari terdiri dari 3 shift , dengan aturan pembagian shift sebagai berikut:
shift pagi
: pukul 07.00 - 14.00
shift sore
: pukul 14.00 - 21.00,
shift malam
: pukul 21.00 - 07.00 (hari berikutnya)
Catatan : untuk memudahkan didefinisikan shift buatan yang disebut shift lepas malam. Shift ini
menunjukkan bahwa seorang perawat setelah mendapat shift malam dan hari berikutnya tidak
mendapat shift malam tetapi libur, maka jam kerja pkl 00:00-07:00 hari berikutnya disebut shift
lepas malam.
Bagian Rawat Inap di Rumah Sakit Harapan Internasional terdiri dari: Ruang Perina, Lantai
Dua, dan Lantai Tiga
Sistem penjadwalan mempertimbangkan kebijakan di rumah sakit tersebut, antara lain :
a. Setiap perawat hanya boleh maksimal bekerja satu shift dalam sehari.
b. Dalam satu minggu satu perawat maksimal mendapatkan 2 shift pagi, 2 shift sore , 2 shift
malam.
c. Dalam satu minggu satu perawat mendapatkan libur satu kali dan lepas malam maksimal
satu kali.
d. Setelah seorang perawat mendapatkan shift malam, maka keesokan harinya seorang perawat
tidak diperbolehkan langsung mendapatkan shift pagi, shift sore, atau libur.
e. Setelah seorang perawat mendapatkan shift pagi, shift sore atau libur maka keesokan
harinya seorang perawat tidak diperbolehkan langsung mendapatkan lepas malam.
f. Setelah seorang perawat mendapatkan shift malam satu kali atau dua kali , hari berikutnya
akan mendapatkan lepas malam. Tetapi jika mendapatkan dua kali shift malam, selain
keesokan harinya mendapatkan lepas malam, kemudian hari berikutnya akan mendapatkan
libur.
Istilah lepas malam dibuat oleh Rumah Sakit Harapan Internasional karena waktu kerja shift
malam berlangsung pada dua hari yang berbeda. Waktu kerja lepas malam merupakan
kelanjutan dari shift malam yang menunjukkan seorang perawat masih bekerja sampai
pukul 07.00 keesokan harinya. Contoh lihat tabel 1. dan tabel 2.
Tabel 1. Contoh penjadwalan dengan shift malam satu kali
Hari
Perawat
1
2
3
4
5
6
A
B
pagi
libur
malam
libur
siang
pagi
lepas
malam
siang
pagi
siang
pagi
malam
lepas
malam
Tabel 2. Contoh penjadwalan dengan shift malam dua kali
Hari
Perawat
1
2
3
4
5
6
A
B
pagi
malam
malam
siang
siang
pagi
lepas
malam
malam
7
siang
7
libur
siang
pagi
malam
lepas
malam
libur
g. Dalam satu hari di Ruang Perina minimal dibutuhkan tiga orang, dengan pembagiannya
adalah jumlah perawat yang mendapatkan shift pagi minimal satu orang, shift sore
417
minimal satu orang, shift malam minimal satu orang, lepas malam maksimal satu orang,
dan libur maksimal dua orang.
h. Dalam satu hari di lantai dua dibutuhkan minimal enam orang, dengan pembagiannya
adalah jumlah perawat yang mendapatkan shift pagi dua sampai tiga orang, shift sore dua
sampai tiga orang, dan shift malam dua sampai tiga orang.
i. Dalam satu hari di lantai tiga dibutuhkan minimal sembilan orang, dengan pembagiannya
adalah jumlah perawat yang mendapatkan shift pagi tiga sampai empat orang, shift sore
tiga sampai empat perawat dan shift malam tiga sampai empat orang.
2. Model Penjadwalan
Bentuk umum pemrograman integer biner 0-1 (Wolsey (1998,hlm 3))
Maks cx
(fungsi tujuan)
Ax ≤ b
(kendala)
x ∈ {0,1}
n
atau sering ditulis sebagai berikut :
maks Z = c1 x1 + c 2 x 2 + c3 x3 + ... + c n x n
⎧a11 x1 + a12 x 2 + a13 x3 + ... + a1n x n ≤ b1
⎪a x + a x + a x + ... + a x ≤ b
22 2
23 3
2n n
2
⎪ 21 1
⎪⎪a31 x1 + a32 x 2 + a33 x3 + ... + a3n x n ≤ b3
⎨
⎪M
⎪a j1 x1 + a j 2 x 2 + a j 3 x3 + ... + a jn x n ≤ b j
⎪
⎪⎩ x1 , x 2 , x3 ,..., x n ≥ 0 ∈ {0,1}
dengan :
Z
cn
xn
= nilai yang dioptimumkan
= koefisien fungsi objektif
a jn
= koefisien kendala ke- j dari variabel xi
bj
n
j
= konstanta pada ruas kanan dari kendala ke - j
= variabel yang akan dicari nilainya (variabel keputusan)
= jumlah variabel yang akan dicari
= jumlah persamaan pada kendala
Salah satu metoda untuk mencari solusi model tersebut adalah metoda Branch and Bound.
Penggunaan program komputer sangat membantu bila kita bekerja dengan jumlah variabel yang
sangat banyak. Salah satu contoh program yang dapat digunakan adalah MPL ((Mathematical
Programming Language). Dalam penelitian ini kami menggunakan versi untuk pelajar yang
dapat di download secara cuma-cuma.
Langkah-langkah penggunaan metode Branch and Bound pada Pemrograman Integer Biner 0-1
1. Tuliskan fungsi obyektif dan kendala-kendala serta tambahan kendala x j ≤ 1 dan x j ≥ 0
2.
3.
4.
5.
Tuliskan bentuk standar fungsi tujuan dan kendala – kendala
Selesaikan menggunakan metode simpleks dengan bantuan MPL
Hitung nilai Z
Periksa apakah seluruh variabel optimal bernilai 0 atau 1, jika ya berhenti tetapi jika tidak
lanjutkan langkah 6
418
6. Cari batas untuk nilai Z dan apabila nilai Z bukan bilangan bulat maka nilai Z dibulatkan ke
bawah. Untuk submasalah berikutnya pilih nilai Z yang paling mendekati nilai Z yang
menjadi batas untuk semua masalah.
7. Buat dua submasalah dengan menetapkan satu variabel bernilai 0 pada submasalah pertama
dan menetapkan variabel bernilai 1 untuk submasalah berikutnya.
8. Tetapkan variabel yang diperoleh dari langkah 7 pada submasalah sebelumnya. Lakukan
kembali langkah 1 sampai langkah 7 sampai semua variabel bernilai bilangan 0 atau 1.
Dalam memodelkan penjadwalan perawat rawat inap ini, maka digunakan pemrograman integer
biner 0-1 untuk menyatakan tiap shift yang terdapat pada Rumah Sakit Harapan Internasional.
Pemrograman integer biner 0-1 termasuk dalam pemrograman linear dimana penerjemahan
masalah ke dalam model harus sistematis dan data dari permasalahan serta variabel yang
digunakan pada model harus dibedakan dengan jelas.
Rawat Inap di Rumah Sakit Harapan Internasional ini terdapat 3 bagian
(A). Ruang Perina
Ruang Perina adalah salah satu ruangan di Rumah Sakit Harapan Internasional yang dirancang
khusus untuk bayi, disana ada 6 orang perawat yang bekerja.
Langkah – langkah pemodelan untuk jadwal perawat ruang perina
Langkah 1. Definisikan variabel – variabel
i = perawat
j = hari
⎧1, jika perawat ke - i dijadwalkan pada shift pagi hari ke - j
⎩0, yang lainnya
⎧1, jika perawat ke - i dijadwalkan pada shift sore hari ke - j
Shift sore
: sij = ⎨
⎩0, yang lainnya
⎧1, jika perawat ke - i dijadwalkan pada shift malam hari ke - j
Shift malam
: mij = ⎨
⎩0, yang lainnya
⎧1, jika perawat ke - i dijadwalkan lepas malam hari ke - j
Lepas malam : lmij = ⎨
⎩0, yang lainnya
⎧1, jika perawat ke - i dijadwalkan libur hari ke - j
Libur
: lij = ⎨
⎩0, yang lainnya
: pij = ⎨
Shift pagi
Apabila perawat ke- i dijadwalkan mendapatkan shift pagi/sore/malam/lepas malam/libur pada
hari ke- j akan bernilai 1 jika benar, sedangkan jika salah akan bernilai 0.
Langkah 2. Definisikan kendala – kendala
a. Aturan harian :
1) pij + s ij + mij + lmij + l ij = 1
i = 1,2,...,6
j = 1,2,...,7
menyatakan bahwa setiap perawat hanya boleh bekerja satu shift dalam sehari.
6
2)
∑p
i =1
6
3)
∑s
i =1
ij
ij
≥1
, j = 1,2,...,7
≥1
, j = 1,2,...,7
419
6
4)
∑m
i =1
≥1
ij
, j = 1,2,...,7
persamaan 2) – 4) menyatakan jumlah perawat perina yang mendapatkan shift pagi
minimal satu orang, demikian pula untuk shift sore dan shift malam.
6
5)
∑ lm
i =1
ij
≤1
, j = 1,2,...,7
menyatakan jumlah perawat perina yang mendapatkan lepas malam pada tiap harinya
maksimal 1 orang.
6
6)
∑l
i =1
≤2
ij
, j = 1,2,...,7
menyatakan jumlah perawat perina yang mendapatkan libur pada tiap harinya
maksimal 2 orang.
b. Aturan per minggu :
7
1)
∑p
≤2
, i = 1,2,...,6
≤2
, i = 1,2,...,6
≤2
, i = 1,2,...,6
ij
j =1
7
2)
∑s
ij
j =1
7
3)
∑m
ij
j =1
menyatakan jumlah shift pagi yang didapat oleh setiap perawat perina dalam
seminggu maksimal 2 kali, demikian pula untuk shift sore dan shift malam.
7
4)
∑ lm
j =1
ij
≤1
, i = 1,2,...,6
menyatakan jumlah lepas malam yang didapat oleh setiap perawat perina dalam
seminggu maksimal 1 kali.
7
5)
∑l
j =1
ij
=1
, i = 1,2,...,6
menyatakan jumlah libur yang didapat oleh setiap perawat perina dalam seminggu
adalah 1 kali.
c. Aturan untuk shift –shift yang diperbolehkan berurutan :
mi , j − lmi , j +1 = 0, untuk i = 1,...,6 j = 1,...,7
menyatakan bahwa setelah mendapatkan shift malam maka keesokan harinya akan
mendapatkan lepas malam.
Langkah 3. Definisikan fungsi tujuan
6
Maksimumkan
7
Z = ∑∑ p ij + sij + mij + lmij + l ij
i =1 j =1
Contoh hasil penjadwalan perawat perina
Di ruang perina terdapat enam orang perawat, yang dijadwalkan kedalam shift pagi, shift sore,
dan shift malam pada setiap harinya. Tetapi terdapat aturan-aturan yang telah ditetapkan dan
untuk mempermudah mengartikan penyelesaian dengan menggunakan MPL, maka dalam
menjalankan programnya setiap perawat diinisialisasi dengan huruf, contohnya: perawat
pertama diinisialisasi dengan huruf A, perawat kedua dengan huruf B, dan seterusnya.
Selanjutnya diselesaikan menggunakan MPL dan diperoleh hasil seperti pada tabel 3.
420
Tabel 3. Hasil penjadwalan perawat perina selama tujuh hari
Hari
Perawat
1
2
3
4
5
6
A
B
C
D
E
F
pagi
libur
malam
libur
siang
pagi
7
siang
pagi
siang
pagi
lepas
malam
siang
pagi
malam
pagi
siang
malam
libur
siang
malam
libur
siang
pagi
malam
lepas
malam
libur
lepas
malam
pagi
lepas
malam
pagi
lepas
malam
malam
siang
pagi
siang
libur
pagi
pagi
malam
lepas
malam
siang
siang
Dapat dilihat dari tabel 3., kolom menunjukkan hari kerja dan baris menunjukkan perawat yang
bekerja. Pasangan antara baris dengan kolom disebut sel, dalam kasus ini tiap sel menyatakan
shift kerja perawat pada tiap harinya. Contoh : perawat A pada hari senin mendapatkan shift
pagi (pukul 07.00 – pukul 14.00), hari selasa perawat A mendapatkan shift libur, hari rabu
mendapatkan shift malam (pukul 21.00 – pukul 07.00), hari kamis mendapatkan lepas malam
(lanjutan dari shift malam), dan seterusnya . Di ruang perina ini menggunakan aturan shift
malam sekali, sehingga keesokan harinya langsung mendapatkan lepas malam.
(B). Lantai Dua
Lantai dua adalah bagian dari pelayanan rawat inap yang dikhususkan untuk perawatan inap
anak-anak dan ibu yang melahirkan. Perawat yang bekerja sembilan orang. Penjadwalan
perawat di lantai dua memiliki aturan bahwa di setiap shift terdapat penanggungjawab shiftnya
(perawat senior), sehingga perawat di lantai dua dibagi menjadi empat kelompok, yaitu :
i. Kelompok k = kelompok I (untuk perawat pertama dan kedua)
ii. Kelompok n = kelompok II (untuk perawat ketiga dan keempat)
iii. Kelompok r = kelompok III (untuk perawat kelima dan keenam)
iv. Kelompok t = kelompok IV (untuk perawat ketujuh, kedelapan, kesembilan)
Langkah 1. Dilakukan cara yang sama dengan sebelumnya tetapi didefinisikan alam kelompok.
Langkah 2. Definisikan kendala – kendala
a. Aturan harian :
Untuk kelompok k = kelompok I
1)
p k j + s k j + mk j + lmk j + l k j = 1
j = 1,...,7
2)
p n j + s n j + mn j + lmn j + l n j = 1
j = 1,...,7
3)
p r j + s r j + mr j + lmr j + l r j = 1
j = 1,...,7
4)
pt j + st j + mt j + lmt j + lt j = 1
j = 1,...,7
5)
pk j + pn j + pr j + pt j = 1,
6) sk j + sn j + sr j + st j = 1,
7) mk j + mn j + mr j + mt j = 1,
j = 1,....,7
j = 1,....,7
j = 1,....,7
8) lmk j + lmn j + lmr j + lmt j ≤ 1,
9) lk j + ln j + lr j + lt j ≤ 1,
j = 1,....,7
j = 1,....,7
421
b. Aturan per minggu :
Keterangan aturan–aturan penjadwalan perminggu sama seperti keterangan perawat
perina tetapi perbedaannya perawat di lantai dua dibagi menjadi empat kelompok.
c. Aturan untuk shift –shift yang tidak diperbolehkan berurutan :
Aturan untuk kelompok I :
j = 1,...,7
1) mk , j + p k , j +1 ≤ 1,
2) mk , j + s k , j +1 ≤ 1,
j = 1,...,7
3) mk , j + lk , j +1 ≤ 1,
j = 1,...,7
pk , j + lmk , j +1 ≤ 1,
j = 1,...,7
5) sk , j + lmk , j +1 ≤ 1,
j = 1,...,7
6) lk , j + lmk , j +1 ≤ 1,
j = 1,...,7
7) lmk , j + pk , j +1 ≤ 1,
j = 1,...,7
8) lmk , j + s k , j +1 ≤ 1,
j = 1,...,7
4)
9) lm k , j + m k , j +1 ≤ 1,
j = 1,...,7
Begitu pula untuk kelompok 2,3 dan 4.
Langkah 3. Definisikan fungsi tujuan
Maksimumkan
7
p k j + s k j + mk j + lmk j + l k j + pn j + s n j + mn j + lmn j + l n j
j =1
+ p r j + s r j + mr j + lmr j + l r j + pt j + st j + mt j + lmt j + lt j
Z =∑
Contoh hasil penjadwalan perawat lantai dua
Untuk mempermudah mengartikan penyelesaian dengan MPL, maka dalam menjalankan
program setiap kelompok diinisialisasi dengan huruf, contoh : kelompok I diinisialisasi dengan
AB, kelompok II diinisialisasi dengan CD, dan seterusnya. Hasil disajikan pada tabel 4.
Tabel 4. Hasil penjadwalan perawat lantai dua selama tujuh hari
Hari
Perawat
1
2
3
4
5
6
7
libur
pagi
siang
pagi
siang
malam
malam
A
libur
pagi
siang
pagi
siang
malam
malam
B
C
D
E
F
G
H
I
pagi
malam
malam
pagi
malam
malam
siang
siang
malam
siang
siang
lepas
malam
lepas
malam
lepas
malam
malam
malam
pagi
pagi
libur
lepas
malam
lepas
malam
malam
malam
siang
libur
libur
422
libur
siang
pagi
libur
siang
pagi
malam
malam
pagi
lm
lm
pagi
libur
libur
siang
siang
pagi
pagi
siang
siang
pagi
pagi
siang
Keterangan baris dan kolom sama seperti ruang perina. Seperti telah dijelaskan sebelumnya
bahwa akan ada perawat yang mempunyai shift yang sama. Sebagai contoh: kelompok I itu
perawat pertama dan kedua (A dan B), maka perawat A dan B mendapatkan shift yang sama,
kelompok II itu perawat C dan D, maka perawat C dan D mendapatkan shift yang sama, begitu
pula dengan kelompok III dan IV. Dari tabel 4. dapat dilihat bahwa komposisi shift pada tiap
harinya memenuhi aturan yang menetapkan tiap shiftnya harus terdapat dua sampai tiga perawat
yang bekerja. Agar aturan komposisi ini terpenuhi maka di lantai dua ini ada perawat yang
mendapatkan aturan shift malam dua kali dan satu kali
(C). Lantai Tiga
Lantai tiga adalah bagian dari pelayanan rawat inap yang dikhususkan untuk perawatan inap
orang dewasa dan kamar isolasi. Perawat yang bekerja ada 13 orang. Penjadwalan perawat di
lantai tiga ini juga memiliki aturan bahwa di setiap shift terdapat penanggungjawab shiftnya
(perawat senior), sehingga perawat di lantai tiga dibagi menjadi empat kelompok, yaitu:
i.Kelompok x = kelompok I (untuk perawat pertama, kedua, dan ketiga)
ii.Kelompok y = kelompok II (untuk perawat keempat, kelima, dan keenam)
iii.Kelompok u = kelompok III (untuk perawat ketujuh, kedelapan, dan kesembilan)
iv.Kelompok v = kelompok IV (untuk perawat ke-10, 11, 12, dan 13)
Tabel 5. Hasil penjadwalan perawat lantai tiga selama tujuh hari
Hari
Perawat
1
2
3
4
5
6
libur
pagi
siang
pagi
siang
malam
A
libur
pagi
siang
pagi
siang
malam
B
libur
pagi
siang
pagi
siang
malam
C
siang
malam
malam
lepas
libur
siang
D
E
siang
malam
malam
F
siang
malam
malam
G
malam
libur
H
malam
libur
I
malam
J
pagi
lepas
malam
lepas
malam
lepas
malam
siang
malam
lepas
malam
lepas
malam
siang
K
pagi
L
M
7
malam
malam
malam
pagi
libur
siang
pagi
libur
siang
pagi
pagi
pagi
siang
siang
pagi
pagi
siang
libur
siang
pagi
pagi
siang
pagi
malam
malam
libur
siang
pagi
malam
malam
pagi
siang
pagi
malam
malam
pagi
siang
pagi
malam
malam
lepas
malam
lepas
malam
lepas
malam
lepas
malam
libur
libur
libur
Keterangan baris dan kolom sama seperti ruang perina . Telah dijelaskan sebelumnya akan
terdapat kelompok yang mempunyai shift sama, sebagai contoh : kelompok I yaitu perawat A,B
dan C mempunyai shift yang sama, begtiu pula untuk kelompok II,III, dan IV. Dari tabel 5.
dapat dilihat bahwa komposisi shift pada tiap harinya memenuhi aturan yang menetapkan tiap
shiftnya harus terdapat tiga sampai empat perawat yang bekerja. Agar aturan komposisi ini
terpenuhi maka di lantai dua ini ada perawat yang mendapatkan aturan shift malam dua kali dan
satu kali.
423
4. Kesimpulan
Berdasarkan pengolahan data dan analisis yang telah dilakukan maka dapat disimpulkan
beberapa hal, yaitu :
1. Masalah pemrograman integer biner 0-1 dapat diselesaikan menggunakan metode Branch
and Bound dan MPL dalam membantu mempercepat proses pengerjaannya.
2. Masalah penjadwalan perawat rawat inap di Rumah Sakit Harapan Internasional Bekasi
dapat diselesaikan menggunakan pemrograman integer biner 0-1. Dimulai dengan
pemodelan kemudian mencari solusi optimal dengan bantuan MPL sehingga diperoleh hasil
yang memenuhi tujuan dan seluruh kendala yang dimiliki oleh pihak rumah sakit.
5. Daftar Pustaka
[1]. Hillier , F. S. & Lieberman,G. J.(2005), Introduction to Operations Research, 8 th edition.
McGraw-Hill.
[2]. Jensen, P.A. & Bard, J.F.(2003), Operations Research Models and Methods.John Wiley.
[3]. Taha, H. A. (2003), Operations Research: An Introduction, 7 th ed. Prentice-Hall.
[4]. Taha, H.A. (1996), Riset Operasi, jilid 1, Edisi 5.Binarupa Aksara.
[5]. Wolsey, Laurence A. (1998), Integer Programming. John Wiley.
424
PADA PENJADWALAN PERAWAT
Evelyn Lameria Christine 1 dan Agus Sukmana 2
1
Jurusan Matematika Universitas Katolik Parahyangan Bandung
e-mail: triva3rie@yahoo.com
2
Jurusan Matematika FMIPA Universitas Katolik Parahyangan Bandung
e-mail: asukmana@home.unpar.ac.id
Abstrak. Perawat merupakan salah satu unit pelayanan medis di rumah sakit, sehingga
penjadwalan tugas untuk para perawat menjadi penting. Penjadwalan ini membantu pihak
rumah sakit agar penugasan perawat menjadi efektif dan adil. Penjadwalan perawat sering
dihadapkan dengan beberapa kendala, seperti waktu libur, jumlah perawat, jumlah shift dan
lainnya. Untuk memaksimumkan ketersediaan perawat yang dibatasi oleh kendala-kendala
tersebut, dapat digunakan pemrograman integer biner 0-1, akan tetapi memerlukan jumlah
variabel yang sangat banyak sehingga diperlukan program komputer yaitu MPL (Mathematical
Programming Language) untuk menyelesaikannya. Hasil yang diperoleh telah sesuai dengan
aturan-aturan yang dibuat oleh pihak rumah sakit
Kata kunci: pemrograman integer biner 0-1, metode Branch and Bound, penjadwalan
perawat, MPL (Mathematical Programming Language).
1. Pendahuluan
Perawat merupakan salah satu unit pelayanan medis, dan memegang peranan penting dalam
pelayanan suatu rumah sakit. Oleh karena itu, penting sekali untuk melakukan penjadwalan
tugas untuk para perawat. Penjadwalan ini salah satu langkah yang diambil oleh pihak rumah
sakit untuk melakukan pengaturan waktu demi mencapai pelayanan yang maksimal.
Penjadwalan ini membantu pihak rumah sakit agar penugasan perawat menjadi efektif dan adil.
Pada penjadwalan satuan unit perawat sering dihadapkan dengan beberapa kendala, seperti
waktu libur, jumlah perawat, jumlah shift dan lainnya. Untuk mengatasi kendala-kendala
tersebut, salah satu caranya dengan membuat model penjadwalan yang diselesaikan dengan
bantuan suatu perangkat lunak komputer.
Pembatasas makalah dibatasi sebagai berikut:
1. Pemodelan menggunakan pemrograman integer biner 0-1.
2. Masalah penjadwalan perawat sesuai aturan penjadwalan rawat inap di Rumah Sakit
Harapan Internasional, Bekasi.
3. Solusi optimal model diselesaikan dicari dengan menggunakan bantuan program MPL.
Rumah Sakit Harapan Internasional yang terletak di Jalan Kasuari Raya kav. IA-IB Kota
Jababeka, Cikarang Baru, Bekasi 17550, ini berdiri pada tanggal 30 November 2005. Rumah
sakit ini didirikan untuk memberikan pelayanan kesehatan bagi masyarakat sekitar. Perawat
memegang peranan penting dalam memberikan layanan yang berkualitas. Agar perawat dapat
melayani pasien dengan baik antara lain harus disusun jadwal penugasan yang baik dan
menciptakan rasa keadilan diantara mereka. Penjadwalan perawat yang dibahas pada makalah
ini dikhususkan bagi perawat du bagian rawat inap.
416
Perawat-perawat bagian rawat inap terdiri dari: kepala bagian ruangan, penanggung jawab
shift (perawat senior), dan perawat pelaksana. Mereka bertugas maksimal satu shift tiap hari.
Satu hari terdiri dari 3 shift , dengan aturan pembagian shift sebagai berikut:
shift pagi
: pukul 07.00 - 14.00
shift sore
: pukul 14.00 - 21.00,
shift malam
: pukul 21.00 - 07.00 (hari berikutnya)
Catatan : untuk memudahkan didefinisikan shift buatan yang disebut shift lepas malam. Shift ini
menunjukkan bahwa seorang perawat setelah mendapat shift malam dan hari berikutnya tidak
mendapat shift malam tetapi libur, maka jam kerja pkl 00:00-07:00 hari berikutnya disebut shift
lepas malam.
Bagian Rawat Inap di Rumah Sakit Harapan Internasional terdiri dari: Ruang Perina, Lantai
Dua, dan Lantai Tiga
Sistem penjadwalan mempertimbangkan kebijakan di rumah sakit tersebut, antara lain :
a. Setiap perawat hanya boleh maksimal bekerja satu shift dalam sehari.
b. Dalam satu minggu satu perawat maksimal mendapatkan 2 shift pagi, 2 shift sore , 2 shift
malam.
c. Dalam satu minggu satu perawat mendapatkan libur satu kali dan lepas malam maksimal
satu kali.
d. Setelah seorang perawat mendapatkan shift malam, maka keesokan harinya seorang perawat
tidak diperbolehkan langsung mendapatkan shift pagi, shift sore, atau libur.
e. Setelah seorang perawat mendapatkan shift pagi, shift sore atau libur maka keesokan
harinya seorang perawat tidak diperbolehkan langsung mendapatkan lepas malam.
f. Setelah seorang perawat mendapatkan shift malam satu kali atau dua kali , hari berikutnya
akan mendapatkan lepas malam. Tetapi jika mendapatkan dua kali shift malam, selain
keesokan harinya mendapatkan lepas malam, kemudian hari berikutnya akan mendapatkan
libur.
Istilah lepas malam dibuat oleh Rumah Sakit Harapan Internasional karena waktu kerja shift
malam berlangsung pada dua hari yang berbeda. Waktu kerja lepas malam merupakan
kelanjutan dari shift malam yang menunjukkan seorang perawat masih bekerja sampai
pukul 07.00 keesokan harinya. Contoh lihat tabel 1. dan tabel 2.
Tabel 1. Contoh penjadwalan dengan shift malam satu kali
Hari
Perawat
1
2
3
4
5
6
A
B
pagi
libur
malam
libur
siang
pagi
lepas
malam
siang
pagi
siang
pagi
malam
lepas
malam
Tabel 2. Contoh penjadwalan dengan shift malam dua kali
Hari
Perawat
1
2
3
4
5
6
A
B
pagi
malam
malam
siang
siang
pagi
lepas
malam
malam
7
siang
7
libur
siang
pagi
malam
lepas
malam
libur
g. Dalam satu hari di Ruang Perina minimal dibutuhkan tiga orang, dengan pembagiannya
adalah jumlah perawat yang mendapatkan shift pagi minimal satu orang, shift sore
417
minimal satu orang, shift malam minimal satu orang, lepas malam maksimal satu orang,
dan libur maksimal dua orang.
h. Dalam satu hari di lantai dua dibutuhkan minimal enam orang, dengan pembagiannya
adalah jumlah perawat yang mendapatkan shift pagi dua sampai tiga orang, shift sore dua
sampai tiga orang, dan shift malam dua sampai tiga orang.
i. Dalam satu hari di lantai tiga dibutuhkan minimal sembilan orang, dengan pembagiannya
adalah jumlah perawat yang mendapatkan shift pagi tiga sampai empat orang, shift sore
tiga sampai empat perawat dan shift malam tiga sampai empat orang.
2. Model Penjadwalan
Bentuk umum pemrograman integer biner 0-1 (Wolsey (1998,hlm 3))
Maks cx
(fungsi tujuan)
Ax ≤ b
(kendala)
x ∈ {0,1}
n
atau sering ditulis sebagai berikut :
maks Z = c1 x1 + c 2 x 2 + c3 x3 + ... + c n x n
⎧a11 x1 + a12 x 2 + a13 x3 + ... + a1n x n ≤ b1
⎪a x + a x + a x + ... + a x ≤ b
22 2
23 3
2n n
2
⎪ 21 1
⎪⎪a31 x1 + a32 x 2 + a33 x3 + ... + a3n x n ≤ b3
⎨
⎪M
⎪a j1 x1 + a j 2 x 2 + a j 3 x3 + ... + a jn x n ≤ b j
⎪
⎪⎩ x1 , x 2 , x3 ,..., x n ≥ 0 ∈ {0,1}
dengan :
Z
cn
xn
= nilai yang dioptimumkan
= koefisien fungsi objektif
a jn
= koefisien kendala ke- j dari variabel xi
bj
n
j
= konstanta pada ruas kanan dari kendala ke - j
= variabel yang akan dicari nilainya (variabel keputusan)
= jumlah variabel yang akan dicari
= jumlah persamaan pada kendala
Salah satu metoda untuk mencari solusi model tersebut adalah metoda Branch and Bound.
Penggunaan program komputer sangat membantu bila kita bekerja dengan jumlah variabel yang
sangat banyak. Salah satu contoh program yang dapat digunakan adalah MPL ((Mathematical
Programming Language). Dalam penelitian ini kami menggunakan versi untuk pelajar yang
dapat di download secara cuma-cuma.
Langkah-langkah penggunaan metode Branch and Bound pada Pemrograman Integer Biner 0-1
1. Tuliskan fungsi obyektif dan kendala-kendala serta tambahan kendala x j ≤ 1 dan x j ≥ 0
2.
3.
4.
5.
Tuliskan bentuk standar fungsi tujuan dan kendala – kendala
Selesaikan menggunakan metode simpleks dengan bantuan MPL
Hitung nilai Z
Periksa apakah seluruh variabel optimal bernilai 0 atau 1, jika ya berhenti tetapi jika tidak
lanjutkan langkah 6
418
6. Cari batas untuk nilai Z dan apabila nilai Z bukan bilangan bulat maka nilai Z dibulatkan ke
bawah. Untuk submasalah berikutnya pilih nilai Z yang paling mendekati nilai Z yang
menjadi batas untuk semua masalah.
7. Buat dua submasalah dengan menetapkan satu variabel bernilai 0 pada submasalah pertama
dan menetapkan variabel bernilai 1 untuk submasalah berikutnya.
8. Tetapkan variabel yang diperoleh dari langkah 7 pada submasalah sebelumnya. Lakukan
kembali langkah 1 sampai langkah 7 sampai semua variabel bernilai bilangan 0 atau 1.
Dalam memodelkan penjadwalan perawat rawat inap ini, maka digunakan pemrograman integer
biner 0-1 untuk menyatakan tiap shift yang terdapat pada Rumah Sakit Harapan Internasional.
Pemrograman integer biner 0-1 termasuk dalam pemrograman linear dimana penerjemahan
masalah ke dalam model harus sistematis dan data dari permasalahan serta variabel yang
digunakan pada model harus dibedakan dengan jelas.
Rawat Inap di Rumah Sakit Harapan Internasional ini terdapat 3 bagian
(A). Ruang Perina
Ruang Perina adalah salah satu ruangan di Rumah Sakit Harapan Internasional yang dirancang
khusus untuk bayi, disana ada 6 orang perawat yang bekerja.
Langkah – langkah pemodelan untuk jadwal perawat ruang perina
Langkah 1. Definisikan variabel – variabel
i = perawat
j = hari
⎧1, jika perawat ke - i dijadwalkan pada shift pagi hari ke - j
⎩0, yang lainnya
⎧1, jika perawat ke - i dijadwalkan pada shift sore hari ke - j
Shift sore
: sij = ⎨
⎩0, yang lainnya
⎧1, jika perawat ke - i dijadwalkan pada shift malam hari ke - j
Shift malam
: mij = ⎨
⎩0, yang lainnya
⎧1, jika perawat ke - i dijadwalkan lepas malam hari ke - j
Lepas malam : lmij = ⎨
⎩0, yang lainnya
⎧1, jika perawat ke - i dijadwalkan libur hari ke - j
Libur
: lij = ⎨
⎩0, yang lainnya
: pij = ⎨
Shift pagi
Apabila perawat ke- i dijadwalkan mendapatkan shift pagi/sore/malam/lepas malam/libur pada
hari ke- j akan bernilai 1 jika benar, sedangkan jika salah akan bernilai 0.
Langkah 2. Definisikan kendala – kendala
a. Aturan harian :
1) pij + s ij + mij + lmij + l ij = 1
i = 1,2,...,6
j = 1,2,...,7
menyatakan bahwa setiap perawat hanya boleh bekerja satu shift dalam sehari.
6
2)
∑p
i =1
6
3)
∑s
i =1
ij
ij
≥1
, j = 1,2,...,7
≥1
, j = 1,2,...,7
419
6
4)
∑m
i =1
≥1
ij
, j = 1,2,...,7
persamaan 2) – 4) menyatakan jumlah perawat perina yang mendapatkan shift pagi
minimal satu orang, demikian pula untuk shift sore dan shift malam.
6
5)
∑ lm
i =1
ij
≤1
, j = 1,2,...,7
menyatakan jumlah perawat perina yang mendapatkan lepas malam pada tiap harinya
maksimal 1 orang.
6
6)
∑l
i =1
≤2
ij
, j = 1,2,...,7
menyatakan jumlah perawat perina yang mendapatkan libur pada tiap harinya
maksimal 2 orang.
b. Aturan per minggu :
7
1)
∑p
≤2
, i = 1,2,...,6
≤2
, i = 1,2,...,6
≤2
, i = 1,2,...,6
ij
j =1
7
2)
∑s
ij
j =1
7
3)
∑m
ij
j =1
menyatakan jumlah shift pagi yang didapat oleh setiap perawat perina dalam
seminggu maksimal 2 kali, demikian pula untuk shift sore dan shift malam.
7
4)
∑ lm
j =1
ij
≤1
, i = 1,2,...,6
menyatakan jumlah lepas malam yang didapat oleh setiap perawat perina dalam
seminggu maksimal 1 kali.
7
5)
∑l
j =1
ij
=1
, i = 1,2,...,6
menyatakan jumlah libur yang didapat oleh setiap perawat perina dalam seminggu
adalah 1 kali.
c. Aturan untuk shift –shift yang diperbolehkan berurutan :
mi , j − lmi , j +1 = 0, untuk i = 1,...,6 j = 1,...,7
menyatakan bahwa setelah mendapatkan shift malam maka keesokan harinya akan
mendapatkan lepas malam.
Langkah 3. Definisikan fungsi tujuan
6
Maksimumkan
7
Z = ∑∑ p ij + sij + mij + lmij + l ij
i =1 j =1
Contoh hasil penjadwalan perawat perina
Di ruang perina terdapat enam orang perawat, yang dijadwalkan kedalam shift pagi, shift sore,
dan shift malam pada setiap harinya. Tetapi terdapat aturan-aturan yang telah ditetapkan dan
untuk mempermudah mengartikan penyelesaian dengan menggunakan MPL, maka dalam
menjalankan programnya setiap perawat diinisialisasi dengan huruf, contohnya: perawat
pertama diinisialisasi dengan huruf A, perawat kedua dengan huruf B, dan seterusnya.
Selanjutnya diselesaikan menggunakan MPL dan diperoleh hasil seperti pada tabel 3.
420
Tabel 3. Hasil penjadwalan perawat perina selama tujuh hari
Hari
Perawat
1
2
3
4
5
6
A
B
C
D
E
F
pagi
libur
malam
libur
siang
pagi
7
siang
pagi
siang
pagi
lepas
malam
siang
pagi
malam
pagi
siang
malam
libur
siang
malam
libur
siang
pagi
malam
lepas
malam
libur
lepas
malam
pagi
lepas
malam
pagi
lepas
malam
malam
siang
pagi
siang
libur
pagi
pagi
malam
lepas
malam
siang
siang
Dapat dilihat dari tabel 3., kolom menunjukkan hari kerja dan baris menunjukkan perawat yang
bekerja. Pasangan antara baris dengan kolom disebut sel, dalam kasus ini tiap sel menyatakan
shift kerja perawat pada tiap harinya. Contoh : perawat A pada hari senin mendapatkan shift
pagi (pukul 07.00 – pukul 14.00), hari selasa perawat A mendapatkan shift libur, hari rabu
mendapatkan shift malam (pukul 21.00 – pukul 07.00), hari kamis mendapatkan lepas malam
(lanjutan dari shift malam), dan seterusnya . Di ruang perina ini menggunakan aturan shift
malam sekali, sehingga keesokan harinya langsung mendapatkan lepas malam.
(B). Lantai Dua
Lantai dua adalah bagian dari pelayanan rawat inap yang dikhususkan untuk perawatan inap
anak-anak dan ibu yang melahirkan. Perawat yang bekerja sembilan orang. Penjadwalan
perawat di lantai dua memiliki aturan bahwa di setiap shift terdapat penanggungjawab shiftnya
(perawat senior), sehingga perawat di lantai dua dibagi menjadi empat kelompok, yaitu :
i. Kelompok k = kelompok I (untuk perawat pertama dan kedua)
ii. Kelompok n = kelompok II (untuk perawat ketiga dan keempat)
iii. Kelompok r = kelompok III (untuk perawat kelima dan keenam)
iv. Kelompok t = kelompok IV (untuk perawat ketujuh, kedelapan, kesembilan)
Langkah 1. Dilakukan cara yang sama dengan sebelumnya tetapi didefinisikan alam kelompok.
Langkah 2. Definisikan kendala – kendala
a. Aturan harian :
Untuk kelompok k = kelompok I
1)
p k j + s k j + mk j + lmk j + l k j = 1
j = 1,...,7
2)
p n j + s n j + mn j + lmn j + l n j = 1
j = 1,...,7
3)
p r j + s r j + mr j + lmr j + l r j = 1
j = 1,...,7
4)
pt j + st j + mt j + lmt j + lt j = 1
j = 1,...,7
5)
pk j + pn j + pr j + pt j = 1,
6) sk j + sn j + sr j + st j = 1,
7) mk j + mn j + mr j + mt j = 1,
j = 1,....,7
j = 1,....,7
j = 1,....,7
8) lmk j + lmn j + lmr j + lmt j ≤ 1,
9) lk j + ln j + lr j + lt j ≤ 1,
j = 1,....,7
j = 1,....,7
421
b. Aturan per minggu :
Keterangan aturan–aturan penjadwalan perminggu sama seperti keterangan perawat
perina tetapi perbedaannya perawat di lantai dua dibagi menjadi empat kelompok.
c. Aturan untuk shift –shift yang tidak diperbolehkan berurutan :
Aturan untuk kelompok I :
j = 1,...,7
1) mk , j + p k , j +1 ≤ 1,
2) mk , j + s k , j +1 ≤ 1,
j = 1,...,7
3) mk , j + lk , j +1 ≤ 1,
j = 1,...,7
pk , j + lmk , j +1 ≤ 1,
j = 1,...,7
5) sk , j + lmk , j +1 ≤ 1,
j = 1,...,7
6) lk , j + lmk , j +1 ≤ 1,
j = 1,...,7
7) lmk , j + pk , j +1 ≤ 1,
j = 1,...,7
8) lmk , j + s k , j +1 ≤ 1,
j = 1,...,7
4)
9) lm k , j + m k , j +1 ≤ 1,
j = 1,...,7
Begitu pula untuk kelompok 2,3 dan 4.
Langkah 3. Definisikan fungsi tujuan
Maksimumkan
7
p k j + s k j + mk j + lmk j + l k j + pn j + s n j + mn j + lmn j + l n j
j =1
+ p r j + s r j + mr j + lmr j + l r j + pt j + st j + mt j + lmt j + lt j
Z =∑
Contoh hasil penjadwalan perawat lantai dua
Untuk mempermudah mengartikan penyelesaian dengan MPL, maka dalam menjalankan
program setiap kelompok diinisialisasi dengan huruf, contoh : kelompok I diinisialisasi dengan
AB, kelompok II diinisialisasi dengan CD, dan seterusnya. Hasil disajikan pada tabel 4.
Tabel 4. Hasil penjadwalan perawat lantai dua selama tujuh hari
Hari
Perawat
1
2
3
4
5
6
7
libur
pagi
siang
pagi
siang
malam
malam
A
libur
pagi
siang
pagi
siang
malam
malam
B
C
D
E
F
G
H
I
pagi
malam
malam
pagi
malam
malam
siang
siang
malam
siang
siang
lepas
malam
lepas
malam
lepas
malam
malam
malam
pagi
pagi
libur
lepas
malam
lepas
malam
malam
malam
siang
libur
libur
422
libur
siang
pagi
libur
siang
pagi
malam
malam
pagi
lm
lm
pagi
libur
libur
siang
siang
pagi
pagi
siang
siang
pagi
pagi
siang
Keterangan baris dan kolom sama seperti ruang perina. Seperti telah dijelaskan sebelumnya
bahwa akan ada perawat yang mempunyai shift yang sama. Sebagai contoh: kelompok I itu
perawat pertama dan kedua (A dan B), maka perawat A dan B mendapatkan shift yang sama,
kelompok II itu perawat C dan D, maka perawat C dan D mendapatkan shift yang sama, begitu
pula dengan kelompok III dan IV. Dari tabel 4. dapat dilihat bahwa komposisi shift pada tiap
harinya memenuhi aturan yang menetapkan tiap shiftnya harus terdapat dua sampai tiga perawat
yang bekerja. Agar aturan komposisi ini terpenuhi maka di lantai dua ini ada perawat yang
mendapatkan aturan shift malam dua kali dan satu kali
(C). Lantai Tiga
Lantai tiga adalah bagian dari pelayanan rawat inap yang dikhususkan untuk perawatan inap
orang dewasa dan kamar isolasi. Perawat yang bekerja ada 13 orang. Penjadwalan perawat di
lantai tiga ini juga memiliki aturan bahwa di setiap shift terdapat penanggungjawab shiftnya
(perawat senior), sehingga perawat di lantai tiga dibagi menjadi empat kelompok, yaitu:
i.Kelompok x = kelompok I (untuk perawat pertama, kedua, dan ketiga)
ii.Kelompok y = kelompok II (untuk perawat keempat, kelima, dan keenam)
iii.Kelompok u = kelompok III (untuk perawat ketujuh, kedelapan, dan kesembilan)
iv.Kelompok v = kelompok IV (untuk perawat ke-10, 11, 12, dan 13)
Tabel 5. Hasil penjadwalan perawat lantai tiga selama tujuh hari
Hari
Perawat
1
2
3
4
5
6
libur
pagi
siang
pagi
siang
malam
A
libur
pagi
siang
pagi
siang
malam
B
libur
pagi
siang
pagi
siang
malam
C
siang
malam
malam
lepas
libur
siang
D
E
siang
malam
malam
F
siang
malam
malam
G
malam
libur
H
malam
libur
I
malam
J
pagi
lepas
malam
lepas
malam
lepas
malam
siang
malam
lepas
malam
lepas
malam
siang
K
pagi
L
M
7
malam
malam
malam
pagi
libur
siang
pagi
libur
siang
pagi
pagi
pagi
siang
siang
pagi
pagi
siang
libur
siang
pagi
pagi
siang
pagi
malam
malam
libur
siang
pagi
malam
malam
pagi
siang
pagi
malam
malam
pagi
siang
pagi
malam
malam
lepas
malam
lepas
malam
lepas
malam
lepas
malam
libur
libur
libur
Keterangan baris dan kolom sama seperti ruang perina . Telah dijelaskan sebelumnya akan
terdapat kelompok yang mempunyai shift sama, sebagai contoh : kelompok I yaitu perawat A,B
dan C mempunyai shift yang sama, begtiu pula untuk kelompok II,III, dan IV. Dari tabel 5.
dapat dilihat bahwa komposisi shift pada tiap harinya memenuhi aturan yang menetapkan tiap
shiftnya harus terdapat tiga sampai empat perawat yang bekerja. Agar aturan komposisi ini
terpenuhi maka di lantai dua ini ada perawat yang mendapatkan aturan shift malam dua kali dan
satu kali.
423
4. Kesimpulan
Berdasarkan pengolahan data dan analisis yang telah dilakukan maka dapat disimpulkan
beberapa hal, yaitu :
1. Masalah pemrograman integer biner 0-1 dapat diselesaikan menggunakan metode Branch
and Bound dan MPL dalam membantu mempercepat proses pengerjaannya.
2. Masalah penjadwalan perawat rawat inap di Rumah Sakit Harapan Internasional Bekasi
dapat diselesaikan menggunakan pemrograman integer biner 0-1. Dimulai dengan
pemodelan kemudian mencari solusi optimal dengan bantuan MPL sehingga diperoleh hasil
yang memenuhi tujuan dan seluruh kendala yang dimiliki oleh pihak rumah sakit.
5. Daftar Pustaka
[1]. Hillier , F. S. & Lieberman,G. J.(2005), Introduction to Operations Research, 8 th edition.
McGraw-Hill.
[2]. Jensen, P.A. & Bard, J.F.(2003), Operations Research Models and Methods.John Wiley.
[3]. Taha, H. A. (2003), Operations Research: An Introduction, 7 th ed. Prentice-Hall.
[4]. Taha, H.A. (1996), Riset Operasi, jilid 1, Edisi 5.Binarupa Aksara.
[5]. Wolsey, Laurence A. (1998), Integer Programming. John Wiley.
424