Anda di halaman 1dari 359

Riset Operasi

dolom Pendekomn AlgOritm iS


KISET OPEKASiI
dalam Pendekatan Algoritrms
IEM
KISET OPERASI
dalam Pendekatan Algoritnis
tr@

Jong Jek Slang

Penerblt ANDI Yoryakarta


Ri.el OpeE3i ddlam P€ndekqton Alsorithi3 HidLvp akanbetarti
Ol.h: Jong Jek tiang
itha diJa:lani dengar, s1alegi

Hok Cipto @ 2Oi l,2Ol4 pqdd Pcnulrs untuk rnmgoptimalkan isi


Editor r Fl. Siqii Soyqnioro
Seftins : sri Mulqnro
D€soin Cover : Bowo
Koreklor :Amondo/Andons

Hok Cipro dilindunsi undong-undons.


Dilordng mempe6dnyok orou monindohkon sebogion otou selu.uh iti buku ini dolom
behtuk opopun, bdik 5ecoro elekrronis mouPon mekdnis, termotuk memfoto.opv,
merekom otou dengdn sistem penyimPonon lqinnyd, tcnPo izin tedulL dori Penulis,

Penerbir: c.v ANDI oFrsET (Peberbit ANDI)


Beo 38-40, Telp. {0274) 56 I 88 I (Huntins), Fqx. (0274)
ll. 5882I2 Yoqvokorra
55281

Percerdkon: ANDI OFFSET


.ll. Beo 38-40, Telp. {O?74) 56 I 88 I (Hunrins ), Fox. (0 274) 5882I2 Yosvokorto
5528r

Pelpusldkoqr Noriondl: Kololos daldm Terbiton (KDT)

Riset Operdsi doldm Pendekotdn Alsornmk/


lons - Ed. ll . _ Yosyokorro: ANDI,
Jek Sions;

23 22 2t 20 It 18 lz 16 15 14 Ontuk or""ggangLukasihi d"" ncmbcr'lo hidup ,


xvi + 348 hln.r 16 x 23 Cm ",ti
109 A 7 6 5 4 3 2 I Micn,Kcvin6Llva
lsBNr 9Z8 - 979 - 29 - 4354 - 2

L Operorions Reseorch
DDC'21 : 0O3
Risel Opecs doom Pendekoion Algofllrnis Vi

laniutkan clengan contoh soal dan langkahJangkah penyelesaian menggu- glsan, sepefti perrMsalahan pemasangan (matching), pemilihan karya-
naian algoritma terscbut. Selain dad berbagai sumbcr dan hasjl penc- wan. dll
litian. ma-teri dan urutan bab penyajian buku inijuga disusun berdasarkan
llirb 8 membahas tcntang model yang dapat digambarkan dengan suatu
pengalaman' penulis mengajar mata kuliah Riset Opcrasi selama hanpir
l:ri'rgan (network). Banyak masalah yang dapat dinyatakan dengan suatu
20 tahun.
;:r|ingan, namun di buku ini dibahas 3 diantaranya yaitu mencari pohon
BuLu ini tcrdiri dari 10 bab Hrmpir semua materinya ldalah model dan r(r)lang mininum, mencari jalur terpendek, dan penjadwalan proyek.
p€nyelcsaian Riset Opcrasi yang deleministik' sehingga sangat cocok (irrcDa bcberapa permasalahan jaringan berhubungan dengan teod graf,
digunakan bagi mabasiswa yang baru pcrtama kali menrpelajari Riset rrr;rka padabab 8 didahului dengan pembahasan tentang dasar_dasar gral
operasi.
llrb I nrembahas tentang Progam Tak Linier yang menrpakan perluasan
Bab bcrisi latar belakang dan sejarah ditcmukannya Riset Opel?si_ serta
1 ,|rI'r l'rogram Linicr. Ada 2 pendekatan yang dapat dipakai untuk menye-
pengenalan tentang cara pc buatan model matemalika lL siikln Program tak Linier yaitu secara analitik (Kalkulus) dan secam

rr.rrtill Dalam buku ini digunakan pendekatan pertama. Pembaca yang


Bab 2 dan 3 membahas tentang Progran Linier, suatu model yang
menomt AndcNon (2005) adalah model paling sering digunakan dalam
,rlrrn mempelajari bab ini haruslah tcrlebih dahulu paham tentang
,lrllrrcnsial parsial.
dunia nyata. Bab 2 berisi pengcnalzm dan pembuatan model Program
Linier, serta penyelesaiannya dengan metode grafik. Bab 3 merupakan l|rb l0 merupakan modcl lain dari Riset Operasi yang dikenal dengan
kelanjutan dari bab 2, yaitu algoritma penyelesaian Program Linier rrrrr l)rogram Geometrik. Dalam bab ini dibahas tentang model Program
dengan metorlc Simplcks. Pembaca yang ingin rnenpelajari bab3 I irollrclrik. seita tcknik penyelesaiannya. Juga dibahas bcbcrapa contoh
scbiiknya membaca dan menguasai birb2 tctlebih dahulu' ,rt'lrIrsi dari bidang tcknik kimia maupun tcknik mesin.
Bab 4 mcmbahas tentang Program bilangan Bulat' yang mcrupakan kasus lrirr l)cngalaman penulis mengajar, unluk mata kuliah 3 SKS hanya
klusus Program Linier, yaitu jika model mcnsyaralkan penyclesaiannya rlrrl)u rrcncakup 3-5 bab saja. Untuk mahasiswa yang baru pertana kali
harLrs bilanlan bulat. Ada 2 algoritma penyelesaian yang dibahas,
yaitu rrr.rrr|claiari Riset Operasi, sebailoya dipilih l-5 bab dari 8 bab pertamn
metode Cabang dan Batas, serta metode Bidang Potong Pada bab'tjuga l,rlr ill i. Tiap bab dapat dibedkan secarx indcpcnden, kecuali bab 3 yang
dibahas tcntang Program 0_1, yang merupakan kasus khusus Program l, rrrr bisa dipclajari setelah bab 2, dan bab 6 yang harus dibahirs setelah
Bilangan Bulat. ., lesri nrcmbahas bab 5. Bagi mahasiswa (tcrutamajurusan lcknik mesin/
Lrrrrrrr) ylng sudah mendalami Kalkulus bisa ncmpelajari bab 9 dan 10.
Bab 5 dan 6 membahas tentang masalah Transporti:rsi yang scbenamya
merupakan kasus khusus Program Linier' Meskipun prinsip penyclcsaian-
\r';r rcrrlsa Dlanlaatnya, ada baiknya mahasiswa diberi tugas mencari
I r.u\ (luni.r nyata yang bisa dimodelkan dan diselesaikan dcngan model
nya:sama dengan penycl€saian model Program Linier, namun detil
i.rrr11 rlipchjrri. Penulis pcmah mencobanya dan berhasil baik sewaktu
penyelesaiannyi agak berbeda. Pada bab 5 dibahas pcngertian dan contoh
masalah Transportasi serta penyelesaiannya, sedangkan bab 6 membahns
r! Drl)irhrs tcntrng Program Linier, jalur terpendek serta bcbcrapa model
tentang masal;h Transshipment yang merupakan kasus khusus masalah
Tmnspodasi. I'r1,1 \etir't brb. dibclikan contoh soal dan laogkah penyclcsaian berda-
Bab 7 membahas tentang permasalahan Penugasan' yang sebcnarnyit mc-
.rl.rr rlrorilnn yang dibuhas. Pembahasan langkah penyelesaian soal
I'tLlr,rr (libull |ioci rlan divriikan dcngan bahasa sedcrhana sehingga di-
rupakan kasus khusus masalah Transportasi. Algoritrna yang digunlkan
lrr.rt,l,irr pcrrblcri (hpirt dcngrn nlrdah nrcrnahaminya. Tcrdapat lebih
untuk mcnyelesaikan dikcnal dengan nanra atgoritrna I lungnriln lllnyak
pcrmasalahan dunia nyata yang bisa dinyalak.rD dcngrrn rtllrsrr[rh I)crnr-
,1.!r lrr(l s(':rl hcse r l1!nyclcslliannyr ynng dllpr( dip kai untuk
,,r'ri.rh,rrr rrirl.
vii Riset Opqos doom Pendekolon A,lgodlmis

Di akhir bab diberikan latihan soal, yang bertujuan untuk melatih kembali
pemahaman yang telah dibahas pada bab tersebut. Buku ini memuat lebih Prakata Edisi 2
dari 200 soal latihan dengan berbagai tingkat kesulitan. Dari pengalaman
penulis, keinampuan menyelesaikan 70 % soal latihan dengan benar
sudah dapal diLalegonlan mengua\al malen.

Banyak pihak yang telah bedasa selama penulis mengajar dan mcnulis
buku ini. Untuk itu dalam kesempatan ini penulis ingin bertetima kasih
kepada :

L Bpk Drs B Susanta dan Ibu Dra Retno Wikan TA yang pertama
kali memperkenalkan penulis pada Riset Opcrasi sewaktLr penulis
kuliah di FMIPA UGM, sehingga penulis menjadi te arik dan \.r.hh melihat sambutan pembaca atas edisi pertama buku ini, penulis
mendalaminya. Jasa kedua dosen ini tidak pemah penulis [r'r;rsa pcrlu melaklrkan revisi pada edisi 2. Dengan berbagai pefiim-
lupakan. Bagian awal dalam buku ini pcnulis ambil dari matcri lr rli r. dua bab temkhi pada cdisi I (berisi Program Tidak Linier
kuliah beliau berdua. ,l( rfirr metode Kalkulus dan Program Geometrik) dihilangkan. Salah

2. Keluarga penulis yang tclah mcmbcdkan motivasi, dulTngan


., rrr
t)eiimbangannya adalah karena buku ini berisi dasar Riset Operasi-
k,rhrll h.rb yang riihilangkan dirasa terlalu teoritis dan seharusnya masuk
moril dan sernangat sehingga penulis mampu menyelesaikannya,
,l,,l,rIlr ltiset Operasi tingkat lanjut. Lagipula rMteri yang tercakup di
setelah bebempa tahun tertunda.
,.|'r I pcnulis rasa lebih dali cukup untuk dibrLhas selama satu semester
3. SemtLa pihak yang tidak dnpat penulis sebutkan sntu persatu, ..,1'rr11:ri dasar pemahaman tentang konsep Risct operasi.
yang tclah mcmbcrikan bantuan baik moril, sharing, sumber
literatur maupun banluan lain hingga buku ini dapat diselesaikan.
l'rIr t(lisi kedua buku ini ditambahkan filc animasi nnrk mempcrmudah
1*rrurhrrnran langkahJangkah penyelesaian soal-soal Animasi
dibuat
Tuhan yang membalas semuanya
irr rr1'grrnakan Power Poi . Bcrdasar pengalaman pcnulis mengajar Risel
Akhir kata, penulis menyadari banyaknya kekurangan dalam buku ini. rrttrrsi. animasi yang digunakan selama mengajar sangal membantu
Untuk itu kitik dan saran yang membangun sangal penulis harapkan l" rrrrhlrnln materi, dan banyak digunakan nahasiswa untuk me-/cti4t
t, r'l)irli Dr leri yang sudah diajarkan. File animasi dibual berdasatkan
lrr,1 l,rrI hngkah pcnyelesaian cottoh soal yang terdapat di buku Contoh
,,dl vlng dipilih untuk animasi adalah contoh yang mcmbahas teknik
,1,,.,r l)cnyclcs.lian masalah. l)engan menguasai teknik dasamya' maka
Cloria in Excelsis Deo
,,r1 rr:rl lain yang scjenis diharapkan dapat dipahami dengan lebih
ii siang@,yahoo.com r,rrrlrr1l lrile irnirnasi lcrscbut dapat juga digunakan doscn unluk mem-
;"'r"'rlrrlr I'cry i.rp.rr.l:rn n(rryrmfcian mrteri
lt.rr'r Irirhnsrswrt yang kLrliah cli jurusan yang mendalami komputasi dan
tUrr,t'r'rn n. btll) lcnl ng pcnyclcsaian Prcgram Linier dengan Melodc
',|rt,lrks (hprt (librhls dcDsrrn orcndal m Akan tclapi bagi mahasiswa
yrr)N lcb'h nrcrr(lt'lt'lni rntrruicnrcn. disrrlnkan orcnrbahas bab
'lr tInr\iIr
r, ,,r,,,,r1 trlrrrrnll (i,,rnk lct)cr)dck. irrltrr krris)
Rlset Op€lc8i dolom Pendekoton Alqo{itnis

Agar lebih nyata dan dipahami penerapannya, mahasiswa sebaiknya DAFTAR ISI
diberi tugas yal1g berhubungan langsung d€ngan penerapan metode yang
dibicarakan. Misalnya, waktu membahas tentang program linier, maha-
siswa diminta mencari data di kasus nyata dan membuat model pro$am
linier yang sesuai. Jika modelnya kompleks dan melibatkan banyak
variabel, penyelesaian dapat dilakukan dengan bantuan perangkat lunak.
Sewaktu membahas tentang jalur terpendek, mahasiswa dapat diminra
mmgunduh peta dan mencari jalur terpendek artara 2 kottdaerah. Hasil-
nya kemudian dibandingkan dengan keluaran perangkat hurak pencari
Jalur seperti, Google Map, Garmin, Igo Anigo, d1l
Penulis sangat berterima kasih pada penerbit Andi atas kerjasamanya
yarg sangat baik selama ini. Tanpa bantuan peneftit Andi, buL:u ini tidak
akan mencapai tujuannya. Penulis juga sangat ben)'ukur pada Tuhan
r.ntuk kehadiran Kevin dan Elva yang selalu memberi sukacita dan
semangat pada p€nulis unhrk menyelesaikan buku ini.

Akllir kata, penulis


menghampkan kitik dan masukan dari pembaca
untuk menyempumakan buku ini.

Gloria in Excelsis Deo


j _j siang@yahoo.com
ni Risel Opsosr ddcm Pendel@lon Agodirnis nt

BAB 4 PROGRAM BTLANGAN BULAT ........................................101


4.1 Progam Bilangan Bulat Sebagi Perluasan kogram Linier .101
4.2 Metode Cabang Batas ..........................................................105
' 4.2.1Perrcabaigdn(banching)........................................ ..105
4.2.2 Pembatasan (Bounding)......-.....................................-....105
4.2.3 Pemilihan Titik dan Variabel yang DicadangkaD ........106
4.3 Metode Bidang Potong ................................. .-.....................124
4.4 Program 0-l
............................ ..... .
. .. ........ .. .. .. 135
4.4.1 Metode Enwnerasi knplisit ............-............................135
4.4.2 Aplikasi Program 0 1
........................................ ... 150
soAr,-soAl, LATIITAN .................. ..............169

BAB 5 TRA.NSPORTASI ..................................................................173


5.1 Pendahuluan ........................-........173
5.2 Penyelesaian Fisibel Awal ...................................................1'76
Laut
5.2.1 Metode Barat . ... .. ...176
5.2.2 Metode Biaya Terendah ........................................... 180
5.2.3 Metode Vogel .....................182
5.3 Pengecekan Optirnalitas ............................... ......................186
5.4 Merevisi Tabel ................-....... ... 188
5.5 Kasus-kasus Masalal Transportasi ......................................194
5.5.1 Masalah Transportasi Tid4kSeimbang ......................194
5.5.2 Ada Jalar Rusak ...-............ 198
5.5.3 AltematifPenyelesaian .............................. .................202
5.5.4Penalti Terh.dap Permintaan yang Tidak Terpenuhi 202
5.5.5Soal Memaksimumkan ...............................................205
soAr,-soAl LATIHAN ..........,....... ..............211

BAB 6 TRANSSHIPMENT .....217


6.1 Transshipment Sebagai Perluasan Masalah TrarNportasi .217
6.2 Penyelesaian Masalah Transshipment .................................219
6.3 SoalTidak Seimbang ...........-.-..-.*-.-.-................ .. .. 227
6.4 Kasus-kasus Khusus ................ .229
soAr-soAl LATIHAN ..................,..............230

BAB 7 PENUGASAN ........,........................233


7.1 Permasalahan Penugasan ....................................................233
7.2 Penyelesaian Masalah Penugasan ........................................235
7.2.1 Menentukan Penyelesaian Fisibel Aw41.................... .235
Bab 1

PENDAHULUAN

1.1 Sejarah Riset Operasi

Masalah Riset Operasi (Operation Research) pertama kali muncul di Inggris selama Perang
Dunia II. Inggris mula-mula tertarik menggunakan metode kuantitatif dalam pemakaian radar
selama perng. Mereka menamakan pendekatan itu sebagai Operation Research karena mereka
menggunakan ilmuwan (scientist) untuk meneliti (research) masalah-masalah operasional selama
perang. Pendekatan tersebut sangat berhasil dalam memecahkan masalah-masalah operasi
konvoi, operasi anti kapal selam, strategi pengeboman, dan operasi pertambangan. Aplikasi ini
menyebabkan Riset Operasi didefinisikan sebagai : " Seni memenangkan perang tanpa
berperang " (Whitehouse (1976)).

Setelah perang usai, praktisi-praktisi Riset Operasi berkonsentrasi untuk memformalkan


ilmu/pendekatan yang mereka kembangkan selama perang dan mencari aplikasinya dalam sektor
industri. Beberapa pendekatan sudah dimulai dalam bidang industri oleh Frederick W Taylor,
yang menimbulkan ilmu tersendiri dalam bidang Teknik Industri. Taylor menyadari bahwa
sebelum revolusi industri, kebanyakan bisnis adalah bisnis kecil-kecilan yang dikelola oleh satu
orang saja. Akan tetapi dengan otomatisasi, manajemen dan spesialisasi dapat dikembangkan.
Otomatisasi tersebut menyebabkan timbulnya permasalahan baru dalam manajemen. Akibatnya,
muncul disiplin ilmu baru dalam Teknik Industri seperti Riset Pasar, Keuangan, dll. Masing-
masing disiplin ilmu mulai mencoba menyelesaikan permasalahannya sendiri-sendiri tanpa
memperhatikan organisasi secara keseluruhan.

Manajer harus menentukan hal terbaik bagi keseluruhan perusahaan, bukan pada masing-masing
bagian. Manajer harus menemukan penyelesaian optimum secara keseluruhan. Penyelesaian
optimum masing-masing bagian biasanya mudah dicari, tetapi optimum secara keseluruhan sulit
ditemukan. Riset Operasi mencoba membantu manajer dalam menyelesaikan masalah yang
2 Riset Operasi : Suatu Tinjauan Algoritmis

menyangkut interaksi diantara obyek-obyek dengan mencari keputusan terbaik pada seluruh
sistem.

Riset operasi berhubungan dengan prinsip optimisasi, yaitu bagaimana cara menggunakan
sumber daya (waktu, tenaga, biaya, dll) untuk mengoptimalkan hasil. Mengoptimalkan hasil
dapat berarti meminimumkan sesuatu yang merugikan/dikeluarkan atau memaksimumkan
sesuatu yang menguntungkan/didapatkan.

Beberapa contoh kasus sehari-hari yang berhubungan dengan riset operasi antara lain :

Ada banyak jalur darat yang bisa dilalui dari Jakarta ke Jogja. Jalur mana yang paling
optimal dari segi jarak ? dari segi biaya ? dari segi waktu ?

Pembuatan kaleng untuk menyimpan makanan. Berapa ukuran kaleng (diameter dan
tinggi) agar dengan volume tertentu akan membutuhkan bahan yang seminimum
mungkin ?

Pengaturan lampu traffic light. Berapa lama lampu hijau/merah di tiap-tiap sisi harus
menyala agar panjang antrian kendaraan se minimum mungkin ?

Operations Research Society of America mendefinisikan Riset Operasi sebagai berikut :

" Riset Operasi berhubungan dengan keputusan ilmiah tentang bagaimana mengoptimalkan
rancangan dan operasi mesin maupun SDM, yang biasanya terjadi pada keadaan dimana sumber
daya dan alokasinya terbatas "

Beberapa masalah dalam industri sangat mirip dengan masalah-masalah yang ditemukan dalam
bidang militer selama Perang Dunia II. Riset Operasi hanyalah menambahkan matematika yang
sebelumnya tidak ada dalam pemecahan masalah. Metode Riset Operasi lebih banyak diterima
sejak ditemukannya komputer pada tahun 1950-an.

1.2 Aplikasi Riset Operasi

Beberapa masalah industri yang dapat dianalisa oleh Riset Operasi antara lain :

Keuangan

Analisa Cash Flow, Investasi Portofolio

Perkreditan
PENDAHULUAN 3

Prosedur klaim dan complaint

Eksplorasi dan Purchasing

Aturan pembelian bahan dengan harga yang bervariasi

Penentuan kuantitas dan waktu pembelian

Strategi ekplorasi dan eksploitasi bahan mentah

Kebijakan penggantian barang

Distribusi

Lokasi dan ukuran gudang, pusat distribusi dan pengecer

Kebijakan distribusi

Logistik dan sistem distribusi

Perencanaan

Jumlah, ukuran dan lokasi pabrik, rumah sakit, dll beserta dengan interaksi di dalamnya.

Industri

Perencanaan produksi

Stabilisasi produksi dan karyawan, training, dll

Manajemen Konstruksi

Kebijakan maintenance, Jumlah karyawan maintenance

Pengaturan proyek, alokasi sumber daya

Marketing

Pemilihan produk, timing, perlakuan terhadap kompetitor

Penentuan jumlah salesman

Strategi periklanan

Personel

Pemilihan personel, gabungan antara umur dan ketrampilan


4 Riset Operasi : Suatu Tinjauan Algoritmis

Kebijakan penerimaan karyawan, pembagian kerja

Aplikasi Riset Operasi juga mempunyai dampak yang kuat dalam studi masalah-masalah sosial
dan pekerjaan umum. Orang menjadi lebih sadar tentang bagaimana Riset Operasi dapat
membantu aktivitas pengambilan keputusan sehari-hari. Aplikasi-aplikasi dalam kesehatan
masyarakat, perencanaan kota dan sistem pendidikan kini sudah ditemukan.

1.3 Model

Riset Oprasi mencari keputusan/hasil terbaik pada penyelesaian suatu masalah yang memenuhi
beberapa kondisi yang ditentukan. Dalam prosesnya Riset Oprasi berhubungan dengan Model.
Model adalah interaksi/hubungan antara variabel-variabel yang mempengaruhi sistemnya.

Sistem yg sebenarnya

Asumsi/
Penyederhanaan Model
Sistem

Gambar 1.1

Kompleksnya sistem yang dipelajari akan membuat penyesaian masalah menjadi sulit. Untuk itu
perlu untuk mereduksi "dimensi" sistem sehingga model (tiruan sistem) dapat dibuat seperti
gambar 1.1. Biasanya, diantara sekian banyak faktor/variabel yang mempengaruhi sistem, hanya
beberapa diantaranya saja yang penting dan memberi efek yang nyata terhadap sistem. Untuk
menyederhanakan sistem, faktor-faktor yang kurang penting dibuang/diasumsikan.

Perhatikan beberapa contoh model adalah sebagai berikut :

a. Model dalam fisika

Misalkan suatu benda dengan massa m ditarik dengan gaya sebesar F, dan menghasilkan
percepatan sebesar a. Hubungan antara ketiganya dapat dituliskan sebagai F = m.a
PENDAHULUAN 5

Model F = m.a tersebut menyatakan penyederhanaan sistem yang sebenarnya. Sistem


sebenarnya tidaklah sesederhana hubungan tersebut. Beberapa faktor yang tidak berpengaruh
besar antara lain : gesekan yang timbul pada benda akibat tarikan, gaya gravitasi, dll sudah
dihilangkan (diasumsikan tidak ada). Model semacam ini seringkali kita kenal dengan
“rumus”

b. Model dalam Basis Data

Data Flow dalam proses pembuatan Sistem Informasi suatu perusahaan merupakan model
dari sistem yang sebenarnya. Data Flow hanya memuat variabel-variabel penting yang
mempengaruhi saja. Data-data seperti lokasi fisik perusahaan, personil yang duduk
didalamnya, perangkat keras yang dipakai dll dihilangkan.

1.4 Model-model Riset Operasi

Rao (1984) membagi model dalam Riset Operasi kedalam 3 bagian utama :
1. Teknik Pemrograman Matematika
Teknik Pemrograman Matematika berguna untuk mencari harga optimum fungsi
beberapa variabel yang memenuhi sekumpulan kendala. Beberapa model diantaranya
melibatkan penggunaan kalkulus dan metode numerik dalam penyelesaiannya.
Model-model yang termasuk dalam teknik ini antara lain : Metode Kalkulus,
Pemrograman Tak Linier, Pemrograman Geometri, Pemrograman Kuadratis,
Pemrograman Linier, Pemrograman Dinamis, Pemrograman Bilangan Bulat, Metode
Jaringan : CPM dan PERT, Teori Permainan, Pemrograman Terpisah, Pemrograman
Sasaran Ganda, dll

2. Teknik Pemrosesan Stokastik


Teknik Pemrosesan Stokastik dapat dipakai untuk menganalisa masalah yang
dinyatakan oleh variabel random yang diketahui distribusi probabilitasnya. Model
yang termasuk dalam teknik ini antara lain : Proses Markov, Teori Antrian, Simulasi,
Teori Reliabilitas, dll.

3. Metode Statistik
6 Riset Operasi : Suatu Tinjauan Algoritmis

Metode Statistik berguna untuk menganalisa data eksperimental dan membuat model
empiris untuk mendapatkan representasi yang paling akurat tentang suatu sistem
fisis. Karena pemakaiannya yang sangat luas, metode Statistik kemudian menjadi
cabang ilmu tersendiri.
Model yang termasuk dalam bagian ini adalah : Analisa Regresi, Analisa Cluster,
Pengenalan Pola (Pattern Recognition), Rancangan Percobaan, Analisa Diskriminan,
dll.

1.5 Pembuatan Model Riset Operasi

Dalam Riset Operasi, pembuatan model melibatkan 3 komponen dasar yang penting :

a. Variabel Keputusan

Yaitu faktor-faktor yang mempengaruhi nilai tujuan


b. Tujuan
Adalah suatu fungsi atau persamaan yang menghubungkan variabel dan membentuk
kesatuan tentang apa yang ingin dicapai. Dalam Riset Operasi, kita akan
mengoptimalkan harga fungsi tujuan. Artinya kita akan mencari nilai - nilai variabel
yang akan meminimumkan / memaksimumkan fungsi tujuan.
c. Kendala
Adalah sekumpulan persamaan atau pertidaksamaan yang membatasi harga suatu
variabel. Harga variabel yang mengoptimumkan fungsi tujuan harus memenuhi
semua kendala yang ditetapkan.

Sebagai contoh perhatikanlah kasus berikut ini :

Sebuah perusahaan mebel akan membuat meja dan kursi. Setiap meja membutuhkan 5 m2 kayu
jati dan 2 m2 kayu pinus, serta membutuhkan waktu pembuatan selama 4 jam. Untuk membuat
sebuah kursi dibutuhkan 2 m2 kayu jati, 3 m2 kayu pinus dan 2 jam kerja.

Dari penjualan sebuah meja didapat keuntungan sebesar Rp 12.000, sedangkan dari sebuah
kursi sebesar Rp 8.000.
PENDAHULUAN 7

Ia ingin membuat sebanyak-banyaknya, tetapi kendalanya adalah keterbatasan bahan baku dan
tenaga kerja. Dalam seminggu, ia hanya mampu mendapatkan 150 m2 kayu jati, 100 m2 kayu
pinus, serta hanya memiliki 80 jam kerja

Masalah : Berapa buah meja dan kursi yang harus ia buat mengingat kendala yang ada, supaya ia
memperoleh keuntungan yang sebanyak-banyaknya ?

Penyelesaian :

Keuntungan ditentukan oleh seberapa banyak meja dan kursi yang dibuat. Oleh karena itu dibuat
variabel keputusan sebagai berikut :

Misalkan x1 = Jumlah meja yang harus dibuat

x2 = Jumlah kursi yang harus dibuat

Tujuan :

Tujuan dari perusahaan tersebut adalah memaksimumkan keuntungan. Keuntungan sebuah meja
adalah Rp 12.000 dan sebuah kursi adalah Rp 8.000. Karena ia membuat x1 meja dan x2 kursi
(x1 dan x2 adalah besaran yang akan dicari), maka total keuntungan yang ia peroleh adalah
sebesar :

f(x1, x2) = 12.000 x1 + 8.000 x2

Fungsi inilah yang akan dioptimalkan (dalam kasus ini dimaksimalkan).

Jika tidak ada kendala yang harus dipenuhi, maka penyelesaian masalah ini menjadi mudah,
yaitu dengan membuat x1 dan x2 sebesar-besarnya. Dengan memperbanyak jumlah meja dan
kursi yang dibuat, maka perusahaan itu akan memperoleh keuntungan yang semakin besar.
Tetapi keadaan itu tidak dapat dicapai mengingat keterbatasan bahan baku (kayu jati dan pinus)
serta tenaga kerja.

Kendala :

Keterbatasan bahan baku dan tenaga kerja dapat dinyatakan dalam tabel di bawah ini :
8 Riset Operasi : Suatu Tinjauan Algoritmis

Sumber Daya Meja Kursi Persediaan

Kayu Jati 5 2 150

Kayu Pinus 2 3 100

Jam Kerja 4 2 80

Dengan membuat x1 buah meja dan x2 buah kursi, maka kendala yang harus dipenuhi adalah :

5 x1 + 2 x2 150
2 x1 + 3 x2 100
4 x1 + 2 x2 80

x1, x2 0

(bisa juga ditambahkan syarat bahwa x1 dan x2 bilangan bulat

Dengan demikian, model yang sesuai untuk kasus perusahaan mebel di atas adalah :

Maksimumkan f (x1, x2) = 12.000 x1 + 8.000 x2

Kendala :

5 x1 + 2 x2 150
2 x1 + 3 x2 100
4 x1 + 2 x2 80

x1, x2 0
PENDAHULUAN 9

LATIHAN SOAL

1. Apakah yang disebut dengan model ? Bagaimana kaitan model dengan Riset Operasi ?

2. Apakah setiap model dalam Riset Operasi dapat diselesaikan ?

3. Apakah perbedaan antara model deterministik dengan model stokastik ?

4. Sebuah perusahaan menjual 2 jenis ember plastik untuk kebutuhan rumah tangga. Pasar yang
potensial bagi ember produksinya tak terbatas.
Tiap ember harus diproses melalui 2 mesin yang berbeda. Data tentang kapasitas mesin,
waktu proses, dan keuntungan per unit tampak pada tabel di bawah ini.
Waktu Proses per
Kapasitas waktu proses
Mesin unit (menit)
yang tersedia (menit)
A B

1 4 2 2000

2 3 5 3000

Keuntungan per unit 20 10


(ribu rupiah)

Buatlah model untuk menentukan campuran produksi yang paling optimal pada kondisi
berikut ini :
a. Untuk data tersebut di atas
b. Keuntungan ember A menjadi 15 ribu per unit
c. Ember A dan B memberikan keuntungan negatif (berarti kerugian) masing-masing
sebesar 10 dan 5 ribu rupiah.
d. Kapasitas mesin pertama naik menjadi 2500 menit.

5. Perusahaan mainan “Monde” mengembangkan 2 jenis permainan yang dijualnya ke toko-


toko. Meskipun permintaan pasar melebihi kemampuan produksinya, perusahaan tetap
membatasi jam kerjanya selama 50 jam per minggunya.
Permainan jenis pertama membutuhkan waktu pembuatan selama 3.5 jam, dan memberikan
keuntungan sebesar 28 (ribu) per unitnya. Permainan jenis kedua membutuhkan waktu
pembuatan selama 4 jam, tetapi memberikan keuntungan 31 (ribu). Buatlah model untuk
10 Riset Operasi : Suatu Tinjauan Algoritmis

menentukan jumlah permainan dari masing-masing jenis harus dibuat setiap minggunya agar
keuntungan yang didapatnya menjadi maksimum ?

6. Sebuah pabrik mainan membuat 2 jenis kapal plastik. Data yang relevan pembuatan kapal
tersebut tampak pada tabel di bawah ini. Tentukan model program optimal bagi pembuatan
produk tersebut !
Proses Produk Waktu yang tersedia

X Y (menit)

Membuat Pola 10 5 80

Mengecat 6 6 66

Menggabungkan 5 6 90

Keuntungan per 1200 1000


unit

7. Pada waktu menyelesaikan perbaikan rumahnya, Bp Siang menemukan 100 m2 plywood


dan 80 m2 tripleks sisa yang bisa ia manfaatkan untuk membuat meja dan rak buku.

Untuk membuat sebuah meja diperlukan 16 m2 plywood dan 8 m2 tripleks, sedangkan


untuk membuat rak buku dibutuhkan 12 m2 plywood dan 16 m2 tripleks. Dengan menjual
hasil pembuatannya tersebut, Bp Siang mampu memperoleh keuntungan sebesar 5 (ribu)
untuk setiap meja dan 4 (ribu) untuk setiap rak buku.

Buatlah model yang optimal bagi Bp Siang dalam memanfaatkan plywood dan tripleks yang
tersisa tersebut
Bab 2

PROGRAM LINIER : PENYELESAIAN GRAFIK

Seperti yang telah dibicarakan di bab 1, penyelesaian masalah Riset Operasi selalu didahului
dengan pembuatan model matematika. Dalam bab ini akan dibicarakan tentang model Program
Linier yang merupakan salah satu model yang paling banyak aplikasinya. Penyelesaian Program
Linier yang dibicarakan pada bab ini adalah dengan metode grafik

2.1 Model Program Linier

Masalah yang dapat diselesaikan dengan model program linier memiliki ciri-ciri sebagai berikut :

1. Semua variabel penyusunnya bernilai tidak negatif

2. Fungsi obyektif dapat dinyatakan sebagai fungsi linier variabel-variabelnya

3. Kendala dapat dinyatakan sebagai suatu sistem persamaan linier.

Secara matematis, bentuk standard model program linier adalah sebagai berikut :

Mencari X x1, x2 , ... , xn 0 yang memaksimumkan/meminimumkan

f X f x1, x2 , ... , xn c1x1 c2 x2 ... cn xn

dengan kendala :

a11 x1 a12 x2 ... a1n xn b1


a21 x1 a22 x2 ... a2 n xn b2
...
am1 x1 am 2 x2 ... amn xn bm

Ciri pertama dipenuhi oleh banyak masalah karena pada umumnya variabel yang digunakan (x1,
x2, … , xn) menyatakan suatu kuantitas (misalnya jumlah barang, lama waktu, dll) yang hendak
dioptimalkan. Jelas bahwa nilai-nilai kuantitas tersebut tidak negatif. Akan tetapi bila diinginkan
ada variabel yang boleh bernilai negatif, model program linier tetap bisa diselesaikan dengan
suatu transformasi.
12 Riset Operasi : Suatu Tinjauan Algoritmis

Ciri kedua berarti bahwa setiap variabel memiliki koefisien konstan. Tidak boleh ada variabel
yang berpangkat selain 1, dan tidak boleh ada pergandaan variabel. Ciri linier ini juga berlaku
pada semua kendalanya. Dalam beberapa kasus ada kemungkinan bentuk fungsi (atau kendala)
yang tidak linier dapat ditransformasikan ke bentuk linier. Apabila demikian, model program
linier dapat digunakan.

Contoh 2.1

Telitilah mana diantara model-model berikut ini yang dapat diseslesaikan dengan program linier

a. Maksimumkan f x1, x2 5x1 x22

Kendala : x1 4 x2 3

3x1 4 x2 5

x1 , x2 0

b. Minimumkan f x1, x2 , x3 5x1 2 x2 x3

Kendala : 2 x1 4 x1 x2 3

5 x1 x2 2 x3 2

x1 , x2 , x3 0

c. Minimumkan f x1, x2 x1 x2

Kendala : 4 x1 x2 2

3x1 x2 1

d. Maksimumkan f x1, x2 , x3 x1 3x2

Kendala : x1 2 x2 x3 1

3x1 x2 2

x1 , x2 , x3 0

e. Minimumkan f x1, x2 x12 x22


PROGRAM LINIER : PENYELESAIAN GRAFIK 13

Kendala : x13 x 22 e3

x1 x 24 e4

x12 x 23 e

x1, x2 0

Penyelesaian

a. Bukan merupakan bentuk program linier karena fungsi sasarannya mengandung suku x 22
yang jelas bukan merupakan bentuk linier.

f. Bukan merupakan bentuk program linier meskipun fungsi sasarannya merupakan bentuk
linier dalam x1, x2 dan x3, tetapi ada kendala yang memuat bentuk pergandaan variabel (4
x1x2). Perhatikan disini bahwa meskipun fungsi sasaran maupun kendala lain sudah berbentuk
linier, namun jika ada satu kendala saja yang tidak berbentuk linier maka model tidak bisa
diselesaikan dengan program linier.

g. Model program linier. Tampak bahwa baik fungsi maupun kedua kendala merupakan bentuk
fungsi linier dalam x1 dan x2. Meskipun tidak ada syarat x1 , x2 0 , dengan sedikit
transformasi, bentuk tetap dapat diselesaikan dengan program linier

h. Model program linier dalam 3 variabel x1, x2 dan x3. Meskipun kendala berbentuk
pertidaksamaan, tapi dengan transformasi sederhana dapat dijadikan ke bentuk persamaan
(cara transformasi dibahas dalam bab 3). Perhatikan juga bahwa meskipun merupakan model
dalam 3 variabel x1, x2 dan x3, tapi tidak semua variabelnya muncul dalam fungsi sasaran
maupun kendalanya. Fungsi sasaran f x1, x2 , x3 x1 3x2 yang merupakan fungsi 2

variabel sama dengan fungsi f x1, x2 , x3 x1 3x2 0x3 yang merupakan fungsi 3

variabel.

i. Meskipun tampak bahwa model bukan merupakan model program linier, tapi dengan suatu
transformasi dapat dijadikan bentuk program linier.

Fungsi ln(x) merupakan fungsi monoton sehingga meminimumkan f(x) sama dengan
meminimumkan ln (f(x)). Misalkan y1 = ln (x1), y2 = ln (x2). Dengan mengingat bahwa
14 Riset Operasi : Suatu Tinjauan Algoritmis

ln (xy) = ln (x) + ln (y), ln (xa) = a ln (x) dan ln (e) = 1, fungsi sasaran dapat dituliskan
sebagai :

g y1, y2 ln f x1, x2 ln x12 x22 ln x12 ln x22

= 2ln x1 2ln x2 2 y1 2 y2

Maka model hasil transformasi adalah

Minimumkan g y1, y2 2 y1 2 y2

Kendala 3 y1 2 y2 3

y1 4 y2 4

2 y1 3 y2 1

y1 , y2 0

Langkah-langkah pembuatan model program linier adalah sebagai berikut :

1. Tentukan variabel-variabel keputusan. Variabel keputusan adalah besaran yang harus


ditentukan nilainya agar optimalitas yang diinginkan tercapai

2. Buatlah fungsi sasaran, yaitu fungsi yang akan dioptimumkan. Fungsi ini harus merupakan
kombinasi linier variabel-variabel keputusan.

3. Tentukan kendala berdasarkan keterbatasan sumber daya atau karena kondisi yang harus
terpenuhi. Seperti halnya fungsi sasaran, fungsi tiap kendala harus merupakan fungsi linier
variabel keputusan. Kendala bisa berupa suatu persamaan atau pertidaksamaan.

Contoh 2.2

Seorang pengusaha bahan kimia membuat 2 macam cairan pembunuh serangga yaitu jenis
superior (C1) dan jenis standard (C2). Kedua jenis cairan dibuat dari 2 macam bahan yang sama
yaitu A dan B dengan komposisi yang berbeda.

Setiap liter cairan jenis superior dibuat dari campuran 1 unit bahan A dan 3 unit bahan B,
sedangkan setiap liter jenis standard dibuat dari campuran 2 unit bahan A dan 1 unit bahan B.
PROGRAM LINIER : PENYELESAIAN GRAFIK 15

Karena keterbatasan pasokan, setiap harinya ia hanya dapat memperoleh 20 unit bahan A dan 20
unit bahan B.

Untuk setiap liter cairan jenis superior yang ia buat, ia akan memperoleh keuntungan sebesar
30.000. Untuk setiap liter cairan jenis standard, ia akan memperoleh keuntungan sebesar 20.000.

Jika diasumsikan bahwa semua cairan yang dibuat akan laku terjual, berapa liter cairan masing-
masing jenis harus ia buat tiap harinya agar keuntungan yang didapatkan maksimum ?

Penyelesaian

Variabel keputusan yang harus ditentukan adalah jumlah (liter) cairan kedua jenis yang harus
dibuat (dengan keterbatasan bahan) agar keuntungan maksimum. Karena ada 2 macam cairan
penentu keuntungan, maka ada 2 variabel keputusan. Misalkan x1 = jumlah cairan jenis superior
dan x2 = jumlah cairan jenis standard yang dibuat. Jelas bahwa x1 dan x2 harus 0. Harga x1
dan x2 inilah yang akan dicari agar keuntungannya maksimum.

Fungsi sasaran yang hendak dimaksimumkan adalah keuntungan. Untuk tiap liter cairan C1,
keuntungan yang didapatkan adalah sebesar 30.000. Maka jika dibuat x1 liter C1, keuntungan
yang didapat adalah 30.000 C1. Secara analog, karena keuntungan dari pembuatan tiap liter C2
adalah 20.000, sedangkan yang dibuat adalah x2 liter, maka keuntungan yang didapat adalah
20.000 x2. Dengan demikian keuntungan yang didapat jika dibuat x1 liter C1 dan x2 liter C2 adalah
sebesar 30.000 x1 + 20.000 x2. Fungsi keuntungan inilah yang akan dimaksimumkan.

Fungsi sasaran : Maksimumkan f x1, x2 30.000 x1 20.000 x2

Apabila tidak ada kendala keterbatasan pasokan bahan maka supaya keuntungan maksimum,
pengusaha itu akan memproduksi cairan kedua jenis sebanyak-banyaknya. Akan tetapi dengan
adanya keterbatasan pasokan, maka jumlah cairan kedua jenis yang dapat dibuat (dengan
demikian juga keuntungan yang dapat ia peroleh) juga terbatas. Tabel 2.1 berikut ini menyatakan
ringkasan permasalahan yang dihadapi. Kolom paling kiri adalah bahan pembuat cairan kimia,
sedangkan kolom paling kanan adalah jumlah unit pasokan/persediaan maksimum yang tersedia
tiap harinya. Isi kolom di tengah menyatakan jumlah unit bahan A dan B yang dipakai untuk
membuat tiap liter cairan kedua jenis. Baris paling bawah menyatakan keuntungan yang
diperoleh dari penjualan tiap liter cairan kedua jenis.
16 Riset Operasi : Suatu Tinjauan Algoritmis

Cairan jenis Cairan jenis Pasokan


Bahan
Superior (C1) Standard (C2) Maksimum

A 1 2 20

B 3 1 20

Untung 30.000 20.000

Tabel 2.1

Perhatikan penggunaan bahan A dalam pembuatan kedua cairan. Setiap liter C1 membutuhkan 1
unit bahan A. Maka untuk membuat x1 liter C1 dibutuhkan 1.x1 = x1 unit bahan A. Secara analog,
untuk membuat seliter C2 dibutuhkan 2 unit C2. Karena yang dibuat adalah x2 liter C2, maka
dibutuhkan 2.x2 unit bahan A. Secara keseluruhan, untuk membuat x1 liter C1 dan x2 liter C2
dibutuhkan bahan A sejumlah x1 + 2 x2 unit. Karena persediaan bahan A hanya 20 unit, maka
jumlah bahan A yang digunakan untuk membuat C1 dan C2 tidak boleh melebihi 20 unit.
Didapatkan kendala : x1 + 2 x2 20.

Hal yang sama juga berlaku untuk bahan B. Untuk membuat x1 liter C1 dan x2 liter C2 dibutuhkan
bahan B sejumlah 3 x1 + x2. Karena bahan B juga hanya tersedia sejumlah 20 unit maka kendala
yang harus terpenuhi adalah 3x1 + x2 20

Model untuk masalah pengusahan kimia tersebut adalah sebagai berikut :

Maksimumkan f x1, x2 30.000 x1 20.000 x2

Kendala x1 + 2 x2 20

3x1 + x2 20 ; x1, x2 0.

Contoh 2.3

Perusahaan Adianto & Co memproduksi 3 buah model almari (A, B dan C). Ketiga model
membutuhkan jenis bahan baku dan tenaga kerja yang sama, tapi dengan jumlah yang berbeda-
beda. Waktu pembuatan (jam kerja) dan harga pembelian bahan baku (ratusan ribu rupiah) tiap
almari dapat dilihat pada tabel 2.2
Model Almari

A B C
PROGRAM LINIER : PENYELESAIAN GRAFIK 17

Waktu Pembuatan (jam) 7 3 6

Harga Bahan Baku (ratusan ribu) 4 4 5

Tabel 2.2

Karena keterbatasan modal, maka biaya pembelian bahan baku terbatas sebesar 200 (ratusan
ribu) rupiah dan waktu pembuatan juga terbatas selama 150 (jam kerja).

Hasil penjualan tiap almari model A, B, dan C memberikan keuntungan masing-masing sebesar
400.000, 200.000, dan 300.000.

Buatlah model program linier yang sesuai untuk menentukan jumlah almari tiap model yang
harus dibuat agar keuntungan maksimum.

Penyelesaian

Variabel keputusan yang hendak dicari nilainya adalah jumlah almari tiap jenis. Karena ada 3
jenis almari, maka ada 3 buah variabel keputusan, yaitu :

xA = jumlah almari model A yang dibuat

xB = jumlah almari model B yang dibuat

xC = jumlah almari model C yang dibuat

Jelas bahwa xA, xB dan xC 0

Keuntungan tiap almari model A adalah 400.000. Karena dibuat xA buah almari model A, maka
keuntungan dari almari model A sebesar 400.000 xA. Secara analog, keuntungan dari model B
dan C masing-masing adalah sebesar 200.000 xB dan 300.000 xC. Maka keuntungan total yang
didapat adalah 400.000 xA + 200.000 xB + 300.000 xC.

Fungsi sasaran :

Maksimumkan f xA , xB , xC 400.000 xA 200.000 xB 300.000 xC

Perhatikan waktu pembuatan almari pada tabel 2.2. Setiap almari model A, B dan C masing-
masing membutuhkan waktu pembuatan selama 7, 3 dan 6 jam kerja. Maka pembuatan xA
almari A, xB almari B dan xC almari C memerlukan waktu pembuatan selama 7 xA + 3 xB + 6
xC. Karena waktu yang tersedia untuk pembuatan ketiga almari adalah selama 150 jam maka
didapatkan kendala : 7 xA + 3 xB + 6 xC 150
18 Riset Operasi : Suatu Tinjauan Algoritmis

Hal yang sama juga dilakukan pada pembelian bahan baku. Karena harga bahan baku almari A,
B dan C masing-masing adalah 4, 4 dan 5 (ratusan ribu), maka harga bahan baku pembuatan
xA almari A, xB almari B dan xC almari C adalah sebesar 4 xA + 4 xB + 5 xC. karena modal yang
tersedia hanya 200 (ratusan ribu), maka diperoleh kendala : 4 xA + 4 xB + 5 xC 200.

Model yang sesuai untuk perusahaan Adianto & Co adalah :

Maksimumkan f xA , xB , xC 400.000 xA 200.000 xB 300.000 xC

Kendala : 7 xA + 3 xB + 6 xC 150

4 xA + 4 xB + 5 xC 200

xA, xB dan xC 0

Contoh 2.4

Seorang kontraktor merencanakan membangun 3 tipe rumah (sederhana, menengah, dan


mewah) yang biaya pembuatan per unitnya adalah 20, 50 dan 80 (juta rupiah). Dana yang
tersedia adalah sebesar 4000 (juta rupiah).

Menurut peraturan pemerintah, dari keseluruhan rumah yang ia bangun, minimal 50 %


diantaranya harus rumah sederhana dan paling banyak 20 % diantaranya adalah rumah mewah.

Keuntungan yang diperoleh dari penjualan sebuah rumah tipe sederhana, menengah, dan mewah
masing-masing adalah sebesar 5, 15 dan 30 (juta rupiah).

Berapa jumlah rumah tiap tipe yang harus ia bangun (mengingat dana yang tersedia dan
peraturan pemerintah) agar keuntungan yang ia dapatkan maksimum ?

Penyelesaian

Variabel keputusan adalah jumlah rumah tipe sederhana, menengah dan mewah yang dibangun.
Misalkan

x1 = jumlah rumah tipe sederhana yang dibangun


PROGRAM LINIER : PENYELESAIAN GRAFIK 19

x2 = jumlah rumah tipe menengah yang dibangun

x3 = jumlah rumah tipe mewah yang dibangun

Jelas bahwa x1, x2 dan x3 0

Fungsi sasarannya adalah memaksimumkan keuntungan yang didapatkan. Karena keuntungan


tipe sederhana, menengah dan mewah maaing-masing adalah 5, 15 dan 30 maka fungsi
sasarannya dapat dinyatakn sebagai :

Maksimumkan f x1, x2 , x3 5 x1 15 x2 30 x3

Ada 2 macam kendala yang harus dipenuhi yaitu keterbatasan dana dan peraturan pemerintah.

Karena biaya pembuatan sebuah rumah tipe sederhana, menengah dan mewah masing-masing
sebesar 20, 50 dan 80 (juta), sedangkan dana yang dimiliki sebesar 4000 (juta), maka kendala
keterbatasan biaya dapat dinyatakan sebagai 20 x1 + 50 x2 + 80 x3 4000.

Jumlah keseluruhan rumah yang dibuat adalah x1 + x2 + x3. Kendala bahwa minimal 50 %
diantaranya harus rumah sederhana dapat dinyatakan sebagai x1 0.5 (x1 + x2 + x3). Kendala
bahwa maksimal 20 % diantaranya harus rumah mewah dapat dinyatakan sebagai x3 0.2 (x1 +
x2 + x3).

Jadi model yang sesuai adalah

Maksimumkan f x1, x2 , x3 5 x1 15 x2 30 x3

Kendala : 20 x1 + 50 x2 + 80 x3 4000

x1 0.5 (x1 + x2 + x3)

x3 0.2 (x1 + x2 + x3)

x1, x2 dan x3 0

Contoh 2.5

Seorang petani akan menanam 2 jenis pohon, yaitu A dan B pada area seluas 4400 m2. Sebuah
pohon A membutuhkan lahan seluas 25 m2, sedangkan pohon B membutuhkan lahan seluas 40
20 Riset Operasi : Suatu Tinjauan Algoritmis

m2. Kebutuhan air pohon A adalah 30 unit dan pohon B sebanyak 15 unit untuk tiap
pohonnya. Air yang tersedia hanyalah 3300 unit.

Perbandingan pohon B dan pohon A yang harus ditanam tidak boleh kurang dari 6/19 dan
tidak boleh lebih dari 17/8.

Keuntungan yang didapat dari sebuah pohon A diperkirakan 1,5 kali pohon B. Berapa jumlah
pohon dari masing-masing jenis harus ditanam supaya keuntungannya maksimum ?

Penyelesaian

Variabel keputusan adalah jumlah pohon jenis A dan B yang harus ditanam. Misalkan

xA = jumlah pohon A yang ditanam

xB = jumlah pohon B yang ditanam

Jelas bahwa xA dan xB 0

Fungsi sasaran adalah memaksimumkan keuntungan. Misalkan keuntungan dari sebuah pohon B
= k. Maka keuntungan dari sebuah pohon A = 1.5 k. Keuntungan total yang didapat dengan
menanam xA pohon A dan xB pohon B adalah sebesar 1.5 k xA + k xB = k (1.5 xA + xB). Fungsi
sasaran :

Maksimumkan f x A , xB k 1.5 xA xB

Karena pohon A dan B masing-masing memerlukan lahan seluas 25 dan 40 m2, sedangkan lahan
yang tersedia seluas 4400 m2, maka kendala keterbatasan lahan dapat dinyatakan sebagai 25
xA + 40 xB 4400

Kebutuhan air sebuah pohon A dan B masing-masing adalah 30 dan 15 unit, sedangkan
persediaan air sebanyak 3300 unit. Maka kendala keterbatasan air dapat dinyatakan sebagai 30
xA + 15 xB 3300

Kendala perbandingan jumlah pohon B dan A yang tidak boleh kurang dari 6/19 dapat
xB 6
dinyatakan sebagai . Secara analog, kendala perbandingan jumlah pohon B dan A yang
xA 19

xB 17
tidak boleh lebih dari 17/8 dapat dinyatakan sebagai .
xA 8

Model yang sesuai bagi petani adalah :


PROGRAM LINIER : PENYELESAIAN GRAFIK 21

Maksimumkan f x A , xB k 1.5 xA xB

Kendala : 25 xA + 40 xB 4400

30 xA + 15 xB 3300

xB 6
atau 19 xB – 6 xA 0
xA 19

xB 17
atau 8 xB – 17 xA 0
xA 8

xA, xB 0

Contoh 2.6

Perusahaan alat rumah tangga “KAA” ingin mengiklankan produknya di 3 media yaitu TV
(siang dan malam hari), radio dan koran. Tujuannya adalah untuk menjangkau sebanyak
mungkin langganan potensial. Tabel 2.3 menunjukkan data hasil penelitian.
Media Iklan

TV TV Radio Koran
(siang) (malam)

Biaya Iklan per tayang (juta) 4 7.5 3 1.5

Jumlah langganan (ribuan) potensial yang 400 900 500 200


dapat dijangkau untuk tiap tayangan

jumlah langganan wanita (ribuan) yang dapat 300 400 200 100
dijangkau tiap tayangan

Tabel 2.3

Anggaran yang disediakan untuk seluruh iklan adalah sebesar 80 juta, dan maksimum 50 juta
diantaranya untuk iklan di TV. Jumlah langganan wanita yang dijangkau harus paling sedikit 2
juta orang.

Disamping itu, jumlah iklan di TV siang hari harus paling sedikit 3 kali tayangan, dan paling
sedikit 2 kali tayangan waktu malam. Jumlah iklan di radio dan koran masing-masing harus
antara 5 – 10 kali.
22 Riset Operasi : Suatu Tinjauan Algoritmis

Tentukan cara pengaturan iklan yang paling optimal.

Penyelesaian

Variabel keputusan dalam masalah ini adalah jumlah iklan di tiap media. Misalkan

x1 = jumlah iklan di TV siang hari

x2 = jumlah iklan di TV malam hari

x3 = jumlah iklan di radio

x4 = jumlah iklan di koran

Karena fungsi sasaran adalah untuk menjangkau sebanyak mungkin langganan potensial, maka
fungsi sasran yang sesuai adalah :

Maksimumkan f x1, x2 , x3 , x4 400 x1 900 x2 500 x3 200 x4 (ribuan)

Kendala :

Anggaran maksimum = 80 juta dapat dinyatakan sebagai : 4 x1 + 7.5 x2 + 3 x3 + 1.5 x4


80

Anggaran maksimum 50 juta untuk iklan di TV dapat dinyatakan sebagai kendala : 4 x1


+ 7.5 x2 50

Jumlah langganan wanita yang dijangkau harus paling sedikit 2 juta orang dapat
dinyatakan sebagai kendala : 300 x1 + 400 x2 + 200 x3 + 100 x4 2000 atau 3 x1 + 4 x2
+ 2 x3 + x4 20

Jumlah iklan di TV siang hari harus paling sedikit 3 kali tayangan, dan paling sedikit 2
kali tayangan waktu malam dapat dinyatakan sebagai 2 buah kendala : x1 3 dan x2
2

Jumlah iklan di radio dan koran masing-masing harus antara 5 – 10 kali dapat dinyatakan
sebagai 4 buah kendala, masing masing : x3 5, x3 10, x4 5 dan x4 10.

Model yang sesuai untuk permasalahan di perusahaan “KAA” adalah sebagai berikut :

Maksimumkan f x1, x2 , x3 , x4 400 x1 900 x2 500 x3 200 x4

Kendala : 4 x1 + 7.5 x2 + 3 x3 + 1.5 x4 80


PROGRAM LINIER : PENYELESAIAN GRAFIK 23

4 x1 + 7.5 x2 50

3 x1 + 4 x2 + 2 x3 + x4 20

x1 3

x2 2

x3 5

x3 10

x4 5

x4 10

x1, x2, x3, x4 0

2.2 Penyelesaian Grafik

Ada 3 metode penyelesaian masalah program linier yang umum dipakai yaitu :

Metode grafik

Metode simpleks

Metode titik interior.

Sesuai dengan namanya, metode grafik menggunakan grafik kendala sebagai alat untuk mencari
titik optimumnya. Kendala dalam program linier selalu akan membentuk bidang datar segi–n
yang merupakan himpunan konveks sehingga titik optimum pasti terjadi pada titik sudut bidang
datar yang terbentuk. Metode ini relatif mudah dikerjakan secara manual, tetapi terbatas untuk 2
kendala saja. Kendala dalam model program linier menyatakan dimensi ruang. Ini berarti dengan
jumlah kendala 4, maka masalah tidak dapat digambarkan grafiknya sehingga metode grafik
tidak dapat dipakai. Meskipun secara teoritis dapat dikerjakan, namun masalah dengan 3 kendala
secara praktis sulit digambarkan (karena penggambaran dikerjakan dalam 3 dimensi) sehingga
sulit dikerjakan dengan metode grafik.

Metode simpleks mengatasi masalah yang ada pada metode grafik. Prinsip kerjanya sama yaitu
secara iteratif mencari titik sudut bidang datar yang menghasilkan nilai optimum. Akan tetapi
24 Riset Operasi : Suatu Tinjauan Algoritmis

pencarian tidak dilakukan secara grafik, melainkan secara numerik sehingga dapat dilakukan
untuk berapapun jumlah variabel yang digunakan. Ini berarti bahwa keterbatasan bidang dimensi
yang dihadapi metode grafik dapat teratasi, meskipun proses yang harus dikerjakan relatif lebih
banyak. Akan tetapi dengan bantuan komputer, proses iteratif dapat dilakukan dengan cepat.

Berbeda dengan metode simpleks yang mencari titik optimal dengan menyelidiki titik sudut
bidang datar, metode titik interior memulai iterasinya dari titik dalam (bukan titik sudut) bidang
datar dan secara iteratif menuju pada titik sudut yang optimum.

Pada bab ini akan dibahas cara penyelesaian dengan metode grafik dan pada bab berikutnya
dibahas kedua metode yang lain.

Langkah-langkah penyelesaian program linier dengan metode grafik adalah sebagai berikut :

j. Buat model yang sesuai dengan masalah yang ada

k. Gambar grafik kendala-kendalanya

l. Tentukan daerah fisibel, yaitu daerah dalam grafik yang memenuhi semua kendala

m. Hitung nilai fungsi di titik-titik sudut segi-n daerah fisibel

n. Cari titik yang menghasilkan nilai fungsi yang paling optimal.

Untuk mengetahui lebih jelas tentang langkah-langkah yang harus dilakukan, perhatikan
beberapa contoh berikut ini.

Contoh 2.7

Selesaikan contoh 2.2

Penyelesaian

Model yang akan diselesaikan adalah :

Maksimumkan f x1, x2 30.000 x1 20.000 x2 = 3 x1 + 2 x2 (puluhan ribu)

Kendala x1 + 2 x2 20
PROGRAM LINIER : PENYELESAIAN GRAFIK 25

3x1 + x2 20 ; x1, x2 0.

Langkah pertama yang harus dilakukan adalah menggambarkan grafik kendalanya (bukan grafik
fungsi sasaran). Karena hanya ada 2 variabel, maka berarti grafiknya digambarkan dalam bidang
2 dimensi. Syarat x1, x2 0 berarti bahwa titik yang diperhatikan hanyalah titik yang terletak
pada kuadran I.

Untuk menggambarkan grafik yang berbentuk pertidaksamaan, mula-mula gantilah


pertidaksamaan menjadi suatu persamaan. Grafiknya akan berupa suatu garis lurus. Garis ini
akan membagi bidang di kuadran I menjadi 2 bagian. Tentukan salah satu dari kedua bagian
yang merupakan daerah penyelesaian kendala.

Perhatikan kendala x1 + 2 x2 20. Jika dijadikan bentuk persamaan, akan didapat garis dengan
persamaan x1 + 2 x2 = 20. Teori dalam geometri menyatakan bahwa dari 2 titik berbeda (dalam
dimensi berapapun), kita hanya bisa menggambarkan satu garis lurus yang melalui kedua titik
tersebut.

x2

A (0,10)

B (20,0)
x1
x1+ 2x2 = 20

Gambar 2.1

Untuk menggambar garis x1 + 2 x2 = 20, cari 2 titik berbeda yang memenuhi persamaan.
Sebenarnya banyak sekali titik yang memenuhi persamaan yang dapat kita pilih. Namun yang
paling mudah adalah memilih titik yang salah satu variabelnya berharga = 0. Untuk x1 = 0, maka
0 + 2 x2 = 20, atau x2 = 10. Didapat titik A (0, 10). Untuk x2 = 0, maka x1 + 2 (0) = 20, atau x1
= 20. Didapat titik B (20, 0). Gambar 2.1 menunjukkan garis x1 + 2 x2 = 20 yang digambarkan
dengan cara menghubungkan titik A dan titik B. Sumbu horisontal adalah sumbu x1 dan sumbu
vertikal adalah sumbu x2.

Garis x1 + 2 x2 = 20 membagi kuadran I menjadi 2 bagian yaitu segitiga AOB dan bidang tak
terbatas di sisi kanan atas. Kendala x1 + 2 x2 20 merupakan salah satu bidang diantaranya.
26 Riset Operasi : Suatu Tinjauan Algoritmis

Untuk memastikan bidang mana yang menyatakan kendala, diambil sembarang titik uji yang
tidak terletak pada garis x1 + 2 x2 = 20. Kemudian titik uji ini dicobakan ke kendala x1 + 2 x2
20. Jika pertidaksamaan benar, berarti bidang dimana titik uji berada merupakan bidang yang
memenuhi pertidaksamaan. Sebaliknya, jika pertidaksamaan bernilai salah, berarti bidang yang
memenuhi pertidaksamaan adalah bidang yang tidak memuat titik uji. Untuk mempermudah,
ambil titik (0, 0). Jika disubstitusikan, akan didapat 0 + 2 (0) 20. Pertidaksamaan ini bernilai
benar. Jadi bidang yang dibatasi segitiga AOB merupakan penyelesaian kendala x1 + 2 x2 20.
Daerah yang diarsir pada gambar 2.2 menyatakan penyelesaian kendala x1 + 2 x2 20.

x2

A (0,10)

B (20,0)
x1
x1+ 2x2 = 20

Gambar 2.2

x2

C (0, 20)

A (0,10)

B (20,0) x1
D (20/3, 0)
3x1+ x2 = 20 x1+ 2x2 = 20

Gambar 2.3

Penggambaran bidang kendala 3x1 + x2 20 dilakukan dengan cara analog. Jika dijadikan
persamaan, didapatkan persamaan garis 3x1 + x2 = 20. Jika x1 = 0, maka x2 = 20. Didapat titik
C (0, 20). Jika x2 = 0, maka x1 = 20/3. Didapat titik D ( 203 , 0) (lihat gambar 2.3).
PROGRAM LINIER : PENYELESAIAN GRAFIK 27

Garis 3x1 + x2 = 20 membagi kuadran I menjadi 2 bagian yaitu segitiga COD dan bidang tak
berhingga di sisi kanan. Jika kembali diambil titik (0, 0) sebagai titik uji untuk menentukan
bidang yang memenuhi pertidaksamaan 3x1 + x2 20, maka didapat 3 (0) + 0 20 yang
merupakan pertidaksamaan yang benar. Jadi penyelesaian pertidaksamaan 3x1 + x2 20 adalah
segitiga COD.

x2

C (0, 20)

A (0,10) E

B (20,0) x1
D (20/3, 0)
3x1+ x2 = 20 x1+ 2x2 = 20

Gambar 2.4

Perpotongan bidang yang memenuhi semua kendala disebut daerah fisibel. Daerah fisibel dalam
kasus ini adalah perpotongan bidang AOB dan bidang COD. Daerah fisibel berupa segi-4
AEDO (bagian yang diarsir pada gambar 2.4).

Langkah berikutnya adalah mencari koordinat titik sudut daerah fisibel. Diantara keempat titik
sudutnya, yang belum diketahui koordinatnya adalah titik E. Karena titik E merupakan
perpotongan garis x1 + 2 x2 = 20 dan 3 x1 + x2 = 20, maka koordinatnya didapat dengan jalan
menyelesaikan kedua persamaan tersebut.

x1 2 x2 20 1 x1 2 x2 20
3 x1 x2 20 2 6 x1 2 x2 40
5 x1 20
x1 4

Dengan mensubstitusikan x1 = 4 ke persamaan x1 + 2 x2 = 20 didapat x2 = 8. Jadi E = (4, 8).

Langkah selanjutnya adalah menentukan nilai fungsi di titik-titik sudut daerah fisibel. Hasilnya
dapat dilihat pada tabel 2.4
Titik Sudut Daerah Fisibel Nilai Fungsi = f(x1, x2) = 3 x1 + 2 x2

O (0, 0) 3(0) + 2(0) = 0


28 Riset Operasi : Suatu Tinjauan Algoritmis

A (0, 10) 3(0) + 2(10) = 20

E (4, 8) 3(4) + 2(8) = 28

D (20/3, 0) 3(20/3) + 2(0) = 20

Tabel 2.4

Dari tabel 2.4 tampak bahwa nilai fungsi maksimum terjadi pada titik E (4, 8) dengan nilai fungsi
28. Jika dikembalikan ke masalah semula, maka supaya keuntungannya maksimum, pengusaha
itu harus membuat 4 liter cairan C1 dan 8 liter cairan C2. Keuntungan yang didapat = 280.000

Contoh 2.8

Selesaikan contoh 2.5

Penyelesaian

Dari contoh 2.5, didapat model yang akan diselesaikan :

Maksimumkan f x A , xB k 1.5 xA xB

Kendala : 25 xA + 40 xB 4400

30 xA + 15 xB 3300

xB 6
atau 19 xB – 6 xA 0
xA 19

xB 17
atau 8 xB – 17 xA 0
xA 8

xA, xB 0

Karena hanya ada 2 variabel xA dan xB, maka metode grafik dapat dipakai untuk menyelesaikan
permasalahan. Misalkan sumbu mendatar menyatakan sumbu xA dan sumbu tegak menyatakan
xB. Langkah pertama adalah mencari daerah fisibel.

Kendala 25 xA + 40 xB 4400
PROGRAM LINIER : PENYELESAIAN GRAFIK 29

Jadikan pertidaksamaan menjadi persamaan 25 xA + 40 xB = 4400 Perpotongan dengan


sumbu xA dicari dengan mengambil xB = 0. 25 xA + 40 (0) = 4400. Maka xA = 176. Didapat
titik A = (176, 0)

Perpotongan dengan sumbu xB dicari dengan mengambil xA = 0. 25 (0) + 40 (xB) = 4400.


Maka xB = 110. Didapat titik B = (0, 110). Grafik persamaan 25 xA + 40 xB = 4400
merupakan garis lurus yang menghubungkan titik A (176, 0) dan B (0, 110)

Karena titik (0, 0) tidak terletak pada garis 25 xA + 40 xB = 4400, maka titik (0, 0) dapat
dipakai sebagai titik uji untuk menentukan daerah penyelesaian pertidaksamaan 25 xA + 40
xB 4400. Jika titik (0, 0) disubstitusikan ke pertidaksamaan, didapat 25(0) + 40(0)
4400. Pertidaksamaan ini bernilai benar sehingga daerah dimana titik (0, 0) terletak, yaitu
segitiga AOB merupakan daerah penyelesaiannya.

Kendala 30 xA + 15 xB 3300

Jadikan pertidaksamaan menjadi persamaan 30 xA + 15 xB = 3300 Jika xB = 0, maka


persamaan menjadi 30 xA + 15 (0) = 3300. Maka xA = 110. Didapat titik C = (110, 0)

Sebaliknya, jika xA = 0, maka persamaan menjadi 30 (0) + 15 (xB) = 3300. Maka xB = 220.
Didapat titik D = (0, 220)

xB
D (0,220)
30xA+ 15xB = 3300

B (0,110)

25xA+ 40xB = 4400


xA
C (110,0) A (176,0)

Gambar 2.5

Titik (0, 0) tidak terletak pada garis 30 xA + 15 xB = 3300, maka titik (0, 0) dapat dipakai
sebagai titik uji untuk menentukan daerah penyelesaian pertidaksamaan 30 xA + 15 xB
3300. Jika titik (0, 0) disubstitusikan ke pertidaksamaan, didapat 30(0) + 15(0) 3300.
30 Riset Operasi : Suatu Tinjauan Algoritmis

Pertidaksamaan ini bernilai benar sehingga daerah dimana titik (0, 0) terletak, yaitu segitiga
COD merupakan daerah penyelesaiannya.

Irisan segitiga AOB dan COD (segi empat OBEC) merupakan daerah yang diarsir pada
gambar 2.5. Daerah ini bukanlah daerah fisibel karena masih ada 2 kendala lain yang harus
terpenuhi.

Kendala 19 xB – 6 xA 0

Jadikan pertidaksamaan menjadi persamaan 19 xB – 6 xA = 0. Jika xB = 0, maka xA = 0. Titik


yang lain harus dicari dengan mengambil xB selain 0. Misal xB = 60, maka xA = 190.
Didapat Grafik berupa garis yang menghubungkan titik (190, 60) dengan O.

Untuk mencari daerah penyelesaian pertidaksamaan 19 xB – 6 xA 0, titik (0, 0) tidak bisa


dipakai sebagai titik uji karena titik (0, 0) terletak pada garis 19 xB – 6 xA = 0. Untuk itu
dicari sembarang titik yang tidak terletak pada garis 19 xB – 6 xA = 0. Misal diambil titik
(10, 0). Jika disubstitusikan ke pertidaksamaan, didapat 19 (0) – 6 (10) 0, yang
merupakan pertidaksamaan yang salah. Maka daerah dimana titik (10, 0) berada bukanlah
daerah penyelesaian. Daerah penyelesaian adalah daerah di sisi kiri garis 19 xB – 6 xA = 0

Kendala 8 xB – 17 xA 0

Persamaan yang akan dicari garisnya adalah 8 xB – 17 xA = 0. Titik (0, 0) memenuhi


persamaan tersebut sehingga merupakan salah satu titik yang dicari. Titik yang lain didapat
dengan mengambil xA = 80. Maka xB = 170. Grafik berupa garis yang menghubungkan titik
O dengan titik (80, 170).

Misalkan titik uji yang diambil adalah kembali titik (10, 0). Jika disubstitusikan ke
pertidaksamaan maka didapat 8 (0) – 17 (10) 0 yang merupakan pertidaksamaan yang
benar. Maka daerah di sisi kiri (atas) garis 8 xB – 17 xA = 0 merupakan daerah penyelesaian
pertidaksamaan 8 xB – 17 xA 0.

Daerah fisibel yang merupakan perpotongan daerah yang didapat dari 4 kendala merupakan segi-
4 OFEG (lihat gambar 2.6).
PROGRAM LINIER : PENYELESAIAN GRAFIK 31

xB
D (0,220)
30xA+ 15xB = 3300

8xB - 17xA = 0

B (0,110)
19xB - 6xA = 0
F
E

G 25xA+ 40xB = 4400


xA
C (110,0) A (176,0)

Gambar 2.6

Langkah selanjutnya adalah menentukan koordinat titik E, F dan G. Dari gambar 2.6 tampak
jelas bahwa titik E, F dan G merupakan perpotongan 2 buah garis kendala. Penyelesaian kedua
persamaan akan menghasilkan koordinat titik yang sesuai. Selengkapnya dapat dilihat pada tabel
2.5.
Koordinat titik
Titik Persamaan garis yang berpotongan
potong

E 25 xA + 40 xB = 4400 dengan 30 xA + 15 xB = 3300 (80, 60)

F 25 xA + 40 xB = 4400 dengan 8 xB - 17 xA = 0 (40, 85)

G 19 xB - 6 xA = 0 dengan 30 xA + 15 xB = 3300 (95, 30)

Tabel 2.5

Tabel 2.6 menunjukkan nilai fungsi di titik O, E, F, dan G. Tampak bahwa nilai maksimum
terjadi pada titik E (80, 60) dengan nilai maksimum = 180. Jika dikembalikan ke masalah
semula, maka supaya petani tersebut mendapatkan keuntungan maksimum, maka ia harus
menanam 80 pohon A dan 60 pohon B.
Titik Sudut
Nilai Fungsi = f(x1, x2) = 1.5 xA + xB
Daerah Fisibel

O (0, 0) 1.5 (0) + (0) = 0

E (80, 60) 1.5 (80) + (60) = 180

F (40, 85) 1.5 (40) + (85) = 145

G (95, 30) 1.5 (95) + (30) = 172.5

Tabel 2.6
32 Riset Operasi : Suatu Tinjauan Algoritmis

Dalam pencarian nilai optimum fungsi, evaluasi dilakukan di semua titik sudut daerah fisibel.
Adalah pendapat yang salah jika nilai optimum pasti selalu terjadi pada titik yang tidak terletak
pada sumbu-sumbu koordinat. Ada kalanya nilai fungsi optimum justru terletak pada titik di
sumbu koordinat (dalam contoh 2.8 terletak di titik F atau G). Akan tetapi, titik optimum pasti
berada pada titik sudut daerah fisibel.

Contoh 2.9

Minimumkan f (x1, x2) = 3 x1 + 2 x2

Kendala : x1 + x2 8

6 x1 + 4 x2 12

4 x1 + 8 x2 = 20

x1, x2 0

Penyelesaian

Kendala x1 + x2 8

Jika x1 = 0 maka x2 = 8. Didapat titik A (0, 8). Jika x2 = 0, maka x1 = 8. Didapat B (8, 0).
Garis x1 + x2 = 8 merupakan garis yang menghubungkan titik A dan B. Jika titik uji (0, 0)
dimasukkan dalam kendala, maka pertidaksamaan bernilai benar sehingga daerah
penyelesaian kendala adalah segitiga AOB.

Kendala 6 x1 + 4 x2 12

Jika x1 = 0 maka x2 = 3. Didapat titik C (0, 3). Jika x2 = 0, maka x1 = 2. Didapat D (2, 0).
Garis 6 x1 + 4 x2 = 12 merupakan garis yang menghubungkan titik C dan D. Jika titik uji (0,
0) dimasukkan dalam kendala, maka pertidaksamaan bernilai salah sehingga daerah
penyelesaian kendala adalah daerah tak berhingga di sisi kanan/atas garis CD.

Irisan daerah penyelesaian kendala – 1 dan kendala 2 berupa segi empat ABDC yang
tampak pada daerah berarsir pada gambar 2.7
PROGRAM LINIER : PENYELESAIAN GRAFIK 33

x2

A (0,8)

x1+ x2 = 8

C (0,3)

x1
D (2,0) B (8,0)
6x1+ 4x2 = 12

Gambar 2.7

Kendala 4 x1 + 8 x2 = 20

Tidak seperti kendala yang lain, daerah penyelesaian kendala persamaan hanyalah berupa
suatu garis (bukan suatu bidang datar).

Jika x1 = 0, maka x2 = 2.5. Didapat E (0, 2.5). Sebaliknya, jika x2 = 0 maka x1 = 5. Didapat
F (5, 0). Garis EF adalah daerah penyelesaiannya.

Daerah fisibel pada soal ini adalah garis yang menghubungkan titik F dengan titik G
(perpotongan garis EF dan CD). Dalam gambar 2.8, daerah fisibel ditandai dengan garis tebal.
Perhatikan bahwa daerah fisibel tidak selalu berupa segi – n, tapi bisa berupa garis lurus, bahkan
hanya sebuah titik saja.

x2

A (0,8)

x1+ x2 = 8

C (0,3)
E G
(0,2.5)

x1
D (2,0) F (5,0) B (8,0)
6x1+ 4x2 = 12 4x1+ 8x2 = 20

Gambar 2.8
34 Riset Operasi : Suatu Tinjauan Algoritmis

Titik G adalah perpotongan garis 4x1 + 8x2 = 20 dengan garis 6x1 + 4x2 = 12. Penyelesaian
kedua persamaan menghasilkan G ( 12 , 94 ).

Nilai fungsi di titik F = f (5, 0) = 3 (5) + 2 (0) = 15. Nilai fungsi di titik G = f ( 12 , 94 ) = 3 ( 12 ) +

2 ( 94 ) = 6. Titik minimumnya adalah titik G ( 12 , 94 ) dengan nilai minimum = 6

2.4 Kejadian Khusus

2.4.1 Alternatif Penyelesaian

Suatu model Program Linier dikatakan memiliki alternatif penyelesaian apabila ada 2 titik atau
lebih yang memiliki nilai optimum yang sama. Jika 2 titik sudut daerah fisibel memiliki nilai
optimum yang sama, maka semua titik yang terletak diantaranya juga akan memiliki nilai
optimum yang sama pula. Jadi ada tak berhingga penyelesaian. Untuk lebih jelasnya, perhatikan
contoh 2.10 berikut ini.

Contoh 2.10

Perhatikan kembali contoh 2.2. Misalkan keuntungan yang didapat dari setiap liter cairan C2
adalah 10.000 (bukan 20.000). Tentukan jumlah cairan C1 dan C2 yang harus dibuat supaya
keuntungannya maksimum !

Penyelesaian

Model semula sudah diselesaikan dalam contoh 2.7 yang menghasilkan titik maksimum E (4, 8).
Jika keuntungan dari C2 berubah menjadi 10.000 per liter, maka model berubah menjadi :

Maksimumkan f x1, x2 30.000 x1 10.000 x2 = 3x1 + x2 (puluhan ribu)

Kendala x1 + 2 x2 20

3x1 + x2 20

x1, x2 0
PROGRAM LINIER : PENYELESAIAN GRAFIK 35

Perhatikan bahwa kendala tidak berubah sehingga grafik dan daerah fisibelnya sama dengan
contoh 2.7 (ingat bahwa grafik adalah grafik kendala, bukan grafik fungsi sasaran). Karena
daerah fisibel tetap, maka titik sudutnyapun juga tetap. Namun nilai fungsi di tiap titik akan
berubah karena fungsi sasaran berubah. Nilai fungsi yang baru tampak pada tabel 2.7

Titik Sudut Daerah Fisibel Nilai Fungsi = f(x1, x2) = 3 x1 + x2

O (0, 0) 3(0) + (0) = 0

A (0, 10) 3(0) + (10) = 10

E (4, 8) 3(4) + (8) = 20

D (20/3, 0) 3(20/3) + (0) = 20

Tabel 2.7

Nilai maksimum fungsi adalah 20 yang terjadi pada titik E dan titik D (lihat kembali gambar
2.4). Ini berarti soal memiliki alternatif penyelesaian. Setiap titik diantara ruas garis DE
20
(persamaan garisnya 3x1 + x2 = 20 dengan 4 x1 3 ) akan memiliki nilai fungsi = 20.

Sebagai contoh, jika x1 = 5, maka x2 = 5. f (5, 5) = 3 (5) + 5 = 20. Demikian pula titik (6,2) yang
terletak diantara DE memiliki nilai fungsi f (6, 2) = 3 (6) + 2 = 20 pula.

2.4.2 Daerah Fisibel Tak Terbatas

Daerah fisibel adalah daerah yang memenuhi semua kendala. Ada kalanya daerah fisibel
merupakan daerah yang tak terbatas seperti pada contoh 2.11. Meskipun daerah fisibelnya tak
terbatas, bukan berarti nilai optimumnya tak terbatas pula.

Contoh 2.11

Minimumkan f (x1, x2) = 2 x1 + 3 x2

Kendala x1 + x2 3

x1 – 2 x2 4

x1, x2 0
36 Riset Operasi : Suatu Tinjauan Algoritmis

Penyelesaian

Dengan cara penggambaran grafik seperti pada contoh-contoh terdahulu, didapat gambar 2.9.
Perhatikan bahwa daerah fisibel merupakan daerah yang tak terbatas. Titik sudut yang terbentuk
adalah titik A (0, 3), B (3, 0) dan titik D (4, 0)

x2

A (0,3)

x1 - 2x2 = 4

x1
B (3,0) D (4,0)

C (0,-2)
x1+ x2 = 3

Gambar 2.9

f (A) = f (0, 3) = 2 (0) + 3 (3) = 9

f (B) = f (3, 0) = 2 (3) + 3 (0) = 6

f (C) = f (4, 0) = 2 (4) + 3 (0) = 8

Nilai minimum = 6 terjadi pada titik B (3, 0). Perhatikan bahwa meskipun daerah fisibelnya tak
terbatas, tapi nilai minimumnya ada.

2.4.3 Penyelesaian Tak Terbatas

Dalam contoh 2.11 tampak bahwa meskipun daerah fisibelnya tak terbatas, tapi titik
minimumnya tetap ada. Kasus seperti itu tidak selalu terjadi. Ada kalanya daerah fisibelnya tak
terbatas dan nilai optimumnyapun juga tak terbatas. Dalam hal ini soal dikatakan tidak memiliki
penyelesaian.

Contoh 2. 12

Ulangi contoh 2.11, tapi dengan fungsi memaksimumkan !


PROGRAM LINIER : PENYELESAIAN GRAFIK 37

Penyelesaian

Karena kendalanya sama dengan contoh 2.11, maka grafik dan daerah fisibelnya juga sama.
Titik-titik sudut yang terbentuk juga tetap sama. Akan tetapi, dengan fungsi memaksimumkan,
titik maksimumnya bukanlah titik D (4, 0) karena titik (5, 0) memiliki nilai fungsi = 2 (5) + 3 (0)
= 10 yang lebih besar dari f (D). Demikian seterusnya … Nilai maksimum terletak pada tempat
tak berhingga. Dalam kasus ini, penyelesaian adalah tak terbatas.

2.4.4 Soal Tak Fisibel

Kasus dimana daerah fisibel tidak ada disebut soal yang tidak fisibel. Penyelidikan titik optimum
fungsi dilakukan dengan mengecek nilai fungsi pada titik sudut daerah fisibel. Apabila daerah
fisibelnya tidak ada, maka jelas bahwa pengecekan tidak dapat dilakukan. Soal tidak memiliki
penyelesaian.

Contoh 2.13

Maksimumkan f (x1, x2) = 4 x1 + 3 x2

Kendala x1 + x2 3

2x1 – x2 3

x1 4

x1, x2 0

Penyelesaian

Gambar 2.10 menunjukkan grafik kendala. Daerah yang berarsir (segi empat OBFA)
merupakan daerah penyelesaian yang memenuhi kendala x1 + x2 3 dan 2x1 – x2 3. Irisan
daerah yang berarsir dengan kendala x1 4 merupakan himpunan kosong. Dengan demikian
tidak ada titik yang memenuhi semua kendala atau daerah fisibelnya tidak ada. Dikatakan bahwa
soalnya tidak fisibel, dan soal tidak memiliki penyelesaian.
38 Riset Operasi : Suatu Tinjauan Algoritmis

x2

A (0,3)

F
x1
B (1.5,0) D (3,0) E (4,0)

x1+ x2 = 3
C (0,-3) 2x1 - x2 = 3
x1 = 4

Gambar 2.10

2.4.5 Soal Redundant

Suatu soal dikatakan redundant (kelebihan) apabila terdapat satu/lebih kendala yang tidak
berpengaruh terhadap daerah fisibelnya. Artinya, apabila kendala tersebut dihilangkan, maka
daerah fisibelnya tidak berubah (dengan demikian titik optimalnya juga tidak berubah)

Contoh 2.14

Selesaikan contoh 2.1 e.

Penyelesaian

Hasil transformasi model dengan yi = ln (xi) adalah :

Minimumkan g y1, y2 2 y1 2 y2

Kendala 3 y1 2 y2 3

y1 4 y2 4

2 y1 3 y2 1

y1 , y2 0
PROGRAM LINIER : PENYELESAIAN GRAFIK 39

Grafik garis-garis kendala tampak pada gambar 2.11. Daerah berarsir merupakan daerah
fisibelnya. Tampak bahwa kendala 2y1 + 3y2 1 tidaklah berpengaruh terhadap daerah
fisibelnya.

y2

A (0,1.5)
G
E (0,1)

C (0,1/3) y1
B (1,0) F (4,0)
D (0.5,0)
y1 + 4y2 = 4
3y1+ 2y2 = 3 2y1 + 3y2 = 1

Gambar 2.11

Titik G merupakan perpotongan kendala y1 + 4y2 = 4 dengan 3y1 + 2y2 = 3. Penyelesaian kedua
9
persamaan menghasilkan titik G ( 25 , 10 ).

f (A) = f (0, 23 ) = 2(0) + 2( 23 ) = 3

9
f (G) = f ( 25 , 10 ) = 2( 25 ) + 2( 109 ) = 2.6

f (F) = f (4, 0) = 2(4) + 2(0) = 8

3
Nilai minimum terjadi pada titik A (0, 2 ). Jika dikembalikan ke soal aslinya (yi = ln (xi))
diperoleh persamaan :
3
3
0 = ln (x1). Maka x1 = e. 2 = ln (x2). Maka x2 = e 2

3 3 2
Jadi titik minimumnya adalah (e, e 2 ) dengan nilai minimum : f (x1, x2) = x12 x22 = e2 e 2

= e2 e3 = e 5
40 Riset Operasi : Suatu Tinjauan Algoritmis

SOAL-SOAL LATIHAN

Selesaikan soal no 1-9 berikut ini dengan metode grafik

1. Maksimumkan f = 6 x1 + 4 x2

Kendala :

x1 700

x2 900

3 x1 + x2 2400

x1 + 2 x2 1600

x1, x2 0

2. Maksimumkan f = x1 + x2

Kendala :

x1 + x2 1

5 x1 + 10 x2 50

x2 4

x1, x2 0

3. Maksimumkan f = 3 x1 + 2 x2

Kendala :

x1 + x2 1

-5 x1 + x2 0

- x1 + 5 x2 0

x1 + x2 6

x1, x2 0
PROGRAM LINIER : PENYELESAIAN GRAFIK 41

4. Maksimumkan f = -3 x1 + 4 x2

Kendala :

x1 - x2 0

- x1 + 2 x2 2

x1, x2 0

5. Maksimumkan f = 4 x1 + 3 x2

Kendala :

x1 + x2 10

2 x1 + 2 x2 40

x1, x2 0

6. Minimumkan f = 2.8 x1 + 3.25 x2

Kendala :

x1 8

x2 10

4 x1 + 3 x2 40

x1, x2 0

7. Maksimumkan f = 2 x1 + x2

Kendala :

11 x1 + 3 x2 33

8 x1 + 5 x2 40

7 x1 + 10 x2 70

x1, x2 0

8. Maksimumkan Z = x1 + 2 x2

Kendala :

-3 x1 + 3 x2 9
42 Riset Operasi : Suatu Tinjauan Algoritmis

x1 - x2 2

x1 + x2 6

x1 + 3 x2 6

x1, x2 0

9. Minimumkan Z = 3 x1 - x2

Kendala :

x1 - 2 x2 4

x1 + x2 8

-4 x1 + 2 x2 20

x2 4

x1 4

x1 8

x1, x2 0

10. Sebuah perusahaan ingin membeli paling banyak 1800 unit produk. Ada 2 jenis produk yang
dapat dibeli yaitu M1 dan M2. Produk M1 membutuhkan ruangan sebesar 2 m2, berharga
12 (ribu) dan akan memberikan keuntungan sebesar 3 (ribu) pada perusahaan. Produk M2
membutuhkan ruangan sebesar 3 m2, berharga 15 (ribu) dan akan memberikan keuntungan
sebesar 4 (ribu).

Misalkan dana yang tersedia adalah 15.000 (ribu) dan perusahaan tersebut hanya
mempunyai gudang seluas 3000 m2 untuk menyimpan kedua jenis produk tersebut.

Nyatakan masalah tersebut di atas sebagai masalah Program Linier dan selesaikan !

11. Selesaikan masalah berikut secara grafik !

a. Max Z = 12 x1 + 5 x2

Kendala :
PROGRAM LINIER : PENYELESAIAN GRAFIK 43

5 x1 + 3 x2 15

7 x1 + 2 x2 14

x1, x2 0

b. Max Z = 10 x1 + 2 x2

Kendala sama dengan pertanyaan (a)

c. Max Z = x1 + x2

Kendala sama dengan pertanyaan (a)

d. Max Z = 3 x1 + 5 x2

Kendala :

x1 - x2 4

3 x1 - 2 x2 3

6 x1 + 7 x2 42

x1, x2 sembarang (tidak harus 0)

12. Suatu perusahaan elektronik membuat 2 model radio. Kapasitas harian radio jenis pertama
adalah 60 buah, sedangkan kapasitas harian jenis kedua adalah 75 radio. Tiap radio jenis
pertama menggunakan 10 buah komponen elektronik, sedangkan model kedua
membutuhkan 8 buah komponen yang sama. Komponen yang dapat disediakan per harinya
adalah sebanyak 800 buah.

Keuntungan per unit model pertama dan kedua masing-masing adalah 30 dan 20 (ribu).
Tentukan produksi optimum harian untuk tiap model.

13. Dua buah produk yang dihasilkan oleh pabrik diproses melalui 3 mesin secara sekuensial.
Waktu yang dialokasikan bagi produk tersebut tiap harinya hanya 10 jam tiap mesin.. Waktu
produksi dan keuntungan per unit dinyatakan dalam tabel di bawah ini. Carilah campuran
kedua produk yang optimal !
44 Riset Operasi : Suatu Tinjauan Algoritmis

Waktu Produksi (Menit)

Produk Mesin - 1 Mesin - 2 Mesin - 3 Keuntungan

1 10 6 8 2000

2 5 20 15 3000

14. Sebuah perusahaan dapat mengiklankan produknya dengan menggunakan radio dan TV.
Dana yang tersedia untuk iklan adalah 1000 (ribu) per bulan. Biaya tiap menit iklan di radio
adalah 5 (ribu), sedangkan di TV adalah 100 (ribu). Perusahaan tersebut ingin
mengiklankan produknya di radio paling sedikit dua kali jumlah iklan di TV. Pengalaman
menunjukkan bahwa setiap menit iklan di TV akan meningkatkan penjualan 25 kali lebih
banyak dibandingkan setiap menit iklan di radio. Tentukan alokasi dana yang paling
optimum untuk iklan.

15. Sebuah perusahaan membuat 2 macam produk, yaitu A dan B. Volume penjualan produk
A paling sedikit 60 % dari total penjualan kedua produk. Kedua produk tersebut
menggunakan bahan baku yang sama. Persediaan bahan baku tersebut terbatas 100 kg per
harinya. Setiap unit produk A dan B masing-masing menggunakan bahan baku sebanyak 2
kg dan 4 kg. Harga penjualan produk A dan B masing-masing adalah 20 dan 40 (ribu)
per unitnya. Tentukan alokasi optimal bahan baku pada kedua produk !

16. Sebuah perusahaan memproduksi 2 jenis topi. Tiap topi jenis pertama membutuhkan waktu
pembuatan selama 2 kali waktu pembuatan topi jenis kedua. Jika hanya membuat topi jenis
kedua saja, perusahaan hanya mampu membuat 500 topi per harinya. Pasar penjualan topi
jenis pertama dan kedua masing-masing adalah 150 dan 200 topi.

Misalkan keuntungan penjualan topi jenis pertama adalah 8 (ribu) dan topi jenis kedua
adalah 5 (ribu). Tentukan jumlah topi tiap jenis yang harus dibuat untuk memaksimumkan
keuntungan !

17. Perhatikan masalah program linier berikut ini :

Max Z = 6 x1 - 2 x2

Kendala :

x1 - x2 1
PROGRAM LINIER : PENYELESAIAN GRAFIK 45

3 x1 - x2 6

x1, x2 0

Tunjukkan dengan grafik bahwa pada titik penyelesaian optimalnya, harga variabel x1 dan
x2 bisa dinaikkan sebesar-besarnya tanpa mengubah harga fungsi sasarannya.

18. Perhatikan masalah program linier berikut ini :

Max Z = 4 x1 + 4 x2

Kendala :

2 x1 + 7 x2 21

7 x1 + 2 x2 49

x1, x2 0

Carilah penyelesaian optimalnya dengan cara grafik. Berapa perubahan harga koefisien x2
titik optimalnya tetap ?

Selesaikan masalah program linier no 19 – 21 berikut ini dengan cara grafik

19. Max Z = 5 x1 + 6 x2

Kendala :

x1 - 2 x2 2

-2 x1 + 3 x2 2

x1, x2 sembarang

20. Max Z = 5 x1 + 2 x2

Kendala :

x1 + x2 10

x1 = 5

x1, x2 0

21. Minimumkan f = 30 x1 + 20 x2

Kendala :
46 Riset Operasi : Suatu Tinjauan Algoritmis

x1 + x2 8

6 x1 + 4 x2 12

5 x1 + 8 x2 = 20

x1, x2 0

22. Perhatikan masalah program linier berikut ini :

Max Z = 3 x1 + 2 x2

Kendala :

2 x1 + x2 2

3 x1 + 4 x2 12

x1, x2 0

Tunjukkan dengan grafik bahwa masalah tersebut tidak mempunyai titik ekstrim yang
fisibel. Apa yang dapat anda simpulkan tentang penyelesaian masalah tersebut ?

23. Perusahaan Astra membuat 2 jenis truk yaitu tipe A dan B. Tipe A adalah truk seberat 50 ton,
sedangkan tipe B adalah truk seberat 40 ton. Perusahaan mempunyai pasar yang tak terbatas
bagi kedua jenis truk tersebut, akan tetapi bagian produksi membatasi jumlah pembuatannya.

Tiap-tiap truk harus melewati 3 bagian. Jam kerja yang dibutuhkan untuk tiap truk dan total
jam kerja yang tersedia dinyatakan dalam tabel di bawah ini.
Jam Kerja tiap truk

Departemen A B jam kerja yg tersedia

Mesin 30 40 1000

Perakitan 20 11 275

Pengecatan 4 5 335

Keuntungan dari tiap truk tipe A adalah 2 juta dan dari tipe B adalah 2.6 juta. Bagaimana
produksi harus diatur agar memaksimumkan keuntungannya ?
Bab 3

PROGRAM LINIER : METODE SIMPLEKS

Pada bab 2 telah dipelajari tentang penyelesaian Program Linier dengan metode grafik. Masalah
utama dalam metode grafik adalah jumlah variabel penyusun yang dibatasi hanya 2 buah. Pada
bab ini akan dibahas tentang penyelesaian Program Linier menggunakan metode simpleks yang
merupakan perluasan metode grafik. Prinsip kerja metode simpleks dan grafik sebenarnya sama,
yaitu mencari nilai fungsi di titik ujung daerah fisibel. Hanya saja dalam metode simpleks,
pencarian iteratif dilakukan secara numerik sehingga terhindar dari keterbatasan jumlah variabel
seperti yang dialami oleh metode grafik.

3.1 Bentuk Standar Simpleks

Sebelum melakukan proses iterasi metode simpleks, masalah harus terlebih dahulu dibawa ke
bentuk standar metode simpleks. Bentuk standar metode simpleks adalah sebagai berikut :

Maksimumkan/Minimumkan f X c1x1 c2 x2 ... cn xn

Kendala :

a11 x1 a12 x2 ... a1n xn b1


a21 x1 a22 x2 ... a2 n xn b2
...
am1 x1 am 2 x2 ... amn xn bm

X x1, x2 , ... , xn 0 dan b b1, b2 , ... , bm 0

Dalam notasi vektor/matriks, bentuk standar simpleks dapat dinyatakan sebagai :

Maksimumkan/Minimumkan z = cx

Kendala Ax = b

x 0, b 0 dengan
48 Riset Operasi : Suatu Tinjauan Algoritmis

a11 a12 ... a1n x1 b1


a21 a22 ... a2 n x2 b2
A= ;x= ; b= ; c = c1, c2 , ... , cn
... ... ... ... ...
am1 am 2 amn xn bm

Perhatikan perbedaan bentuk standar program linier dan bentuk standar penyelesaian dengan
metode simpleks. Dalam bentuk standar metode simpleks, ada 2 hal yang harus diperhatikan :

1. Semua kendala harus berbentuk persamaan. Apabila kendala berbentuk pertidaksamaan,


maka harus diubah ke bentuk persamaan dengan penambahan variabel slack secukupnya
(lihat contoh 3.1). Koefisien variabel slack dalam fungsi sasaran = 0.

2. Semua ruas kanan kendala tidak boleh negatif. Apabila ada kendala yang ruas kanannya
negatif, maka harus diubah dulu menjadi tak negatif dengan mengalikan kendala tersebut
dengan (- 1).

Contoh 3.1

Jadikan bentuk berikut ini menjadi bentuk standar simpleks :

1. Maksimumkan z x1 x2

Kendala : x1 5x2 5

2 x1 x2 4 ; x1 , x2 0

2. Minimumkan z 2 x1 x2 4 x3

Kendala : 5 x1 2 x2 3x3 7

2 x1 2 x2 x3 8

x1 , x2 , x3 0

Penyelesaian

1. Karena kedua kendala berbentuk pertidaksamaan maka harus diubah ke bentuk persamaan
dengan menambahkan variabel slack.

Pada kendala pertama, karena kendala berbentuk , maka harus ditambah suatu variabel
baru x3 0 sehingga menjadi suatu persamaan. Didapat : x1 5x2 x3 5
PROGRAM LINIER : METODE SIMPLEKS 49

Secara analog, untuk menjadikan kendala kedua menjadi suatu persamaan, haruslah
ditambahkan suatu variabel baru x4 0. Didapat : 2 x1 x2 x4 4 . Perhatikan disini
bahwa variabel yang ditambahkan pada kendala kedua haruslah berbeda dengan variabel
yang ditambahkan pada kendala pertama karena secara umum, nilai kedua variabel slack (x3
dan x4) berbeda.

Pada awalnya, fungsi sasaran hanya terdiri dari 2 variabel x1 dan x2. Akan tetapi dengan
perubahan kendala menjadi suatu persamaan, muncul variabel baru x3 dan x4. Kedua variabel
tambahan itu harus juga muncul dalam fungsi sasaran. Akan tetapi agar fungsi sasaran tidak
berubah, maka koefisien kedua variabel slack pada fungsi sasaran dibuat = 0.

Jadi bentuk standar simpleks adalah :

Maksimumkan z x1 x2 0 x3 0 x4

Kendala : x1 5 x2 x3 5

2 x1 x2 x4 4

x1 , x2 , x3 , x4 0

2. Ada 2 hal yang harus diubah untuk menjadikan soal menjadi bentuk standar simpleks.
Pertama adalah merubah kendala sehingga ruas kanan tidak ada yang negatif. Berikutnya
adalah merubah kendala menjadi suatu persamaan.

Untuk merubah kendala pertama sehingga ruas kanan tidak negatif, kalikan kedua ruas
dengan (-1). Didapat : 5 x1 2 x2 3x3 7.

Langkah berikutnya adalah merubah pertidaksamaan menjadi suatu persamaan. Pada


kendala pertama, karena bentuk pertidaksamaan adalah , maka haruslah dikurangi dengan
x4. Didapat : 5 x1 2 x2 3x3 x4 7.

Pada kendala kedua, karena pertidaksamaan berbentuk , maka harus ditambah dengan x5
sehingga menjadi persamaan. Didapat 2 x1 2 x2 x3 x5 8.

Penambahan variabel baru x4 dan x5 harus juga dilakukan pada fungsi sasaran dengan
koefisien = 0. Maka bentuk standar simpleks adalah :

Minimumkan z 2 x1 x2 4 x3 0 x4 0 x5
50 Riset Operasi : Suatu Tinjauan Algoritmis

Kendala : 5 x1 2 x2 3x3 x4 7

2 x1 2 x2 x3 x5 8

x1 , x2 , x3 , x4 , x5 0

3.2 Metode Simpleks

Setelah menjadi bentuk standar simpleks, soal siap dimasukkan dalam tabel simpleks untuk
selanjutnya diselesaikan.. Bentuk tabel awal simpleks tampak pada tabel 3.1.

Koefisien fungsi sasaran Koef ruas kanan kendala


dalam bentuk standard = bi

cj c1 c2 ... cn
(cB)i (xB)i xj x1 x2 ... xn bi
Variabel basis
variabel basis

Matriks kendala dalam


Koefisien

bentuk standard
A = Amxn = [aij]

zj
cj - zj
Hasil kali titik koef variabel m Pengecekan variabel
basis dengan elemen kolom-j cB i
aij yg keluar dari basis
matriks A i 1
m
Nilai fungsi = cB i bi
i 1

Tabel 3.1

Beberapa bagian penting dalam tabel simpleks adalah sebagai berikut :

1. Koefisien-koefisien model program linier.

Koefisien fungsi sasaran c1, c2 , ... , cn diletakkan pada baris paling atas. Matriks kendala

A = [aij] diletakkan pada bagian tengah. Di sebelah kanannya adalah nilai ruas kanan
PROGRAM LINIER : METODE SIMPLEKS 51

t
kendala b1, b2 , ... , bm 0. Perhatikan bahwa semua koefisien ini haruslah dalam bentuk

standar simpleks

Pada setiap iterasi, nilai matriks A dan vektor b akan selalu direvisi.

2. Variabel basis

Diantara variabel-variabel yang ada, beberapa diantaranya merupakan variabel basis (syarat
menjadi variabel basis akan dijelaskan pada contoh 3.2). Variabel basis inilah yang nantinya
akan menentukan penyelesaian program linier. Revisi tabel pada tiap iterasi dilakukan
dengan cara merubah variabel basisnya. Variabel basis diletakkan pada kolom-2.
Koefisiennya diletakkan pada kolom paling kiri.

3. Perhitungan nilai fungsi dan pengecekan optimalitas

Baris paling bawah dipakai untuk menentukan apakah tabel yang dibuat sudah optimal. Jika
sudah optimal maka iterasi dihentikan. Akan tetapi jika belum optimal, maka tabel perlu
direvisi dengan cara merubah variabel basisnya. Nilai fungsi pada setiap iterasi tampak pada
sel di ujung kanan bawah.

Bagan alir keseluruhan proses penyelesaian program linier dengan metode simpleks tampak pada
gambar 3.1. Gambar 3.2 menunjukkan bagan alir revisi tabel apabila tabel belum optimal.

Proses simpleks diawali dengan menjadikan masalah ke bentuk standar simpleks (lihat bab 3.1).
Berikutnya diuji apakah kendala dalam bentuk standar tersebut sudah mengandung matriks
identitas. Apabila belum, maka perlu ditambahkan variabel semu (lihat contoh 3.3). Matriks
identitas ini diperlukan untuk menentukan variabel basis.
52 Riset Operasi : Suatu Tinjauan Algoritmis

Mulai

Soal Asli

Jadikan bentuk standard dengan


menambah variabel slack

Tambah variabel semu Ada


Soal Maks : Koef = - M tidak Im
Soal Min : Koef = M
ya
Tabel awal simpleks

Isi kolom :
xB dengan variabel basis
cB dengan koefisien variabel basis

m
Hitung zj = cB i
a ij
i 1

Hitung nilai fungsi


Hitung cj - zj

Soal Maks : Ada j shg cj-zj > 0


Revisi Tabel ya
Soal Min : Ada j shg cj-zj < 0

tidak

Soal tidak fisibel shg


Ada variabel semu
tidak memiliki ya
yg bernilai positip
penyelesaian optimal

tidak

Selesai Penyelesaian
Optimal

Gambar 3.1
PROGRAM LINIER : METODE SIMPLEKS 53

Mulai

Pilih variabel basis baru :


Soal Maks : pilih k sedemikian hingga ck-zk = Maks {cj-zj ; cj-zj > 0}
Soal Min : pilih k sedemikian hingga ck-zk = Min {cj-zj ; cj-zj < 0}
xk merupakan calon basis

Penyelesaian Ada
tidak
tak terbatas aik > 0
ya

bi
i ; a ik 0
a ik

Pilih r = Min { i}
Selesai (xB)r keluar dari basis
ark = elemen kunci

Ganti (xB)r dengan xk


Ganti (cB)r dengan ck

Perhitungan aij baru :


arj br
i r : aij* ; bi*
ark ark
arj aik br aik
i r : aij* aij ; bi* bi
ark ark

Gambar 3.2

Untuk memperjelas langkah-langkah dalam bagan alir gambar 3.1 – 3.2, perhatikan contoh 3.2

Contoh 3.2

Selesaikan contoh 2.2 dengan metode simpleks

Penyelesaian

Model dalam contoh 2.2 adalah :


54 Riset Operasi : Suatu Tinjauan Algoritmis

Maksimumkan f x1, x2 3 x1 2 x2 (dalam puluhan ribu)

Kendala x1 + 2 x2 20

3x1 + x2 20

x1, x2 0

Merubah soal ke bentuk standar simpleks

Karena kendala masih berbentuk pertidaksamaan, maka diubah dulu ke persamaan dengan
menambahkan variabel slack x3 pada kendala pertama dan x4 pada kendala kedua. Didapat
model dalam bentuk standar simpleks :

Maksimumkan f x1 ... x4 3 x1 2 x2 0 x3 0 x4

Kendala x1 + 2 x2 + x3 = 20

3x1 + x2 + x4 = 20

x1, x2, x3, x4 0

Penentuan penyelesaian fisibel awal

1 2 1 0
Dalam bentuk matriks, ruas kiri kendala adalah A . Matriks A memuat matriks
3 1 0 1

1 0
identitas I 2 yang terbentuk dari variabel x3 dan x4 sehingga pengisian tabel awal
0 1
simpleks dapat dimulai. Tabel awal simpleks yang berisi koefisien-koefisien terlihat pada tabel
3.2 a.

koefisien xi fungsi
sasaran
cj 3 2 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi
1 2 1 0 20
3 1 0 1 20
zj
cj - zj

Tabel 3.2 a
PROGRAM LINIER : METODE SIMPLEKS 55

Langkah berikutnya adalah menentukan variabel basis yang akan mengisi kolom (xB)i . Variabel
basis adalah variabel yang membentuk matriks identitas. Dari tabel tampak bahwa variabel yang
membentuk identitas adalah x3 dan x4 yang masing koefisiennya dalam fungsi sasaran adalah 0.
Koefisien variabel basis ini diletakkan pada kolom paling kiri (kolom (cB) i).
Koefisien variabel basis koefisien xi fungsi
pada fungsi sasaran cj 3 2 0 0 sasaran

(cB)i (xB)i xj x1 x2 x3 x4 bi
0 x3 1 2 1 0 20
0 x4 3 1 0 1 20

Variabel basis :
zj
membentuk matriks cj - zj
identitas di Aij
Tabel 3.2 b
Perhatikan letak baris variabel basis. Letak variabel basis harus sesuai dengan baris yang
memiliki elemen = 1 pada matriks identitas variabel yang bersangkutan. Sebagai contoh,
perhatikan kolom variabel x3. Elemen = 1 terletak pada baris pertama. Maka variabel basis x3
juga terletak pada baris pertama. Hal yang sama juga terjadi pada variabel x4 yang memiliki
elemen = 1 yang terletak pada baris kedua sehingga variabel basis x4 diletakkan pada baris
kedua. Setelah pengisian variabel basis, tabel penyelesaian fisibel awalnya tampak pada tabel 3.2
b

Pengujian Optimalitas

Mengikuti bagan alir gambar 3.1, langkah berikutnya adalah menghitung besaran zj, nilai fungsi
dan kemudian menghitung selisih cj – zj.
m
zj cB i
aij merupakan hasil kali titik antara koefisien variabel basis dengan elemen yang
i 1

terletak pada kolom ke-j matriks kendala A. Pada kolom-1, z1 = 0 (1) + 0 (3) = 0. Pada kolom-2,
z2 = 0 (2) + 0 (1) = 0. Pada kolom-3, z3 = 0 (1) + 0 (0) = 0, dan pada kolom-4, z4 = 0 (0) + 0 (1) =
0.

Perhitungan yang sama juga dilakukan untuk menghitung nilai fungsi. Nilai fungsi adalah hasil
kali titik antara koefisien variabel basis dengan kolom bi. Nilai fungsi = 0 (20) + 0 (20) = 0.
56 Riset Operasi : Suatu Tinjauan Algoritmis

Harga cj – zj merupakan selisih antara koefisien fungsi sasaran cj (terletak pada baris paling atas)
dengan nilai zj. Didapat c1 – z1 = 3 – 0 = 3. c2 – z2 = 2 – 0 = 2. c3 – z3 = 0 – 0 = 0 dan c4 – z4 =
0 – 0 = 0. Hasil pengisian nilai–nilai ini tampak pada tabel 3.2 c.

cj 3 2 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi
0 x3 1 2 1 0 20
0 x4 3 1 0 1 20
zj 0 0 0 0
0
cj - zj 3 2 0 0
Tabel 3.2 c

Langkah berikutnya adalah menguji apakah tabel 3.2 c sudah optimal. Karena fungsinya adalah
memaksimumkan, iterasi akan dihentikan jika cj – zj 0 untuk semua j. Dalam tabel 3.2 c
tampak bahwa c1 – z1 = 3 > 0 dan c2 – z2 = 2 > 0. Jadi tabel belum optimal sehingga perlu
direvisi. Bagan alir untuk merevisi tabel tampak dalam gambar 3.2

Revisi tabel

Revisi tabel simpleks dapat diilustrasikan sebagai seorang pelatih sepak bola yang akan
mengganti pemainnya yang kurang optimal penampilannya. Mula-mula ia akan memilih seorang
pemain cadangan yang menjadi calon pemain pengganti. Kemudian ia mengeluarkan seorang
pemain yang sedang bermain (yang menyebabkan timnya tidak bermain optimal) dan
menggantikannya dengan pemain pengganti yang ia siapkan.

Dalam tabel simpleks, pemain yang sedang bermain adalah variabel basis dan variabel bukan
basis merupakan pemain cadangannya. Dalam tabel 3.2 c, pemain yang sedang bermain adalah
x3 dan x4, dan pemain cadangannya adalah x1 dan x2. Ternyata tabel belum optimal (ditandai
dengan adanya elemen cj-zj yang positip untuk soal memaksimumkan).

Perhatikan bagan alir revisi tabel pada gambar 3.2. Pemain cadangan (variabel bukan basis) yang
akan bermain adalah elemen positip terbesar dalam kolom cj-zj. Elemen positip terbesarnya (= 3)
terletak pada kolom – 1 yang bersesuaian dengan kolom x1. Jadi xk = x1 menjadi calon basis. Ini
ditandai dengan kotak vertikal pada kolom – 1 tabel 3.2 d.
PROGRAM LINIER : METODE SIMPLEKS 57

Langkah berikutnya adalah menguji apakah ada elemen ai1 (elemen-elemen kendala pada kolom
pertama/berada pada kotak vertikal tabel 3.2 d) yang positip. Ternyata a11 = 1 > 0 dan a21 = 3 >
0.

Untuk elemen ai1 yang bernilai positip (dalam kasus ini kebetulan semua elemen ai1 bernilai
bi
positip), hitung i . i merupakan hasil bagi antara elemen ruas kanan kendala (kolom
aik
bi) dengan elemen matriks A pada kolom yang menjadi calon basis (yang ada dalam kotak
b1 20 b2 20
vertikal). 1 = 20 dan 2 .
a11 1 a21 3

Diantara nilai-nilai i yang ada, pilih yang paling minimum (tidak tergantung dari soal

memaksimumkan atau meminimumkan). Nilai i terkecil adalah 20/3 yang terletak pada baris
kendala kedua (pada basis x4). Jadi x4 merupakan basis yang akan dikeluarkan. Hal ini ditandai
dengan kotak horisontal pada baris variabel basis x4 tabel 3.2 d. Elemen yang terletak pada
perpotongan antara kotak horisontal dan vertikal (dalam iterasi ini adalah a21 = 3) disebut elemen
kunci
calon basis

cj 3 2 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi
0 x3 1 2 1 0 20 20/1 = 20
0 x4 3 1 0 1 20 20/3
keluar dari zj 0 0 0 0
basis 0
cj - zj 3 2 0 0

elemen kunci
Tabel 3.2 d

Iterasi – 2

Revisi tabel simpleks dilakukan dengan mengganti variabel basis x4 (koefisien di fungsi sasaran
= (cB)2 = 0) dengan x1 (koefisien di fungsi sasaran = (cB)1 = 3). Perubahan ini juga dilakukan
pada matriks A dan vektor b.
58 Riset Operasi : Suatu Tinjauan Algoritmis

Perhatikan perubahan aij baru dalam bagan alir gambar 3.2. Perubahan ini terdiri dari 2 bagian,
yaitu elemen pada baris dimana variabel basis keluar (elemen baris yang ada dalam kotak
horisontal) dan elemen yang tidak berada di kotak horisontal.

Untuk elemen yang berada di kotak horisontal, aij baru dibentuk dengan membagi elemen mula-
mula dengan elemen kunci (dalam iterasi pertama elemen kunci = a21 = 3). a21 baru = 3/3 = 1.
a22 baru = 1/3. a23 baru = 0/3 = 0. a24 baru = 1/3. b2 baru = 20/3.

Untuk elemen yang diluar kotak horisontal, perubahan aij dilakukan menurut persamaan :
arj aik
aij* aij . arj adalah elemen dalam kotak horisantal pada kolom-j. Sebaliknya, aik adalah
ark

elemen dalam kotak vertikal pada baris – i. ark adalah elemen kunci.

Sebagai contoh, perhatikan perhitungan untuk menentukan a12 baru. a12 lama = 2. a12 merupakan
elemen yang terletak pada baris-1 kolom-2. Pada baris – 1, elemen yang berada di kotak vertikal
adalah a11 = 1. Pada kolom-2, elemen yang berada di kotak horisontal adalah a22 = 1. Elemen
(1) (1) 5
kunci adalah a21 = 3. Jadi a12* 2 . Hasil perhitungan aij baru selengkapnya tampak
3 3
dalam tabel 3.3
aij /bi Elemen dalam Elemen dalam aij baru = aij*
lama kotak vertikal kotak horisontal
(1) (3)
a11 = 1 1 3 *
a11 1 0
3

(1) (1) 5
a12 = 2 1 1 a12* 2
3 3

(1) (0)
a13 = 1 1 0 *
a13 1 1
3

(1) (1) 1
a14 = 0 1 1 *
a14 0
3 3

(1) (20) 40
b1 = 20 1 20 b1* 20
3 3

Tabel 3.3

Tabel 3.4 a (bagian bawah) adalah hasil iterasi – 2 setelah pergantian aij dan bi. Untuk
memperjelas bagaimana perubahan basis terjadi, iterasi – 1 (penyelesaian fisibel awal = tabel 3.2
c) diletakkan di sebelah atasnya.
PROGRAM LINIER : METODE SIMPLEKS 59

cj 3 2 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi

(penyelesaian
fisibel awal)
iterasi - 1
0 x3 1 2 1 0 20 20/1 = 20
0 x4 3 1 0 1 20 20/3
zj 0 0 0 0
0
cj - z j 3 2 0 0
0 x3 0 5
1 1 40
iterasi - 2

3 3 3

3 x1 1 1
3 0 1
3
20
3

zj
cj - z j
Tabel 3.4 a

Langkah berikutnya adalah menguji apakah tabel 3.4 a sudah optimal. Seperti pada iterasi – 1,
langkah yang harus dilakukan adalah menghitung nilai zj, cj-zj dan nilai fungsi

cj 3 2 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi
(penyelesaian
fisibel awal)
iterasi - 1

0 x3 1 2 1 0 20 20/1 = 20
0 x4 3 1 0 1 20 20/3
zj 0 0 0 0
0
cj - z j 3 2 0 0
0 x3 0 5
1 1 40
iterasi - 2

3 3 3

3 x1 1 1
3 0 1
3
20
3

zj 3 1 0 1
20
cj - z j 0 1 0 -1
Tabel 3.4 b

z1 = 0 (0) + 3 (1) = 3. z2 = 0 ( 53 ) + 3 ( 13 ) = 1. z3 = 0 (1) + 3 (0) = 0 dan z4 = 0 ( 1


3 ) + 3 ( 13 ) =
1. Nilai fungsi = 0 (40/3) + 3 (20/3) = 20

c1-z1 = 3 – 3 = 0. c2-z2 = 2 – 1 = 1. c3–z3 = 0 – 0 = 0 dan c4-z4 = 0 – 1 = -1

Tabel 3.4 b menunjukkan kelanjutan tabel 3.4 a dengan mengisi nilai zj dan cj-zj. Tampak
bahwa c2-z2 = 1 > 0 sehingga tabel 3.4 b belum optimal dan perlu direvisi.

Satu-satunya cj-zj yang bernilai > 0 adalah c2-z2. Ini berarti bahwa x2 menjadi satu-satunya calon
basis yang baru.
60 Riset Operasi : Suatu Tinjauan Algoritmis

cj 3 2 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi

(penyelesaian
fisibel awal)
iterasi - 1
0 x3 1 2 1 0 20 20/1 = 20
0 x4 3 1 0 1 20 20/3
zj 0 0 0 0
0
cj - z j 3 2 0 0
0 x3 0 5
1 1 40
3 /3
40 5
= 8
iterasi - 2

3 3 3

3 x1 1 1
3 0 1
3
20
3 3 /3
20 1
= 20
zj 3 1 0 1
20
cj - z j 0 1 0 -1
Tabel 3.4 c

Berikutnya dilihat apakah ada elemen ai2 (elemen matriks A yang dikotak vertikal pada tabel 3.4
c) yang bernilai positip. Mengikuti bagan alir gambar 3.2, jika tidak ada ai2 yang positip berarti
soal memiliki penyelesaian tak terbatas. Ternyata a12 = 5/3 > 0 dan a22 = 1/3 > 0 sehingga proses
dilanjutkan dengan mencari variabel yang harus keluar dari basis. Caranya adalah dengan
menghitung nilai i yang merupakan hasil bagi bi dengan ai2

40 20
3 3
1 = = 8 dan 2 = = 20. Nilai terkecil adalah 1. Berarti variabel basis yang terletak
5 1
3 3

pada baris-1 (yaitu x3) harus keluar dari basis. Untuk menandai, beri kotak horisontal pada baris
pertama kendala. Elemen kunci untuk iterasi ini adalah a12 = 5/3

Perhitungan aij yang baru dilakukan sebagai berikut :

Elemen-elemen yang berada pada baris dimana variabel basis x3 keluar (kotak horisontal)
0 5
3
masing-masing dibagi dengan elemen kuncinya. Didapat a11 baru = = 0. a12 baru = = 1.
5 5
3 3

1 1
3
40
3
a13 baru = = 3/5. a14 baru = = -1/5. b2 baru = = 8.
5 5 5
3 3 3

Untuk elemen yang tidak berada pada kotak horisontal, aij baru adalah aij lama dikurangi dengan
hasil kali elemen yang berada pada kotak horisontal dan vertikal elemen aij yang dibagi dengan
elemen kunci (= 5/3). Selengkapnya dapat dilihat pada tabel 3.5
PROGRAM LINIER : METODE SIMPLEKS 61

aij /bi Elemen dalam Elemen dalam


lama kotak vertikal kotak horisontal
aij baru = aij*
* ( 13 ) (0)
a21 = 1 1/3 0 a21 1 1
5
3

* 1 ( 13 ) ( 5 3 )
a22 = 1/3 1/3 5/3 a22 0
3 5
3

* ( 13 ) (1) 1
a23 = 0 1/3 1 a23 0
5
3 5

* 1 ( 13 ) ( 1
3 ) 2
a24 = 1/3 1/3 -1/3 a24
3 5
3 5

20 ( 13 ) ( 40 3 )
b2 = 20/3 1/3 40/3 b2* 4
3 5
3

Tabel 3.5

Iterasi – 3

Tabel simpleks iterasi – 3 tampak pada bagian terbawah tabel 3.6. Dalam tabel tersebut variabel
basisnya adalah x2 (menggantikan x3 dalam iterasi – 2) dengan koefisien = 2, dan x1 yang
memiliki nilai koefisien basis = 3. Pengujian optimalitas kembali dilakukan dengan menghitung
zj, cj-zj dan nilai fungsi

z1 = 2 (0) + 3 (1) = 3. z2 = 2 (1) + 3 (0) = 2. z3 = 2 ( 53 ) + 3 ( 1


5 )= 3
5 dan z4 = 2 ( 1
5 )+3

( 25 ) = 45 . Nilai fungsi = 2 (8) + 3 (4) = 28

c1-z1 = 3 – 3 = 0. c2-z2 = 2 – 2 = 0. c3–z3 = 0 – 3


5 = 3
5 dan c4-z4 = 0 – 4
5 = 4
5 . Tampak
bahwa semua cj-zj 0 sehingga tabel sudah optimal.
62 Riset Operasi : Suatu Tinjauan Algoritmis

cj 3 2 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi

(penyelesaian
fisibel awal)
iterasi - 1 0 x3 1 2 1 0 20 20/1 = 20
0 x4 3 1 0 1 20 20/3
zj 0 0 0 0
0
cj - z j 3 2 0 0
0 x3 0 5
1 1 40
3 /3
40 5
= 8
iterasi - 2

3 3 3

3 x1 1 1
3 0 1
3
20
3 3 /3
20 1
= 20
zj 3 1 0 1
20
cj - z j 0 1 0 -1
2 x2 0 1 3
5
1
5 8
iterasi - 3

3 x1 1 0 1
5
2
5 4
zj 3 2 3
5
4
5
28
cj - z j 0 0 3
5
4
5

Tabel 3.6

Pada setiap iterasi, nilai variabel yang dicoba adalah variabel basis yang nilainya sama dengan
harga bi. Jadi pada titik optimal, variabelnya adalah x2 = 8 (= b1) dan x1 = 4 (= b2), dengan nilai
fungsi = 28 (elemen sel terbawah paling kanan).

x2

E (0, 20)

D (0,10) C (4,8)

B (20,0) x1
A (20/3, 0)
3x1+ x2 = 20 x1+ 2x2 = 20

Gambar 3.3

Perhatikan iterasi pada tabel 3.6. Iterasi dimulai dari x3 = 20 dan x4 = 20 (berarti x1 = 0 dan x2 = 0
karena x1 dan x2 tidak berada dalam variabel basis) dengan nilai fungsi = 0. Pada iterasi – 2, x3 =
PROGRAM LINIER : METODE SIMPLEKS 63

40/3 dan x1 = 20/3 (berarti x2 = 0 karena x2 bukan variabel basis) dengan nilai fungsi = 20. Iterasi
diakhiri pada iterasi – 3 dengan x1 = 4 dan x2 = 8 (nilai fungsi = 28). Tampak bahwa dalam setiap
iterasi, nilai fungsi selalu tidak pernah turun (karena soalnya adalah memaksimumkan).

Interpretasi geometris dari iterasi simpleks dapat dilihat pada gambar 3.3. Daerah fisibel adalah
segi-4 OACD. Iterasi simpleks diawali dengan menguji apakah titik O (0,0) merupakan titik
optimal. Ternyata titik O bukan titik optimal. Pada iterasi ke-2 diuji titik A (20/3, 0). Ternyata
titik A pun bukan titik optimal sehingga iterasi dilanjutkan dengan menguji titik C (4, 8) yang
ternyata merupakan titik optimal. Setelah memperoleh titik optimal, iterasi dihentikan tanpa
menguji titik D. Disini terlihat bahwa sebenarnya proses simpleks sama dengan penyelesaian
grafik, yaitu secara iteratif menguji titik ujung daerah fisibel yang merupakan titik optimal.
Bedanya, dalam penyelesaian grafik proses ini dilakukan dengan menentukan titik ujung daerah
fisibel secara analitik dan gambar. Sebaliknya dalam metode simpleks, proses tersebut dilakukan
secara numerik sehingga kendala keterbatasan jumlah variabel yang dialami oleh metode grafik
dapat ditanggulangi.

Contoh 3.3

Selesaikan contoh 2.4 !

Penyelesaian

Model dalam contoh 2.4 adalah :

Maksimumkan f x1, x2 , x3 5 x1 15 x2 30 x3

Kendala : 20 x1 + 50 x2 + 80 x3 4000

x1 0.5 (x1 + x2 + x3)

x3 0.2 (x1 + x2 + x3)

x1, x2 dan x3 0

Langkah pertama adalah menjadikan ke bentuk standar simpleks. Dengan sedikit


penyederhanaan, model mula-mula dapat dituliskan sebagai :

Maksimumkan f x1, x2 , x3 5 x1 15 x2 30 x3
64 Riset Operasi : Suatu Tinjauan Algoritmis

Kendala : 2 x1 + 5 x2 + 8 x3 400

- x1 + x2 + x3 0

- x1 - x2 + 4 x3 0

x1, x2 dan x3 0

Karena kendala masih berbentuk pertidaksamaan, maka harus ditambahkan variabel slack x4, x5
dan x6 pada kendala-1, 2 dan 3. Didapat :

Maksimumkan f x1 ... x6 5 x1 15 x2 30 x3 0 x4 0 x5 0 x6

Kendala : 2 x1 + 5 x2 + 8 x3 + x4 = 400

- x1 + x2 + x3 + x5 = 0

- x1 - x2 + 4 x3 + x6 = 0

x1 … x6 0

2 5 8 1 0 0
Matriks kendala = A = 1 1 1 0 1 0 . Tampak bahwa A sudah memiliki sub
1 1 4 0 0 1

matriks identitas pada variabel x4, x5 dan x6 sehingga proses simpleks bisa dimulai. Tabel 3.7a
merupakan tabel awal simpleks dengan memasukkan koefisien fungsi sasaran, kendala dan ruas
kanan kendalanya.

Tampak bahwa matriks identitas terbentuk dari 3 variabel x4, x5 dan x6. Ketiga variabel inilah
yang dipilih sebagai variabel basis. Perhatikan kembali urut-urutan penempatan ketiga variabel
tersebut dalam daftar variabel basis. Variabel basis ditempatkan pada baris dimana elemen dalam
suatu kolom = 1 (ingat bahwa jika suatu variabel merupakan variabel basis, maka hanya satu
elemen dalam kolom tersebut yang bernilai = 1 dan sisanya adalah elemen 0). sebagai contoh,
pada kolom variabel basis x5, elemen = 1 terletak pada baris kedua. Maka dalam daftar variabel
basisnya, x5 juga diletakkan pada baris kedua. Tabel 3.7 b menunjukkan penyelesaian fisibel
awal masalah semula. Tabel 3.7 b didapat dari tabel 3.7 a dengan menambahkan variabel basis
(dan koefisiennya), serta perhitungan zj dan cj-zj, serta nilai fungsi.
PROGRAM LINIER : METODE SIMPLEKS 65

cj 5 15 30 0 0 0
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
2 5 8 1 0 0 400
-1 1 1 0 1 0 0
-1 -1 4 0 0 1 0
zj
cj - zj
Tabel 3.7 a

cj 5 15 30 0 0 0
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
0 x4 2 5 8 1 0 0 400
0 x5 -1 1 1 0 1 0 0
0 x6 -1 -1 4 0 0 1 0
zj 0 0 0 0 0 0
0
cj - zj 5 15 30 0 0 0
Tabel 3.7 b

Dalam tabel 3.7 b tampak bahwa ada elemen cj - zj yang > 0. Karena soalnya memaksimumkan,
hal ini menunjukkan bahwa tabel belumlah optimal. cj-zj > 0 terbesar adalah 30 (kolom x3). Ini
berarti bahwa x3 merupakan calon basis (ditandai dengan kotak vertikal pada tabel 3.7 c).

cj 5 15 30 0 0 0
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
0 x4 2 5 8 1 0 0 400 50
0 x5 -1 1 1 0 1 0 0 0
0 x6 -1 -1 4 0 0 1 0 0
zj 0 0 0 0 0 0
0
cj - zj 5 15 30 0 0 0

Tabel 3.7 c

Untuk menentukan variabel basis lama yang akan keluar (untuk digantikan x3), maka dihitung
elemen kolom . 1 = 400/8 = 50. 2 = 0/1 = 0 dan 3 = 0/4 = 0. terkecil terdapat pada 2 dan
3. Pilih salah satunya secara sembarang, misal 2. Maka berarti variabel x5 akan keluar dari basis
66 Riset Operasi : Suatu Tinjauan Algoritmis

pada iterasi berikutnya (ditandai dengan kotak horisontal). Elemen kunci adalah perpotongan
kotak vertikal dan horisontal, yaitu a23 = 1.

Iterasi-2

Perhitungan aij (dan bi) baru dibagi menjadi 2 bagian yaitu elemen yang berada pada baris
dimana variabel basisnya keluar (elemen yang berada di kotak horisontal), dan elemen aij (dan bi)
yang tidak berada pada kotak horisontal.

Untuk elemen yang berada di kotak horisontal, masing-masing elemen tersebut dibagi dengan
elemen kunci. Karena elemen kunci = a23 = 1, maka pembagian ini tidak menghasilkan efek.

Untuk elemen yang tidak berada pada kotak horisontal, perhitungan aij baru didapatkan dari
pengurangan aij lama dengan perkalian elemen di kotak vertikal baris-i dan kotak horisontal
kolom-j, dibagi dengan elemen kunci. Selengkapnya dapat dilihat pada tabel 3.8

aij /bi Elemen dalam Elemen dalam


lama kotak vertikal kotak horisontal
aij baru = aij*
* (8) ( 1)
a11 = 2 8 -1 a11 2 10
1

(8) (1)
a12 = 5 8 1 a12* 5 3
1

(8) (1)
a13 = 8 8 1 a13* 8 0
1

* (8) (0)
a14 = 1 8 0 a14 1 1
1

(8) (1)
a15 = 0 8 1 a15* 0 8
1

* (8) (0)
a16 = 0 8 0 a16 0 0
1

(8) (0)
b1 = 400 8 0 b1* 400 400
1

* (4) ( 1)
a31 = -1 4 -1 a31 1 3
1

* (4) (1)
a32 = -1 4 1 a32 1 5
1
PROGRAM LINIER : METODE SIMPLEKS 67

* (4) (1)
a33 = 4 4 1 a33 4 0
1

* (4) (0)
a34 = 0 4 0 a34 0 0
1

* (4) (1)
a35 = 0 4 1 a35 0 4
1

* (4) (0)
a36 = 1 4 0 a36 1 1
1

(4) (0)
b3 = 0 4 0 b3* 0 0
1

Tabel 3.8

Tabel 3.9 menunjukkan iterasi – 2 setelah merubah aij dan bi lama. Perhitungan cj-zj
menunjukkan bahwa tabel 3.9 masih belum optimal juga karena c1-z1 = 35 > 0. Variabel x1
menjadi calon basis berikutnya. Untuk menentukan variabel yang keluar dari basis, dihitung .
Perhatikan bahwa 2 tidak dihitung karena a21 0 (ingat bahwa hanya dihitung untuk aik > 0).
1 = 400/10 = 40 dan 3 = 0/3 = 0. minimum adalah 3. Maka variabel basis yang terletak pada
baris ketiga (= x6) harus keluar dari basis. Elemen kunci adalah a31 = 3.

cj 5 15 30 0 0 0
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
0 x4 10 -3 0 1 -8 0 400 40
30 x3 -1 1 1 0 1 0 0 -
0 x6 3 -5 0 0 -4 1 0 0
zj -30 30 30 0 30 0
0
cj - zj 35 -15 0 0 -30 0
Tabel 3.9

Iterasi-3

Pembuatan tabel iterasi-3 sama dengan iterasi kedua. Mula-mula dihitung matriks A dan b yang
baru. Perhitungan ini dibagi menjadi 2 macam yaitu pada elemen-elemen baris-3 (yang dikotak
horisontal) dan yang diluar baris-3.

Pada perhitungan A (dan b) baris ke-3, semua elemennya dibagi dengan elemen kunci (= a31 =
3). Perhitungan semua elemen lain diluar baris-3 dilakukan dengan melibatkan elemen yang
68 Riset Operasi : Suatu Tinjauan Algoritmis

terletak di baris-3 (kotak horisontal) dan kolom-1 (kotak vertikal), seperti pada tabel 3.8. Hasil
iterasi-3 tampak pada tabel 3.10. Untuk mengurangi kesalahan komputasi, maka semua
perhitungan masih dilakukan dalam bentuk pecahan. Cara ini juga memberikan keuntungan
dalam hal pengecekan hasil perhitungan manual. Perhatikan bahwa dalam satu tabel, umumnya
semua hasil yang berbentuk pecahan akan memiliki penyebut yang sama.

cj 5 15 30 0 0 0
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
0 x4 0 41
3 0 1 16
3
10
3 400 1200
41

30 x3 0 2
3 1 0 1
3
1
3 0 -
5 x1 1 5
3 0 0 4
3
1
3 0 -
zj 5 85
3 30 0 50
3
35
3
0
cj - z j 0 130
3 0 0 50
3
35
3

Tabel 3.10

Tampak bahwa tabel 3.10 pun belum optimal karena masih ada 2 elemen pada baris cj-zj yang
bernilai positip. Elemen positip terbesar (130/3) terletak pada kolom ke-2, Ini berarti bahwa
variabel x2 akan masuk menjadi basis. Perhitungan menunjukkan bahwa satu-satunya calon
variabel yang keluar dari basis adalah variabel pada baris pertama (= x4). Kedua nilai yang lain
tidak dihitung karena elemen kolom-2 yang bersesuaian (kotak vertikal) bernilai negatif. Elemen
kunci adalah a12 = 41/3.

Iterasi-4

Tabel 3.11 merupakan perbaikan tabel 3.10. Tampak bahwa semua elemen cj-zj pada tabel 3.11

tidak ada yang positip sehingga tabel sudah optimal dengan nilai maksimum = 52000 . Pada
41

titik optimal ini, nilai variabelnya ada pada kolom bi. Jadi x2 = 1200 , x3 = 800 , x1 =
41 41
2000 . Karena x4, x5 dan x6 bukan merupakan variabel basis, maka nilainya = 0. Jika
41

dikembalikan ke soal aslinya, maka titik optimalnya adalah x1 = 2000 , x2 = 1200 dan x3
41 41

= 800 . Nilai maksimum = z = 52000


41 41
PROGRAM LINIER : METODE SIMPLEKS 69

cj 5 15 30 0 0 0
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
15 x2 0 1 0 3
41
16
41
10
41
1200
41

30 x3 0 0 1 2
41
3
41
7
41
800
41

5 x1 1 0 0 5
41
28
41
3
41
2000
41

zj 5 15 30 130
41
10
41
45
41 52.000
cj - zj
41
0 0 0 130
41
10
41
45
41

Tabel 3.11

Tabel 3.12 merupakan ringkasan semua tabel iterasi yang dilakukan. Perhatikan bagaimana
pergantian basis dilakukan.

Contoh 3.3 diatas menunjukkan kelebihan metode simpleks dibandingkan dengan metode grafik.
Dengan 3 variabel penyusun, metode grafik tidak mampu menyelesaikannya. Akan tetapi
metode simpleks mampu memberikan penyelesaian optimal. Perhitungan tabel tampak rumit jika
dihitung manual. Akan tetapi jika perhitungan dilakukan dengan program komputer, masalah
kerumitan perhitungan dapat diatasi.

Tabel 3.12 menunjukkan keseluruhan iterasi yang dilakukan. Perhatikan perubahan variabel
basis dalam tiap iterasi. Tabel yang baru selalu lebih optimal dari tabel pada iterasi sebelumnya.
Untuk soal memaksimumkan, tabel yang baru tidak akan mempunyai nilai fungsi yang lebih
kecil dari tabel sebelumnya.
70 Riset Operasi : Suatu Tinjauan Algoritmis

cj 5 15 30 0 0 0
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
0 x4 2 5 8 1 0 0 400 50
0 x5 -1 1 1 0 1 0 0 0
0 x6 -1 -1 4 0 0 1 0 0
zj 0 0 0 0 0 0
0
cj - zj 5 15 30 0 0 0
0 x4 10 -3 0 1 -8 0 400 40
30 x3 -1 1 1 0 1 0 0 -
0 x6 3 -5 0 0 -4 1 0 0
zj -30 30 30 0 30 0
0
cj - zj 35 -15 0 0 -30 0
0 x4 0 41
3 0 1 16
3
10
3 400 1200
41

30 x3 0 2
3 1 0 1
3
1
3 0 -
5 x1 1 5
3 0 0 4
3
1
3 0 -
zj 5 85
3 30 0 50
3
35
3
0
cj - zj 0 130
3 0 0 50
3
35
3

15 x2 0 1 0 3
41
16
41
10
41
1200
41

30 x3 0 0 1 2
41
3
41
7
41
800
41

5 x1 1 0 0 5
41
28
41
3
41
2000
41

zj 5 15 30 130
41
10
41
45
41 52.000
cj - zj
41
0 0 0 130
41
10
41
45
41

Tabel 3.12

Contoh 3.4

Minimumkan f x1, x2 12 x1 5 x2

Kendala 4x1 + 2x2 80

2x1 + 3x2 90

x1, x2 0
PROGRAM LINIER : METODE SIMPLEKS 71

Penyelesaian

Mula-mula, jadikan masalah menjadi bentuk standar simpleks. Ruas kanan kendala sudah tidak
negatif. Maka yang perlu dilakukan adalah merubah kendala menjadi suatu persamaan. Karena
pertidaksamaan berbentuk , maka perlu kendala-1 dikurangi x3 dan kendala-2 dikurangi
dengan x4. Diperoleh :

Minimumkan f x1 ... x4 12 x1 5 x2 0 x3 0 x4

Kendala 4x1 + 2x2 - x3 = 80

2x1 + 3x2 - x4 = 90

x1, x2, x3, x4 0

4 2 1 0
Matriks kendala adalah A = . Dalam A tidak terdapat sub matriks identitas,
2 3 0 1
padahal matriks identitas ini diperlukan sebagai pembentuk variabel basis awal. Untuk itu perlu
ditambahkan variabel semu (x5 dan x6) lagi agar terbentuk identitas. Dengan penambahan ini,
kendala menjadi

4x1 + 2x2 - x3 + x5 = 80

2x1 + 3x2 - x4 + x6 = 90

x1, x2, x3, x4, x5, x6 0

4 2 1 0 1 0
Matriks kendala menjadi A = . A sudah memuat matriks identitas.
2 3 0 1 0 1

Perhatikan kendala sebelum dan sesudah ditambahi variabel semu x5 dan x6. Agar keduanya
sama (memang sebenarnya kendala-kendala sebelum dan setelah ditambah x5 dan x6 sama),
maka x5 dan x6 haruslah bernilai 0. Dengan kata lain, pada penyelesaian optimalnya, x5 dan x6
tidak boleh menjadi variabel basis. Variabel x5 dan x6 hanyalah berfungsi sebagai katalisator agar
proses simpleks bisa berjalan. Padahal pada penyelesaian fisibel awal, variabel x5 dan x6 inilah
yang membentuk matriks identitas sehingga menjadi variabel basis. Agar supaya x5 dan x6 cepat-
cepat keluar dari basis, maka pada fungsi sasaran diberi koefisien = M yang berupa suatu
bilangan positip besar (koefisien akan menjadi = - M jika soalnya memaksimumkan. Pembaca
72 Riset Operasi : Suatu Tinjauan Algoritmis

harap melihat bagan alir pada gambar 3.1). Jadi model yang sudah siap dimasukkan dalam tabel
simpleks adalah :

Minimumkan f x1 ... x6 12 x1 5 x2 0 x3 0 x4 M x5 M x6

Kendala : 4x1 + 2x2 - x3 + x5 = 80

2x1 + 3x2 - x4 + x6 = 90

x1, x2, x3, x4, x5, x6 0

Tabel awal simpleks dapat dilihat pada tabel 3.13. Variabel basis mula-mula adalah x5 dan x6
(yang memiliki koefisien = M). c1-z1 = 12-6M dan c2-z2 = 5-5M bernilai negatif (ingat bahwa M
adalah bilangan positip yang sangat besar sehingga bilangan apapun yang dikurangi dengan M
akan menghasilkan nilai yang negatif). Karena soalnya meminimumkan, maka berarti tabel 3.13
belum optimal.

Diantara kuantitas cj-zj < 0, yang bernilai paling minimum adalah 12-6M (bukan 5-5M). Ingat
bahwa M adalah bilangan positip yang sangat besar, sehingga pengurangan dengan kuantitas
yang memiliki koefisien M yang lebih besar akan menghasilkan nilai yang lebih negatif. Maka x1
menjadi calon basis. 1 = 80/4 = 20 dan 2 = 90/2 = 45. Karena 1 adalah nilai yang paling
minimum, maka variabel basis di baris-1 (= x5) harus keluar dari basis. Elemen kunci = a11 = 4

cj 12 5 0 0 M M
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
M x5 4 2 -1 0 1 0 80 20
M x6 2 3 0 -1 0 1 90 45
zj 6M 5M -M -M M M
170 M
cj - zj 12-6M 5-5M M M 0 0
Tabel 3.13

Tabel 3.14 menunjukkan revisi tabel 3.13, dengan perhitungan yang sama seperti contoh-contoh
sebelumnya. Tabel 3.14 pun belum optimal karena c2-z2 dan c3-z3 masih bernilai negatif. Nilai
minimum terjadi pada c2-z2 sehingga x2 menjadi calon basis. Dengan melihat perhitungan ,
maka variabel yang harus keluar dari basis adalah x6.
PROGRAM LINIER : METODE SIMPLEKS 73

cj 12 5 0 0 M M
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
12 x1 1 1
2
1
4 0 1
4 0 20 40
M x6 0 2 1
2 -1 1
2 1 50 25
zj 12 2M+6 M 6
2 -M M 6
2 M 50 M +
cj - z j 0 -2M-1 M 6
M 3M 6
0 240
2 2

Tabel 3.14

Disini tampak bagaimana peranan koefisien M pada variabel semu. Dengan 2 kali iterasi maka
semua variabel semu sudah keluar dari basis. Namun ada kalanya hingga penyelesaian optimal,
variabel semu masih merupakan variabel basis. Dalam kasus ini berarti soal tidak fisibel (lihat
bagan alir gambar 3.1).

Tabel 3.15 merupakan revisi tabel 3.14. Tabel 3.15 pun belum optimal. Variabel basis x1 perlu
diganti dengan x4. Hasil revisi tabel 3.15 tampak pada tabel 3.16 yang sudah merupakan tabel
optimal.

cj 12 5 0 0 M M
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
12 x1 1 0 3
8
1
4
3
8
1
4
15
2 30
5 x2 0 1 1
4
1
2
1
4
1
2 25 -
zj 12 5 13
4
1
2
13
4
1
2
215
cj - zj 0 0 13
4
1
2
4 M 13
4
2M 1
2

Tabel 3.15

cj 12 5 0 0 M M
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
0 x4 4 0 3
2 1 3
2 -1 30
5 x2 2 -1 1
2 0 1
2 0 40
zj 10 -5 5
2 0 5
2 0
200
cj - zj 2 10 5
2 0 2M 5
2 M

Tabel 3.16
74 Riset Operasi : Suatu Tinjauan Algoritmis

cj 12 5 0 0 M M
(cB)i (x ) xj x1 x2 x3 x4 x5 x6 bi
B i
M x5 4 2 -1 0 1 0 80 20
M x6 2 3 0 -1 0 1 90 45
zj 6M 5M -M -M M M
170 M
cj - zj 12-6M 5-5M M M 0 0
12 x1 1 1
2
1
4 0 1
4 0 20 40
M x6 0 2 1
2 -1 1
2 1 50 25
zj 12 2M+6 M 6
2 -M M 6
2 M 50 M +
c j - zj 0 -2M-1 M 6
M 3M 6
0 240
2 2

12 x1 1 0 3
8
1
4
3
8
1
4
15
2 30
5 x2 0 1 1
4
1
2
1
4
1
2 25 -
zj 12 5 13
4
1
2
13
4
1
2
215
c j - zj 0 0 13
4
1
2
4 M 13
4
2M 1
2

0 x4 4 0 3
2 1 3
2 -1 30
5 x2 2 -1 1
2 0 1
2 0 40
zj 10 -5 5
2 0 5
2 0
200
c j - zj 2 10 5
2 0 2M 5
2 M
Tabel 3.17

Pada titik optimalnya, x1 = 0 (karena bukan merupakan variabel basis), x2 = 40, x3 = 0 (bukan
basis), x4 = 30, x5 = x6 = 0. Karena variabel semu x5 dan x6 bukan merupakan variabel basis,
maka soal memiliki penyelesaian optimal. Jika dikembalikan ke soal aslinya, maka titik optimal
adalah (x1, x2) = (0, 40) dengan nilai minimum = 200.

Tabel 3.17 merupakan ringkasan dari semua tabel iterasi yang dilakukan hingga mencapai titik
optimal. Tampak bahwa dalam setiap iterasi, nilai fungsi selalu turun (karena fungsinya adalah
meminimumkan)

Contoh 3.5

Minimumkan 4x + 6y + z

Kendala : x + 2y 10

y + 4z 20
PROGRAM LINIER : METODE SIMPLEKS 75

3x + z 40

dengan x, y, dan z 0

Penyelesaian

Untuk menyelesaikan dengan metode simpleks, model terlebih dahulu dijadikan ke bentuk
standar. Karena kendala – 1 berbentuk , maka harus ditambah dengan variabel x4. Karena
kendala –2 dan 3 masing-masing berbentuk , maka harus dikurangi dengan variabel baru x5
dan x6. Koefisien x4, x5 dan x6 di fungsi sasaran = 0. Didapat :

Minimumkan 4x + 6y + z + 0 x4 + 0 x5 + 0 x6

Kendala :

x + 2y + x4 = 10

y + 4z - x5 = 20

3x + z - x6 = 40

x, y, z, x4, x5, x6 0

Karena matriks kendala belum membentuk sub matriks identitas, maka pada baris/kendala kedua
dan ketiga harus ditambah variabel semu x7 dan x8. Karena soalnya meminimumkan, maka
koefisien x7 dan x8 pada fungsi sasaran = M (suatu bilangan positip besar). Didapatkan bentuk
yang siap dimasukkan dalam tabel awal simpleks

Minimumkan 4x + 6y + z + 0 x4 + 0 x5 + 0 x6 + M x7 + M x8

Kendala :

x + 2y + x4 = 10

y + 4z - x5 + x7 = 20

3x + z - x6 + x8 = 40

x, y, z, x4, x5, x6, x7, x8 0

Hasil iterasi simpleks tampak pada tabel 3.18. Perhatikan cara penentuan variabel yang keluar
dan masuk dalam basis pada tiap iterasi (ditandai dengan kotak horisontal dan vertikal). Juga
perhatikan perubahan harga aij dan bi setelah dilakukan perubahan basis.
76 Riset Operasi : Suatu Tinjauan Algoritmis

cj 4 6 1 0 0 0 M M
(cB)i (xB)i xj x y z x4 x5 x6 x7 x8 bi
0 x4 1 2 0 1 0 0 0 0 10 -
M x7 0 1 4 0 -1 0 1 0 20 5
M x8 3 0 1 0 0 -1 0 1 40 40
zj 3M M 5M 0 -M -M M M
60 M
cj - zj 4 - 3M 6 - M 1 - 5M 0 M M 0 0
0 x4 1 2 0 1 0 0 0 0 10 10
1 z 0 1
4 1 0 1
4 0 1
4 0 5 -
M x8 3 1
4 0 0 1
4 -1 1
4 1 35 35
3

zj 3M M 1
4 1 0 M 1
4 -M M 1
4 M 35 M +
cj - zj -3M+4 M 23
0 0 M 1
M 5M 1
0 5
4 4 4

4 x 1 2 0 1 0 0 0 0 10 -
1 z 0 1
4 1 0 1
4 0 1
4 0 5 -
M x8 0 25
4 0 -3 1
4 -1 1
4 1 5 20
zj 4 25 M 33
4 1 -3M+4 M 1
4 -M M 1
4 M
cj 4 6 9 1 0 0 1 0 M1 M 5M+45
cj - z j 0 25 M
0 3M-4 M
M 5M
0
(cB)i x x y
4
z x4
4
x5 x6
4
x7 x8 bi
(xB)i j
4 x 1 2 0 1 0 0 0 0 10 10
1 z 0 -6 1 -3 0 -1 0 1 10 -
0 x5 0 - 25 0 -12 1 -4 -1 4 20 -
zj 4 2 1 1 0 -1 0 1
50
cj - zj 0 4 0 -1 0 1 M M-1
0 x4 1 2 0 1 0 0 0 0 10
1 z 3 0 1 0 0 -1 0 1 40
0 x5 12 -1 0 0 1 -4 -1 4 140
zj 3 0 1 0 0 -1 0 1
40
cj - zj 1 6 0 0 0 1 M M-1
Tabel 3.18

Semua variabel semu (x7 dan x8) tidak muncul sebagai variabel basis di tabel optimalnya.
Berarti soal tersebut memiliki penyelesaian optimal. Penyelesaian optimalnya x = 0, y = 0, z =
40, x4 = 10, x5 = 140, x6 = 0, x7 = 0, x8 = 0. Jika dikembalikan ke soal aslinya, maka
penyelesaian masalah mula-mula adalah x = 0, y = 0, z = 40
PROGRAM LINIER : METODE SIMPLEKS 77

Contoh 3.6

Maksimumkan f = 30 x1 + 20 x2

Kendala : x1 + x2 8

6 x1 + 4 x2 12

5 x1 + 8 x2 = 20

x1, x2 0

Penyelesaian

Untuk menjadikan bentuk standar, maka kendala – 1 dan –2 harus dijadikan persamaan. Untuk
itu ditambahkan variabel baru x3 dan x4. Didapat model :

Maksimumkan f = 30 x1 + 20 x2 + 0 x3 + 0 x4

Kendala : x1 + x2 + x3 = 8

6 x1 + 4 x2 - x4 = 12

5 x1 + 8 x2 = 20

x1, x2, x3, x4 0

Dalam kendalanya belum terbentuk matriks identitas. Untuk itu ditambahkan variabel semu pada
kendala ke-2 dan ke-3. Perhatikan bagaimana variabel semu ditambahkan. Penambahan variabel
semu harus dilakukan secukupnya saja agar terbentuk matriks identitas. Jadi tidak perlu semua
kendala ditambah variabel semu. Didapat :

Maksimumkan f = 30 x1 + 20 x2 + 0 x3 + 0 x4 - M x5 - M x6

Kendala :

x1 + x2 + x3 = 8

6 x1 + 4 x2 - x4 + x6 = 12

5 x1 + 8 x2 + x5 = 20

x1, x2, x3, x4, x5, x6 0


78 Riset Operasi : Suatu Tinjauan Algoritmis

cj 30 20 0 0 -M -M
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
0 x3 1 1 1 0 0 0 8 8
-M x6 6 4 0 -1 0 1 12 3
-M x5 5 8 0 0 1 0 20 5
2

zj -11M -12M 0 M -M -M
-32M
cj - zj 11M+30 12M+20 0 -M 0 0
0 x3 3
8 0 1 0 1
8
0 44
8
44
3

-M x6 28
8 0 0 -1 4
8 1 2 16
28

x2
5
20 8 1 0 0 1
8 0 20
8 4
zj 28 M 100
8 20 0 -M 4 M 20
8 -M -
cj - z j 28 M 140
0 0 M 12 M 20
0 2M+50
8 8

0 x3 0 0 1 3
28
2
28
3
28
148
28
148
3

30 x1 1 0 0 8
28
4
28
8
28
16
28 -
20 x2 0 1 0 5
28
6
28
5
28
60
28 12
zj 30 20 0 140
28 0 140
28
60
cj - z j 0 0 0 140
28 -M 28 M 140
28

0 x3 0 3
5 1 0 1
5 0 4
30 x1 1 8
5 0 0 1
5 0 4
0 x4 0 28
5 0 1 6
5 -1 12
zj 30 48 0 0 6 0
120
cj - z j 0 -28 0 0 -M-6 -M

Tabel 3.19

Tabel 3.19 merupakan hasil iterasi simpleks. Pada tabel terakhir, variabel semu (x5 dan x6) tidak
muncul sebagai basis. Ini berarti penyelesaian optimal tercapai. Penyelesaian optimal : x1 = 4,
x2 = 0, x3 = 4, x4 = 12, x5 = 0, x6 = 0. Jika dikembalikan ke soal aslinya, maka penyelesaian
optimalnya adalah x1 = 4, x2 = 0 dengan nilai maksimum fungsi = 120.
PROGRAM LINIER : METODE SIMPLEKS 79

3.3 Kejadian Khusus

Seperti pada penyelesaian dengan metode grafik (lihat bab 2.3), dalam bab ini akan dibahas
bagaimana kejadian khusus tersebut dideteksi dengan tabel simpleks.

3.3.1 Alternatif Penyelesaian

Alternatif penyelesaian berarti adanya 2 penyelesaian atau lebih yang menghasilkan nilai optimal
yang sama. Adanya alternatif penyelesaian dalam metode simpleks dapat dilihat pada tabel
optimalnya. Perhatikan elemen pada baris cj – zj yang bernilai 0 pada tabel optimal. Nilai 0 pada
baris cj – zj selalu bersesuaian dengan variabel basis. Jika ck – zk = 0 dalam tabel optimal,
sedangkan variabel pada kolom tersebut (= xk) bukanlah variabel basis, maka hal ini
menunjukkan adanya alternatif penyelesaian. Alternatif penyelesaian didapat dengan “memaksa”
variabel xk menjadi basis (meskipun sebenarnya tabelnya sudah optimal). Untuk lebih jelasnya,
perhatikan contoh 3.7 berikut ini

Contoh 3.7

Selesaikan soal berikut ini dengan metode simpleks !

Maksimumkan f x1, x2 3 x1 x2

Kendala x1 + 2 x2 20

3x1 + x2 20

x1, x2 0

Penyelesaian

Bentuk standar masalah tersebut adalah sebagai berikut :

Maksimumkan f x1 ... x4 3 x1 x2 0 x3 0 x4

Kendala x1 + 2 x2 + x3 = 20

3x1 + x2 + x4 = 20

x1, x2, x3, x4 0


80 Riset Operasi : Suatu Tinjauan Algoritmis

Tabel iterasi simpleks tampak pada tabel 3.20. Tampak bahwa pada iterasi kedua, tabel tersebut
20
sudah optimal dengan penyelesaian optimal x1 = 3 dan x2 = 0 (karena bukan variabel basis
pada tabel optimal).

cj 3 1 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi
0 x3 1 2 1 0 20 20
0 x4 3 1 0 1 20 20/3
zj 0 0 0 0
0
cj - z j 3 1 0 0
0 x3 0 5
3 1 1
3
40
3

3 x1 1 1
3 0 1
3
20
3

zj 3 1 0 1
20
cj - z j 0 0 0 -1

bukan basis tapi bernilai nol


Tabel 3.20

Tampak bahwa pada tabel optimalnya, c2 – z2 = 0 meskipun x2 bukan variabel basis. Ini
menunjukkan adanya alternatif penyelesaian yang bisa diperoleh dengan memaksa x2 untuk
menjadi basis.

Tabel 3.21 bagian bawah menunjukkan perubahan tabel 3.20 jika x2 dipaksa menjadi basis.

cj 3 1 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi
0 x3 0 5
3 1 1
3
40
3 8
3 x1 1 1
3 0 1
3
20
3 20
zj 3 1 0 1
20
cj - z j 0 0 0 -1
1 x2 0 1 3
5
1
5 8
3 x1 1 0 1
5
2
5 4
zj 3 1 0 1
20
cj - z j 0 0 0 -1
Tabel 3.21
PROGRAM LINIER : METODE SIMPLEKS 81

Tampak bahwa tabel sudah optimal dengan penyelesaian optimal x1 = 4 dan x2 = 8. Perhatikan
bahwa pada tabel 3.21 juga mengandung alternatif penyelesaian karena x3 bukan merupakan
variabel basis, tapi c3 – z3 = 0. Jika kemudian tabel direvisi lagi dengan cara memaksakan x3
untuk menjadi basis, maka akan diperoleh kembali tabel optimal pada tabel 3.20

3.3.2 Penyelesaian Tak Terbatas

Penyelesaian tak terbatas berarti f(X) bisa diperbesar (atau diperkecil) sampai titik tak
berhingga. Perhatikan kembali bagan alir untuk merevisi tabel yang belum optimal (gambar
3.2). Setelah mendapatkan calon basis, maka langkah berikutnya adalah menguji apakah ada
elemen aik (elemen dalam kotak vertikal) yang > 0. Jika ada maka langkah berikutnya adalah
menghitung nilai dan menentukan variabel yang harus keluar dari basis. Akan tetapi apabila
semua aik 0, maka berarti penyelesaiannya tak terbatas (bisa dikatakan juga bahwa soal tidak
memiliki penyelesaian). Untuk lebih jelasnya, perhatikan contoh 3.8 berikut ini.

Contoh 3.8

Selesaikan contoh soal 2.12 dengan metode simpleks !

Penyelesaian

Model dalam contoh 2.12 adalah

Maksimumkan f (x1, x2) = 2 x1 + 3 x2

Kendala x1 – 2 x2 4

x1 + x2 3

x1, x2 0

Bentuk standar simpleks :

Maksimumkan f (x1 … x5) = 2 x1 + 3 x2 + 0 x3 + 0 x4 - M x5

Kendala x1 – 2 x2 + x3 = 4

x1 + x2 - x4 + x5 = 3

x1 … x5 0
82 Riset Operasi : Suatu Tinjauan Algoritmis

Tabel 3.22 adalah tabel iterasi simpleks. Pada iterasi kedua, c4 – z4 = 3 > 0. Karena satu-satunya
yang masih bernilai positip, maka x4 menjadi calon basis. Akan tetapi a14 = -2 < 0 dan a24 = -1
< 0 sehingga nilai tidak bisa dicari. Ini berarti bahwa soal memiliki penyelesaian tak terbatas.

cj 2 3 0 0 -M
(cB)i (xB)i xj x1 x2 x3 x4 x5 bi
0 x3 1 -2 1 0 0 4 -
-M x5 1 1 0 -1 1 3 3
zj -M -M 0 M -M
- 3M
cj - zj 2+M 3+M 0 -M 0
0 x3 3 0 1 -2 2 10 -
3 x2 1 1 0 -1 1 3 3
zj 3 3 0 -3 3
9
cj - zj -1 0 0 3 -3 - M

Tabel 3.22

3.3.3 Soal Tidak Fisibel

Seperti yang sudah dibahas pada bab 2.3.4, soal tak fisibel berarti soal tidak memiliki daerah
fisibel (tidak memiliki titik yang memenuhi semua kendala).

Dalam metode simpleks, variabel semu berfungsi sebagai katalisator agar muncul matriks
identitas sehingga proses simpleks dapat dilakukan. Pada iterasi yang pertama, variabel semu
akan dipakai sebagai variabel basis. Untuk mempercepat keluarnya variabel semu dari variabel
basis, maka pada fungsi sasarannya diberi koefisien = M atau -M (tergantung soal
meminimumkan atau memaksimumkan). Akan tetapi ada kalanya variabel semu tetap
merupakan variabel basis pada tabel optimalnya. Hal ini menunjukkan bahwa soalnya tidak
fisibel.

Pengecekan soal yang tidak fisibel terlihat pada bagian bawah bagan alir gambar 3.1. Setelah
tidak ada cj – zj > 0 (atau < 0 untuk soal meminimumkan), maka proses dilanjutkan dengan
meneliti apakah ada variabel semu yang masih bernilai positip. Jika tidak ada, maka penyelesaian
optimal didapatkan. Akan tetapi jika ada variabel semu yang masih bernilai positip, berarti
soalnya tidak fisibel Untuk lebih jelasnya, perhatikan contoh 3.9 berikut ini
PROGRAM LINIER : METODE SIMPLEKS 83

Contoh 3.9

Selesaikan contoh soal 2.13 dengan metode simpleks !

Penyelesaian

Model dalam contoh 2.13 adalah

Maksimumkan f (x1, x2) = 4 x1 + 3 x2

Kendala x1 + x2 3

2x1 – x2 3

x1 4

x1, x2 0

Bentuk standarnya :

Maksimumkan f (x1 … x6) = 4 x1 + 3 x2 + 0 x3 + 0 x4 + 0 x5 - M x6

Kendala x1 + x2 + x3 = 3

2x1 – x2 + x4 = 3

x1 - x5 + x6 = 4

x1 … x6 0

Tabel 3.23 adalah tabel simpleks yang sesuai. Pada tabel terakhir, semua cj – zj 0. Ini
menunjukkan bahwa tabel sudah optimal. Akan tetapi x6 yang merupakan variabel semu masih
tetap merupakan variabel basis. Berarti soalnya tidak fisibel sehingga tidak memiliki
penyelesaian optimal.
84 Riset Operasi : Suatu Tinjauan Algoritmis

cj 4 3 0 0 0 -M
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
0 x3 1 1 1 0 0 0 3 3
0 x4 2 -1 0 1 0 0 3 3
2

-M x6 1 0 0 0 -1 1 4 4
zj -M 0 0 0 M -M
-4M
cj - z j 4+M 3 0 0 -M 0
0 x3 0 3
2 1 1
2 0 0 3
2 1
4 x1 1 1
2 0 1
2 0 0 3
2 -
-M x6 0 1
2 0 1
2 -1 1 5
2 5
zj 4 4 M
2 0 4 M
2 M -M
12 5 M
cj - z j
2
0 10 M
2 0 4 M
2 -M 0
3 x2 0 1 2
3
1
3 0 0 1
4 x1 1 0 1
3
1
3 0 0 2
-M x6 0 0 1
3
1
3 -1 1 2
zj 4 3 10 M
3
1 M
3 M -M
11-2M
cj - z j 0 0 10 M
3
1 M
3 -M 0
Tabel 3.23

3.3.4 Kemerosotan (Degeneracy)

Secara geometris, kemerosotan (degeneracy) berarti bahwa ada titik sudut daerah fisibel yang
terbentuk dari perpotongan 3 garis atau lebih (umumnya, suatu titik terbentuk dari perpotongan 2
garis). Dalam iterasinya, metode simpleks akan menentukan titik mana dalam daerah fisibel yang
berikutnya akan diuji optimalitasnya. Titik sudut tersebut dianggap merupakan perpotongan 2
buah garis. Hal ini ditandai dengan pemilihan yang paling minimum. Akan tetapi jika titik
yang dimaksud merupakan perpotongan 3 garis atau lebih, maka akan muncul beberapa
minimum yang sama.

Dalam hal ini boleh diambil sembarang. Akan tetapi pemilihan yang berbeda akan
menghasilkan jumlah iterasi yang berbeda pula, meskipun hasil akhirnya sama. Tidak ada
petunjuk tentang cara pemilihan agar jumlah iterasinya paling sedikit. Untuk lebih jelasnya,
perhatikan contoh 3.10 berikut ini
PROGRAM LINIER : METODE SIMPLEKS 85

Contoh 3.10

Selesaikan masalah program linier berikut ini dengan metode simpleks

Maksimumkan f (x1, x2) = 5 x1 + 3 x2

Kendala 4x1 + 2x2 12

4x1 + x2 10

x1 + x2 4

x1, x2 0

Penyelesaian

Bentuk standarnya :

Maksimumkan f (x1 … x5) = 5 x1 + 3 x2 + 0 x3 + 0 x4 + 0 x5

Kendala 4x1 + 2x2 + x3 = 12

4x1 + x2 + x4 = 10

x1 + x2 + x5 = 4

x1 … x5 0

Tabel simpleksnya tampak pada tabel 3.24. Pada iterasi ke-2, terdapat 2 buah nilai minimum
yang sama-sama bernilai 2. Untuk itu dipilih salah satunya (x3 atau x5) secara sembarang.

cj 5 3 0 0 0
(cB)i (xB)i xj x1 x2 x3 x4 x5 bi
0 x3 4 2 1 0 0 12 3
0 x4 4 1 0 1 0 10 5
2

0 x5 1 1 0 0 1 4 4
zj 0 0 0 0 0
0
cj - zj 5 3 0 0 0
0 x3 0 1 1 -1 0 2 2 ?
5 x1 1 1
4 0 1
4 0 5
2 10
0 x5 0 3
4 0 1
4 1 3
2 2 ?
zj 5 5
4 0 5
4 0 25
2
cj - zj 0 7
4 0 5
4 0

Tabel 3.24
86 Riset Operasi : Suatu Tinjauan Algoritmis

Gambar 3.4 merupakan interpretasi geometris masalah tersebut. Ketiga kendala berpotongan
pada titik G (2, 2). Setelah mengecek titik (0, 0), tabel simpleks mengecek titik (5/2, 0) dan
kemudian (2,2). Terjadi alternatif pilihan, apakah titik (2,2) dianggap perpotongan kendala-1 dan
2 atau kendala-2 dan 3

x2
C (0, 10)

B (0, 6)

A (0,4)
G (2,2)

F (4,0)
x1
D (5/2,0) E (3,0)

Gambar 3.4

Tabel 3.25 a adalah kelanjutan iterasi jika x3 keluar dari basis, sedangkan tabel 3.25 b adalah
kelanjutan iterasi jika x5 yang keluar dari basis. Perhatikan bahwa meskipun jumlah iterasi
hingga mencapai optimal pada tabel 3.25 a dan 3.25 b tidak sama, namun keduanya
menghasilkan penyelesaian optimal yang sama yaitu x1 = 2 dan x2 = 2
PROGRAM LINIER : METODE SIMPLEKS 87

cj 5 3 0 0 0
(cB)i (xB)i xj x1 x2 x3 x4 x5 bi
0 x3 0 1 1 -1 0 2 2
5 x1 1 1
4 0 1
4 0 5
2 10
0 x5 0 3
4 0 1
4 1 3
2 2
zj 5 5
4 0 5
4 0 25
2
cj - zj 0 7
4 0 5
4 0
3 x2 0 1 1 -1 0 2 -
5 x1 1 0 1
4
1
2 0 2 4
0 x5 0 0 3
4
1
2 1 0 0
zj 5 3 7
4
1
2 0
16
cj - zj 0 0 7
4
1
2 0
3 x2 0 1 1
2 0 2 2
5 x1 1 0 1
2 0 -1 2
0 x4 0 0 3
2 1 2 0
zj 5 3 1 0 1
16
cj - zj 0 0 -1 0 -1
Tabel 3.25 a

cj 5 3 0 0 0
(cB)i (xB)i xj x1 x2 x3 x4 x5 bi
0 x3 0 1 1 -1 0 2 2
5 x1 1 1
4 0 1
4 0 5
2 10
0 x5 0 3
4 0 1
4 1 3
2 2
zj 5 5
4 0 5
4 0 25
2
cj - zj 0 7
4 0 5
4 0
0 x3 0 0 1 2
3
4
3 0
5 x1 1 0 0 1
3
1
3 2
3 x2 0 1 0 1
3
4
3 2
zj 5 3 0 2
3
7
3
16
cj - zj 0 0 0 2
3
7
3

Tabel 3.25 b
88 Riset Operasi : Suatu Tinjauan Algoritmis

3.3.5 Variabel Penyusun Tak Bersyarat

Dalam bentuk standar program linier, disyaratkan bahwa semua variabel penyusunnya harus
0. Apabila ada variabel penyusunnya yang bernilai bebas (boleh negatif), maka sebelum masuk
ke proses simpleks, masalah harus terlebih dahulu ditransformasi sehingga semua variabel
penyusunnya 0. Caranya adalah dengan menyatakan variabel yang bernilai bebas sebagai
selisih 2 variabel baru yang keduanya 0. Untuk lebih jelasnya perhatikan contoh 3.11

Contoh 3.10

Maksimumkan f (x1, x2, x3) = 3 x1 + 2 x2 + x3

Kendala 2x1 + 5x2 + x3 12

6x1 + 8x2 22

x2, x3 0

Penyelesaian

Perhatikan bahwa yang disyaratkan hanyalah x2 dan x3 saja, sedangkan x1 boleh bernilai
sembarang. Untuk menjadikan ke bentuk standar program linier, maka x1 dinyatakan sebagai
selisih dua variabel baru x4 dan x5.

x1 = x4 – x5.

Dengan mensubstitusi x1 ke model didapatkan :

Maksimumkan f (x2, x3, x4, x5) = 3 (x4 – x5) + 2 x2 + x3

Kendala 2 (x4 – x5) + 5x2 + x3 12

6 (x4 – x5) + 8x2 22

x2, x3, x4, x5 0

Bentuk standarnya :

Maksimumkan f (x2, x3, x4, x5) = 2 x2 + x3 + 3x4 – 3x5 + 0x6

Kendala 5x2 + x3 + 2x4 – 2x5 + x6 = 12

8x2 + 6x4 – 6x5 + x7 = 22

x2 … x7 0
PROGRAM LINIER : METODE SIMPLEKS 89

Tabel simpleks tampak pada tabel 3.26. Perhatikan bahwa variabel basis awal boleh diambil x3
ataupun x6
28 14 22 11
Penyelesaian optimal x2 = 0, x3 = 6 3 , x4 = 6 3 , x5 = x6 = x7 = 0. Jika dikembalikan ke

soal aslinya, maka x1 = x4 – x5 = 11


3 -0= 11
3 . maka penyelesaian soal aslinya adalah x1 = 11
3 , x2
14
= 0 dan x3 = 3 . Perhatikan disini bahwa x1 yang bernilai sembarang tidak berarti harus bernilai
negatif. Akan tetapi juga tidak boleh diasumsikan 0 sehingga proses simpleks juga tidak dapat
langsung digunakan.

cj 2 1 3 -3 0 0
(cB)i (x ) xj x2 x3 x4 x5 x6 x7 bi
B i
1 x3 5 1 2 -2 1 0 12 6
0 x7 8 0 6 -6 0 1 22 22
6

zj 5 1 2 -2 1 0
12
cj - z j -3 0 1 -1 0 0
1 x3 14
6 1 0 0 1 2
6
28
6

3 x4 8
6 0 1 -1 0 1
6
22
6

zj 38
6 1 3 -3 1 1
6 94
cj - z j
6
26
6 0 0 0 -1 1
6

Tabel 3.26
90 Riset Operasi : Suatu Tinjauan Algoritmis

SOAL-SOAL LATIHAN

1. Selesaikan masalah berikut ini dengan metode simpleks


Maksimumkan Z = 3 x1 + 4 x2 + 2 x3
Kendala :
x1 + x2 + x3 + x4 30
3 x1 + 6 x2 + x3 - 2 x4 0
x2 4
x1, x2, x3, x4 0

2. Gunakan metode simpleks untuk membuktikan bahwa masalah berikut ini tidak mempunyai
penyelesaian optimal
Maksimumkan Z = x1 + 2 x2
Kendala :
-2 x1 + x2 + x3 2
- x1 + x2 - x3 1
x1, x2, x3 0

3. Gunakan metode simpleks untuk menyelesaikan masalah berikut ini !

a. Max Z = x1 + x2

Kendala :

x1 + 5 x2 5

2 x1 + x2 4

x1, x2 tak negatif

b. Max Z = 3 x1 + 4 x2

Kendala :

2 x1 + x2 6

2 x1 + 3 x2 9

x1, x2 tak negatif


PROGRAM LINIER : METODE SIMPLEKS 91

4. Sebuah perusahaan membuat 3 jenis produk, yang masing-masing harus melalui 3 macam
proses. Perusahaan tersebut dapat menjual semua produksinya, tetapi kemampuan
produksinya terbatas. Data yang berhubungan dengan perusahaan tersebut tampak pada tabel
di bawah ini. Bagaimana campuran produksi yang harus dibuat ?
Waktu Proses (Jam/Unit)
Harga
Produk Proses - 1 Proses - 2 Proses - 3 Biaya
Jual
A 1 3 2 11 15
B 3 4 1 12 20
C 2 2 2 10 16
Waktu Proses
160 120 80
yang tersedia

5. Minimumkan 4x + 6y + z
Kendala :
x + 2y 10
y + 4z 20
3x + z 40
dengan x, y, dan z 0

6. Perusahaan konstruksi ABC sedang membangun jalan di sisi bukit. Dibutuhkan bom untuk
meledakkan lapisan bawah tanah agar didapatkan permukaan yang diinginkan. Ada 3 jenis
cairan bahan peledak (A, B, dan C) yang dapat dipakai dalam pembuatan bom.

Diketahui bahwa paling sedikit 10 ons bahan peledak harus dipergunakan. Jika digunakan
lebih dari 20 ons bahan peledak, maka ledakan akan terlalu besar dan merusak. Agar terjadi
ledakan yang baik, paling sedikit 1/4 ons bahan C harus dipakai untuk setiap ons bahan A,
dan paling sedikit 1 ons bahan B harus dipakai untuk setiap ons bahan C.

Harga bahan A, B, dan C masing-masing adalah 6, 18 dan 20 (ribu) per ons. Tentukan
campuran peledak yang paling murah untuk medapatkan ledakan yang aman.
92 Riset Operasi : Suatu Tinjauan Algoritmis

7. Selesaikan masalah program linier berikut dengan metode simpleks, lalu bandingkanlah
hasilnya dengan metode grafik !

a. Maksimumkan f = x1 + x2
Kendala :
x1 + x2 1
5 x1 + 10 x2 50
x2 4
x1, x2 0

b. Maksimumkan f = -3 x1 + 4 x2
Kendala :
x1 - x2 0
- x1 + 2 x2 2
x1, x2 0

c. Maksimumkan Z = 3 x1 + 2 x2 + 8 x3
Kendala :
4 x1 - 3 x2 + 12 x3 12
x1 + 4 x3 6
x2 - x3 = 2
x1, x2, x3 0

d. Minimumkan f = 30 x1 + 20 x2
Kendala :
x1 + x2 8
6 x1 + 4 x2 12
5 x1 + 8 x2 = 20
x1, x2 0

e. Minimumkan f = x1 - 2 x2 + 3 x3
Kendala :
-2 x1 + x2 + 3 x3 = 2
2 x1 + 3 x2 + 4 x3 = 1
x1, x2, x3 0
PROGRAM LINIER : METODE SIMPLEKS 93

8. Gunakan metode simpleks untuk membuktikan bahwa masalah berikut ini tidak fisibel
Minimumkan Z = 2 y1 + 4 y2
Kendala :
2 y1 - 3 y2 2
- y1 + y2 3
y1, y2 0

9. Minimumkan f = -2 x1 + x2
Kendala :
x1 + x2 4
x1 - x2 6
x1 0, x2 sembarang

Pada soal no 10 – 19 berikut ini, buatlah model Program Linier yang sesuai. Kemudian gunakan
perangkat lunak untuk menyelesaikannya

10. Rilex adalah sebuah perusahaan pengembang sedang mengembangkan area di sisi danau
untuk perumahan. Untuk keperluan pemasaran, mereka merencanakan penggunaan media
TV, radio dan koran. Data yang didapat meliputi jumlah pelanggan potensial yang bisa
dijangkau, biaya per iklan, jumlah maksimum pemakaian media per bulan dan exposure
quality unit untuk tiap media. Data yang relevan tampak pada tabel berikut.

Anggaran untuk promosi adalah 300.000 (ribuan) untuk bulan pertama. Ada beberapa
persyaratan yang diinginkan oleh Rilex. Jumlah iklan di TV paling sedikit sebanyak 10
kali, tapi anggaran seluruh iklah di TV tidak boleh melebihi 180.000 (ribuan). Paling
sedikit 50.000 pelanggan potensial harus terjangkau. Bagaimana perencanaan iklan
yang akan membuat exposure quality unit maksimum ?
Media Iklan Juml Pelanggan Biaya per Jumlah iklan Exposure
Potensial yang iklan yang tersedia Quality Unit
terjangkau (ribuan) per bulan
TV siang hari 1000 1500 15 65
TV sore hari 2000 3000 10 90
Koran harian 1500 400 25 40
Koran Minggu 2500 1000 4 60
Radio 300 100 30 20
94 Riset Operasi : Suatu Tinjauan Algoritmis

11. TopRiset adalah sebuah lembaga survei melakukan jasa penelitian untuk mengetahui
karakteristik, attitude dan kesukaan konsumen terhadap produk baru, pelayanan dan iklan
yang dilakukan.

Sebuah perusahaan langganan yang menggunakan jasanya untuk melakukan survei door to
door terhadap 1000 pelanggan, dengan beberapa spesifikasi tambahan sbb :

Wawancara minimum terhadap 400 pelanggan yang memiliki anak

Wawancara minimum terhadap 400 pelanggan yang tidak memiliki anak

Jumlah pelanggan yang diwawancarai malam hari paling sedikit harus sama dengan
jumlah pelanggan yang diwawancarai pada siang hari

Paling sedikit 40 % wawancara terhadap pelanggan yang memiliki anak harus


dilakukan pada malam hari

Paling sedikit 60 % wawancara terhadap pelanggan yang tidak memiliki anak harus
dilakukan pada malam hari

Biaya interview untuk tiap karakteristik pelanggan dan waktu berbeda-beda seperti tampak
pada tabel berikut ini

Biaya Survei (ribuan)

Keluarga Siang Malam

Dengan anak 200 250

Tanpa Anak 180 200

Bagaimana TopRiset harus mengatur survei agar memenuhi permintaan pelanggan tapi
dengan biaya minimum ?

12. Baja Hitam adalah sebuah perusahaan konstruksi baru saja mendapatkan dana penjualan
saham sebesar 1000 (juta rupiah) dan sekarang hendak mengalihkan ke investasi lain.
Untuk itu ia menyerahkan pengaturannya pada Indodana, sebuah perusahaan investasi yang
sudah lama dikenalnya. Indodana merekomendasikan 4 industri yang bergerak di bidang
PROGRAM LINIER : METODE SIMPLEKS 95

industri minyak, industri baja atau obligasi pemerintah. Untuk tiap-tiap investasi, imbal hasil
yang diperkirakan akan diperoleh tampak pada tabel berikut ini.

Investasi Imbal hasil (%)

Indika Oil 7.3

Berau Oil 10.3

Krakatau Steel 6.4

Sumatra Steel 7.5

Obligasi 4.5

Manajemen Baja Hitam memberikan beberapa syarat investasinya :

Tidak boleh ada industri (baik minyak maupun baja) yang mendapatkan lebih dari 500
juta rp

Obligasi pemerintah harus menerima paling sedikit 25 % dari dari investasi di industri
baja

Investasi di Berau Oil tidak boleh melebihi 60 % dari total investasi di bidang minyak.

Bagaimana portofolio yang harus dibuat oleh Valbury agar memperoleh pendapatan sebesar-
besarnya tapi tetap memenuhi permintaan manajemen Baja Hitam ?

13. PastiLaku adalah sebuah perusahaan event organizer yang sedang membuah perencanaan
promosi. Media yang dapat dipilih antara lain melalui TV, radio dan koran. Perkiraan
konsumen, biaya dan jumlah maksimum pemanfaatan media tampak pada tabel berikut.

Komponen TV Radio Koran

Jumlah pelanggan yang


100.000 18.000 40.000
terjangkau per iklan

Biaya per iklan (ribuan rp) 2.000 300 600

Maksimum iklan 10 20 10

Untuk memberikan keseimbangan penggunaan media, penggunaan radio tidak boleh


melebihi 50 % dari total jumlah iklan. Disamping itu, iklan di TV paling sedikit harus 10 %
dari total jumlah iklan yang dilakukan.
96 Riset Operasi : Suatu Tinjauan Algoritmis

Jika anggaran promosi terbatas sebesar 18.200 (ribuan rp), bagaimana cara promosi yang
harus dilakukan agar pelanggan yang terjangkau sebesar-besarnya ?

14. Manajemen perusahaan parcel makanan ingin menentukan jumlah kedua produk yang
dihasilkannya untuk persiapan hari raya. Tabel di bawah ini menunjukkan informasi yang
diperlukan. Buatlah model program linier yang sesuai untuk perusahaan parcel makanan
tersebut. Carilah penyelesaiannya
Waktu pembuatan sebuah Waktu
Produk (jam) yang
Pekerjaan 1 2 tersedia
A 1.00 0.35 100
B 0.3 0.2 36
C 0.2 0.5 50
Keuntungan per
30 15 80
unit (ribu rp)

15. LautanDana adalah sebuah perusahaan pembiayaan merencanakan untuk mengalokasikan


sejumlah dana untuk dipinjam nasabahnya. Disamping itu LautanDana juga ingin
menempatkan sebagian dananya pada deposito bank. Bunga pinjaman adalah sebagai
berikut :
Bunga yg diperoleh
Jenis pinjaman untuk nasabah
(% per tahun)
Pembelian Mobil 8
Pembelian alat rumah tangga 10
Pembelian rumah 11
Pengembangan Usaha 12
Deposito 9

Ada beberapa keputusan manajemen LautanDana yang harus dipenuhi :

Jumlah dana yang ditanamkan di deposito tidak boleh melebihi 30 % dari total dana
yang dimiliki

Karena beresiko tinggi, dana yang dipinjam nasabah untuk pengembangan usaha tidak
boleh melebihi 10 % dari seluruh pinjaman (mobil, alat rumah tangga, rumah dan
pengembangan usaha)
PROGRAM LINIER : METODE SIMPLEKS 97

Kredit untuk pembelian alat rumah tangga ditambah kredit pembelian rumah tidak boleh
melebihi kredit untuk pembelian mobil.

Kredit pembelian rumah ditambah dengan kredit pengembangan usaha tidak boleh
melebihi deposito.

Jika LautanDana memiliki dana sebesar 2000 (juta rupiah), berapa besar kredit untuk tiap-
tiap keperluan agar return yang dihasilkan maksimum ?

16. Total Oil sedang mengembangkan additive baru untuk campuran bahan bakar pesawat
terbang. Additive tersebut merupakan campuran dari 3 bahan dasar yaitu A, B, dan C.

Untuk menghasilkan performance yang optimal, jumlah total additive yang dicampurkan ke
bahan bahaka haruslah minimum 10 ml per liter bahan bakar. Akan tetapi agar tidak
membahayakan, jumlah total additive tidak boleh melebihi 15 ml per liter bahan bakar.

Komposisi ketiga bahan dasar additive merupakan hal yang penting. Paling sedikit 1 ml
bahan A haruslah digunakan untuk tiap ml bahan B. Jumlah bahan C paling sedikit harus 1,5
kali bahan A.

Jika harga tiap ml bahan A, B dan C masing-masing adalah Rp 1000, Rp 300 dan Rp 900,
carilah komposisi bahan additive yang paling baik !

17. Seorang penasehat keuangan di MaxiDana ingin mengembangkan model yang dapat dipakai
untuk mengalokasikan dana investasi diantara 4 kemungkinan : saham, deposito, obligasi,
dan tabungan. MaxiDana sudah memperkirakan faktor resiko dan imbal hasil untuk tahun
depan berdasarkan kondisi ekonomi. Resiko diukur berdasarkan indeks antara 0 dan 1 (0
menyatakan tanpa resiko).
Jenis Investasi Imbal Hasil (%) Resiko
Saham 10 0.8
Deposito 3 0.2
Obligasi 4 0.3
Tabungan 1 0.0

Model yang dikembangkan bertujuan untuk menentukan portofolio investasi agar diperoleh
imbal hasil yang maksimum, dengan memenuhi tingkat resiko yang diinginkan.
98 Riset Operasi : Suatu Tinjauan Algoritmis

Total resiko adalah umlah resiko untuk semua investasi yang dilakukan. Sebagai contoh,
seseorang yang menginvestasikan dananya masing-masing 40 % untuk saham, 30 % untuk
deposito, 20 % untuk obligasi dan 10 % untuk tabungan memiliki total resiko sebesar
0.4(0.8) + 0.3(0.2) + 0.2(0.3) + 0.1(0.0) = 0.44. Maksimum Total resiko yang lebih kecil
dari 0.3 menunjukkan investor yang konservatif, Nilai maksimum total resiko antara 0.3
hingga 0.5 menunjukkan investor yang menengah, dan nilai maksimum total resiko lebih
dari 0.5 menunjukkan investor yang agresif.

Ada beberapa aturan yang ditetapkan oleh MaxiDana sbb :

Investasi di saham tidak boleh lebih dari 75 % dari total investasi

Jumlah investasi di obligasi paling sedikit harus sama jumlahnya dengan jumlah
investasi di di deposito

Jumlah tabungan paling sedikit harus 10 % dari total investasi, tapi tidak boleh lebih
dari 30 %

a. Misalkan maksimum total resiko seorang klien adalah 0.4. Bagaimana alokasi investasi
yang optimal ? Berapa imbal hasilnya ?

b. Misalkan klien yang konservatif memiliki maksimum nilai resiko = 0.18. Bagaimana
portofolio optimal baginya ? Berapa imbal hasil baginya ?

18. Perusahaan IndoTurbin membeli 2 jenis komponen mesin dari 3 supplier berbeda. Tiap
supplier memiliki kapasitas terbatas, dan tidak ada satupun yang dapat memenuhi semua
kebutuhan perusahaan. Untuk tiap komponen, IndoTurbin dapat membelinya dari beberapa
supplier berbeda. Harga penawaran mesin di tiap suppllier berbeda-beda seperti yang tampak
pada tabel berikut ini. Baris terbawah adalah kemampuan supplier untuk mensupply barang
yang dibutuhkan
Supplier
Komponen 1 2 3
1 $ 12 $ 13 $ 14
2 $ 10 $ 11 $ 10
Kapasitas 600 1000 800
PROGRAM LINIER : METODE SIMPLEKS 99

Jika IndoTurbin membutuhkan komponen 1 dan 2 masing-masing sebanyak 1000 dan 800
unit, bagaimana cara pembelian yang disarankan agar total biaya pembelian seminimum
mungkin ? Berapa jumlah total biaya pembelian ?

19. Dua Kertas adalah perusahaan kertas yang memproduksi kertas berbentuk gulungan selebar
20 cm yang biasa dipakai untuk cash register. Ada 3 jenis kertas gulungan yang dibuat,
masing-masing dengan lebar 3, 5 dan 7 cm. Karena kertas aslinya memiliki lebar 10
cm, maka kertas tersebut harus dipotong-potong agar memenuhi kebutuhan. Ada 7
kemungkinan pemotongan sbb :
Jumlah gulungan
Alternatif Sisa potongan
3 cm 5 cm 7 cm
potongan (cm)
1 6 0 0 2
2 0 4 0 0
3 2 0 2 0
4 0 1 2 1
5 1 3 0 2
6 1 2 1 0
7 4 0 1 1
Kebutuhan 1000 2000 4000

a. Jika perusahaan tersebut ingin meminimumkan jumlah gulungan yang akan dibuat,
berapa buah gulungan yang harus dibuat untuk tiap alternatif ? Berapa jumlah gulungan
yang dipotong dan berapa sisa potongannya ?

b. Jika perusahaan tersebut ingin meminumkan jumlah sisa potongan, berapa potongan
untuk tiap-tiap alternatif ? Berapa jumlah gulungan yang dipotong dan berapa sisa
potongannya ?

Apakah perbedaan diantara soal (a) dan (b) diatas ? Pada situasi apa masing-masing tujuan
tersebut dipilih ?
Bab 4

PROGRAM BILANGAN BULAT

Dalam bab 2 dan 3 telah dibahas tentang Program Linier. Dalam beberapa kasus variabel
keputusan harus bernilai bulat, misalnya jumlah mobil, jumlah rumah, dll. Oleh karena itu, dalam
bab ini dibahas tentang Program Bilangan Bulat, yang merupakan kasus khusus Program Linier,
untuk menyelesaikan masalah Program Linier yang penyelesaiannya harus bilangan bulat

4.1 Program Bilangan Bulat Sebagai Perluasan

Program Linier
Secara umum, penyelesaian program linier bukanlah bilangan bulat. Apabila variabel
keputusannya merupakan kuantitas yang harus bulat (misalkan jumlah mobil, jumlah almari, dll),
maka model program linier tidak dapat dipakai. Untuk lebih melihat perbandingannya,
perhatikan contoh 4.1 dan 4.2

Contoh 4.1

Suatu perusahaan obat nyamuk memproduksi 2 macam obat pembunuh nyamuk cair, yaitu jenis
“super” dan jenis “biasa”. Keduanya dibuat dari bahan dasar yang sama yaitu cairan A dan B,
namun dengan komposisi yang berbeda-beda.

Untuk membuat 1 liter jenis super dibutuhkan 10 cc bahan A dan 4 cc bahan B, sedangkan 1 liter
jenis biasa membutuhkan 2 cc bahan A dan 2 cc bahan B.

Penjualan tiap liter obat nyamuk jenis super memberikan keuntungan sebesar Rp 5000,
sedangkan jenis biasa sebesar Rp 2000. Perusahaan tersebut ingin membuat sebanyak-
banyaknya, namun ia memiliki keterbatasan dalam hal penyediaan bahan pembuatnya. Tiap
minggu ia hanya mampu menyediakan 100 cc bahan A dan 50 cc bahan B. Tentukan jumlah
obat yang harus dibuat (dengan kendala yang ada) agar keuntungan yang didapatkannya
maksimum !
PROGRAM BILANGAN BULAT 101

Penyelesaian

Misalkan x1 = jumlah cairan jenis super dan

x2 = jumlah cairan jenis biasa yang dibuat.

Model yang sesuai adalah :

Maksimumkan f x1, x2 5 x1 2 x2 (ribuan)

Kendala 10x1 + 2x2 100

4x1 + 2x2 50 ; x1, x2 0.

Gambar 4.1 menunjukkan daerah fisibel dengan titik sudut masing-masing : O (0, 0) dengan
f(O) = 0, A (0, 25) dengan f(A) = 50, E 8 13 , 8 13 dengan f(E) = 58 13 dan D (10,0) dengan f(D)

= 50.

C (0, 50) x2

3x1+ x2 = 20
A (0,25)

E 8 13 , 8 13

B (25/2,0) x1
D (10, 0) x1+ 2x2 = 20

Gambar 4.1
Titik maksimumnya adalah E 8 13 , 8 13 dengan f(E) = 58 13 . Jika dikembalikan ke soal aslinya,

berarti pengusaha tersebut harus memproduksi 8 13 liter cairan super dan 8 13 liter cairan biasa.

Contoh 4.2

Seorang tukang jahit membuat baju dan rok yang keduanya dibuat dari bahan dasar yang sama
yaitu A dan B.
102 Riset Operasi : Suatu Tinjauan Algoritmis

Untuk membuat satu set baju dibutuhkan 10 m bahan A dan 4 m bahan B, sedangkan pembuatan
satu set rok membutuhkan 2 m bahan A dan 2 m bahan B.

Penjualan tiap set baju memberikan keuntungan sebesar Rp 5000, sedangkan tiap set rok sebesar
Rp 2000. Tukang jahit tersebut ingin membuat sebanyak-banyaknya, namun ia memiliki
keterbatasan dalam hal penyediaan bahan pembuatnya. Tiap minggu ia hanya mampu
menyediakan 100 m bahan A dan 50 m bahan B. Tentukan jumlah baju dan rok yang harus
dibuat (dengan kendala yang ada) agar keuntungan yang didapatkannya maksimum !

Penyelesaian

Misalkan x1 = jumlah baju dan

x2 = jumlah rok yang dibuat.

Model yang sesuai adalah :

Maksimumkan f x1, x2 5 x1 2 x2 (ribuan)

Kendala 10x1 + 2x2 100

4x1 + 2x2 50 ; x1, x2 0.

Perhatikan bahwa model tersebut sama persis dengan model pada contoh 4.1. Ini berarti
penyelesaian optimalnyapun sama, yaitu (x1, x2) = ( 8 13 , 8 13 ). Jika dikembalikan ke soal aslinya,

berarti tukang jahit tersebut harus membuat 8 13 baju dan 8 13 rok.

Pada contoh 4.1, penyelesaian optimal dapat diaplikasikan karena jumlah cairan obat nyamuk
dapat berupa pecahan. Akan tetapi penyelesaian contoh 4.2 tidak dapat dilakukan karena jumlah
baju maupun rok yang dibuat haruslah merupakan bilangan bulat.

Pembulatan/pemotongan hasil yang didapat dari penyelesaian optimal program linier secara
umum tidak dapat dilakukan karena mungkin terdapat beberapa penyelesaian pembulatan dan
pembulatan/pemotongan tersebut belum tentu tetap merupakan penyelesaian optimalnya. Dalam
contoh 4.2, ada beberapa pembulatan penyelesaian antara lain (8, 8), (8, 9), (9, 8), (9, 9). Tidak
jelas mana yang merupakan titik yang terletak di daerah fisibel sehingga tidak dapat ditentukan
titik mana yang merupakan penyelesaian optimalnya.

Penyelesaian program linier yang mensyaratkan semua variabelnya bulat dilakukan dengan
model Program Bilangan Bulat. Program bilangan bulat merupakan perluasan program linier
PROGRAM BILANGAN BULAT 103

dengan penambahan kendala semua variabel penyusunnya harus merupakan bilangan bulat.
Dalam bentuk matematika, model program bilangan bulat adalah sebagai berikut :

Maksimumkan/minimumkan f x1, x2 , ... , xn c1x1 c2 x2 ... cn xn


dengan kendala :
a11 x1 a12 x2 ... a1n xn b1
a21 x1 a22 x2 ... a2 n xn b2
...
am1 x1 am 2 x2 ... amn xn bm

x1 , x2 , ... , xn bulat 0

Metode yang sering dipakai untuk menyelesaikan model Program Bilangan Bulat adalah metode
Cabang – Batas (Branch – Bound). Secara umum, algoritma penyelesaian model program
bilangan bulat adalah sebagai berikut :

1. Selesaikan model program bilangan bulat dengan program linier (grafik ataupun simpleks).
Abaikan syarat semua variabel penyusunnya bilangan bulat.

2. Jika penyelesaian langkah (1) merupakan bilangan bulat, maka penyelesaian tersebut
merupakan penyelesaian program bilangan bulat. Jika tidak, lanjutkan ke langkah (3)

3. Ubah soal semula dengan menambahkan kendala/variabel baru sesuai dengan algoritma
Cabang – Batas

4. Kembali ke langkah (1)

4.2 Metode Cabang – Batas


Prinsip kerja metode Cabang – Batas (Branch & Bound) adalah mencabangkan soal yang tidak
memiliki penyelesaian bulat. Percabangan dilakukan terus hingga diperoleh penyelesaian bulat.

Pencabangan (Branching)

Percabangan berarti memecah soal menjadi 2 soal baru (masing-masing ditambah dengan
kendala baru) dan menyelesaikan keduanya
104 Riset Operasi : Suatu Tinjauan Algoritmis

Misalkan penyelesaian optimal program bilangan bulat memuat variabel xj yang tidak bulat
dengan i1 < xj < i2 (i1 dan i2 merupakan 2 bilangan bulat berurutan). Maka program
dicabangkan menjadi 2 soal baru. Cabang kiri ditambah dengan kendala xj i1, sedangkan
cabang kanan ditambah dengan kendala xj i2. Perhatikan penambahan kendalanya agar tidak
terbalik.

Pembatasan (Bounding)

Misalkan soal adalah memaksimumkan.

Pencabangan dilakukan terus hingga ditemukan penyelesaian bilangan bulat (misal X* dengan
nilai maksimum f(X*)). X* menjadi batas bawah. X* belum tentu merupakan penyelesaian
optimal masalah mula-mula. Akan tetapi apabila Xa adalah penyelesaian lain (bulat ataupun
tidak) dengan f(Xa) < f(X*) maka pencabangan dari titik Xa pasti tidak akan menghasilkan
penyelesaian bilangan bulat yang optimal sehingga percabangan tidak perlu dilakukan.

Jika masalahnya adalah meminimumkan maka penyelesaian bulat X* yang pertama kali
ditemukan menjadi batas atas. Semua penyelesaian lain (bulat ataupun tidak) yang memiliki nilai
fungsi lebih besar dari f(X*) diabaikan dan tidak perlu dicabangkan.

Logikanya adalah sebagai berikut. Dalam soal memaksimumkan, misalkan titik X memiliki nilai
fungsi f(X) = A. Semua pencabangan dari titik X pasti memberikan nilai fungsi yang lebih kecil
dari A (ingat bahwa pencabangan dilakukan dengan penambahan kendala baru. Semakin banyak
kendala, nilai fungsinya semakin kecil). Jika X merupakan penyelesaian bulat dan Xa adalah
penyelesaian lain dengan f(Xa) < f(X), maka Xa pastilah bukan penyelesaian optimal masalah
semula. Apalagi jika Xa memiliki cabang Xb, maka pastilah f(Xb) < f(Xa) < f(X) sehingga Xb
pasti lebih tidak optimal lagi. Ini berarti bahwa pencabangan Xa percuma jika dilakukan.

Kasusnya berbeda jika X merupakan penyelesaian bulat dan Xa adalah penyelesaian lain dengan
f(Xa) > f(X). pencabangan dari Xa perlu dilakukan karena mungkin saja pencabangan dari Xa
akan menghasilkan Xb dengan f(Xa) > f(Xb) > f(X).
PROGRAM BILANGAN BULAT 105

Pemilihan titik dan variabel yang dicabangkan

Misalkan Xa dan Xb merupakan 2 titik yang penyelesaian optimalnya bukan merupakan bilangan
bulat sehingga keduanya perlu dicabangkan. Apabila soalnya memaksimumkan, pilihlah titik
yang nilai fungsinya lebih besar. Sebaliknya jika soalnya meminimumkan, pilihlah titik yang
nilai fungsinya lebih kecil.

Misalkan X = (x1, x2, …, xn) adalah penyelesaian soal dengan beberapa diantara x1, x2, …, xn
bukan merupakan bilangan bulat sehingga perlu dicabangkan. Untuk mempercepat proses,
percabangan dilakukan pada variabel xj yang pecahannya paling dekat dengan 0,5 (paling jauh
dari bilangan bulat). Jika ada beberapa xj yang pecahannya sama dekatnya dengan 0,5 maka
pilihlah salah satunya secara sembarang.

Untuk memberikan gambaran bagaimana metode cabang – batas bekerja, perhatikan contoh 4.3

Contoh 4.3

Maksimumkan z = 3 x1 + 4 x2
Kendala 2 x1 + x2 6
2 x1 + 3 x2 9

x1, x2 bilangan bulat tidak negatif

Penyelesaian

Karena soal terdiri dari 2 variabel maka penyelesaian akan dilakukan dengan metode grafik.

Program I (masalah mula-mula)

Gambar 4.2 menunjukkan grafik kendala soal mula-mula. Titik-titik dalam daerah fisibel adalah
penyelesaian bulatnya. Titik E merupakan titik perpotongan kedua kendala. Daerah fisibelnya
adalah segi empat OAED yang titik sudut dan nilai fungsinya adalah :

O (0, 0) dengan f(O) = 3 (0) + 4 (0) = 0

A (0, 3) dengan f(A) = 3 (0) + 4 (3) = 12

D (3, 0) dengan f(D) = 3 (3) + 4 (0) = 9

E (2,25 , 1,5) dengan f(E) = 3 (2,25) + 4 (1,5) = 12,75


106 Riset Operasi : Suatu Tinjauan Algoritmis

x2
C (0,6)
2x1+ x2 = 6

A (0,3)
E (2,25 , 1,5)
2x1+ 3x2 = 9

x1
D (3,0) B (9/2, 0)

Gambar 4.2

Titik maksimumnya adalah titik E = (x1, x2) = (2,25 , 1,5) dengan f(E) = 12,75. Baik x1 maupun
x2 bukan merupakan bilangan bulat sehingga proses percabangan harus dilakukan. Pecahan x1
adalah 0,25 sedangkan pecahan x2 adalah 0,5. Pencabangan dilakukan pada titik xj yang
pecahannya paling dekat dengan pecahan 0,5, yaitu pada x2.

Karena x2 = 1,5 terletak antara 1 dan 2, maka pencabangan pertama dilakukan dengan
menambahkan kendala x2 1 (program 2) sedangkan pencabangan kedua dilakukan dengan
menambahkan kendala x2 2 (program 3)

Program I I (Program I + kendala x2 1)

Maksimumkan z = 3 x1 + 4 x2
Kendala 2 x1 + x2 6
2 x1 + 3 x2 9
x2 1

x1, x2 bilangan bulat tidak negatif

Gambar 4.3 merupakan grafik penyelesaian program II. Daerah fisibel adalah segi empat OFGD
yang titik sudut dan nilai fungsinya adalah

O (0, 0) dengan f(O) = 3 (0) + 4 (0) = 0

F (0, 1) dengan f(F) = 3 (0) + 4 (1) = 4

D (3, 0) dengan f(D) = 3 (3) + 4 (0) = 9


PROGRAM BILANGAN BULAT 107

G (2,5 , 1) dengan f(G) = 3 (2,5) + 4 (1) = 11,5

x2
C (0,6)

A (0,3) E (2,25 , 1,5)

G (2,5 , 1)
F (0,1)
x2 = 1
x1
D (3,0) B (9/2, 0)

Gambar 4.3

Nilai maksimum terletak pada titik G = (x1, x2) = (2,5 , 1) dengan f(G) = 11,5. Penyelesaian
program 2 belum merupakan bilangan bulat sehingga bukanlah batas bawah penyelesaiannya.

Program I II (Program I + kendala x2 2)

Maksimumkan z = 3 x1 + 4 x2
Kendala 2 x1 + x2 6
2 x1 + 3 x2 9
x2 2

x1, x2 bilangan bulat tidak negatif

x2
C (0,6)

A (0,3) I (1,5 , 2)
x2 = 2
H (0,2) E (2,25 , 1,5)

x1
D (3,0) B (9/2, 0)

Gambar 4.4
108 Riset Operasi : Suatu Tinjauan Algoritmis

Gambar 4.4 merupakan grafik penyelesaian program II. Daerah fisibelnya adalah segitiga AHI
dengan titik sudut dan nilai fungsi :

A (0, 3) dengan f(A) = 3 (0) + 4 (3) = 12

H (0, 2) dengan f(H) = 3 (0) + 4 (2) = 8

I (1,5 , 2) dengan f(I) = 3 (1,5) + 4 (2) = 12,5

Nilai maksimum terletak pada titik I = (x1, x2) = (1,5 , 2) dengan f(I) = 12,5. Penyelesaian
program 3 juga belum merupakan bilangan bulat sehingga bukanlah batas bawah
penyelesaiannya. Percabangan program 1 menjadi program 2 dan program 3 dapat digambarkan
dalam gambar 4.5.

Tampak dalam gambar 4.5 bahwa baik titik 2 maupun 3 (menyatakan program 2 dan program
3) belumlah menghasilkan penyelesaian bulat sehingga keduanya memiliki kemungkinan untuk
dicabangkan. Karena soalnya memaksimumkan, maka titik yang terlebih dahulu dicabangkan
adalah titik yang nilai fungsinya lebih tinggi yaitu titik 3

z* = 11,5
(2,5 , 1) 2

x2 1
z* = 12,75
1
(2,25 , 1,5)
x2 2

z* = 12,5 3
(1,5 , 2)

Gambar 4.5

Dalam penyelesaian program 3, satu-satunya variabel yang tidak bulat adalah x1 = 1,5 yang
terletak antara 1 dan 2. Maka percabangan dilakukan dengan menambah kendala x1 1
(program 4) dan x1 2 (program 5)

Program IV (Program III + kendala x1 1)


PROGRAM BILANGAN BULAT 109

Maksimumkan z = 3 x1 + 4 x2
Kendala 2 x1 + x2 6
2 x1 + 3 x2 9
x2 2
x1 1

x1, x2 bilangan bulat tidak negatif

Daerah berarsir pada gambar 4.6 (segi empat AJKH) menunjukkan daerah fisibel program 4
dengan koordinat dan nilai fungsi sebagai berikut :

A (0, 3) dengan f(A) = 3 (0) + 4 (3) = 12

J (1, 7/3) dengan f(J) = 3 (1) + 4 (7/3) = 12,33

K (1, 2) dengan f(K) = 3 (1) + 4 (2) = 11

H (0, 2) dengan f(H) = 3 (0) + 4 (2) = 8

Titik maksimumnya adalah titik J (1, 7/3) dengan f(J) = 12,33.

x2
C (0,6) x1 = 1

A (0,3) J (1 , 7/3)
x2 = 2
H (0,2) K (1 , 2)

x1
D (3,0) B (9/2, 0)

Gambar 4.6

Program V (Program III + kendala x1 2)

Maksimumkan z = 3 x1 + 4 x2
Kendala 2 x1 + x2 6
2 x1 + 3 x2 9
x2 2
110 Riset Operasi : Suatu Tinjauan Algoritmis

x1 2

x1, x2 bilangan bulat tidak negatif

Kendala dalam program 5 tidak menghasilkan daerah fisibel sehingga tidak memiliki
penyelesaian. Keadaan ini dapat digambarkan dalam gambar 4.7. Tampak bahwa ada 2 titik yang
mungkin dicabangkan yaitu titik 2 (dengan nilai fungsi 11,5) dan titik 4 (dengan nilai fungsi
12,33). Keduanya bukan batas bawah penyelesaian karena keduanya tidak memiliki
penyelesaian bulat. Akan tetapi titik 4 memiliki nilai fungsi yang lebih besar sehingga titik 4
lebih dahulu dicabangkan.

z* = 11,5 diabaikan
(2,5 , 1) 2 krn z2* < z7*

x2 1
z* = 12,75
z* = 12,33
1 (1 , 7/3) 4
(2,25 , 1,5)
x2 2 x1 1

z* = 12,5 3
(1,5 , 2)
x1 2

5 tidak fisibel

Gambar 4.7

Variabel yang tidak bernilai bulat pada titik 4 adalah x2 = 7/3 (terletak antara 1 dan 2). Maka
percabangan dilakukan dengan menambahkan kendala x2 2 (program 6) dan x2 3
(program 7)

Program VI (Program IV + kendala x2 2)

Maksimumkan z = 3 x1 + 4 x2
Kendala 2 x1 + x2 6
2 x1 + 3 x2 9
x2 2
x1 1
x2 2
PROGRAM BILANGAN BULAT 111

x1, x2 bilangan bulat tidak negatif

Perhatikan bahwa kendala ketiga dan terakhir dapat digabungkan menjadi kendala x2 = 2 yang
berupa sebuah garis horisontal. Dalam gambar 4.6, daerah fisibelnya berupa garis HK dengan
koordinat dan nilai fungsi :

K (1, 2) dengan f(K) = 3 (1) + 4 (2) = 11

H (0, 2) dengan f(H) = 3 (0) + 4 (2) = 8

Nilai maksimum fungsi adalah titik K (1, 2) dengan nilai fungsi = 11. Karena koordinat titik K
merupakan bilangan bulat maka titik K merupakan batas bawah dari soal semula. Semua titik
(penyelesaian bulat ataupun tidak) yang memiliki nilai fungsi lebih kecil dari f(K) = 11 akan
diabaikan dan tidak perlu dicabangkan.

Perhatikan bahwa hingga titik K ditemukan, satu-satunya titik yang belum dicabangkan adalah
titik 2 dengan nilai fungsi 11,5. Karena nilai fungsi ini lebih besar dari f(K) maka titik 2 belum
dapat diabaikan.

Berikutnya harus dihitung terlebih dahulu cabang kedua dari titik 4 (dengan penambahan
kendala x2 3 (program 7)

Program VII (Program IV + kendala x2 3)

Maksimumkan z = 3 x1 + 4 x2
Kendala 2 x1 + x2 6
2 x1 + 3 x2 9
x2 2
x1 1
x2 3

x1, x2 bilangan bulat tidak negatif

Perhatikan bahwa kendala 2 dan kendala 5 bersama-sama dapat diringkas sebagai x2 3. Revisi
kendala ini dalam gambar 4.6 menghasilkan sebuah titik fisibel yaitu titik A (0, 3) dengan nilai
fungsi = 3(0) + 4(3) = 12. Percabangan selengkapnya dapat dilihat pada gambar 4.8
112 Riset Operasi : Suatu Tinjauan Algoritmis

z* = 11,5 diabaikan z* = 11 diabaikan


(2,5 , 1) 2 krn z2* < z7* (1 , 2) 6 krn z6* < z7*

x2 1 x2 2
z* = 12,75 z* = 12,33
1 (1 , 7/3) 4
(2,25 , 1,5)
x2 2 x1 1 x2 3

z* = 12 Penyelesaian
z* = 12,5 3 7
(0 , 3) optimal
(1,5 , 2)
x1 2

5 tidak fisibel

Gambar 4.8

Karena program 7 menghasilkan penyelesaian bulat dengan nilai fungsi yang lebih besar dari
nilai fungsi program 6, maka sekarang penyelesaian program 7 menjadi batas bawah
penyelesaian soal mula-mula. Titik yang belum dicabangkan (titik 2 dan titik 6) memiliki nilai
fungsi yang lebih kecil dibanding nilai fungsi program 7 sehingga bisa diabaikan. Berarti titik 7
merupakan penyelesaian optimal soal mula-mula.

Contoh 4.4

Selesaikan program bilangan bulat berikut ini :

Maksimumkan z = - x1 + 4 x2
Kendala - 10 x1 + 20 x2 22
5 x1 + 10 x2 49
8 x1 - x2 36

x1, x2 bilangan bulat tidak negatif

Penyelesaian

Gambar 4.9 merupakan grafik daerah fisibel soal semula jika syarat bilangan bulat ditiadakan.
Titik-titik pada daerah fisibel menunjukkan penyelesaian bulatnya.
PROGRAM BILANGAN BULAT 113

x2
3 5x1+10x2 = 49
-10x1+20x2 =
22
2

2 = 36
8x1- x
1

x1
1 2 3 4

Gambar 4.9

Dengan meneliti nilai fungsi di ke-4 titik sudut daerah fisibel, didapat penyelesaian optimal di
titik (3,8 , 3) dengan z1* = -3,8 + 4 (3) = 8,2.

Karena x1 = 3,8 bukan merupakan penyelesaian bulat, maka soal harus dicabangkan dengan
menambah kendala x1 3 (program 2) dan x1 4 (program 3).

Program 2 (Program 1 + kendala x1 3)

Maksimumkan z = - x1 + 4 x2
Kendala - 10 x1 + 20 x2 22
5 x1 + 10 x2 49
8 x1 - x2 36
x1 3

x1, x2 bilangan bulat tidak negatif

Gambar 4.10 menunjukkan daerah fisibelnya. Penyelesaian optimalnya adalah titik (3, 2,6)
dengan z2* = 7,4

x2
3

x1
1 2 3 4
114 Riset Operasi : Suatu Tinjauan Algoritmis

Gambar 4.10

Program 3 (Program 1 + kendala x1 4)

Maksimumkan z = - x1 + 4 x2
Kendala - 10 x1 + 20 x2 22
5 x1 + 10 x2 49
8 x1 - x2 36
x1 4

x1, x2 bilangan bulat tidak negatif

Gambar 4.11 menunjukkan daerah fisibelnya. Penyelesaian optimalnya adalah titik (3, 2,6)
dengan z2* = 7,4

x2
3

x1
1 2 3 4

Gambar 4.11

Percabangan yang dilakukan dapat dinyatakan dalam gambar 4.12. Karena kedua titik cabang
(titik 2 dan titik 3) bukan merupakan penyelesaian bulat, maka percabangan berikutnya
dilakukan pada titik 3 yang memiliki nilai fungsi yang lebih besar (ingat, soalnya
memaksimumkan).
PROGRAM BILANGAN BULAT 115

z2* = 7,4
(3, 2,6) 2

x1 3
z1* = 8,2
1
(3,8 , 3)
x1 4

z3* = 7,6 3
(4 , 2,9)

Gambar 4.12

Pada titik 3, variabel yang tidak bernilai bulat adalah x2 = 2,9. Maka Percabangan titik 3
dilakukan dengan menambahkan kendala x2 2 (program 4) dan x2 3 (program 5)

Program 4 (Program 3 + kendala x2 2)

Maksimumkan z = - x1 + 4 x2
Kendala - 10 x1 + 20 x2 22
5 x1 + 10 x2 49
8 x1 - x2 36
x1 4
x2 2

x1, x2 bilangan bulat tidak negatif

Gambar 4.13 merupakan grafik daerah fisibelnya. Penyelesaian optimal terjadi pada titik (4, 2)
dengan z4* = 4. Karena penyelesaian optimalnya program 4 merupakan bilangan bulat, maka
z4* = 4 merupakan batas bawah penyelesaian optimal soal mula-mula. Jika kemudian didapatkan
titik lain dengan nilai fungsi kurang dari z4*, maka titik tersebut pastilah bukan penyelesaian
optimal soal semula dan tidak perlu dicabangkan lagi.
116 Riset Operasi : Suatu Tinjauan Algoritmis

x2
3

x1
1 2 3 4

Gambar 4.13

Program 5 (Program 3 + kendala x2 3)

Maksimumkan z = - x1 + 4 x2
Kendala - 10 x1 + 20 x2 22
5 x1 + 10 x2 49
8 x1 - x2 36
x1 4
x2 3

x1, x2 bilangan bulat tidak negatif

Soal dalam program 5 tidak fisibel sehingga tidak memiliki penyelesaian optimal.

Gambar 4.14 menunjukkan percabangan yang dilakukan pada titik 3. Karena z2* = 7,4 > z4*,
maka titik 2 tetap perlu dicabangkan. Percabangan titik 2 dilakukan dengan menambahkan
kendala x2 2 (program 6) dan x2 3 (program 7)

z2* = 7,4
(3, 2,6) 2

x1 3
z1* = 8,2
1
(3,8 , 3) z4* = 4
4
x1 4 (4 , 2)
x2 2
z3* = 7,6 3
(4 , 2,9)
x2 3
5 tidak fisibel

Gambar 4.14
PROGRAM BILANGAN BULAT 117

Program 6 (Program 2 + kendala x2 2)

Maksimumkan z = - x1 + 4 x2
Kendala - 10 x1 + 20 x2 22
5 x1 + 10 x2 49
8 x1 - x2 36
x1 3
x2 2

x1, x2 bilangan bulat tidak negatif

Titik optimal program 6 adalah (1,8 , 2) dengan nilai fungsi z6* = 6,2 (lihat gambar 4.15)

x2
3

x1
1 2 3 4

Gambar 4.15

Program 7 (Program 2 + kendala x2 3)

Maksimumkan z = - x1 + 4 x2
Kendala - 10 x1 + 20 x2 22
5 x1 + 10 x2 49
8 x1 - x2 36
x1 3
x2 3

x1, x2 bilangan bulat tidak negatif

Program 7 bukan merupakan soal yang fisibel sehingga tidak memiliki penyelesaian.

Satu-satunya titik yang penyelesaiannya tidak bulat adalah titik 6. Karena z6* = 6,2 > z4* (batas
bawah penyelesaian), maka titik 6 perlu dicabangkan lagi.
118 Riset Operasi : Suatu Tinjauan Algoritmis

Percabangan titik 6 dilakukan dengan menambahkan kendala x1 1 (program 8) dan x1 2


(program 9)

Program 8 (Program 6 + kendala x1 1)

Maksimumkan z = - x1 + 4 x2
Kendala - 10 x1 + 20 x2 22
5 x1 + 10 x2 49
8 x1 - x2 36
x1 3
x2 2
x1 1

x1, x2 bilangan bulat tidak negatif

Perhatikan bahwa kendala 4 pada program 7 sebenarnya dapat dihilangkan karena sudah
tercakup dalam kendala terakhir. Program 8 menghasilkan penyelesaian optimal di titik (1, 1,6)
dengan nilai fungsi z8* = 5,4 (lihat gambar 4.16)

x2
3

x1
1 2 3 4

Gambar 4.16

Program 9 (Program 6 + kendala x1 2)

Maksimumkan z = - x1 + 4 x2
Kendala - 10 x1 + 20 x2 22
5 x1 + 10 x2 49
8 x1 - x2 36
x1 3
PROGRAM BILANGAN BULAT 119

x2 2
x1 2

x1, x2 bilangan bulat tidak negatif

Penyelesaian optimal program 9 adalah titik (2,2) dengan nilai fungsi z9* = 6 (lihat gambar 4.17)

x2
3

x1
1 2 3 4

Gambar 4.17

Karena penyelesaian program 9 bulat dan z9* > z4* (batas bawah sebelumnya) maka z9*
menjadi batas bawah baru.

Satu-satunya titik yang mungkin dicabangkan adalah titik 8. Akan tetapi karena z9* > z8* (=
5,4), maka percabangan tidak perlu dilakukan. Penyelesaian program 9 menjadi penyelesaian
masalah semula. Gambar 4.18 menunjukkan secara lengkap percabangan yang dilakukan hingga
diperoleh penyelesaian optimal.
120 Riset Operasi : Suatu Tinjauan Algoritmis

z8* = 5,4
8
(1 , 1,6)
z6* = 6,2 x1 1
(1,8 , 2) 6

z2* = 7,4 x2 2 x1 2 z9* = 6


(3, 2,6) 2 9 (2 , 2)
Penyelesaian
x2 3 optimal
x1 3
z1* = 8,2 7 tidak fisibel

1
(3,8 , 3) z4* = 4
4
x1 4 (4 , 2)
x2 2
z3* = 7,6 3
(4 , 2,9)
x2 3
5 tidak fisibel

Gambar 4.18
Contoh 4.5

Selesaikan maslaah program bilangan bulat berikut ini dengan metode cabang – batas

Minimumkan z = x1 - 2 x2
Kendala 2 x1 + x2 5
- 4 x1 + 4 x2 5

x1, x2 bilangan bulat 0

Penyelesaian

Gambar 4.19 menunjukkan daerah fisibel soal semula jika kendala bilangan bulat dihilangkan.
Titik minimum terletak pada titik (1,25 , 2,5) dengan nilai fungsi z1* = - 3,75.

x2 -4x1 + 4x2 5
2
2x1 + x2 5

x1
1 2 3

Gambar 4.19
PROGRAM BILANGAN BULAT 121

Karena penyelesaiannya belum merupakan bilangan bulat, maka soal semula perlu dicabangkan.
Baik x1 maupun x2 dalam penyelesaian optimal soal semula bukanlah bilangan bulat. Pilih
variabel yang terjauh dari bilangan bulat yaitu x2 = 2,5. Percabangan dilakukan dengan
menambahkan kendala x2 2 (program 2) dan kendala x2 3 (program 3). Kedua
percabangan dapat digambarkan pada gambar 4.20 dan 4.21

Program 2 (Program 1 + kendala x2 2)

Minimumkan z = x1 - 2 x2
Kendala 2 x1 + x2 5
- 4 x1 + 4 x2 5
x2 2

x1, x2 bilangan bulat 0

x2
2

x1
1 2 3

Gambar 4.20

Gambar 4.20 menunjukkan grafik penyelesaian program 2. Didapat titik optimal (0,75 , 2)
dengan nilai minimum z2* = - 3,25

Program 3 (Program 1 + kendala x2 3)

Minimumkan z = x1 - 2 x2
Kendala 2 x1 + x2 5
- 4 x1 + 4 x2 5
x2 3

x1, x2 bilangan bulat 0


122 Riset Operasi : Suatu Tinjauan Algoritmis

Program 3 merupakan soal yang tidak fisibel sehingga tidak memiliki penyelesaian optimal.
Maka program 2 adalah satu-satunya yang harus diproses lebih lanjut.

Penyelesaian program 2 bukanlah merupakan penyelesaian bulat sehingga perlu dicabangkan.


Karena x1 = 0,75, maka percabangan dilakukan dengan menambahkan kendala x1 0
(program 4) dan x1 1 (program 5).

Program 4 (Program 2 + kendala x1 0)

Minimumkan z = x1 - 2 x2
Kendala 2 x1 + x2 5
- 4 x1 + 4 x2 5
x2 3
x1 0

x1, x2 bilangan bulat 0

Perhatikan bahwa kendala terakhir program 4 (x1 0) bersama-sama dengan syarat tidak negatif
(x1 0) berarti bahwa x1 = 0. Ini berarti daerah fisibelnya terletak sepanjang sumbu x2 antara x2
= 0 hingga x2 = 1,25 (lihat gambar 4.21). Penyelesaian optimalnya adalah titik (0 , 1,25)
dengan nilai minimum = z4* = -2,5.

Penyelesaian program 2 belum merupakan penyelesaian bulat sehingga batas atas penyelesaian
belum diperoleh.

x2
2

x1
1 2 3

Gambar 4.21
PROGRAM BILANGAN BULAT 123

Program 5 (Program 2 + kendala x1 1)

Minimumkan z = x1 - 2 x2
Kendala 2 x1 + x2 5
- 4 x1 + 4 x2 5
x2 3
x1 1

x1, x2 bilangan bulat 0

Gambar 4.22 merupakan grafik penyelesaian program 5. Titik minimumnya terletak pada (1 , 2)
dengan nilai minimum = z5* = - 3. Karena merupakan penyelesain bulat, maka nilai minimum
ini merupakan batas atas penyelesaian masalah semula.

Karena z5* < z4* maka program 4 tidak perlu dicabangkan lagi (ingat soalnya meminimumkan
sehingga kalaupun program 4 dicabangkan maka nilai minimum hasil percabangan pasti > z4*)

Karena tidak ada titik lain yang dapat dicabangkan, maka penyelesaian masalah semula adalah
pada titik (1 , 2) dengan z minimum = - 3. Proses seluruh percabangan dapat dilihat pada
gambar 4.23

x2
2

x1
1 2 3

Gambar 4.22
124 Riset Operasi : Suatu Tinjauan Algoritmis

z4* = -2,5
(0, 1,25) 4

z2* = -3,25 x1 0
(0,75, 2) 2
x1 1
x2 2
z1* = -3,75 z5* = - 3 5
(1 , 2)
1
(1,25 , 2,5)
x2 3

3 tidak fisibel

Gambar 4.23

4.3 Metode Bidang Potong


Misalkan penyelesaian soal program bilangan bulat mula-mula tidak menghasilkan penyelesaian
bulat. Metode Bidang Potong (Cutting Plane) menambahkan sejumlah kendala sehingga
diperoleh daerah fisibel baru yang penyelesaiannya merupakan bilangan bulat.
titik optimum tanpa
x2 kendala bulat x2 kendala tambahan

3 3

2 2

1 1 titik optimum
program bilangan
bulat
x1
1 2 3 4 1 2 3 4

(a) (b)
Gambar 4.24
Gambar 4.24 (a) merupakan daerah fisibel dari program mula-mula. Gambar 4.24 (b)
menunjukkan daerah fisibel baru setelah ditambahkan beberapa kendala tambahan. Daerah
fisibel baru ini akan memiliki penyelesaian optimal yang merupakan bilangan bulat.

Misalkan [a] menyatakan bilangan bulat terbesar yang lebih kecil atau sama dengan a. Sebagai
contoh, [3,2] = 3, [2] = 2, [-3,4] = -4. Maka a – [a] menyatakan bagian pecahan dalam
bilangan a. 3,2 – [3,2] = 3,2 – 3 = 0,2 ; 2 – [2] = 2 – 2 = 0 ; -3,4 – [-3,4] = -3,4 – (-4) = 0,6.

Algoritma bidang potong adalah sebagai berikut :


PROGRAM BILANGAN BULAT 125

1. Selesaikan program bilangan bulat dengan mengabaikan kendala semua penyelesaian adalah
bilangan bulat. Jika penyelesaian tersebut menghasilkan penyelesaian bulat, maka
penyelesaian tersebut merupakan penyelesaian program bilangan bulat mula-mula.

2. Jika penyelesaian langkah (1) memuat variabel yang bernilai pecahan, lakukan langkah-
langkah berikut :

a. Pilih sembarang baris tabel optimal simpleks yang dalam kolom bi nya memuat pecahan.
Jika ada beberapa baris yang demikian, kadang-kadang baris yang memuat pecahan
terbesar dipilih agar iterasi lebih cepat.

b. Misalkan baris ke – i adalah baris yang terpilih dan persamaan yang terbentuk dalam baris
ke – i adalah aij x j bi . Maka tambahkan kendala fij x j fi pada soal mula-
j j

mula dengan
f ij = aij [aij ] = bagian pecahan dalam a ij

f i = bi [bi ] = bagian pecahan dalam bi

3. Kembali ke langkah (1).

Pada metode cabang – batas, penyelesaian program linier yang sesuai dapat dilakukan dengan
metode grafik (jika 2 variabel) maupun dengan metode simpleks. Akan tetapi penyelesaian
program bilangan bulat dengan metode bidang potong haruslah dilakukan dengan metode
simpleks, meskipun terdiri dari 2 variabel. Hal ini disebabkan karena dalam iterasinya
membutuhkan kendala baru yang dibentuk dari komponen pecahan variabel slack.

Untuk memahami bagaimana cara kerja metode bidang potong, perhatikan contoh 4.6 berikut ini

Contoh 4.6

Selesaikan contoh 4.3 dengan metode bidang potong !

Penyelesaian

Dengan menambahkan variabel slack x3 dan x4 didapat bentuk standar simpleks contoh 4.3 :

Maksimumkan z = 3 x1 + 4 x2 + 0 x3 + 0 x4
Kendala 2 x1 + x2 + x3 = 6
126 Riset Operasi : Suatu Tinjauan Algoritmis

2 x1 + 3 x2 + x4 = 9
x1 .. x4 bilangan bulat tidak negatif

cj 3 4 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi
0 x3 2 1 1 0 6 6
0 x4 2 3 0 1 9 3
zj 0 0 0 0
0
cj - z j 3 4 0 0
0 x3 4
3 0 1 1
3 3 9
4

4 x2 2
3 1 0 1
3 3 9
2

zj 8
3 4 0 4
3
12
cj - z j 1
3 0 0 4
3

3 x1 1 0 3
4
1
4
9
4

4 x2 0 1 2
4
2
4
6
4

zj 3 4 1
4
5
4 51
cj - z j
4
0 0 1
4
5
4

Tabel 4.1
Tabel 4.1 merupakan tabel iterasi simpleksnya. Penyelesaian optimalnya adalah (x1, x2)

= 9 4 , 6 4 = 2 1 4 , 1 1 2 dengan nilai fungsi 51 . Tampak bahwa baik x1 maupun x2 bukan


4
merupakan penyelesaian bulat sehingga bukanlah penyelesaian masalah mula-mula.

Perhatikan tabel optimal tabel 4.1. Persamaan yang sesuai adalah :

x1 + 43 x3 - 1
4 x4 = 9
4

6
x2 - 24 x3 + 2
4 x4 = 4

Misalkan diambil baris pertama pada penyelesaian optimal sebagai dasar untuk menambah
3 1
kendala. Jika diambil yang berbentuk pecahan saja maka didapatkan persamaan 4 x3 - 4 x4 =
9
4 atau (0 + 43 ) x3 + (-1 + 43 ) x4 = (2 + 14 ).

Maka kendala yang ditambahkan pada iterasi berikutnya adalah :


3 3 1
4 x3 + 4 x4 4 . Jadikan bentuk standar simpleks dengan menambahkan variabel slack dan

semu. Didapat 3
4 x3 + 3
4 x4 – x5 + x6 = 1
4
PROGRAM BILANGAN BULAT 127

Program 2

Maksimumkan z = 3 x1 + 4 x2 + 0 x3 + 0 x4 + 0 x5 - M x6

x1 + 43 x3 - 1
4 x4 = 9
4

6
x2 - 24 x3 + 2
4 x4 = 4

3
4 x3 + 3
4 x4 – x5 + x6 = 1
4

x1 .. x6 bilangan bulat tidak negatif

Perhatikan bahwa pada program 2, model yang terbentuk bukanlah model asli program 1, tapi
model pada penyelesaian optimalnya.

Tabel 4.2 menunjukkan hasil iterasi program 2


5
Penyelesaian optimalnya adalah (x1, x2) = (2, 3 ) = (2, 1 23 ) dengan nilai fungsi 12 23 .
Tampak bahwa x2 belum merupakan bilangan bulat sehingga perlu ditambah kendala baru
berdasarkan persamaan dimana variabel basis berada (baris kedua dalam tabel optimal tabel 4.2).

Jika hanya diambil bagian pecahan pada persamaan kedua (tanpa mengambil variabel semunya)
5
diperoleh : - 23 x5 = 3 atau (-1 + 13 ) x5 = (1 + 23 ). Maka kendala yang ditambahkan adalah 1
3 x5
2
3

Dengan penambahan variabel slack dan semu didapat 1


3 x5 – x6 + x7 = 2
3
128 Riset Operasi : Suatu Tinjauan Algoritmis

cj 3 4 0 0 0 -M
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
3 x1 1 0 3
4
1
4 0 0 9
4 3
4 x2 0 1 2
4
2
4 0 0 6
4 -
-M x6 0 0 3
4
3
4 -1 1 1
4
1
3

zj 3 4 3M 1
4
3M 5
4 M -M
M 51
cj - zj
4
0 0 3M 1
4
3M 5
4 -M 0
3 x1 1 0 0 -1 1 -1 2
4 x2 0 1 0 1 2
3
2
3
5
3

0 x3 0 0 1 1 4
3
4
3
1
3

zj 3 4 0 1 1
3
1
3
12 23
cj - zj 0 0 0 -1 1
3
3M 1
3

Tabel 4.2

Program 3

Revisi model dalam program 2 adalah persamaan yang terbentuk dari tabel optimal tabel 4.2
(dengan menghilangkan variabel semu) ditambah kendala tambahannya

Maksimumkan z = 3 x1 + 4 x2 + 0 x3 + 0 x4 + 0 x5 + 0 x6 - M x7

x1 - x4 + x5 = 2
2 5
x2 + x4 - 3 x5 = 3

x3 + x4 – 43 x5 = 1
3

1 2
3 x5 - x6 + x7 = 3

x1 .. x6 bilangan bulat tidak negatif


PROGRAM BILANGAN BULAT 129

cj 3 4 0 0 0 0 -M
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 x7 bi
3 x1 1 0 0 -1 1 0 0 2 2
4 x2 0 1 0 1 2
3 0 0 5
3 -
0 x3 0 0 1 1 4
3 0 0 1
3 -
-M x7 0 0 0 0 1
3 -1 1 2
3 2
zj 3 4 0 1 M 1
3 M -M
2 M 26
cj - zj
3
0 0 0 -1 M 1
3 -M 0
3 x1 1 0 0 -1 0 3 -3 0
4 x2 0 1 0 1 0 -2 2 3
0 x3 0 0 1 1 0 -4 4 3
0 x5 0 0 0 0 1 -3 3 2
zj 3 4 0 1 0 1 -1
12
cj - zj 0 0 0 -1 0 -1 -M+1

Tabel 4.3

Penyelesaian optimal program 3 adalah (x1, x2) = (0, 3) dengan nilai fungsi = 12. Karena
semua variabelnya sudah merupakan bilangan bulat, maka penyelesaian program 3 merupakan
penyelesaian soal mula-mula.

Tafsiran geometris proses penyelesaian program bilangan bulat dengan metode bidang potong
adalah sebagai berikut :

Perhatikan tambahan kendala 43 x3 + 3


4 x4 1
4 pada program 2.
Dari bentuk standar sebelum dimasukkan ke tabel simpleks tabel 4.1, persamaannya adalah
2 x1 + x2 + x3 = 6 atau x3 = 6 - 2 x1 - x2
2 x1 + 3 x2 + x4 = 9 atau x4 = 9 - 2 x1 - 3 x2

Apabila kedua persamaan tersebut disubstitusikan ke tambahan kendala program 2 maka


3 3 1
didapatkan 4 (6 - 2 x1 - x2) + 4 (9 - 2 x1 - 3 x2) 4 atau 4x1 + 4x2 14 23 .

Gambar 4.25 (a) menunjukkan daerah fisibel mula-mula (dengan titik optimal (2,25 , 1,5)) dan
gambar 4.25 (b) menunjukkan daerah fisibel dengan adanya tambahan kendala 4x1 + 4x2
14 23 (dengan titik optimal (2 , 1,67))
130 Riset Operasi : Suatu Tinjauan Algoritmis

6 x2 6 x2 6 x2

4x1 + 4x2 14 23 4x1 + 4x2 14 23


3 3 3 x1 + x2 3

(2,25 , 1,5) (2 , 1,67) (2 , 1,67)


(2,25 , (2,25 ,
1,5) 1,5)

x1 x1 x1
3 4,5 3 4,5 3 4,5

(a) (b) (c)

Gambar 4.25

1 2
Penambahan kendala pada program 3 (dengan mengabaikan variabel semu x6) adalah 3 x5 3

atau x5 2.
3 3 1
Penambahan kendala pada program 2 (abaikan variabel semu x6) adalah 4 x3 + 4 x4 - x5 = 4

atau x5 = 14 (3x3 + 3x4 - 1)


Padahal dari persamaan penambahan kendala sebelumnya, x3 = 6 - 2x1 - x2 dan x4 = 9 - 2 x1
- 3 x2. Substitusikan kedua persamaan ini ke x5. Didapat x5 = 11 - 3x1 - 3x2 . Maka penambahan
kendala pada program 3 adalah 11 - 3x1 - 3x2 2 atau x1 + x2 3. Gambar 4.25 (c)
menunjukkan daerah fisibel setelah dilakukan penambahan kendala x1 + x2 3. Titik
optimalnya adalah (0, 3)

Contoh 4.7

Selesaikan soal program bilangan bulat berikut ini dengan metode bidang potong !

Maksimumkan z = 18 x1 + 12 x2
Kendala 2 x1 - x2 5
2 x1 + 3 x2 13
x1 .. x2 bilangan bulat tidak negatif

Penyelesaian

Bentuk standar simpleksnya adalah sebagai berikut :


PROGRAM BILANGAN BULAT 131

Maksimumkan z = 18 x1 + 12 x2 + 0 x3 + 0 x4
Kendala 2 x1 - x2 + x3 = 5
2 x1 + 3 x2 + x4 = 13
x1 .. x4 bilangan bulat tidak negatif

Tabel 4.4 adalah tabel iterasi simpleks soal mula-mula. Titik maksimumnya adalah (3,5 , 2)
dengan nilai fungsi 87

cj 18 12 0 0
(cB)i (xB)i xj x1 x2 x3 x4 bi
0 x3 2 -1 1 0 5 5
2

0 x4 2 3 0 1 13 13
2

zj 0 0 0 0
0
cj - z j 18 12 0 0
18 x1 1 1
2
1
2 0 5
2 -
0 x4 0 4 -1 1 8 2
zj 18 -9 9 0
45
cj - z j 0 21 -9 0
18 x1 1 0 3
8
1
8
7
2

12 x2 0 1 1
4
1
4 2
zj 18 12 15
4
21
4
87
cj - z j 0 0 15
4
21
4

Tabel 4.4

Pada tabel optimal tabel 4.4, didapat persamaan

x1 + 83 x3 + 1
8 x4 = 7
2

x2 - 14 x3 + 1
4 x4 = 2

Karena x1 merupakan penyelesaian yang tidak bulat, maka penambahan kendala didasarkan atas
persamaan pertama tabel optimal tabel 4.4. Peramaan tersebut dapat ditulis sebagai x1 + (0 +
3
8 ) x3 + (0 + 18 ) x4 = (3 + 12 ).
132 Riset Operasi : Suatu Tinjauan Algoritmis

3
Kendala baru dibuat berdasarkan bagian pecahannya, yaitu 8 x3 + 18 x4 1
2 . Penambahan
3
variabel slack dan semu menghasilkan persamaan 8 x3 + 18 x4 - x5 + x6 = 12 . Maka model yang
baru adalah :

Program 2

Maksimumkan z = 18 x1 + 12 x2 + 0 x3 + 0 x4 + 0 x5 - M x6

Kendala x1 + 83 x3 + 1
8 x4 = 7
2

x2 - 14 x3 + 1
4 x4 = 2
3 1 1
8 x3 + 8 x4 - x5 + x6 = 2

x1 .. x6 bilangan bulat tidak negatif


7
Tabel 4.5 menunjukkan iterasi penyelesaiannya. Penyelesaian optimal adalah (3, 3 ) dengan
nilai fungsi 82

cj 18 12 0 0 0 -M
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 bi
18 x1 1 0 3
8
1
8 0 0 7
2
28
3

12 x2 0 1 1
4
1
4 0 0 2 -
-M x6 0 0 3
8
1
8 -1 1 1
2
4
3

zj 18 12 3 M 30
8
M 42
8 M -M
M 174
cj - zj
2
0 0 3 M 30
8
M 42
8 -M 0
18 x1 1 0 0 0 1 -1 3
12 x2 0 1 0 1
3
2
3
2
3
7
3

0 x3 0 0 1 1
3
8
3
8
3
4
3

zj 18 12 0 4 10 -10
82
cj - zj 0 0 0 -4 -10 -M+10

Tabel 4.5

Bidang potong yang ditambahkan pada program 2 dapat dijelaskan sebagai berikut :
Kendala soal asli adalah 2 x1 - x2 + x3 = 5 dan 2 x1 + 3 x2 + x4 = 13. Maka x3 = 5 - 2 x1 +
x2 dan x4 = 13 - 2 x1 - 3 x2
PROGRAM BILANGAN BULAT 133

Kendala yang ditambahkan pada program 2 adalah


3
8 x3 + 18 x4 1
2 .
3
8 (5 - 2 x1 + x2) + 18 (13 - 2 x1 - 3 x2) 1
2 . Didapat x1 3.
Jadi program 2 adalah program 1 ditambah dengan bidang potong yang dibatasi oleh x1 3.
Penyelesaian optimal program 2 belum merupakan bilangan bulat sehingga harus direvisi dengan
menambah sebuah bidang potong lagi. Perhatikan persamaan yang terbentuk pada tabel optimal
tabel 4.5 (dengan menghilangkan variabel semunya)

x1 + x5 = 3
7
x2 + 13 x4 - 2
3 x5 = 3

8
x3 + 13 x4 - 3 x5 = 4
3

Diantara basis x1 dan x2 pada tabel optimal 4.5, yang memiliki penyelesaian bukan bulat adalah
7
x2 (bernilai 3 ). Persamaan pada baris x2 dapat dituliskan sebagai x2 + (0+ 13 ) x4 + (-1+ 13 ) x5 =

(2+ 13 ). Kendala yang ditambahkan adalah bagian pecahannya yaitu 1


3 x4 + 1
3 x5 1
3 .
1
Penambahan variabels slack dan semu menghasilkan persamaan 3 x4 + 13 x5 - x6 + x7 = 1
3

Program 3

Maksimumkan z = 18 x1 + 12 x2 + 0 x3 + 0 x4 + 0 x5 + 0 x6 - M x7

Kendala x1 + x5 = 3
7
x2 + 13 x4 - 2
3 x5 = 3

8
x3 + 13 x4 - 3 x5 = 4
3

1
3 x4 + 13 x5 - x6 + x7 = 1
3

x1 .. x7 bilangan bulat tidak negatif

Tabel 4.6 menunjukkan iterasi penyelesaiannya. Penyelesaian optimal adalah (3, 2) dengan nilai
fungsi 78. Karena semua penyelesaiannya sudah bulat, maka penyelesaian tersebut merupakan
penyelesaian masalah mula-mula.
134 Riset Operasi : Suatu Tinjauan Algoritmis

cj 18 12 0 0 0 0 -M
(cB)i (xB)i xj x1 x2 x3 x4 x5 x6 x7 bi
18 x1 1 0 0 0 1 0 0 3 -
12 x2 0 1 0 1
3
2
3 0 0 7
3 7
0 x3 0 0 1 1
3
8
3 0 0 4
3 4
-M x7 0 0 0 1
3
1
3 -1 1 1
3 1
zj 18 12 0 M 12
3
M 30
3 M -M
M 246
cj - zj
3
0 0 0 M 12
3
M 30
3 -M 0
18 x1 1 0 0 0 1 0 0 3
12 x2 0 1 0 0 -1 1 -1 2
0 x3 0 0 1 0 -3 1 -1 1
0 x4 0 0 0 1 1 -3 3 1
zj 18 12 0 0 6 12 -12
78
cj - zj 0 0 0 0 -6 -12 -M+12

Tabel 4.6

Interpretasinya adalah sebagai berikut :


1
Program 3 dibuat dengan menambahkan kendala 3 x4 + 13 x5 1
3 atau x4 + x5 1.
3
Kendala yang ditambahkan pada program 2 adalah 8 x3 + 18 x4 - x5 = 1
2 atau 3x3 + x4 - 8x5 =
4. Padahal dari program mula-mula, x3 = 5 - 2x1 + x2 dan x4 = 13 - 2x1 - 3x2. Substitusi
harga x3 dan x4 ini ke kendala program 2 tersebut akan menghasilkan 3 (5 - 2x1 + x2) + (13 -
2x1 - 3x2) - 8x5 = 4 atau x5 = 3 – x1
Jadi kendala yang ditambahkan pada program 3 adalah (13 - 2x1 - 3x2) + (3 – x1) 1 atau
x1 + x2 5
Gambar 4.26 (a) menunjukkan daerah fisibel soal mula-mula, gambar (b) menunjukkan
perubahan daerah fisibel setelah ditambahkan kendala x1 3 (program 2). Gambar (c)
menunjukkan daerah fisibel setelah ditambahkan kendala x1 + x2 5 (program 3)
PROGRAM BILANGAN BULAT 135

x2 x2 bidang x2 bidang bidang


4 4 potong 1 4 potong 2 potong 1

3 3 3
(3,5 , 2)
(3 , 3,3) (3 , 2)

2 2 2

1 1 1

x1 x1 x1
1 2 3 1 2 3 1 2 3

(a) (b) (c)

Gambar 4.26

Pada gambar 4.26 (c) diperoleh penyelesaian optimal bulat sehingga tidak diperlukan
penambahan bidang potong lagi.

4.4 Program 0 – 1
Program 0–1 merupakan kasus khusus program bilangan bulat, dimana xi = {0, 1} untuk semua
i. Dibandingkan dengan metode penyelesaian terdahulu (cabang-batas ataupun bidang potong),
penyelesaian program 0-1 sebenarnya lebih mudah dilakukan dengan menguji semua
kemungkinannya mengingat semua variabelnya hanya dapat bernilai 0 atau 1. Akan tetapi
pengujian tersebut dapat memakan waktu yang lama jika jumlah variabelnya cukup besar. Secara
umum, jika ada n buah variabel, maka ada 2n kemungkinan penyelesaian.

Penyelesaian program 0-1 yang lebih efisien dilakukan dengan metode enumerasi implisit.
Sebenarnya metode enumerasi implisit mirip dengan metode cabang-batas, hanya saja aturan
percabangan, pembatasan dan penghentian cabang diubah lebih sederhana karena setiap
variabelnya hanya bisa bernilai 0 atau 1.

4.4.1 Metode Enumerasi Implisit


Dasar metode enumerasi implisit adalah mengenumerasi sebagian kecil dari semua
kemungkinan penyelesaian (yang kalau dicoba semuanya akan berjumlah 2n buah).
136 Riset Operasi : Suatu Tinjauan Algoritmis

Penyelesaian yang tidak fisibel atau akan menghasilkan nilai yang tidak lebih optimal dari nilai
penyelesaian yang sudah didapat sebelumnya dapat diabaikan.

xi = 1 xi = 0

B C

Gambar 4.27

Seperti halnya metode cabang-batas, iterasi dalam metode enumerasi implisit dapat digambarkan
sebagai pohon biner. Percabangan dilakukan dengan lebih sederhana, yaitu dengan mengambil
nilai suatu variabel = 1 atau 0 (lihat gambar 4.27). Kita berpindah dari satu titik (misal titik A
pada gambar 4.27) ke titik cabangnya (titik B atau C pada gambar 4.27) dengan menetapkan nilai
xi = 1 atau 0.
Variabel yang sudah ditetapkan nilainya (1 atau 0) disebut variabel tetap (fixed variable).
Sebaliknya, variabel yang belum ditetapkan nilainya disebut variabel bebas (free variable)
Algoritma Enumerasi Implisit untuk menyelesaikan program 0-1 adalah sebagai berikut :

1. Langkah Maju (forward step) :

Ujilah apakah suatu titik iterasi perlu dicabangkan. Jika perlu, cabangkan titik tersebut ke kiri
dengan memberi nilai = 1 pada suatu variabel bebas. Lakukan terus hingga sampai pada
suatu titik yang tidak perlu dicabangkan lagi.

2. Langkah Balik (backtracking) :

a. Carilah titik terdekat di atasnya yang hanya memiliki sebuah cabang kiri (misal titik vk).
Apabila semua titik di atasnya sudah memiliki 2 cabang, hentikan proses

b. Cabangkan titik vk ke kanan dengan mengambil xk = 0

c. Kembali ke langkah (1)

Iterasi dengan metode enumerasi implisit mirip dengan proses Depth First Search. Gambar 4.28
menunjukkan proses percabangan yang dilakukan dengan algoritma enumerasi implisit pada 3
variabel x1, x2 dan x3. Nomer titik menunjukkan urutan dimana titik tersebut diproses.
PROGRAM BILANGAN BULAT 137

Dari titik-0, lakukan percabangan ke kiri dengan mengambil x1 = 1. Pada titik-1, lakukan
percabangan ke kiri lagi dengan mengambil x2 = 1 hingga diperoleh titik-2.
Misalkan berikutnya titik-2 tidak perlu dicabangkan lagi, maka lakukan proses backtracking.
Titik terdekat di atas titik-2 yang belum memiliki cabang kanan adalah titik-1. Cabangkan titik-1
ke kanan dengan mengambil x2 = 0 sehingga didapat titik-3. Berikutnya cabangkan lagi titik-3 ke
kiri dengan mengambil x3 = 1 sehingga dihasilkan titik-4.
Karena sudah mencabangkan ketiga variabel, berikutnya lakukan backtracking dengan
mencabangkan titik-3 ke kanan sehingga diperoleh titik-5.
Karena titik-5 tidak bisa dicabangkan lagi, maka proses backtracking berikutnya adalah
mencabangkan titik-0 ke kanan sehingga diperoleh titik-6
0

x1 = 1 x1 = 0

1 6

x2 = 1 x2 = 0

2 3

x3 = 1 x3 = 0

4 5

Gambar 4.28

Untuk kemudahan proses, program 0-1 dapat dinyatakan dalam bentuk standar sebagai berikut :

Minimumkan z c1 x1 c2 x2 ... cn xn dengan c j 0 j

dengan kendala :
a11 x1 a12 x2 ... a1n xn b1
a21 x1 a22 x2 ... a2 n xn b2
...
am1 x1 am 2 x2 ... amn xn bm

x1, x2 , ... , xn 0, 1
138 Riset Operasi : Suatu Tinjauan Algoritmis

Perhatikan perbedaan bentuk standar program 0-1 di atas dengan bentuk standar program linier /
program bilangan bulat yang sudah dibahas sebelumnya. Dalam bentuk standar program 0-1, bi
tidak disyaratkan 0. Tapi justru cj yang harus 0.
Apabila semua bi 0, maka penyelesaian optimalnya adalah x1 = x2 = … = xn = 0.
Penyelesaian ini akan optimal karena cj 0.
Perubahan soal ke bentuk standar program 0-1 dilakukan dengan cara sebagai berikut :

1. Jika soal memaksimumkan, jadikan ke soal meminimumkan dengan mengalikan cj di fungsi


sasaran dengan (-1).

Sebagai contoh, soal Memaksimumkan z = 2x1 + 3x2 dapat diubah menjadi


Meminimumkan z = -2x1 – 3x2

2. Jika ada kendala berbentuk pertidaksamaan , ubah ke bentuk pertidaksamaan dengan


mengalikan kedua ruasnya dengan (-1)

3. Jika ada kendala berbentuk persamaan, ubahlah menjadi 2 buah kendala yang masing-
masing berupa pertidaksamaan dan .

Sebagai contoh, kendala x1 - 2x2 = 4 diubah menjadi 2 buah kendala x1 - 2x2 4 dan x1 -
2x2 4

4. Jika ada ck < 0, gantilah xk dengan (1 – xk), baik pada fungsi sasaran maupun pada
kendalanya.

Sebagai contoh, pada model

Minimumkan z = 2x1 – 3x2

Kendala x1 – 2x2 -1

3x1 + x2 2 x1, x2 = { 0, 1}

diubah ke bentuk standar program 0-1 dengan mengambil x2 = 1 – x’2. Jika disubstitusikan
ke model akan menghasilkan :

Minimumkan z = 2x1 – 3 (1 – x’2) = -2 + 2x1 + 3x’2

Kendala x1 – 2 (1 – x’2) -1 atau x1 + 2x’2 1


PROGRAM BILANGAN BULAT 139

3x1 + (1 – x’2) 2 atau 3x1 - x’2 1

x1, x’2 = { 0, 1}

Untuk mengurangi jumlah titik iterasi, maka pada setiap titik dilakukan proses uji penyelesaian
nol (zero completion) dan uji infisibilitas (infeasibility test). Kedua uji ini digunakan untuk
menentukan apakah titik tersebut perlu dicabangkan atau tidak. Jika perlu, lakukan percabangan
kiri dengan mengambil xi = 1. Jika tidak perlu dicabangkan, lakukan proses backtracking.

Uji Penyelesaian Nol


Penyelesaian nol adalah pemberian nilai nol pada semua variabel bebas. Ini disebabkan karena
koefisien fungsi sasaran semua variabel bebas (cj) 0 sehingga pemberian nilai nol pada semua
variabel bebas tersebut akan menyebabkan nilai fungsinya menjadi minimum.

Mulai

Beri nilai 0 pada semua


variabel bebas

Hitung nilai fungsi z

Hentikan proses pada titik-k.


z zU ya Lakukan Backtracking untuk
memproses titik diatasnya

tidak

titik-k memenuhi
ya z menjadi batas atas baru
semua kendala

tidak
Lakukan Backtracking untuk
Lakukan uji Infisibilitas memproses titik diatasnya

Selesai

Gambar 4.29
140 Riset Operasi : Suatu Tinjauan Algoritmis

Akan tetapi harus dicek juga apakah pemberian nilai nol pada semua variabel bebas tersebut
merupakan penyelesaian fisibel (memenuhi semua kendala). Jika penyelesaian nol tersebut
merupakan penyelesaian yang fisibel, maka akan diperoleh batas atas penyelesaian. Sebaliknya,
jika penyelesaian nol tersebut tidak fisibel (ada kendala yang tidak terpenuhi), maka titik tersebut
perlu dicabangkan ke kiri dengan mengambil nilai variabel bebas berikutnya = 1.
Misalkan sebelum proses pada titik-k dilakukan, telah diperoleh batas atas zU. Bagan alir proses
uji penyelesaian nol tampak pada gambar 4.29
Pada awal proses belum ditemukan batas atas penyelesaian sehingga zU diambil +

Uji Infisibilitas

Uji infisibilitas digunakan untuk menentukan apakah dalam proses berikutnya nanti akan
mungkin memperoleh penyelesaian fisibel. Jika mungkin maka dilakukan percabangan untuk
memperoleh penyelesaian lainnya. Sebaliknya jika tidak mungkin maka titik tersebut tidak perlu
dicabangkan lagi.

Uji infisibilitas dilakukan dengan mengevaluasi besarnya nilai maksimum variabel longgar
(variabel slack) pada tiap kendala. Perhatikan bahwa dalam bentuk standarnya, semua kendala
berbentuk pertidaksamaan sehingga diperlukan penambahan variabel longgar (= s) untuk
menjadikannya menjadi kendala persamaan. Karena ruas kanan kendala tidak disyaratkan positip
maka variabel longgar juga mungkin bernilai negatif.

Jika nilai maksimum variabel longgar pada suatu kendala adalah negatif (s < 0), berarti tidaklah
mungkin memperoleh penyelesaian fisibel sehingga titik tersebut tidak perlu dicabangkan.
Sebaliknya, jika nilai maksimum s untuk semua kendala 0, berarti titik tersebut perlu
dicabangkan.

Sebagai contoh, perhatikan kendala 4x1 – 2x2 + 3x3 + x4 – x5 + 3x6 2. Misalkan pada suatu
titik iterasi, variabel tetapnya adalah x1 = 1 dan x3 = 1. Maka kendala tersebut menjadi 4(1) –
2x2 + 3(1) + x4 – x5 + 3x6 2 atau – 2x2 + x4 – x5 + 3x6 -5

Untuk merubah menjadi bentuk persamaan tambahkan variabel longgar s

– 2x2 + x4 – x5 + 3x6 + s = - 5. Maka s = - 5 + 2x2 - x4 + x5 - 3x6


PROGRAM BILANGAN BULAT 141

Karena semua xi hanya mungkin bernilai 0 atau 1, maka nilai maksimum s akan dicapai jika
semua variabel yang memiliki koefisien positip (x2 dan x5) diberi nilai = 1 dan yang berkoefisien
negatif (x4 dan x6) diberi nilai = 0.

smak = - 5 + 2(1) – (0) + (1) – 3(0) = -2 < 0

Gambar 4.30 menunjukkan bagan alir uji infisibilitas pada titik-k

Mulai

Hitung smak semua kendala

Titik-k tidak perlu dicabangkan.


Ada
ya Lakukan Backtracking untuk
smak < 0
memproses titik diatasnya

tidak

cabangkan titik k ke kiri


Selesai

Ulangi Proses Pengujian

Gambar 4.30

Contoh 4.8

Selesaikan program 0-1 berikut ini :

Minimumkan z = 4x1 + 5x2 + 6x3 + 2x4 + 3x5

Kendala - 4x1 – 2x2 + 3x3 - 2x4 + x5 -1

- x1 – 5x2 - 2x3 + 2x4 - 2x5 -5 x1, … , x5 = { 0, 1}

Penyelesaian

Tampak bahwa soal sudah dalam bentuk standar, yaitu soal meminimumkan dengan semua cj
0, dan semua kendala berbentuk . Tampak pula bahwa ruas kanan kendalanya negatif
sehingga penyelesaian optimalnya bukan xi = 0 untuk semua I
142 Riset Operasi : Suatu Tinjauan Algoritmis

Program 0 (program mula-mula)

Karena pada awalnya belum ditemukan penyelesaian fisibel maka diambil batas atas
penyelesaiannya = + . Pada program 0, belum ada variabel yang diberi nilai sehingga semua
variabelnya merupakan variabel bebas.

Uji Penyelesaian Nol

Ambil xi = 0 untuk semua variabel bebas (berarti x1 = x2 = x3 = x4 = x5 = 0). Maka z = 4(0) +


5(0) + 6(0) + 2(0) + 3(0) = 0

Karena z < zU maka selanjutnya diuji apakah pengambilan xi = 0 tersebut merupakan


penyelesaian fisibel (memenuhi semua kendala)

Kendala-1 : - 4(0) – 2(0) + 3(0) - 2(0) + 0 = 0 -1. Jadi penyelesaian dengan xi = 0


tersebut tidak fisibel sehingga selanjutnya dilakukan uji infisibilitas. Perhatikan bahwa kendala-2
tidak perlu diuji lagi.

Uji Infisibilitas

Untuk menjadikan kendala menjadi bentuk persamaan, perlu ditambahkan variabel longgar s1
dan s2 pada kendala-1 dan kendala-2.

Kendala-1 : - 4x1 – 2x2 + 3x3 - 2x4 + x5 + s1 = -1

s1 = - 1 + 4x1 + 2x2 - 3x3 + 2x4 - x5

Maka s1 maks = - 1 + 4(1) + 2(1) - 3(0) + 2(1) – (0) = 7 > 0

Kendala-2 : - x1 – 5x2 - 2x3 + 2x4 - 2x5 + s2 = -5

s2 = - 5 + x1 + 5x2 + 2x3 - 2x4 + 2x5

x1 = 1

Gambar 4.31 a
PROGRAM BILANGAN BULAT 143

Maka s2 maks = - 5 + (1) + 5(1) + 2(1) – 2(0) + 2(1) = 5 > 0

Karena s1 maks 0 dan s2 maks 0 maka titik-1 perlu dicabangkan. Gambar 4.31 a

Ambil sembarang variabel untuk dijadikan variabel tetap (misal ambil x1). Percabangan
dilakukan dengan mengambil x1 = 1 (lihat gambar 4.31 a)

Program 1 (x1 = 1)

Dengan mensubstitusi x1 = 1 pada model program 0 maka diperoleh :

Minimumkan z = 4 + 5x2 + 6x3 + 2x4 + 3x5

Kendala – 2x2 + 3x3 - 2x4 + x5 3

– 5x2 - 2x3 + 2x4 - 2x5 -4 x2, … , x5 = { 0, 1}

Uji Penyelesaian Nol

Variabel bebasnya adalah { x2, .. , x5 }. Dengan mengambil x2 = x3 = x4 = x5 = 0 maka didapat


z = 4. Karena z = 4 < zU = + maka selanjutnya diuji apakah penyelesaian nol tersebut
memenuhi semua kendala.

Pada kendala-1 : – 2(0) + 3(0) - 2(0) + (0) = 0 3 tapi


pada kendala-2 : – 5(0) - 2(0) + 2(0) - 2(0) = 0 -4 sehingga perlu dilakukan uji
infisibilitas.

Uji Infisibilitas

Slack kendala-1 : s1 = 3 + 2x2 - 3x3 + 2x4 - x5 sehingga s1 maks = 7 > 0

Slack kendala-1 : s2 = – 4 + 5x2 + 2x3 - 2x4 + 2x5 sehingga s2 maks = 5 > 0

Karena keduanya 0, maka titik-1 perlu dicabangkan lagi dengan mengambil x2 = 1 (program
2). Gambar 4.31 b menunjukkan percabangan yang dilakukan.
144 Riset Operasi : Suatu Tinjauan Algoritmis

x1 = 1

x2 = 1

Gambar 4.31 b

Program 2 (x1 = 1, x2 = 1)

Dengan mensubstitusi x2 = 1 pada program-1 didapat :

Minimumkan z = 9 + 6x3 + 2x4 + 3x5

Kendala 3x3 - 2x4 + x5 5

– 2x3 + 2x4 - 2x5 1 x3, … , x5 = { 0, 1}

Uji penyelesaian Nol

Dengan mengambil x3 = x4 = x5 = 0 akan didapat z = 9 < zU (= + ). Pengujian penyelesaian


nol pada kedua kendala akan menghasilkan :

Kendala-1 : 3 (0) - 2(0) + (0) = 0 5

Kendala-2 : – 2(0) + 2(0) - 2(0) = 0 1

Semua kendala terpenuhi oleh penyelesaian nol. Maka z menjadi batas atas baru. didapat zU =
9. Uji infisibilitas tidak perlu dilakukan.

Perhatikan cara pengujian apakah penyelesaian nol merupakan penyelesaian fisibel. Tidak ada
kostanta di sisi kiri kendala. Berarti sustitusi xi = 0 untuk semua i akan menghasilkan nilai 0 di
sisi kiri kendala. Jadi apabila sisi kanan suatu kendala 0, maka pertidaksamaan kendala
pastilah bernilai benar. Sebaliknya jika sisi kanan kendala < 0, maka pertidaksamaan kendala
bernilai salah. Berarti penyelesaian nol tidaklah fisibel sehingga dilakukan uji infisibilitas.

Pada program-0, kedua sisi kendala < 0 sehingga penyelesaian nol tidak fisibel sehingga
dilakukan uji infisibilitas. Demikian pula dengan program-1. Ruas kanan kendala-2 < 0 sehingga
PROGRAM BILANGAN BULAT 145

dilakukan uji infisibilitas. Akan tetapi pada program-2 tidak perlu dilakukan uji infisibilitas
karena semua ruas kanan kendala 0.

x1 = 1

x2 = 1 x2 = 0

2 3
zU = 9

Gambar 4.31 c

Setelah mendapatkan zU baru (= 9), lakukan backtracking ke node terdekat diatasnya, yaitu titik-
1. Cabangkan titik-1 ke kanan dengan mengambil x2 = 0 (program-3)

Program 3 (x1 = 1, x2 = 0)

Dengan mensubstitusi x2 = 0 pada program-1 didapat :

Minimumkan z = 4 + 6x3 + 2x4 + 3x5

Kendala 3x3 - 2x4 + x5 3

– 2x3 + 2x4 - 2x5 -4 x3, … , x5 = { 0, 1}

Uji penyelesaian Nol

Jika x3 = x4 = x5 = 0 maka z = 4 < zU (=9)

Ruas kanan kendala-2 = -4 < 0. Maka perlu dilakukan uji infisibilitas

Uji infisibilitas

Slack kendala-1 = s1 = 3 - 3x3 + 2x4 - x5 . Maka s1 maks = 5 > 0

Slack kendala-2 = s2 = -4 + 2x3 - 2x4 + 2x5 . Maka s2 maks = 0

Karena tidak ada smaks yg negatif, maka titik-3 harus dicabangkan dengan mengambil x3 = 1
(program-4)
146 Riset Operasi : Suatu Tinjauan Algoritmis

x1 = 1

x2 = 1 x2 = 0

2 3
zU = 9
x3 = 1

Gambar 4.31 d

Program 4 (x1 = 1, x2 = 0, x3 = 1)

Dengan mensubstitusi x3 = 1 pada program-3 didapat :

Minimumkan z = 10 + 2x4 + 3x5

Kendala - 2x4 + x5 0

2x4 - 2x5 -2

Uji penyelesaian Nol

Jika x4 = x5 = 0 maka z = 10 > zU (=9). Ini berarti bahwa titik-4 tidak akan menghasilkan
penyelesaian yang lebih optimal dibandingkan penyelesaian yang sudah ditemukan (=9). Jadi
titik-4 tidak perlu dicabangkan lagi.

Backtracking terdekat berikutnya adalah dengan mengambil x3 = 0 pada titik-3 (program-5)


PROGRAM BILANGAN BULAT 147

x1 = 1

x2 = 1 x2 = 0

2 3
zU = 9
x3 = 1 x3 = 0

4 5

Gambar 4.31 e

Program 5 (x1 = 1, x2 = 0, x3 = 0)

Dengan mensubstitusi x3 = 0 pada program-3 didapat :

Minimumkan z = 4 + 2x4 + 3x5

Kendala - 2x4 + x5 3

2x4 - 2x5 -4 x3, … , x5 = { 0, 1}

Uji penyelesaian Nol

Jika x4 = x5 = 0 maka z = 4 < zU (=9)

Ruas kanan kendala-2 = -4 < 0. Maka perlu dilakukan uji infisibilitas

Uji infisibilitas

s1 = 3 + 2x4 - x5 . Maka s1 maks = 5 > 0

s2 = -4 - 2x4 + 2x5 . Maka s2 maks = - 2 < 0

Karena s2 < 0 maka dilakukan proses backtracking untuk mencabangkan titik di atasnya. Titik
terdekat yang dapat dicabangkan adalah titik-0 (lihat gambar 4.31 f). Percabangan dilakukan
dengan mengambil x1 = 0 (program-6)
148 Riset Operasi : Suatu Tinjauan Algoritmis

x1 = 1 x1 = 0

1 6

x2 = 1 x2 = 0

2 3
zU = 9
x3 = 1 x3 = 0

4 5

Gambar 4.31 f

Program 6 (x1 = 0)

Dengan mensubstitusi x1 = 0 pada program mula-mula (program-0) diperoleh :

Minimumkan z = 5x2 + 6x3 + 2x4 + 3x5

Kendala – 2x2 + 3x3 - 2x4 + x5 -1

– 5x2 - 2x3 + 2x4 - 2x5 -5 x2, … , x5 = { 0, 1}

Uji penyelesaian Nol

Jika x2 = x3 =x4 = x5 = 0 maka z = 0 < zU (=9)

Ruas kanan kedua kendala < 0. Maka perlu dilakukan uji infisibilitas

Uji infisibilitas

s1 = -1 + 2x2 - 3x3 + 2x4 - x5 . Maka s1 maks = 3 > 0

s2 = – 5 + 5x2 + 2x3 - 2x4 + 2x5 . Maka s2 maks = 4 > 0

Karena tidak ada smaks < 0 maka titik 6 perlu dicabangkan dengan mengambil x2 = 1 (program-7)
PROGRAM BILANGAN BULAT 149

x1 = 1 x1 = 0

1 6

x2 = 1 x2 = 0 x2 = 1

2 3 7
zU = 9
x3 = 1 x3 = 0

4 5

Gambar 4.31 g

Program 7 (x1 = 0, x2 = 1)

Substitusi x2 = 1 pada program-6 menghasilkan :

Minimumkan z = 5 + 6x3 + 2x4 + 3x5

Kendala 3x3 - 2x4 + x5 1

- 2x3 + 2x4 - 2x5 0 x3, … , x5 = { 0, 1}

Uji penyelesaian Nol

Jika x3 =x4 = x5 = 0 maka z = 5 < zU (=9)

Ruas kanan kedua kendala tidak ada yang negatif. Maka diperoleh batas atas baru yaitu zU = 5.
Backtracking akan mencabangkan titik-6 ke kanan dengan mengambil x2 = 0 (program-8)
150 Riset Operasi : Suatu Tinjauan Algoritmis

x1 = 1 x1 = 0

1 6

x2 = 1 x2 = 0 x2 = 1 x2 = 0

2 3 7 8
zU = 9 zU = 5
x3 = 1 x3 = 0

4 5

Gambar 4.31 h

Program 8 (x1 = 0, x2 = 0)

Substitusi x2 = 0 pada program-6 menghasilkan :

Minimumkan z = 6x3 + 2x4 + 3x5

Kendala 3x3 - 2x4 + x5 -1

- 2x3 + 2x4 - 2x5 -5 x3, … , x5 = { 0, 1}

Uji penyelesaian Nol

Dengan mengambil x3 =x4 = x5 = 0 maka z = 0 < zU (= 5)

Ruas kanan kedua kendala < 0. Maka perlu dilakukan uji infisibilitas

Uji infisibilitas

s1 = -1 - 3x3 + 2x4 - x5 . Maka s1 maks = 1 > 0

s2 = – 5 + 2x3 - 2x4 + 2x5 . Maka s2 maks = - 1 < 0

Karena s2 maks < 0 maka titik 8 tidak perlu dicabangkan lagi. Proses backtracking juga tidak
menghasilkan titik baru karena semua titik di atas titik-8 sudah memiliki 2 cabang. Ini berarti
PROGRAM BILANGAN BULAT 151

proses iterasi selesai dengan penyelesaian optimal di titik-7 (dengan semua variabel bebasnya =
0).

PO : x1 = 0, x2 = 1, x3 =x4 = x5 = 0 dengan zmin = 5

Perhatikan bahwa untuk mencapai titik optimal dalam contoh 4.8 hanya dibutuhkan 9 kali
pengujian (program-0 … program-8). Pencarian seluruh kemungkinan penyelesaian
mengharuskan kita menguji 25 = 32 buah titik penyelesaian. Secara umum, jika soal semula
terdiri dari n variabel, maka pencarian seluruh kemungkinan penyelesaian mengharuskan kita
menguji 2n buah titik

4.4.2 Aplikasi Program 0-1

4.4.2.1 Masalah Knapsack

Masalah knapsack (= ransel) muncul jika kita memiliki n buah item yang tidak semuanya dapat
dimasukkan dalam suatu tempat (misal tas/ransel). Masing-masing item memiliki faktor
utilitas/manfaat yang berbeda-beda. Masalahnya adalah memilih barang-barang yang dibawa
(dengan keterbatasan tempat) agar total utilitas yang dihasilkannya maksimum.

Misalkan ai = berat/volume barang ke-i (i = 1, 2, … , n)

ci = nilai utilitas/manfaat barang ke-i (i = 1, 2, … , n)

W = daya tampung tas/ransel pembawa barang

Didefinisikan variabel xi sebagai berikut :

1 jika item ke-i dibawa


xi
0 jika item ke-i tidak dibawa

Masalah knapsack dapat dinyatakan dalam model program 0-1 sebagai berikut :
152 Riset Operasi : Suatu Tinjauan Algoritmis

n
Maksimumkan z = ci xi
i 1

n
Kendala ai xi W
i 1

xi = 0,1

Masalah knapsack dapat ditransformasikan menjadi bentuk standar program 0-1 dan diselesaikan
dengan enumerasi implisit. Untuk lebih jelasnya, perhatikan contoh 4.9 berikut ini.

Contoh 4.9

Seseorang yang hendak bepergian dengan pesawat memiliki sisa bagasi seberat 11 kg. Ada 4
jenis barang yang dapat ia bawa. Berat dan tingkat kegunaan masing-masing barang adalah
sebagai berikut :

Barang Berat (kg) Tingkat Manfaat


Pakaian 4 4
Buku 6 8
Mainan 2 1
Radio Tape 3 2
Tentukan jenis barang yang harus ia bawa agar total manfaat yang diperoleh maksimum !

Penyelesaian

Sebelum membuat model, barang-barang tersebut diurutkan berdasarkan rasio manfaat/berat.


Semakin besar rasionya, semakin besar pula kemungkinan terpilih sehingga diletakkan lebih
depan agar titik pohon yang terbentuk lebih sedikit.

Barang Berat (kg) Tingkat Rasio =


Manfaat Manfaat/Berat
Pakaian 4 4 1
Buku 6 8 4/3
Mainan 2 1 ½
Radio Tape 3 2 2/3
PROGRAM BILANGAN BULAT 153

Dengan mengurutkan rasio dari yang terbesar, ambil :

x1 = Buku, x2 = Pakaian, x3 = Radio Tape dan x4 = Mainan

Model program 0-1 yang sesuai adalah :

Maksimumkan z = 8x1 + 4x2 + 2x3 + x4

Kendala 6x1 + 4x2 + 3x3 + 2x4 11 x1, … , x4 = { 0, 1}

Jadikan ke bentuk standar program 0-1 sebagai berikut :

1. Ubah fungsi sasaran menjadi meminimumkan dengan mengalikan koefisien fungsi sasaran
dengan (-1). didapat :

Minimumkan z = - 8x1 - 4x2 - 2x3 - x4

Kendala 6x1 + 4x2 + 3x3 + 2x4 11 x1, … , x4 = { 0, 1}

2. Ubah fungsi sasaran sehingga semua koefisiennya tidak negatif. Karena semua fungsi
sasaran < 0, maka lakukan transformasi :

x1 = 1 – y1, x2 = 1 – y2, x3 = 1 – y3, x4 = 1 – y4

Substitusi ke fungsi sasaran dan kendala. Didapat :

Minimumkan z = - 8 (1 - y1) - 4 (1 - y2) - 2 (1 - y3) - (1 -y4)

Kendala 6 (1 - y1) + 4 (1 - y2) + 3 (1 - y3) + 2 (1 - y4) 11

y1, … , y4 = { 0, 1}

Sederhanakan menjadi :

Program 0

Minimumkan z = - 15 + 8y1 + 4y2 + 2y3 + y4

Kendala - 6y1 – 4y2 - 3y3 – 2y4 -4 y1, … , y4 = { 0, 1}

Pada awal iterasi semua variabel adalah variabel bebas dan zU = +

Uji penyelesaian Nol

Dengan mengambil y1 = … = y4 = 0 maka z = -15 < zU (= + )


154 Riset Operasi : Suatu Tinjauan Algoritmis

Ruas kanan kendala = -4 < 0. Maka perlu dilakukan uji infisibilitas

Uji infisibilitas

s = -4 + 6y1 + 4y2 + 3y3 + 2y4 . Maka smaks = 11 > 0

Karena smaks > 0, maka titik-0 harus dicabangkan dengan mengambil y1 = 1 (program-1)

y1 = 1

Gambar 4.32 a

Program 1 (y1 = 1)

Substitusi y1 = 1 ke program-0. Didapat :

Minimumkan z = - 7 + 4y2 + 2y3 + y4

Kendala – 4y2 - 3y3 – 2y4 2 y2, y3, y4 = { 0, 1}

Uji penyelesaian Nol

Jika y2 = y3 = y4 = 0 maka z = -7 < zU (= + )

Ruas kanan kendala = 2 > 0 sehingga penyelesaian nol memenuhi kendala. Ini berarti diperoleh
batas atas baru zU = z = -7.

y1 = 1 y1 = 0

1 2
zU = -7

Gambar 4.32 b

Backtracking ke atas. Cabangkan titik-0 ke kanan dengan mengambil y1 = 0 (program-2)


PROGRAM BILANGAN BULAT 155

Program 2 (y1 = 0)

Substitusi y1 = 0 ke program-0. Didapat :

Minimumkan z = - 15 + 4y2 + 2y3 + y4

Kendala – 4y2 - 3y3 – 2y4 -4 y2, y3, y4 = { 0, 1}

Uji penyelesaian Nol

Jika y2 = y3 = y4 = 0 maka z = -15 < zU (= -7)

Ruas kanan kendala = -4 < 0 sehingga perlu dilakukan uji infisibilitas.

Uji Infisibilitas

s = -4 + 4y2 + 3y3 + 2y4 . smaks = 5 > 0 sehingga titik-2 perlu dicabangkan ke kiri dengan
mengambil y2 = 1 (program-3)

y1 = 1 y1 = 0

1 2
zU = -7
y2 = 1

Gambar 4.32 c

Program 3 (y1 = 0, y2 = 1)

Substitusi y2 = 1 ke program-2. Didapat :

Minimumkan z = - 11 + 2y3 + y4

Kendala - 3y3 – 2y4 0 y3, y4 = { 0, 1}


156 Riset Operasi : Suatu Tinjauan Algoritmis

Uji penyelesaian Nol

Jika y3 = y4 = 0 maka z = -11 < zU (= -7)

Ruas kanan kendala = 0 sehingga diperoleh zU baru = -11. Backtracking dan cabangkan titik-2
ke kanan dengan mengambil y2 = 0

y1 = 1 y1 = 0

1 2
zU = -7
y2 = 1 y2 = 0

3 4
zU = -11

Gambar 4.32 d

Program 4 (y1 = 0, y2 = 0)

Substitusi y2 = 0 ke program-2. Didapat :

Minimumkan z = - 15 + 2y3 + y4

Kendala – 3y3 – 2y4 -4 y3, y4 = { 0, 1}

Uji penyelesaian Nol

Jika y3 = y4 = 0 maka z = -15 < zU (= -11)

Ruas kanan kendala = -4 < 0 sehingga perlu dilakukan uji infisibilitas.

Uji Infisibilitas

s = -4 + 3y3 + 2y4 . smaks = 1 > 0 sehingga titik-4 perlu dicabangkan ke kiri dengan mengambil
y3 = 1 (program-5)
PROGRAM BILANGAN BULAT 157

y1 = 1 y1 = 0

1 2
zU = -7
y2 = 1 y2 = 0

3 4
zU = -11
y3 = 1

Gambar 4.32 e

Program 5 (y1 = 0, y2 = 0, y3 = 1)

Substitusi y3 = 1 ke program-4. Didapat :

Minimumkan z = - 13 + y4

Kendala – 2y4 -1 y4 = { 0, 1}

Uji penyelesaian Nol

Jika y4 = 0 maka z = -13 < zU (= -11)

Ruas kanan kendala = -1 < 0 sehingga perlu dilakukan uji infisibilitas.

Uji Infisibilitas

s = - 1 + 2y4 . smaks = 1 > 0 sehingga titik-5 perlu dicabangkan ke kiri dengan mengambil y4 = 1
(program-6)
158 Riset Operasi : Suatu Tinjauan Algoritmis

y1 = 1 y1 = 0

1 2
zU = -7
y2 = 1 y2 = 0

3 4
zU = -11
y3 = 1

y4 = 1

Gambar 4.32 f

Program 6 (y1 = 0, y2 = 0, y3 = 1 y4 = 1)

Substitusi y4 = 1 ke program-5. Didapat :

Minimumkan z = - 12

Kendala –2 -1

Uji penyelesaian Nol

Karena sudah tidak ada vaiabel bebas maka z = -12 < zU (= -11)

Tampak bahwa kendala bernilai benar sehingga jita memperoleh batas atas baru yaitu zU = - 12.

Backtracking ke atas untuk mencabangkan titik-5 ke kanan dengan mengambil y4 = 0


(program-7)
PROGRAM BILANGAN BULAT 159

y1 = 1 y1 = 0

1 2
zU = -7
y2 = 1 y2 = 0

3 4
zU = -11
y3 = 1

y4 = 1 y4 = 0

6 7
zU = -12

Gambar 4.32 g

Program 7 (y1 = 0, y2 = 0, y3 = 1, y4 = 0)

Dengan mensubstitusi y4 = 0 ke program-5 didapat :

Minimumkan z = - 13

Kendala 0 -1

Uji penyelesaian Nol

Karena tidak ada lagi variabel babas maka z = -13 < zU (= -12)

Kendala bernilai salah sehingga perlu dilakukan uji infisibilitas.

Uji Infisibilitas

s = - 1 maka smaks = -1 < 0. Lakukan backtracking dengan mencabangkan titik-4 ke kanan


dengan mengambil y3 = 0 (program-8)
160 Riset Operasi : Suatu Tinjauan Algoritmis

y1 = 1 y1 = 0

1 2
zU = -7
y2 = 1 y2 = 0

3 4
zU = -11
y3 = 1 y3 = 0

5 8

y4 = 1 y4 = 0

6 7
zU = -12

Gambar 4.32 h

Program 5 (y1 = 0, y2 = 0, y3 = 0)

Substitusi y3 = 0 ke program-4. Didapat :

Minimumkan z = - 15 + y4

Kendala – 2y4 -4 y4 = { 0, 1}

Uji penyelesaian Nol

Jika y4 = 0 maka z = -15 < zU (= -12)

Ruas kanan kendala = -4 < 0 sehingga perlu dilakukan uji infisibilitas.

Uji Infisibilitas

s = - 4 + 2y4 . smaks = -2 < 0. Titik-8 tidak perlu dicabangkan. Backtracking tidak dapat
dilakukan karena semua titik di atas titik-8 sudah memiliki 2 cabang. Iterasi selesai dengan
penyelesaian optimal di titik 6 : y1 = 0, y2 = 0, y3 = 1, y4 = 1. Jika dikembalikan ke masalah
semula maka

x1 = 1 – y1 = 1 – 0 = 1
PROGRAM BILANGAN BULAT 161

x2 = 1 – y2 = 1 – 0 = 1

x3 = 1 – y3 = 1 – 1 = 0

x4 = 1 – y4 = 1 – 1 = 0

dengan nilai fungsi maksimum = zU = 12.

Jadi supaya utilitasnya maksimum, ia harus membawa buku (x1) dan pakaian (x2) saja.

4.4.2.2 Masalah Investasi

Masalah investasi mucul ketika ada beberapa investasi/pekerjaan/ metode berbeda dapat dipilih.
tiap-tiap investasi/pekerjaan/metode membutuhkan biaya dan akan menghasilkan keuntungan
yang berbeda-beda. Masalahnya adalah memilih beberapa investasi (dengan keterbatasan modal)
agar keuntungan totalnya maksimum.

Masalah investasi dapat dinyatakan sebagai masalah knapsack. Keuntungan investasi dapat
dianalogikan sebagai faktor manfaat pada masalah knapsack, dan biaya tiap pekerjaan
dianalogikan dengan berat/volume barang dalam masalah knapsack. Penyelesaian masalah
investasi dilakukan dengan cara yang sama seperti masalah knapsack.

Misalkan bi = biaya pengambilan investasi ke-i (i = 1, 2, … , n)

ui = keuntungan yang didapat dari investasi ke-i

A = Total anggaran yang tersedia

Didefinisikan variabel xi sebagai berikut :

1 jika investasi ke-i dipilih


xi
0 jika investasi ke-i tidak dipilih

Model masalah investasi adalah sebagai berikut :


n
Maksimumkan z = ui xi
i 1
162 Riset Operasi : Suatu Tinjauan Algoritmis

n
Kendala bi xi A ; xi = 0,1
i 1

Contoh 4.10

Seorang pengusaha memiliki dana sebesar 100 (juta) untuk diinvestasikan ke usaha konstruksi,
komputer atau valuta asing.

Usaha konstruksi, komputer dan valuta asing masing-masing membutuhkan investasi sebesar
48, 39 dan 25 (juta) dan diperkirakan akan menghasilkan keuntungan sebesar 13, 10 dan 5
(juta).

Bagaimana pengusaha tersebut harus mengalokasikan dana yang dimiliki agar keuntungan yang
diperolehnya semaksimum mungkin ?

Penyelesaian

Misal x1, x2 dan x3 masing-masing adalah usaha konstruksi, komputer dan valuta asing.

1 jika investasi ke-i dipilih


xi
0 jika investasi ke-i tidak dipilih

Model yang sesuai adalah

Maksimumkan z = 13x1 + 10x2 + 5x3

Kendala 48x1 + 39x2 + 25x3 100 x1, … , x3 = { 0, 1}

Penyelesaian model dilakukan dengan cara yang sama seperti contoh 4.9.

4.4.2.3 Masalah Penutup Himpunan (Set Covering)

Misalkan ada n lokasi berbeda yang mungkin digunakan untuk mendirikan fasilitas pelayanan.
Biaya pendirian fasilitas-j adalah cj. Jika fasilitas-j berdiri, maka ia dapat melayani (atau
menutup) mj buah area. Masalahnya adalah menentukan fasilitas mana saja yang harus didirikan
agar semua area terlayani tapi dengan biaya sekecil-kecilnya.

Untuk memodelkan masalah penutup himpunan, didefinisikan variabel keputusan :


PROGRAM BILANGAN BULAT 163

1 jika fasilitas-j didirikan


xj
0 jika fasilitas-j tidak didirikan

Didefinisikan juga variabel

1 jika fasilitas-j dapat menutup area-i


aij
0 jika sebaliknya

Model yang sesuai adalah :


n
Minimumkan z = cj xj
j 1

n
Kendala aij x j 1 i = 1, 2, … , m
j 1

xj = 0,1

Perhatikan bahwa jumlah kendala sama dengan jumlah area yang hendak dilayani/ditutupi.
Kendala-I mengharuskan salah satu dari xj bernilai = 1. Ini berarti bahwa area-i pasti terlayani
oleh minimal salah satu tempat pelayanan

Contoh 4.11

Sebuah perusahaan elektronika hendak mendirikan pusat servis yang diharapkan dapat melayani
5 propinsi di pulau Jawa (DKI Jakarta, Jawa Barat, Jawa Tengah, DI Jogjakarta dan Jawa
Timur). Ada 3 calon lokasi yang dapat dipilih (Bandung, Semarang, dan Solo), yang masing-
masing membutuhkan biaya sebesar 100, 150 dan 75 (puluhan juta) untuk mendirikannya.

Daerah yang dapat terlayani dengan berdirinya pusat servis di masing-masing kota adalah
sebagai berikut :

Bandung Semarang Solo


DKI Jakarta 
Jawa Barat  
Jawa Tengah   
DI Jogjakarta  
Jawa Timur  
164 Riset Operasi : Suatu Tinjauan Algoritmis

Tentukan dimana tempat servis harus didirikan agar kelima propinsi tersebut terlayani tapi
dengan biaya semurah-murahnya ?

Penyelesaian

Misalkan x1, x2 dan x3 masing-masing menyatakan pendirian tempat servis di Bandung,


Semarang dan Solo. Model yang sesuai adalah :

Minimumkan z = 100x1 + 150x2 + 75x3

Kendala x1 1 (melayani DKI Jakarta)

x1 + x2 1 (melayani Jawa Barat)

x1 + x2 + x3 1 (melayani Jawa Tengah)

x2 + x3 1 (melayani DI Jogjakarta)

x2 + x3 1 (melayani Jawa Timur)

x1, … , x3 = { 0, 1}

Perhatikan bahwa kedua kendala terakhir sama (DIJ dan Jawa Timur sama-sama dapat dilayani
jika tempat servis didirikan di Semarang dan Solo), sehingga dapat dihilangkan salah satunya.

Jadikan bentuk standar program 0-1 dengan mengalikan semua kendalanya dengan (-1). Didapat
:
Program 0

Minimumkan z = 100x1 + 150x2 + 75x3

Kendala - x1 -1 (melayani DKI Jakarta)

- x1 - x2 -1 (melayani Jawa Barat)

- x1 - x2 - x3 -1 (melayani Jawa Tengah)

- x2 - x3 -1 (melayani DI Jogjakarta)

- x2 - x3 -1 (melayani Jawa Timur)

x1, … , x3 = { 0, 1}

Pada program-0 semua variabelnya merupakan variabel bebas. zU = +


PROGRAM BILANGAN BULAT 165

Uji Penyelesaian Nol

Jika x1 = x2 = x3 = 0 maka z = 0 < zU (= + )

Ruas kanan semua kendala < 0 sehingga perlu dilakukan uji infisibilitas.

Uji Infisibilitas

s1 = -1 + x1. s1 maks = 0

s2 = -1 + x1 + x2. s2 maks = 1 > 0

s3 = -1 + x1 + x2 + x3. s3 maks = 2 > 0

s4 = -1 + x2 + x3 . s4 maks = 1 > 0

Karena tidak ada s maks < 0 maka titik-0 dicabangkan dengan mengambil x1 = 1 (program-1)

x1 = 1

Gambar 4.33 a

Program 1 (x1 = 1)

Jika x1 = 1 disubstitusikan ke program-0, didapat :

Minimumkan z = 100 + 150x2 + 75x3

Kendala -1 -1

- x2 0

-x2 - x3 0

-x2 - x3 -1 x2, x3 = { 0, 1}

Uji Penyelesaian Nol

Jika x2 = x3 = 0 maka z = 100 < zU (= + )


166 Riset Operasi : Suatu Tinjauan Algoritmis

Kendala-1 selalu benar sehingga dapat diabaikan dalam uji penyelesaian nol. Ruas kanan
kendala-4 = -1 < 0 sehingga perlu dilakukan uji infisibilitas.

Uji Infisibilitas

s1 = 0 s1 maks = 0

s2 = x2 s2 maks = 1 > 0

s3 = x2 + x3 s3 maks = 2 > 0

s4 = -1 + x2 + x3 . s4 maks = 1 > 0

Karena tidak ada s maks < 0 maka titik-1 dicabangkan dengan mengambil x2 = 1 (program-2)

x1 = 1

x2 = 1

Gambar 4.33 b

Program 2 (x1 = 1, x2 = 1)

Jika x2 = 1 disubstitusikan ke program-1, didapat :

Minimumkan z = 250 + 75x3

Kendala -1 -1

-1 0

- x3 1

- x3 0 x3 = { 0, 1}
PROGRAM BILANGAN BULAT 167

Uji Penyelesaian Nol

Jika x3 = 0 maka z = 250 < zU (= + )

Kendala-1 dan 2 selalu benar sehingga dapat diabaikan dalam uji penyelesaian nol. Ruas kanan
kendala kendala 3 dan 4 0. Berarti penyelesaian nol merupakan penyelesaian fisibel. Jadi
didapat batas atas baru zU = 250. Backtracking dan cabangkan titik-1 ke kanan dengan
mengambil x2 = 0 (program-3)

x1 = 1

x2 = 1 x2 = 0

2 3
zU = 250

Gambar 4.33 c

Program 3 (x1 = 1, x2 = 0)

Dengan mensubstitusikan x2 = 0 ke program-1, didapat :

Minimumkan z = 100 + 75x3

Kendala -1 -1

0 0

- x3 0

- x3 -1 x3 = { 0, 1}

Uji Penyelesaian Nol

Jika x3 = 0 maka z = 100 < zU (= 250)

Penyelesaian nol tidak fisibel karena meskipun kendala-1 dan 2 selalu benar tapi ruas kanan
kendala-4 < 0. Maka perlu dilakukan uji infisibilitas.
168 Riset Operasi : Suatu Tinjauan Algoritmis

x1 = 1

x2 = 1 x2 = 0

2 3
zU = 250
x3 = 1

Gambar 4.33 d
Uji Infisibilitas

s1 = 0 s1 maks = 0

s2 = 0 s2 maks = 0

s3 = x3 s3 maks = 1

s4 = -1 + x3 . s4 maks = 0

Tidak ada s maks < 0. Maka titik-3 dicabangkan dengan mengambil x3 = 1 (program-4). Lihat
gambar 4.33 d

Program 4 (x1 = 1, x2 = 0, x3 = 1)

Jika x3 = 1 disubstitusikan ke program-3, didapat :

Minimumkan z = 175

Kendala -1 -1

0 0

-1 0

-1 -1
PROGRAM BILANGAN BULAT 169

x1 = 1

x2 = 1 x2 = 0

2 3
zU = 250
x3 = 1 x3 = 0

4 5
zU = 175

Gambar 4.33 e
Uji Penyelesaian Nol

Karena tidak ada variabel bebas lagi maka z = 175 < zU (= 250)

Tampak bahwa semua kendala bernilai benar sehingga penyelesaian nol merupakan
penyelesaian fisibel. Berarti didapat batas atas baru zU = 175. Backtracking dan cabangkan titik-
3 ke kanan dengan mengambil x3 = 0 (program-5)

Program 5 (x1 = 1, x2 = 0, x3 = 0)

Dengan mensubstitusikan x3 = 0 ke program-3, didapat :

Minimumkan z = 100

Kendala -1 -1

0 0

0 0

0 -1

Uji Penyelesaian Nol

Karena tidak ada variabel bebas, maka z = 100 < zU (= 175)


170 Riset Operasi : Suatu Tinjauan Algoritmis

Penyelesaian nol tidak fisibel karena kendala-4 bernilai salah. Maka perlu dilakukan uji
infisibilitas.

Uji Infisibilitas

s1 = 0 s1 maks = 0

s2 = 0 s2 maks = 0

s3 = 0 s3 maks = 0

s4 = -1 s4 maks = -1

s4 maks < 0. Maka titik-5 tidak perlu dicabangkan. Lakukan backtracking. Cabangkan titik-0 ke
kanan dengan mengambil x1 = 0 (program-6).

x1 = 1 x1 = 0

1 6

x2 = 1 x2 = 0

2 3
zU = 250
x3 = 1 x3 = 0

4 5
zU = 175

Gambar 4.33 f

Program 6 (x1 = 0)

Jika x1 = 0 disubstitusikan pada program-0, maka didapat :

Minimumkan z = 150x2 + 75x3

Kendala 0 -1

- x2 -1

- x2 - x3 -1

- x2 - x3 -1 x2, x3 = { 0, 1}
PROGRAM BILANGAN BULAT 171

Uji Penyelesaian Nol

Jika x2 = x3 = 0 maka z = 0 < zU (= 175)

Penyelesaian nol tidak fisibel karena kendala-1 bernilai salah, dan ruas kanan semua kendala
sisanya < 0. Jadi perlu dilakukan uji infisibilitas.

Uji Infisibilitas

s1 = -1 s1 maks = -1

s2 = -1 + x2. s2 maks = 0

s3 = -1 + x2 + x3. s3 maks = 1

s4 = -1 + x2 + x3 . s4 maks = 1

s1 maks < 0. Maka titik-0 tidak perlu dicabangkan. Backtracking juga tidak menghasilkan titik
baru karena semua titik sudah memiliki 2 cabang. Maka didapat penyelesaian optimal pada titik-
4, yaitu x1 = 1, x2 = 0, dan x3 = 1 dengan zmin = 175

Jika dikembalikan ke soal aslinya, maka agar semua propinsi terlayani dengan biaya minimum,
maka perusahaan tersebut harus mendirikan tempat servis di Bandung dan Solo dengan biaya
minimum = 175 (puluhan juta)
172 Riset Operasi : Suatu Tinjauan Algoritmis

SOAL-SOAL LATIHAN
Selesaikan masalah program bilangan bulat berikut ini dengan metode Cabang-Batas.

1. Minimumkan f = 2 x1 + 3 x2

Kendala :

x1 + 3 x2 6

x1 + x2 3

x1, x2 0 dan bulat

2. Maksimumkan f = x1 + 2 x2

Kendala :

x1 + x2 5

x1 - x2 0

2 x1 + 6 x2 21

x1, x2 0 dan bulat

3. Minimumkan f = x1 + x2

Kendala :

4 x1 + 10 x2 12

10 x1 + 4 x2 12

x1, x2 0 dan bulat

4. Maksimumkan f = x1 + x2

Kendala :

- x1 + 4 x2 10

5 x1 + 2 x2 10

-3 x1 + 4 x2 6
PROGRAM BILANGAN BULAT 173

x1, x2 0 dan bulat

5. Maksimumkan f = x1 + x2

Kendala :

2 x1 + 5 x2 16

6 x1 + 5 x2 30

x1, x2 0 dan bulat

6. Maksimumkan f = x1 + 2x2 + x3

Kendala :

x1 + 4 x2 + 2 x3 7

- x1 + 3 x2 4

x1, x2, x3 0 dan bulat

7. Maksimumkan f = 4 x1 + 5 x2 + 3 x3

Kendala :

3 x1 - 2 x2 + x3 14

x1 + 2 x2 + x3 8

x1, x2, x3 0 dan bulat

8. Selesaikan soal no 1-3 dengan menggunakan metode bidang potong dan bandingkan
hasilnya dengan penyelesaian yang didapat dengan metode cabang batas. Apakah kedua
metode menghasilkan penyelesaian yang sama ?

9. Sebuah perusahaan roti merencanakan membuat 3 jenis roti (A, B, dan C). Ketiganya
menggunakan 2 mesin yang sama yaitu mesin I (mesin pengaduk) dan mesin II (mesin
pembakar/oven).

Setiap roti jenis A rata-rata membutuhkan mesin I selama 12 menit dan mesin II selama 9
menit. Setiap roti jenis B membutuhkan pemakaian mesin I selama 10 menit mesin I dan 10
174 Riset Operasi : Suatu Tinjauan Algoritmis

menit mesin II. Setiap roti jenis C membutuhkan 13 menit mesin I dan 11 menit mesin II.
Dalam seminggunya, mesin I dan II masing-masing hanya dapat dipakai selama 40 jam.

Biaya pembuatan tiap roti jenis A, B dan C masing-masing adalah sebesar 32, 20 dan 24
(ribuan rupiah). Penjualan tiap roti jenis A, B dan C akan menghasilkan keuntungan sebesar
8, 7 dan 9 (ribuan). Apabila perusahaan tersebut hanya menyediakan dana 5000 (ribuan) tiap
minggunya, tentukan pengaturan produksi yang akan memaksimumkan keuntungannya.

10. Revisilah algoritma cabang-batas untuk menyelesaikan program bilangan bulat campuran,
dimana hanya sebagian saja diantara variabel-variabelnya yang diharuskan merupakan
bilangan bulat.

Maksimumkan/minimumkan f x1, x2 , ... , xn c1x1 c2 x2 ... cn xn


dengan kendala :
a11 x1 a12 x2 ... a1n xn b1
a21 x1 a22 x2 ... a2 n xn b2
...
am1 x1 am 2 x2 ... amn xn bm

x1 , x2 , ... , xk bulat 0, k n
Bab 5

TRANSPORTASI

5.1 Pendahuluan

Masalah transportasi merupakan masalah yang sering dihadapi dalam pendistribusian barang.
Misalkan ada m buah gudang (sumber) yang memiliki masing-masing a1, a2, …, am buah barang
yang sama. Barang-barang tersebut hendak dikirimkan ke n buah toko (tujuan) yang masing-
masing membutuhkan b1, b2, … , bn buah barang. Diasumsikan a1 + a2 + … + am = b1 + b2 + …
+ bn. Biasanya karena letak geografis/jarak yang berbeda-beda, maka biaya pengiriman dari
suatu sumber ke suatu tujuan tidaklah sama. Misalkan cij adalah biaya pengiriman sebuah
barang dari sumber ai ke tujuan bj. Masalahnya adalah bagaimana menentukan pendistribusian
barang dari sumber sehingga semua kebutuhan tujuan terpenuhi tapi dengan biaya yang se
minimum mungkin.

Contoh 5.1

Misalkan TV yang diproduksi disimpan di 3 gudang yaitu Jakarta, Semarang dan Surabaya,
yang masing-masing memiliki daya tampung sebesar 150, 200 dan 100 unit. TV tersebut hendak
dikirim ke 3 distributor yang berada di Bandung, Jogjakarta dan Malang. Biaya pengiriman per
unit TV (dalam puluhan ribuan rupiah) dari gudang ke distributor tampak dalam tabel 5.1
DISTRIBUTOR
GUDANG Bandung Jogjakarta Malang Persediaan
Jakarta 3 5 7 150
Semarang 6 4 10 200
Surabaya 8 10 3 100
Kebutuhan 100 300 50

Tabel 5.1

Jumlah TV yang ada di ketiga gudang adalah sebanyak 150 + 200 + 100 = 450 unit. Jumlah
permintaan di ketiga distributor juga sebesar 450 unit. Distribusi pengiriman TV yang berbeda
168 Riset Operasi : Suatu Tinjauan Algoritmis

akan menghasilkan biaya pengiriman yang berbeda. Perhatikan 2 macam cara pengiriman yang
berbeda berikut ini.
DISTRIBUTOR
GUDANG Bandung Jogjakarta Malang Persediaan
Jakarta 100 50 150
Semarang 150 50 200
Surabaya 100 100
Kebutuhan 100 300 50

Tabel 5.2 (a)


DISTRIBUTOR
GUDANG Bandung Jogjakarta Malang Persediaan
Jakarta 100 50 150
Semarang 200 200
Surabaya 100 100
Kebutuhan 100 300 50

Tabel 5.2 (b)

Jumlah biaya pengiriman adalah jumlah unit yang dikirimkan dikalikan dengan biaya
pengiriman per unit. Pada distribusi tabel 5.2 (a), total biaya pengiriman sebesar 100 (3) + 50 (5)
+ 150 (4) + 50 (10) + 100 (10) = 2650. Sebaliknya biaya pengiriman distribusi barang dalam
tabel 5.2 (b) adalah sebesar = 100 (5) + 50 (7) + 200 (4) + 100 (8) = 2450. Biaya pengiriman
sesuai dengan tabel 5.2 (b) lebih murah dibandingkan dengan distribusi tabel 5.2 (a). Akan tetapi
biaya pengiriman sebesar 2450 seperti pada tabel 5.2 (b) belum tentu merupakan biaya
pengiriman yang termurah.

Pencarian cara pengiriman yang paling murah dengan coba-coba akan terlalu lama dan tidak
efisien, apalagi jika tabelnya cukup besar. Dalam bab ini akan dibahas cara pengiriman yang
paling optimal.

Misalkan xij adalah jumlah unit barang yang dikirim dari sumber-i ke tujuan-j. Masalah
transportasi dapat diringkas dalam tabel 5.3.
TRANSPORTASI 169

Tujuan
1 2 n Persediaan
c11 c12 c1n
1 a1
x11 x12 ... x1n
c21 c22 c2n
Sumber 2 a2
x21 x22 ... x2n

... ... ... ...


cm1 cm2 cmn
m am
xm1 xm2 ... xmn

Permintaan b1 b2 bn

Tabel 5.3

Masalah transportasi dapat dinyatakan dalam program bilangan bulat sebagai berikut :
m n
Meminimumkan Z = cij xij
i 1 j 1

n
Kendala xij ai i = 1, 2, … , m
j 1

m
xij bj j = 1, 2, … , n
i 1

xij bulat 0

Dengan pendekatan program bilangan bulat, maka akan terdapat m.n buah variabel (belum
termasuk variabel tambahan untuk simpleks). Ini berakibat penyelesaian iterasinya akan terlalu
lama. Untuk itu dilakukan pendekatan lain yang lebih mudah.

Algoritma penyelesaian masalah transportasi adalah sebagai berikut :

a. Tentukan penyelesaian fisibel awal.

b. Uji, apakah penyelesaian yang didapatkan pada langkah (1) sudah optimal.

c. Jika belum optimal, tingkatkan keoptimalan penyelesaian

d. Ulangi langkah (1) – (3) hingga didapatkan penyelesaian optimal.


170 Riset Operasi : Suatu Tinjauan Algoritmis

5.2 Penyelesaian Fisibel Awal

Penyelesaian fisibel awal digunakan untuk menentukan penyelesaian awal dalam masalah
transportasi. Ada beberapa metode yang biasa digunakan antara lain metode barat laut, metode
Vogel dan metode biaya terendah. Masing-masing metode memiliki keuntungan yang berbeda-
beda. Metode barat laut merupakan metode yang paling mudah, akan tetapi biasanya dibutuhkan
lebih banyak iterasi lagi untuk mencapai penyelesaian optimal dibandingkan dengan metode
Vogel atau biaya terendah. Tidak ada teori yang akan menjamin bahwa penyelesaian awal
merupakan penyelesaian optimal.

Jika tabel transportasi terdiri dari m baris dan n kolom, maka penyelesaian awal harus
menghasilkan m+n-1 buah variabel basis (sel yang terisi). Jika penyelesaian awalnya berisi
kurang dari m+n-1 buah variabel basis, maka harus ditambahkan variabel dummy agar proses
pengecekan keoptimalan dan iterasi dapat dilakukan

5.2.1 Metode Barat Laut

Sesuai dengan namanya, metode barat laut mengisi tabel awal transportasi dari sisi barat laut (kiri
atas) dengan kuantitas sebanyak-banyaknya. Pengisian dilakukan terus menerus hingga semua
sumber dihabiskan.

Contoh 5.2

Alat-alat rumah tangga akan dikirim dari 4 buah distributor (A, B, C, D) ke 3 toko (1, 2, dan 3).
Jumlah barang yang siap dikirim dari distributor A, B, C dan D masing-masing adalah 300,
200, 600, dan 500 unit. Kebutuhan toko 1, 2, dan 3 masing-masing adalah 200, 1000 dan
400 unit. Biaya pengiriman (ribuan) dari distributor ke toko tampak dalam tabel 5.4. Tentukan
penyelesaian fisibel awal dengan metode barat laut.
Ke Toko
Distributor 1 2 3
A 5 3 6
B 2 9 4
TRANSPORTASI 171

C 3 7 8
D 6 1 4

Tabel 5.4

Penyelesaian

Jumlah seluruh barang yang tersedia di distributor adalah 300 + 200 + 600 + 500 = 1600 unit,
sedangkan jumlah permintaan seluruh toko adalah 200 + 1000 + 400 = 1600 unit juga. Karena
keduanya sama maka proses iterasi dapat dimulai. Kondisi transportasi tampak pada tabel 5.5.
Biaya pengiriman per unit barang tampak pada ujung kiri atas pada tiap sel. Di sisi kanan tampak
jumlah persediaan barang dari tiap distributor, sedangkan di sisi bawah tabel adalah jumlah
permintaan tiap toko.

Toko
1 2 3 Persediaan
5 3 6
A 300

2 9 4
Distributor

B 200

3 7 8
C 600

6 1 4
D 500

Permintaan 200 1000 400

Tabel 5.5

Ujung barat laut tabel adalah sel dengan c11 = 5. Sel ini diisi dengan kuantitas sebanyak mungkin.
Distributor – A memiliki 300 unit barang sedangkan toko – 1 membutuhkan 200 unit. Maka x11
diisi sebanyak-banyaknya yaitu 200 unit (perhatikan jika x11 diisi lebih dari 200 unit maka
terdapat kelebihan permintaan). Dengan mengisi x11 = 200 maka otomatis permintaan toko – 1
sudah terpenuhi sehingga x21, x31 dan x41 tidak boleh terisi (ditandai dengan arsiran pada tabel 5.6
a).

Sekarang ujung barat laut adalah sel dengan c12 = 3 yang akan diisi dengan barang semaksimal
mungkin. Distributor – A hanya memiliki 300 unit barang dan sudah dikirimkan ke toko – 1
172 Riset Operasi : Suatu Tinjauan Algoritmis

sebanyak 200 unit sehingga tersisa 100 unit. Di sisi lain, toko – 2 membutuhkan sebanyak 1000
unit. Maka x12 = 100. Dengan pengisian ini, maka distributor – A sudah kehabisan barang
sehingga x13 tidak boleh diisi lagi (lihat tabel 5.6 b).

Toko Toko
1 2 3 1 2 3
5 3 6 5 3 6
A 300 A 300
200 200 100
2 9 4 2 9 4
Distributor

Distributor
B 200 B 200

3 7 8 3 7 8
C 600 C 600

6 1 4 6 1 4
D 500 D 500

200 1000 400 200 1000 400

Tabel 5.6 (a) Tabel 5.6 (b)

Karena barang di distributor – A sudah habis, maka sekarang ujung barat lautnya terletak pada
sel dengan c22 = 9. Distributor – B memiliki 200 unit barang sedangkan toko – 2 tinggal
membutuhkan 900 unit barang lagi (kebutuhannya 1000 unit tetapi 100 unit diantaranya sudah
disuplai dari distributor – A). Maka x22 = 200 dan x23 tidak boleh diisi lagi.

Demikian seterusnya sehingga semua barang terdistribusi. Hasil penyelesaian fisibel awal
dengan metode barat laut tampak pada tabel 5.6 c. Biaya total pengiriman adalah sebesar 200 (5)
+ 100 (3) + 200 (9) + 600 (7) + 100 (1) + 400 (4) = 9000 (ribuan)

Tampak bahwa jumlah basis (sel yang terisi) = 6 sel yang sama dengan jumlah baris+ jumlah
kolom - 1 = 4 + 3 – 1 = 6. Jadi jumlah basisnya mencukupi dan tidak diperlukan variabel basis
dummy.
TRANSPORTASI 173

Toko
1 2 3
5 3 6
A 300
200 100
2 9 4

Distributor
B 200
200
3 7 8
C 600
600
6 1 4
D 500
100 400

200 1000 400

Tabel 5.6 (c)

Contoh 5.3

Buatlah penyelesaian fisibel awal masalah transportasi yang biaya pengirimannya tampak dalam
tabel 5.7 dengan metode barat laut.
TOKO
GUDANG 1 2 3 Persediaan
A 4 2 8 100
B 1 5 3 200
Kebutuhan 100 150 50

Tabel 5.7

Penyelesaian

Pengisian dengan metode barat laut dimulai dari sel dengan c11 = 4. Maksimum barang yang
dapat dikirimkan adalah sebanyak 100 unit. akan tetapi dengan pengiriman ini gudang A akan
kehabisan barang dan sekaligus toko - 1 akan terpenuhi permintaannya. Jika diteruskan maka
penyelesaian basisnya akan kurang karena satu sel yang terisi akan menghilangkan baris
sekaligus kolomnya. Untuk itu perlu ditambahkan variabel basis dummy yang berharga 0 pada
x12 atau x21. Misalkan diambil x12 = 0.
174 Riset Operasi : Suatu Tinjauan Algoritmis

Pengisian berikutnya akan menghasilkan x22 = 150 dan x23 = 50 (lihat tabel 5.8). Dengan
penambahan variabel dummy tersebut maka jumlah variabel basisnya adalah 4 buah yang
mencukupi.

Toko
1 2 3
4 2 8
A 100
Gudang

100 0
1 5 3
B 200
150 50

100 150 50

Tabel 5.8

5.2.2 Metode Biaya Terendah

Prinsip dasar penyelesaian fisibel awal dengan metode biaya terendah tidak jauh berbeda dengan
metode barat laut. Hanya saja pengisian tidak dilakukan dari sisi barat laut, tetapi dari sel yang
biaya pengirimannya terendah. Pada sel itu kita isi dengan barang sebanyak mungkin. Jika ada
beberapa sel yang biaya terendahnya sama, maka dipilih sembarang.

Metode biaya terendah sering juga disebut metode greedy karena sifatnya yang selalu memulai
penyelesaian dari biaya yang terkecil tanpa memperhitungkan efeknya terhadap keseluruhan
proses. Meskipun selalu dimulai dari sel yang biayanya terkecil, namun metode biaya terendah
belum tentu menghasilkan penyelesaian optimal.

Secara logika, hasil yang didapat dengan metode biaya terendah akan lebih baik dibandingkan
dengan metode barat laut karena pengisian dengan metode barat laut tidak mempertimbangkan
biaya pengiriman pada sel yang bersangkutan. Akibatnya total biaya pengiriman akan cenderung
lebih tidak optimal.

Contoh 5.4

Selesaikan soal 5.2 dengan metode biaya terendah.

Penyelesaian
TRANSPORTASI 175

Biaya terkecil adalah pengiriman dari distributor D ke toko – 2 dengan c42 = 1. Pada sel ini diisi
dengan kuantitas sebanyak-banyaknya yaitu sebesar x42 = 500. Dengan pengisian ini maka
distributor – D sudah kehabisan barang sehingga x41 dan x43 tidak bisa terisi lagi (ditandai dengan
arsiran pada tabel 5.9 a).

Toko Toko
1 2 3 1 2 3
5 3 6 5 3 6
A 300 A 300

2 9 4 2 9 4
Distributor

Distributor
B 200 B 200
200
3 7 8 3 7 8
C 600 C 600
0
6 1 4 6 1 4
D 500 D 500
500 500

200 1000 400 200 1000 400

Tabel 5.9 (a) Tabel 5.9 (b)

Dari sisa sel yang masih bisa terisi (yang tidak terarsir pada tabel 5.9 a), pengiriman dengan
biaya terendah adalah dari distributor – B ke toko – 1 dengan biaya c21 = 2. Jumlah maksimum
barang yang dapat diisikan pada sel ini adalah sebanyak x21 = 200. Dengan pengisian ini maka
distributor – B akan kehabisan barang dan sekaligus toko – 1 sudah terpenuhi permintaannya.
Jika demikian maka nantinya akan terjadi kekurangan variabel basis. Untuk itu ditambahkan
variabel basis semu pada sembarang sel di kolom toko – 1 atau distributor – B. Misal x31 = 0
(lihat tabel 5.9 b) .

Proses dilanjutkan dengan sel terkecil berikutnya yang belum terarsir. Hasil akhir penyelesaian
fisibel awal dengan metode biaya terendah tampak pada tabel 5.9 c. Biaya total pengiriman
adalah sebesar 300 (3) + 200 (2) + 0 (3) + 200 (7) + 400 (8) + 500 (1) = 6400 (ribuan).
176 Riset Operasi : Suatu Tinjauan Algoritmis

Toko
1 2 3
5 3 6
A 300
300
2 9 4

Distributor
B 200
200
3 7 8
C 600
0 200 400
6 1 4
D 500
500

200 1000 400

Tabel 5.9 (c)

5.2.3 Metode Vogel

Perhitungan penyelesaian awal dengan metode Vogel lebih rumit dibandingkan dengan kedua
metode terdahulu. Akan tetapi biasanya lebih mendekati penyelesaian optimalnya.

Algoritma Vogel untuk menentukan penyelesaian fisibel awal masalah transportasi adalah
sebagai berikut :

1. Pada tiap baris dan kolom, hitunglah selisih 2 sel dengan biaya yang terkecil.

2. Tentukan baris/kolom hasil langkah (1) yang selisihnya terbesar. Jika terdapat lebih dari
1, pilihlah sembarang.

3. Pada baris/kolom yang terpilih, isikan barang semaksimum mungkin pada sel dengan
biaya terkecil. Hapuskan baris/kolom yang dihabiskan karena pengisian tersebut pada
perhitungan berikutnya. Jika baris dan kolom terhapus bersamaan, tambahkan sebuah
variabel dummy

4. Ulangi langkah 1-3 hingga semua permintaan/persediaan habis

Contoh 5.5
TRANSPORTASI 177

Selesaikan contoh 5.2 dengan metode Vogel

Penyelesaian

Pada baris – 1, dua sel yang biayanya terkecil adalah c12 = 3 dan c11 = 5. Selisihnya adalah = 5 –
3 = 2. Pada baris – 2, dua sel yang biayanya terkecil adalah c21 = 2 dan c23 = 4. Selisihnya
adalah = 4 – 2 = 2.

Demikian seterusnya dihitung selisih 2 sel dengan biaya terkecil pada tiap baris dan kolom.
Hasilnya tampak pada tabel 5.10
Baris/Kolom 2 sel dengan biaya terkecil Selisih
Baris – 1 c12 = 3 dan c11 = 5 5–3 = 2
Baris - 2 c21 = 2 dan c23 = 4 4–2 = 2
Baris – 3 c31 = 3 dan c32 = 7 7 – 3 = 4*
Baris – 4 c42 = 1 dan c43 = 4 4–1 = 3
Kolom - 1 c21 = 2 dan c31 = 3 3–2 = 1
Kolom – 2 c42 = 1 dan c12 = 3 3–1 =2
Kolom - 3 c23 = 4 dan c43 = 4 4–4 = 0

Tabel 5.10

Toko
Selisih 2 sel dengan
1 2 3 biaya terkecil
5 3 6
A 300 2

2 9 4
Distributor

B 200 2

3 7 8
C 600 4*
200
6 1 4
D 500 3

200 1000 400


Selisih 2 sel dengan
1 2 0
biaya terkecil

Tabel 5.11 (a)

Selisih terbesar (= 4) terjadi pada baris ke – 3. Biaya terkecil pada baris ke – 3 adalah c31 = 3.
Pada sel ini diisikan barang sebanyak-banyaknya yaitu 200 unit. Jadi x31 = 200. Dengan
178 Riset Operasi : Suatu Tinjauan Algoritmis

pengisian ini maka toko – 1 sudah terpenuhi permintaannya sehingga sel lain pada kolom – 1
tidak diikutkan pada iterasi berikutnya (lihat tabel 5.11 a).

Proses perhitungan selisih 2 sel yang biayanya terkecil dilanjutkan tetapi dengan menghilangkan
kolom – 1 dari perhitungan. Didapat

Baris/Kolom 2 sel dengan biaya terkecil Selisih


Baris – 1 c12 = 3 dan c13 = 6 6–3 = 3
Baris – 2 c23 = 4 dan c22 = 9 9 - 4 = 5*
Baris – 3 c32 = 7 dan c33 = 8 8-7 = 1
Baris – 4 c42 = 1 dan c43 = 4 4–1 = 3
Kolom – 1 tidak dihitung lagi -
Kolom – 2 c42 = 1 dan c12 = 3 (tetap) 3–1 =2
Kolom – 3 c23 = 4 dan c43 = 4 (tetap) 4–4 = 0

Toko
Selisih 2 sel dengan
1 2 3 biaya terkecil
5 3 6
A 300 2 3

2 9 4
Distributor

B 200 2 5*
200
3 7 8
C 600 4* 1
200
6 1 4
D 500 3 3

200 1000 400


Selisih 2 sel dengan
1 2 0
biaya terkecil
- 2 0

Tabel 5.11 (b)

Selisih terbesar (= 5) terjadi pada baris ke – 2. Biaya terkecil pada baris ke – 3 adalah c23 = 4.
(sebenarnya biaya terkecil adalah c21 = 2. Akan tetapi sel ini sudah tidak boleh diisi lagi). Pada
sel ini diisikan barang sebanyak-banyaknya yaitu 200 unit. Jadi x23 = 200. Dengan pengisian ini
maka distributor – 2 sudah kehabisan barang sehingga sel lain pada baris – 2 tidak boleh diisi lagi
(lihat tabel 5.11 b).
TRANSPORTASI 179

Pada iterasi berikutnya, selisih 2 sel dengan biaya terkecil pada baris 1, 3, dan 4 (baris 2 tidak
boleh diisi lagi) masing-masing adalah 3, 1 dan 3. Selisih pada kolom 2 dan 3 (kolom – 1 tidak
boleh diisi lagi) masing-masing adalah 2 dan 2. Nilai maksimum terjadi pada baris – 1 dan baris
– 4 yang selisihnya = 3. Dipilih sembarang. Misal dipilih baris 4. Maka x42 = 500 dan baris – 4
tidak boleh diisi lagi .

Secara analog, pada iterasi berikutnya selisih terbesar terjadi pada kolom – 2 yang selisihnya = 4.
Maka x12 = 300 (lihat tabel 5.11 (c)).

Toko
Selisih 2 sel dengan
1 2 3 biaya terkecil
5 3 6
A 300 2 3 3 3
300
2 9 4
Distributor

B 200 2 5* - -
200
3 7 8
C 600 4* 1 1 1
200
6 1 4
D 500 3 3 3* -
500

200 1000 400


Selisih 2 sel dengan
1 2 0
biaya terkecil
- 2 0
- 2 2
- 4* 2

Tabel 5.11 (c)

Karena sekarang sisanya tinggal sel pada satu baris, maka diisikan mulai dari sel yang biayanya
terkecil yaitu x32 = 200 dan x33 = 200 (lihat tabel 5.11 (d)). Biaya total pengirimannya adalah
sebesar 300 (3) + 200 (4) + 200 (3) + 200 (7) + 200 (8) + 500 (1) = 5800 (ribuan).
180 Riset Operasi : Suatu Tinjauan Algoritmis

Toko
Selisih 2 sel dengan
1 2 3 biaya terkecil
5 3 6
A 300 2 3 3 3
300
2 9 4
Distributor B 200 2 5* - -
200
3 7 8
C 600 4* 1 1 1
200 200 200
6 1 4
D 500 3 3 3* -
500

200 1000 400


Selisih 2 sel dengan
1 2 0
biaya terkecil
- 2 0
- 2 2
- 4* 2

Tabel 5.11 (d)

5.3 Pengecekan Optimalitas

Setelah tabel awal transportasi dibuat (dengan sembarang metode), langkah berikutnya adalah
mengecek apakah tabel tersebut sudah optimal. Jika sudah optimal, maka proses dihentikan dan
tabel awal menjadi tabel optimal. Akan tetapi jika belum optimal maka dilakukan perbaikan tabel
untuk meningkatkan optimalitas (langkah-langkah perbaikan tabel dijelaskan pada bab 5.4).

Langkah-langkah pengecekan optimalitas tabel (sering disebut metode u-v) adalah sebagai
berikut :

1. Pada penyelesaian fisibel awal, tambahkanlah kolom ui (i = 1, 2, … , m) dan baris vj (j =


1, 2, … , n)

2. Isi salah satu baris ui atau kolom vj dengan 0 (biasanya baris/kolom yang dipilih adalah
baris/kolom yang memuat variabel basis paling banyak).
TRANSPORTASI 181

3. Isi baris ui dan kolom vj lainnya dengan aturan : untuk setiap sel basis berlakulah
persamaan ui + vj = cij.

4. Isi sel-sel sisanya (bukan basis) dengan kuantitas cij – ui – vj. Jika ada sel dengan nilai cij
– ui – vj < 0 maka berarti tabel tersebut belum optimal.

Contoh 5.6

Ujilah apakah tabel penyelesaian fisibel awal dengan metode Vogel (contoh 5.5) sudah optimal.

Penyelesaian

Perhatikan penyelesaian fisibel awal dengan metode Vogel yang ada pada tabel 5.11 (d). dengan
metode u-v, misalkan diambil u3 = 0 (pada tabel 5.12 a ditandai dengan anak panah kecil
disampingnya). Perhatikan bahwa disini ada 6 variabel basis masing-masing x12, x23, x31, x32, x33
dan x42 yang berturut-turut biayanya adalah 3, 4, 3, 7, 8, dan 1.

Karena x31 merupakan variabel basis maka berlakulah persamaan u3 + v1 = c31. Karena u3 = 0
dan c31 = 3, maka didapat v1 = 3.

Toko ui
1 2 3
5 3 6
A 300
300
2 9 4
Distributor

B 200
200
3 7 8
C 600 0
200 200 200
6 1 4
D 500
500

200 1000 400

Vj 3 7 8

Tabel 5.12 (a)


182 Riset Operasi : Suatu Tinjauan Algoritmis

Secara analog, karena x32 basis, maka u3 + v2 = c32. Didapat v2 = 7. Karena x33 basis, maka u3 +
v3 = c33 sehingga v3 = 8 (lihat tabel 5.12 (a))

x12 merupakan variabel basis. Maka berlakulah u1 + v2 = c12. c12 = 3, dan dari langkah
sebelumnya, v2 = 7. Maka u1 = -4. Secara analog, karena x23 basis (dengan c23 = 4) dan v3 = 8,
maka u2 = -4. Karena x42 basis (dengan c42 = 1) dan v2 = 7 maka u4 = -6 (lihat tabel 5.12 (b))

Toko ui
1 2 3
5 3 6
A 300 -4
300
2 9 4
Distributor

B 200 -4
200
3 7 8
C 600 0
200 200 200
6 1 4
D 500 -6
500

200 1000 400

Vj 3 7 8

Tabel 5.12 (b)

Harus diperhatikan bahwa pengisian nilai-nilai ui dan vj didasarkan pada nilai biaya variabel
basis (baik variabel basis yang sebenarnya maupun variabel basis dummy). Jika pengisian tabel
awalnya benar, maka dapatlah dipastikan bahwa semua nilai-nilai ui dan vj adalah tunggal dan
dapat dihitung.

Selanjutnya, dihitung nilai cij – ui – vj pada sel-sel yang bukan basis (sel yang kosong). Pada sel
x11, c11 – u1 – v1 = 5 – (-4) – 3 = 6. Pada sel x13 = 6 – (-4) – 8 = 2. Pada sel x21, x22, x41 dan x43,
nilai cij – ui – vj masing-masing adalah 3, 6, 9, dan 2. Nilai cij – ui – vj untuk semua sel bukan
basis tampak pada sisi kanan atas sel yang bersangkutan pada tabel 5.12 c. Semua nilai-nilai ini
positip. Maka tabel awal tersebut sudah optimal dengan biaya pengiriman total sebesar 5800.
TRANSPORTASI 183

Toko ui
1 2 3
5 6 3 6 2
A 300 -4
300
2 3 9 6 4
Distributor

B 200 -4
200
3 7 8
C 600 0
200 200 200
6 9 1 4 2
D 500 -6
500

200 1000 400

Vj 3 7 8

Tabel 5.12 c

5.4 Merevisi Tabel

Tabel optimal jika untuk setiap sel bukan basis, nilai cij – ui – vj 0. Jika ada salah satu sel saja
yang nilai cij – ui – vj negatif, maka tabel tidak optimal dan perlu ditingkatkan optimalitasnya.
Untuk merevisi tabel, digunakan loop, yaitu barisan sel basis dengan sifat :

1. Setiap pasangan sel yang berurutan teretak pada baris/kolom yang sama

2. Tidak ada 3 (atau lebih) sel berurutan yang terletak pada baris/kolom yang sama

3. Sel pertama dan terakhir barisan terletak pada baris/kolom yang sama

4. Tidak ada sel yang muncul lebih dari satu kali dalam barisan

Algoritma untuk merevisi tabel adalah sebagai berikut :

1. Pilih variabel bukan basis (sel kosong) dengan nilai cij – ui – vj < 0 yang paling minimum.

2. Isi sel tersebut dengan kuantitas sebanyak mungkin


184 Riset Operasi : Suatu Tinjauan Algoritmis

3. Sesuaikan kuantitas xij pada sel-sel lain dalam loop

4. Cek apakah penyelesaian baru sudah optimal. Jika belumlakukan kembali langkah 1-4.

Contoh 5.7

Carilah penyelesaian optimal contoh 5.2 dengan metode barat laut sebagai penyelesaian fisibel
awalnya.

Penyelesaian

Penyelesaian fisibel awal dengan metode barat laut tampak dalam tabel 5.6 c. Langkah pertama
adalah mengecek apakah tabel 5.6 c merupakan tabel optimal. Dengan menggunakan cara seperti
dalam bab 5.3 (dengan mengambil v2 = 0), maka akan didapatkan nilai u1 = 3, u2 = 9, u3 = 7, u4 =
1, v1 = 2 dan v3 = 3 (lihat tabel 5.13 a). Berikutnya nilai cij – ui – vj untuk variabel bukan basis
tampak pada sisi kanan atas sel dalam tabel 5.13 b.

Toko ui Toko ui
1 2 3 1 2 3
5 3 6 5 3 6 0
A 3 A 3
200 100 200 100
2 9 4 2 -9 9 4 -8
Distributor

Distributor

B 9 B 9
200 200
3 7 8 3 -6 7 8 -2
C 7 C 7
600 600
6 1 4 6 3 1 4
D 1 D 1
100 400 100 400

vj 2 0 3 vj 2 0 3

Tabel 5.13 a Tabel 5.13 b

Nilai negatif pada kuantitas kij = cij – ui – vj menunjukkan bahwa jika sel tersebut diisi dengan
sebuah barang, maka biaya total transportasi akan menurun sebesar kij. Sebagai contoh jika x23
diisi dengan 1 barang maka biaya transportasi akan turun sebesar 8. Untuk mempercepat revisi
TRANSPORTASI 185

tabel maka dipilih sel dengan nilai kij terkecil dan pada sel tersebut diisi dengan kuantitas
sebanyak-banyaknya. Dengan demikian maka total biaya transportasi akan turun sebesar kij .cij.

Dalam tabel 5.13 b, sel dengan cij – ui – vj terkecil adalah sel x21. Untuk mencari loop yang
berhubungan dengan sel x21, maka dicari sel-sel basis yang berhubungan sambung menyambung
secara vertikal/horisontal (tidak boleh diagonal) dengan sel x21. Dengan sedikit pengamatan,
maka didapatkan loop x21 – x22 – x12 – x11 – x21.

Jika sel x21 diisi dengan suatu kuantitas sebesar q, maka, nilai x22 harus berkurang sebesar q
juga. Hal ini dilakukan agar jumlah barang yang dikirim dari distributor – B tetap sebesar 200.
Jika x22 berkurang sebesar q, maka x12 harus bertambah sebesar q (agar kebutuhan toko – 2 tetap
1000). Selanjutnya jika x12 berkurang sebesar q maka x11 harus bertambah sebesar q. Hal ini
dapat dilihat pada tabel 5.13 c. Tanda (+) dalam suatu sel menunjukkan bahwa sel tersebut harus
ditambah dengan suatu kuantitas, dan sebaliknya, tanda (-) menunjukkan bahwa kuantitas sel
tersebut harus dikurangi.

Toko ui
1 2 3
5 3 6
A 3
200 - 100 +
2 9 4
Distributor

B 9
+
200 -
3 7 8
C 7
600
6 1 4
D 1
100 400

vj 2 0 3

Tabel 5.13 c

Perhatikan loop pada sel-sel yang dihubungkan dengan garis patah-patah pada tabel 5.13 c. Nilai
xij terkecil pada sel yang bertanda (-) menunjukkan nilai maksimum q yang bisa diisikan pada sel
x21. Jadi x21 = 200. Jika x21 diisi dengan kuantitas > 200 maka x11 dan x22 akan bernilai negatif.
186 Riset Operasi : Suatu Tinjauan Algoritmis

Dengan mengisi x21 = 200 maka x22 = 200 – 200 = 0 (menjadi bukan sel basis), x12 = 100 + 200
= 300, dan x11 = 200 – 200 = 0 (menjadi bukan sel basis). Dengan kata lain, dengan membuat x21
menjadi basis (dengan nilai 200) akan menyebabkan 2 sel lain yaitu x22 dan x11 menjadi sel
bukan basis. Jika demikian maka akan terjadi degeneracy (kekurangan sel basis). Untuk
menghindari hal tersebut, cukup salah satu dari sel x22 atau x11 saja yang dijadikan sel bukan
basis. Misalkan dipilih x22 yang bukan basis (lihat tabel 5.14).

Toko
1 2 3
5 3 6
A
0 300
2 9 4
Distributor

B
200
3 7 8
C
600
6 1 4
D
100 400

Tabel 5.14

Perhatikan bahwa dengan revisi ini, jumlah setiap baris dan setiap kolom tidak berubah
dibandingkan dengan tabel sebelumnya. Perhatikan pula perbedaan sel x11 dengan sel bukan
basis. Meskipun artinya sama-sama tidak mengirimkan barang, tetapi sel x11 merupakan sel basis
(yang berharga 0). Ini akan terasa manfaatnya sewaktu melakukan iterasi berikutnya.

Dengan perbaikan ini, maka total biaya pengiriman akan turun sebesar x21 . c21 = 200 (2) = 400.

Langkah berikutnya adalah mengecek apakah tabel 5.14 sudah optimal. Dengan mengambil v2 =
0 akan didapat harga-harga ui, vj dan kuantitas cij – ui – vj seperti tampak pada tabel 5.15 a.

Tampak bahwa masih ada beberapa sel dengan cij – ui – vj yang bernilai negatif. Ini berarti tabel
belum optimal. Sel dengan harga cij – ui – vj terkecil adalah x31. Sel x31 akan diisi dengan
kuantitas sebanyak-banyaknya.
TRANSPORTASI 187

Toko ui Toko ui
1 2 3 1 2 3
5 3 6 0 5 3 6 0
A 3 A 3
0 300 0 -
300 +
2 9 9 4 1 2 9 9 4 1
Distributor

Distributor
B 0 B 0
200 200
3 -6 7 8 -2 3 -6 7 8 -2
C 7 C 7
600 +
600 -
6 3 1 4 6 3 1 4
D 1 D 1
100 400 100 400

vj 2 0 3 vj 2 0 3

Tabel 5.15 a Tabel 5.15 b

Toko
1 2 3
5 3 6
A
300
2 9 4
Distributor

B
200
3 7 8
C
0 600
6 1 4
D
100 400

Tabel 5.16

Loop yang sesuai dengan x31 adalah x31 – x32 – x12 – x11 – x31 yang ditandai dengan garis patah-
patah pada gambar 5.15 b. Tanda (-) terkecil pada loop adalah x11 = 0. Maka semua sel bertanda
(+) ditambah dengan 0 dan sebaliknya semua sel bertanda (-) dalam loop akan dikurangi dengan
0. Hasilnya tampak pada tabel 5.16. Perhatikan disini bahwa meskipun biaya totalnya tidak
berubah, tetapi terjadi perubahan basis. Variabel basis yang berharga 0 berpindah tempat dari x11
ke x31.
188 Riset Operasi : Suatu Tinjauan Algoritmis

Toko ui Toko ui
1 2 3 1 2 3
5 6 3 6 0 5 6 3 6 0
A 3 A 3
300 300
2 9 3 4 -5 2 9 3 4 -5
Distributor

Distributor
B 6 B 6
200 200 - +

3 7 8 -2 3 7 8 -2
C 7 C 7
0 600 0 +
600 -
6 9 1 4 6 9 1 4
D 1 D 1
100 400 100 + 400 -

vj -4 0 3 vj -4 0 3

Tabel 5.17 a Tabel 5.17 b

Hasil pengujian tabel 5.16 tampak dalam tabel 5.17 a. Karena belum optimal, maka perubahan
basis dilakukan dengan mengisi sel x23 sebesar 200 unit barang sesuai dengan loop x23 – x21 –
x31 – x32 – x42 – x43 – x23 (lihat tabel 5.17 b). Hasil revisi tampak pada tabel 5.18 a. Tabel 5.18 b
menunjukkan hasil pengujian optimalitas tabel 5.18 a dengan mengambil v2 = 0. Ternyata tabel
5.18 b juga belum optimal dan sel x33 perlu diisi dengan kuantitas sebesar 200 unit barang sesuai
dengan loop x33 – x32 – x42 – x43 – x33.

Toko Toko ui
1 2 3 1 2 3
5 3 6 5 6 3 6 0
A A 3
300 300
2 9 4 2 5 9 8 4
Distributor

Distributor

B B 1
200 200
3 7 8 3 7 8 -2
C C 7
200 400 200 400 - +

6 1 4 6 9 1 4
D D 1
300 200 300 + 200 -

vj -4 0 3

Tabel 5.18 a Tabel 5.18 b


TRANSPORTASI 189

Hasil revisi tabel 5.18 b tampak pada tabel 5.19. Perhatikan bahwa tabel 5.19 sama dengan tabel
penyelesaian awal dengan metode Vogel (tabel 5.12 c) yang merupakan penyelesaian optimal
masalah transportasi.

Toko
1 2 3
5 3 6
A
300
2 9 4
Distributor

B
200
3 7 8
C
200 200 200
6 1 4
D
500

Tabel 5.19

5.5 Kasus-Kasus Masalah Transportasi

5.5.1 Masalah Transportasi Tidak Seimbang

Kadang-kadang terjadi keadaan dimana jumlah persediaan tidak sama dengan jumlah
permintaan. Dalam penyelesaian optimalnya pasti ada permintaan yang tidak terpenuhi (jika
jumlah permintaan lebih besar dari jumlah persediaan) atau persediaan yang tidak terkirim (jika
jumlah persediaan lebih besar dari jumlah permintaan).

Pada kasus yang tidak seimbang, sebelum membuat penyelesaian fisibel awal, tabel transportasi
terlebih dahulu diseimbangkan dengan cara menambah sebuah sumber/tujuan semu (tergantung
mana yang jumlah barangnya lebih sedikit). Besarnya persediaan/permintaan sumber/tujuan
semu merupakan selisih antara jumlah persediaan dan jumlah permintaan mula-mula. Setelah
tabel menjadi seimbang, langkah berikutnya adalah menyelesaikan masalah transportasi dengan
cara seperti pada bab 5.2 – 5.4.
190 Riset Operasi : Suatu Tinjauan Algoritmis

Contoh 5.8

Sebuah perusahaan persewaan mobil menghadapi masalah dalam hal mengalokasikan mobil
untuk memenuhi permintaan langganan. Ada 2 garasi tempat menyimpan mobil yang hendak
disewa (semua mobil bertipe sama), yang masing-masing mampu menampung 15 dan 13 mobil.

Ada 4 penyewa yang masing-masing membutuhkan 9, 6, 7, dan 9 buah mobil. Biaya perjalanan
mobil (ribuan rupiah) dari garasi ke tempat penyewa tampak pada tabel 5.20. Buatlah alokasi
pengiriman mobil yang akan meminimumkan total biaya pengiriman ! Gunakan metode biaya
terendah sebagai penyelesaian awalnya.
Tujuan
Garasi 1 2 3 4
A 45 17 21 30
B 14 18 19 31

Tabel 5.20

Penyelesaian

Total mobil yang ada = 15 + 13 = 28 buah, sedangkan total permintaan mobil = 9 + 6 + 7 + 9 =


31. Jadi jumlah permintaan > jumlah persediaan. Untuk menyeimbangkan tabel, ditambahkan
sebuah persediaan semu (garasi C) yang memiliki persediaan 31 – 28 = 3 buah mobil.

Tujuan
1 2 3 4 Persediaan

45 17 21 30
A 15
Garasi

14 18 19 31
B 13

0 0 0 0
C 3

Permintaan 9 6 7 9

Tabel 5.21 a
TRANSPORTASI 191

Biaya pengiriman dari garasi semu ke semua tujuan = 0 (karena memang tidak ada mobil yang
dikirimkan). Tabel 5.21 a menunjukkan tabel awal transportasi.

Dengan metode biaya terendah, mula-mula dicari sel dengan biaya terendah. Ada 4 sel dengan
biaya = 0 masing-masing x31, x32, x33, dan x34. Pilih salah satunya secara sembarang, misal x31.
Maksimum mobil yang bisa dialokasikan di sel x31 adalah sebanyak 3 mobil (persediaan garasi –
C dihabiskan).

Setelah menghapus garasi – C, sel dengan biaya terendah berikutnya adalah x21 dengan biaya =
c21 = 14. Maksimum mobil yang bisa dialokasikan di sel ini adalah 6 mobil. Dengan alokasi ini,
tujuan – 1 sudah terpenuhi dan dihapuskan dari perhitungan berikutnya.

Sel yang berikutnya diisi adalah x12 = 6, kemudian x23 = 7. Pada waktu mengisi x23, maka
sekaligus garasi – B dihabiskan dan tujuan – 3 terpenuhi. Ini akan menyebabkan kurangnya
variabel basis. Untuk mengatasi, maka ditambahkan sebuah variabel basis semu bernilai 0 di x24 .
Sel terakhir yang diisi adalah x14 = 9.

Tabel 5.21 b menunjukkan hasil penyelesaian awal dengan metode biaya terendah.

Tujuan
1 2 3 4 Persediaan

45 17 21 30
A 15
6 9
Garasi

14 18 19 31
B 13
6 7 0
0 0 0 0
C 3
3

Permintaan 9 6 7 9

Tabel 5.21 b

Langkah berikutnya adalah menguji apakah tabel fisibel awal (tabel 5.21 b) sudah optimal. Hasil
pengujian dengan metode u – v (dengan mengambil u2 = 0) tampak pada tabel 5.22 a. Ternyata
tabel belum optimal. Sel yang harus diisi adalah sel x34 sesuai dengan loop x34 – x31 – x21 – x24 –
x34 sebesar 0 unit.
192 Riset Operasi : Suatu Tinjauan Algoritmis

Tujuan
1 2 3 4 ui

45 32 17 21 3 30
A -1
6 9
Garasi
14 18 0 19 31
B 0
6 +
7 0 -

0 0 -4 0 -5 0 -17
C - 14
3 - +

vj 14 18 19 31

Tabel 5.22 a

Hasil revisi tabel dan sekaligus pengujian optimalitas berikutnya tampak pada tabel 5.22 b. Tabel
5.22 b juga belum optimal. Sel x13 harus diisi dengan kuantitas sebesar 3 unit sesuai dengan loop
x13 – x14 – x34 – x31 – x21 – x23 – x13. Hasilnya tampak pada tabel 5.22 c.

Tujuan
1 2 3 4 ui

45 15 17 21 -14 30
A 16
6 +
9 -
Garasi

14 18 17 19 31 17
B 0
6 +
7 -

0 0 13 0 -5 0
C - 14
3 -
0 +

vj 14 1 19 14

Tabel 5.22 b

Pengujian menunjukkan bahwa tabel 5.22 c (dengan mengambil u1 = 0) sudah optimal. Jadi
didapatkan penyelesaian optimal x12 = 6, x13 = 3, x14 = 6, x21 = 9, x23 = 4 dan x34 = 3.
TRANSPORTASI 193

Karena garasi – C merupakan sumber semu, maka pada titik minimumnya, permintaan dari
tujuan ke-4 tidak dapat terpenuhi sebesar 3 mobil. Biaya minimumnya = 6 (17) + 3 (21) + 6 (30)
+ 9 (14) + 4 (19) = 547 (ribuan) (lihat tabel 5.22 d)

Tujuan
1 2 3 4 ui

45 29 17 21 30
A 0
6 3 6
Garasi

14 18 3 19 31 3
B -2
9 4
0 14 0 13 0 9 0
C -30
3

vj 16 17 21 30

Tabel 5.22 c

Tujuan
1 2 3 4 Persediaan

45 17 21 30
A 15
6 3 6
Garasi

14 18 19 31
B 13
9 4

Permintaan 9 6 7 9

Tabel 5.22 d

5.5.2 Ada Jalan Rusak

Misalkan pada suatu masalah transportasi, ada jalur dari sumber – i ke tujuan – j yang tidak dapat
dilalui sama sekali. Ini berarti bahwa dalam penyelesaian optimalnya, xij harus merupakan
variabel bukan basis (yang berarti bahwa tidak ada barang yang dikirim dari sumber – i ke tujuan
– j). Untuk menjamin agar hal ini terjadi, maka biaya transportasi dari sumber – i ke tujuan – j
dibuat tak berhingga.
194 Riset Operasi : Suatu Tinjauan Algoritmis

Contoh 5.9

Sebuah perusahaan lokal membuat produknya di 3 cabang (A, B, C) untuk dijual ke 4 toko
berbeda (1, 2, 3, 4). Biaya pengiriman 1 unit produk dari cabang-i ke toko-j tampak dalam tabel
5.23
TOKO
CABANG 1 2 3 4
A 18 - 4 5
B 3 9 4 1
C 6 2 - 4

Tabel 5.23

Permintaan masing-masing toko adalah 220, 240, 125 dan 200. Kapasitas produksi tiap-tiap
cabang adalah 360, 120, dan 400. Toko-2 tidak mau menerima produk dari cabang A, dan
toko-3 tidak mau menerima produk dari cabang C. Selesaikan masalah transportasi tersebut
dengan menggunakan metode Vogel sebagai penyelesaian awalnya !

Penyelesaian

Total barang yang diproduksi di ketiga cabang adalah 360 + 120 + 400 = 880 unit, sedangkan
total permintaan di 4 toko adalah 220 + 240 + 125 + 200 = 785 unit. Ini berarti terdapat
kekurangan permintaan barang sebesar 880 – 785 = 95 unit. Agar seimbang, terlebih dahulu
dibuat sebuah toko semu (toko – 5) yang membutuhkan barang sebesar 95 unit. Biaya
pengiriman dari semua cabang ke toko – 5 = 0.

Karena toko – 2 tidak mau menerima barang dari cabang – A dan toko – 3 tidak mau menerima
barang dari cabang C, maka c12 = c33 = M (M adalah suatu bilangan positif sangat besar) (lihat
tabel 5.24 a).
TRANSPORTASI 195

Toko
1 2 3 4 5* Persediaan

18 M 4 5 0
A 360
Cabang
3 9 4 1 0
B 120

6 2 M 4 0
C 400

Permintaan 220 240 125 200 95

Tabel 5.24 a

Hasil pengisian penyelesaian fisibel awal dengan metode Vogel tampak pada tabel 5.24 b
(algoritma dapat dilihat kembali pada bab 5.2.3). Selisih minimum pada iterasi – 1 terjadi pada
kolom-2 sebesar 7. Pada kolom-2 ini, biaya terendah adalah c32, sehingga diambil x32 = 240 unit
dan kolom-2 dihapuskan dari iterasi berikutnya.

Toko Selisih 2 kolom dgn


1 2 3 4 5* biaya terendah
18 M 4 5 0
A 4 4* 1 1 13*
60 125 80 95
Cabang

3 9 4 1 0
B 1 1 2 - -
120
6 2 M 4 0
C 2 4 2 2 2
160 240
Selisih 2 baris dengan

3 7* 0 3 0
biaya terendah

3 - 0 3 0
3 - 0 3* -
12 - M-4* 1 -
12 - - 1 -

Tabel 5.24 b
196 Riset Operasi : Suatu Tinjauan Algoritmis

Pada iterasi-2, ada 2 selisih terbesar yang sama-sama bernilai 4 yaitu pada baris-1 dan baris 3.
Pilih salah satunya secara sembarang, misal pada baris-1. x15 = 95, dan kolom-5 dihapuskan dari
iterasi berikutnya. Pilihan sembarang juga terjadi pada iterasi-3, yaitu pada kolom-1 dan kolom-4
yang keduanya memiliki selisih terbesar yaitu = 3. Misalkan dipilih kolom – 4. Didapatkan x24 =
120 dan kolom-4 dihapuskan dari iterasi berikutnya.

Iterasi berikutnya berturut-turut menghasilkan x13 = 125 (ingat bahwa M adalah bilangan positip
yang sangat besar), x14 = 80. Karena yang tersisa tinggal kolom-1, maka diisikan x31 = 160 dan
x11 = 60.

Tabel 5.24 c menunjukkan pengujian optimalitas tabel 5.24 b dengan mengambil u1 = 0. Tampak
bahwa tabel belum optimal dan x21 harus diisi dengan 60 unit sesuai dengan loop x21 – x24 – x14 –
x11.

Toko
1 2 3 4 5* ui
18 M M-14 4 5 0
A 0
60 125 80 95
Cabang

3 -11 9 -1 4 4 1 0 4
B -4
120
6 2 M M+8 4 11 0 12
C -12
160 240

vj 18 14 4 5 0

Tabel 5.24 c

Tabel 5.24 d adalah revisi tabel 5.24 c dan hasil pengujian optimalitasnya dengan mengambil u1
= 0. Tampak bahwa tabel 5.24 d sudah optimal. Jika dikembalikan ke soal aslinya, maka kolom-
5 dihapus (lihat tabel 5.24 e) dan permintaan toko –1 tidak dapat dipenuhi 95 unit. Biaya
minimum = 125 (4) + 140 (5) + 60 (3) + 60 (1) + 160 (6) + 240 (2) = 2880
TRANSPORTASI 197

Toko
1 2 3 4 5* ui
18 11 M M-3 4 5 0
A 0
Cabang 125 140 95
3 9 10 4 4 1 0 4
B -4
60 60
6 2 M M-3 4 0 0 1
C -1
160 240

vj 7 3 4 5 0

Tabel 5.24 d

Toko
1 2 3 4 Persediaan

18 M 4 5
A 360
125 140
Cabang

3 9 4 1
B 120
60 60
6 2 M 4
C 400
160 240

Permintaan 220 240 125 200

Tabel 5.24 e

Perhatikan bahwa dengan pengisian c12 = c33 = M, maka x12 dan x33 dalam setiap iterasi pasti
bukan merupakan variabel basis.

5.5.3 Alternatif Penyelesaian

Perhatikan sel x34 pada tabel 5.24 d yang merupakan tabel optimal. Pada sel x34, nilai c34 – u3 –
v4 = 0. Artinya, jika sel x34 dijadikan basis (diisi dengan suatu kuantitas), maka penurunan biaya
transportasi = 0 (berarti tidak terjadi penurunan). Tabel 5.25 merupakan revisi tabel optimal 5.24
d dengan “memaksa” x34 menjadi basis yang nilainya 60 sesuai dengan loop x34 – x31 – x21 – x24
– x34.
198 Riset Operasi : Suatu Tinjauan Algoritmis

Tampak bahwa tabel 5.25 pun merupakan penyelesaian optimal juga dengan biaya minimum
yang sama (= 2880). Nilai c24 – u2 – v4 = 0. Jika dipaksakan diisi, maka akan kembali
menghasilkan tabel 5.24 d.

Jadi jika dalam tabel transportasi optimal, ada sel bukan basis dengan nilai cij – ui – vj = 0,
berarti masalah tersebut memiliki alternatif penyelesaian. Alternatif penyelesaiannya diperoleh
dengan cara “memaksa” sel xij menjadi basis.

Toko
1 2 3 4 5* ui
18 11 M M-3 4 5 0
A 0
125 140 95
Cabang

3 9 10 4 4 1 0 0 4
B -4
120
6 2 M M-3 4 0 1
C -1
100 240 60

vj 7 3 4 5 0

Tabel 5.25

5.5.4 Penalti Terhadap Permintaan Yang Tidak Terpenuhi

Tabel optimal 5.22 c dan 5.24 d merupakan tabel optimal masalah yang tidak seimbang. Pada
penyelesaian optimal itu terjadi kekurangan permintaan atau kelebihan persediaan. Akan tetapi
kekurangan permintaan tidak berpengaruh terhadap biaya transportasi karena tidak ada denda
akibat barang yang diminta tidak terpenuhi. Apabila tidak terpenuhinya permintaan dikaitkan
dengan suatu denda yang besarnya sebanding dengan jumlah barang yang tidak dikirim, maka
denda yang dikenakan dapat dinyatakan sebagai biaya pengiriman. Dengan demikian seolah-
olah ada biaya pengiriman (yang sebenarnya denda) bagi barang yang tidak terkirim.

Contoh 5.10
TRANSPORTASI 199

Selesaikan masalah transportasi yang terdiri dari 3 sumber dan 3 tujuan yang tampak pada tabel
5.25 berikut ini, jika kerugian per unit barang akibat tidak dipenuhinya permintaan tujuan 1, 2,
dan 3 masing-masing adalah 5, 3 dan 2 !
5 1 7 10
6 4 6 80
3 2 5 15

75 20 50

Tabel 5.25

Penyelesaian

Jumlah persediaan = 10 + 80 + 15 = 105, sedangkan jumlah permintaan adalah sebesar = 75


+ 20 + 50 = 145. Maka ditambahkan sumber semu (sumber – 4) yang memiliki 145 – 105 = 40
unit barang.

Tujuan
1 2 3
5 1 7
1 10

6 4 6
Sumber

2 80

3 2 5
3 15

5 3 2
4* 40

75 20 50

Tabel 5.26 a

Pada penyelesaian optimalnya, sel semu (baris – 4) yang merupakan variabel basis menunjukkan
adanya barang yang tidak terkirim. Karena ada kerugian akibat tidak terkirimnya barang, maka
kerugian tersebut dinyatakan dalam biaya pengiriman. Jadi c41 = 5, c42 = 3 dan c43 = 2 (lihat
tabel 5.26 a).
200 Riset Operasi : Suatu Tinjauan Algoritmis

Langkah berikutnya adalah menyelesaikan masalah transportasi tersebut dengan cara yang sudah
dibahas pada sub bab sebelumnya. Misalkan digunakan metode biaya terendah untuk membuat
penyelesaian fisibel awalnya, maka berturut-turut diisikan sel x12 = 10, x32 = 10 (dipilih
sembarang antara x32 atau x43), x43 = 40, x31 = 5, x21 = 70 dan x23 = 10 (lihat tabel 5.26 b)

Tujuan Tujuan
ui
1 2 3 1 2 3
5 1 7 5 3 1 7 5
1 10 1 -4
10 10
6 4 6 6 4 -1 6
Sumber

2 80 Sumber 2 0
70 10 70 - +
10
3 2 5 3 2 5 2
3 15 3 -3
5 10 5 +
10 -

5 3 2 5 3 3 2 2
4* 40 4* -4
40 40

75 20 50 vj 6 5 6

Tabel 5.26 b Tabel 5.26 c

Tabel 5.26 c menunjukkan hasil pengujian optimalitas tabel 5.26 b (dengan mengambil u2 = 0).

Tujuan
ui
1 2 3
5 2 1 7 4
1 -3
10
6 4 6
Sumber

2 0
60 10 10
3 2 1 5 2
3 -3
15
5 3 3 3 2
4* -4
40

vj 6 4 6

Tabel 5.26 d
TRANSPORTASI 201

Tampak bahwa tabel 5.26 c belum optimal dan sel x22 harus diisi sebesar 10 unit sesuai dengan
loop x22 – x21 – x31 – x32 – x22. Diperoleh tabel 5.26 d. Pengujian tabel 5.26 d menunjukkan
bahwa tabel tersebut sudah optimal. Tujuan –3 tidak terpenuhi sebesar 40 unit. Biaya pengiriman
dan kerugian sebesar = 10 (1) + 60 (6) + 10 (4) + 10 (6) + 15 (3) + 40 (2) = 595.

5.5.5 Soal Memaksimumkan

Algoritma penyelesaian masalah transportasi yang dibahas dalam sub bab terdahulu memiliki
tujuan meminimumkan total biaya. Kadang-kadang besaran cij dalam tabel transportasi
menyatakan sesuatu yang harus dimaksimumkan (misalnya keuntungan). Untuk itu ada 2 cara
penyelesaian yang bisa dilakukan.

1. Mengubah soal yang memaksimumkan menjadi soal meminimumkan. Caranya ialah dengan
mengambil cij’ = - cij atau cij’ = 1/cij. Langkah berikutnya adalah menyelesaikannya dengan
cara seperti yang dibahas pada bab sebelumnya.

2. Mengubah algoritma

Mengubah penyelesaian fisibel awal. Dengan metode barat laut, tidak ada perubahan
yang dilakukan. Dengan metode biaya terendah, pengisian dilakukan dari sel yang
biayanya tertinggi. Dengan metode Vogel (lihat bab 5.2.3), langkah – 1 diubah menjadi
selisih 2 sel dengan biaya terbesar. Pada langkah – 3 kuantitas diisikan pada sel yang
memiliki biaya terbesar.

Pengecekan optimalitas. Dalam kasus memaksimumkan, tabel optimal jika untuk semua
sel cij – ui – vj 0 (kebalikan dari soal meminimumkan). Jika tabel belum optimal,
pengisian kuantitas dilakukan pada sel yang memiliki nilai cij – ui – vj > 0 yang terbesar.

Cara pertama lebih sederhana dan mudah (terutama jika dikerjakan dengan program komputer)
karena tidak mengubah algoritma sama sekali.
202 Riset Operasi : Suatu Tinjauan Algoritmis

Contoh 5.11

Sebuah perusahaan mempunyai 3 pabrik yang membuat produk yang sama, serta 5 agen yang
akan menerima produk tersebut. Biaya produksi berbeda untuk tiap pabrik, dan harga jual ke tiap
agen juga berbeda-beda. Carilah pengaturan produksi dan distribusi yang paling menguntungkan
bagi perusahaan tersebut, jika diketahui data dalam tabel 5.27
Agen Biaya Kapasitas
Pabrik 1 2 3 4 5 Produksi
1 3 1 5 7 4 20 150
2 9 7 8 3 6 22 200
3 4 5 3 2 7 18 125

Harga Jual 30 32 31 34 29

Permintaan 80 100 75 45 125

Tabel 5.27

Penyelesaian

Untuk menentukan biaya distribusi yang paling menguntungkan, haruslah dihitung keuntungan
yang dihasilkan dari pengiriman produk.

Keuntungan = harga jual – biaya produksi – biaya transportasi

Sebagai contoh, pengiriman 1 unit barang dari pabrik – 1 ke agen –1 akan memberikan
keuntungan sebesar = 30 – 20 – 3 = 7. Dari pabrik – 2 ke agen – 1 menghasilkan keuntungan
sebesar = 30 – 22 – 9 = -1 (rugi). Tabel 5.28 a menunjukkan keuntungan yang diperoleh
dengan mengirimkan barang dari pabrik ke agen. Tampak bahwa tabel belumlah seimbang
karena jumlah persediaan adalah 80 + 100 + 75 + 45 + 125 = 425 unit sedangkan jumlah
persediaan sebesar 150 + 200 + 125 = 475 unit. Untuk itu perlu ditambahkan agen semu yang
membutuhkan barang sebesar 50 unit. Besarnya keuntungan pengiriman barang ke agen semu
adalah 0.
TRANSPORTASI 203

Agen
1 2 3 4 5 6 Persediaan
7 11 6 7 5 0
1 150
Pabrik

-1 3 1 9 1 0
2 200

8 9 10 14 4 0
3 125

Permintaan 80 100 75 45 125 50

Tabel 5.28 a

Tabel tersebut harus dimaksimumkan. Untuk itu, tabel 5.28 a terlebih dahulu dijadikan tabel
kerugian (yang harus diminimumkan) dengan cara mengambil negatif dari keuntungan. Hasil
pengisian penyelesaian fisibel awal dengan metode biaya terendah menghasilkan tabel 5.28 b.

Agen
1 2 3 4 5 6 Persediaan
-7 -11 -6 -7 -5 0
1 150
50 100
Pabrik

1 -3 -1 -9 -1 0
2 200
25 125 50
-8 -9 -10 -14 -4 0
3 125
5 75 45

Permintaan 80 100 75 45 125 50

Tabel 5.28 b

Tabel 5.28 c menunjukkan hasil pengujian optimalitas tabel 5.28 b dengan mengambil v1 = 0.
Tampak bahwa tabel belum optimal dan sel x24 harus diisi dengan kuantitas sebesar 25 unit
sesuai dengan loop x24 – x34 – x31 – x21 – x24
204 Riset Operasi : Suatu Tinjauan Algoritmis

Agen
1 2 3 4 5 6 ui
-7 -11 -6 3 -7 6 -5 4 0 8
1 -7
50 100
Pabrik

1 -3 0 -1 0 -9 -4 -1 0
2 1
25 - +
125 50
-8 -9 3 -10 -14 -4 6 0 9
3 -8
5 +
75 45 -

vj 0 -4 -2 -6 -2 -1

Tabel 5.28 c

Tabel 5.28 d merupakan revisi dari tabel 5.28 c dan sekaligus pengecekan optimalitasnya.
Tampak bahwa tabel 5.28 d sudah optimal dengan keuntungan maksimum = 50 (7) + 30 (8) +
100 (11) + 75 (10) + 25 (9) + 20 (14) + 125 (1) = 3070. Pabrik – 2 memiliki sisa 50 unit barang.

Agen
1 2 3 4 5 6 ui
-7 -11 -6 3 -7 6 -5 0 0 4
1 -7
50 100
Pabrik

1 4 -3 4 -1 4 -9 -1 0
2 -3
25 125 50
-8 -9 3 -10 -14 -4 2 0 5
3 -8
30 75 20

vj 0 -4 -2 -6 2 3

Tabel 5.28 d

Perhatikan bahwa dalam tabel optimal 5.28 d, c15 – u1 – v5 = 0 sehingga tabel memiliki
alternatif penyelesaian dengan cara mengisi sel x15 dengan kuantitas sebesar 20 unit sesuai
dengan loop x15 – x25 – x24 – x34 – x31 – x11 – x15.
TRANSPORTASI 205

Contoh 5.12

Selesaikan contoh 5.11 tanpa harus mengubah soal menjadi masalah meminimumkan terlebih
dahulu. Gunakan metode Biaya Terendah dan Vogel sebagai penyelesaian awalnya !

Penyelesaian

Dengan metode biaya terendah

Tabel awal transportasi tampak pada tabel 5.28 a. Untuk membuat penyelesaian fisibel awal
dengan metode biaya terendah, pengisian dimulai dari sel yang keuntungannya maksimum yaitu
sel x34 = 45. Berikutnya berturut-turut diisikan x12 = 100, x33 = 75, x31 = 5, x11 = 50, x25 = 125,
x26 = 50 dan x21 = 25. Tabel 5.29 menunjukkan hasil pengisian tabel 5.28 a dengan metode biaya
terendah dan sekaligus pengujian optimalitasnya. Ternyata tabel 5.29 belum optimal karena
masih ada sel x24 dengan c24 – u2 – v4 > 0.

Agen
1 2 3 4 5 6 Persediaan ui
7 11 6 -3 7 -6 5 -4 0 -8
1 150 7
50 100
Pabrik

-1 3 0 1 0 9 4 1 0
2 200 -1
25 - +
125 50
8 9 -3 10 14 4 -6 0 -9
3 125 8
5 +
75 45 -

Permintaan 80 100 75 45 125 50


vj 0 4 2 6 2 1

Tabel 5.29

Tampak bahwa pengisian tabel dengan cara langsung (tabel 5.29) memberikan hasil yang sama
dengan pengisian tabel dengan cara meminimumkan fungsinya terlebih dahulu (tabel 5.28 b). Ini
berarti revisi tabel maupun tabel optimalnya juga akan sama.
206 Riset Operasi : Suatu Tinjauan Algoritmis

Dengan metode Vogel

Selisih 2 baris dan kolom dengan keuntungan terbesar tampak pada tabel 5.30 a. Sebagai contoh,
pada baris pertama, dua sel dengan keuntungan terbesar masing-masing adalah c12 = 11 dan c11 =
7. Selisihnya = 11 – 7 = 4. Selisih yang diberi tanda (*) menunjukkan selisih yang terpilih.
Sebagai contoh, pada perhitungan selisih yang pertama, selisih terbesar terjadi pada baris – 2
(selisih = 6). Kuantitas sebanyak-banyaknya diisikan pada sel di baris – 2 yang memiliki
keuntungan terbesar, yaitu x24 = 45. Demikian seterusnya.

Agen Perse- Selisih 2 elemen dgn


1 2 3 4 5 6 diaan
keuntungan maks
7 11 6 7 5 0
1 150 4 4* 1 2 2 5*
30 100 20
Pabrik

-1 3 1 9 1 0
2 200 6* 2 0 1 1 1
45 105 50
8 9 10 14 4 0
3 75 125 4 1 2 4* - -
50
Permin 80 100 75 45 125 50
taan
1 2 4 5 1 0
Selisih

1 2 4 - 1 0
1 - 4* - 1 0
1 - - - 1 0
8* - - - 4 0
- - - - 4 0

Tabel 5.30 a

Tabel 5.30 b menunjukkan uji optimalitas tabel 5.30 a dengan mengambil u2 = 0. Tampak bahwa
tabel sudah optimal dengan keuntungan maksimum = 30 (7) + 50 (8) + 100 (11) + 75 (10) + 45
(9) + 20 (5) + 105 (1) + 50 (0) = 3070.

Tampaknya penyelesaian optimal tabel 5.30 b berbeda dengan tabel 5.28 d (meskipun
keuntungan totalnya sama). Akan tetapi pembaca dapat mengecek bahwa tabel 5.30 b
merupakan alternatif penyelesaian tabel 5.28 d dengan memaksa mengisi sel x15 dengan
kuantitas sebanyak-banyaknya (ingat kembali bahwa penyelesaian pada tabel 5.28 d memiliki
alternatif penyelesaian di x15). Hal yang sebaliknya juga berlaku. Tabel 5.30 b juga memiliki
TRANSPORTASI 207

alternatif penyelesaian dengan mengisi x34. Jika ini dilakukan maka akan didapat kembali tabel
5.28 d

Agen Perse-
1 2 3 4 5 6 diaan ui
7 11 6 -3 7 -6 5 0 -4
1 150 4
30 100 20
Pabrik

-1 -4 3 -4 1 -4 9 1 0
2 200 0
45 105 50
8 9 -3 10 14 0 4 -2 0 -5
3 75 125 5
50
Permintaan 80 100 75 45 125 50
vj 3 7 5 9 1 0

Tabel 5.30 b
208 Riset Operasi : Suatu Tinjauan Algoritmis

SOAL-SOAL LATIHAN

1. Perusahaan sepatu Kevin & Co telah membuat pabrik di Jakarta, Bandung, Semarang dan
Surabaya. Permintaan pasar mereka berasal dari distributor di Purwokerto, Jogjakarta, Solo,
Malang dan Banyuwangi. Matriks di bawah ini menyatakan maksimum kapasitas produksi
masing-masing pabrik dan kebutuhan pada distributor di beberapa kota tersebut. Angka-
angka dalam tiap sel menunjukkan biaya pengiriman 1 unit barang dari pabrik ke distributor.
DISTRIBUTOR
PABRIK P J S M B Kapasitas Pabrik

Jakarta 1 2 6 2 3 500
Bandung 3 4 5 8 1 600
Semarang 3 1 1 2 6 200
Surabaya 4 7 3 5 4 400
KEBUTUHAN 400 100 700 300 500

a. Carilah pengaturan pengiriman barang yang paling murah dengan metode Barat Laut dan
Metode Vogel.
b. Carilah distribusi pengiriman yang paling menguntungkan

2. Diketahui matriks biaya transportasi di bawah ini.


TUJUAN
SUMBER D1 D2 D3 KAPASITAS
O1 3 2 4 100
O2 0 4 2 300
O3 2 1 3 400
O4 5 2 3 200
O5 1 4 0 300
O6 4 1 2 300
O7 1 6 4 400
KEBUTUHAN 700 900 400

a. Minimumkanlah biaya transportasi total yang memenuhi kapasitas sumber dan kebutuhan
tujuannya.
TRANSPORTASI 209

b. Misalkan bahwa angka dalam sel tabel diatas menyatakan keuntungan. Bagaimanakah
pengiriman yang paling optimal ?

3. Apa yang terjadi jika sel yang terisi pada waktu pemberian harga awal pada tabel transportasi
kurang dari m+n-1 buah ? (m = jumlah sumber ; n = jumlah tujuan). Bagaimanakah kita
mengatasi situasi semacam itu ?

4. Perusahaan alat musik Tala membuat radio di 2 pabriknya dan mengirimkannya ke 3


distributor. Biaya pengiriman (dalam ribuan) adalah sebagai berikut :
KE
DARI Distributor 1 Distributor 2 Distributor 3
Pabrik - 1 5 7 6
Pabrik - 2 1 8 4

Pabrik-1 mempunyai kapasitas 200 buah tiap bulan, dan pabrik-2 mempunyai kapasitas 150
buah per bulan. Permintaasn dari distributor 1, 2, dan 3 masing-masing adalah 120, 130, dan
120.

a. Buatlah penyelesaian awal dengan metode Barat Laut dan Vogel

b. Carilah penyelesaian optimal.

5. Sebuah perusahaan mempunyai 3 buah pabrik dan produknya dikirimkan ke 4 penyalur.


Biaya produksi (dalam ribuan) dan kapasitas produksi mingguan tampak pada tabel di
bawah ini :
Pabrik Biaya Produksi Kapasitas
Mingguan
1 40 210
2 43 330
3 39 440

Kebutuhan mingguan penyalur-1, 2,3 dan 4 masing-masing adalah 180, 280, 150, dan 200
unit. Biaya transportasi per unit dari pabrik ke penyalur tampak dalam tabel di bawah ini :
PENYALUR
PABRIK W1 W2 W3 W4
F1 49 59 58 53
F2 51 58 59 58
210 Riset Operasi : Suatu Tinjauan Algoritmis

F3 47 65 60 61

a. Carilah alokasi optimalnya !

b. Misalkan perusahaan hanya bisa mengirimkan 80 unit dari pabrik F3 ke penyalur W1,
dan 100 unit dari pabrik F1 ke penyalur W4. Apakah penyelesaian yang anda dapatkan
pada (a) tetap optimal ? Jika tidak, berapa penyelesaian optimalnya ?

6. Sebuah perusahaan roti dapat membuat roti di dua pabriknya dengan data sbb :
Pabrik Kapasitas Produksi (roti) Biaya Produksi (ribuan)
A 2500 23
B 2100 25

Ada 4 restoran yang bersedia membeli roti tersebut. Kebutuhan dan harga yang mereka
setujui tampak dalam tabel berikut ini :
Restora Maksimum Permintaan Harga yg Diinginkan
n (Roti) (Ribuan)
1 1800 39
2 2300 37
3 550 40
4 1750 36

Biaya pengiriman (dalam rupiah) sebuah roti dari pabrik ke restoran tampak dalam tabel
berikut ini :
Restoran - Restoran - Restoran - Restoran -
1 2 3 4
Pabrik - A 6 8 11 9
Pabrik - B 12 6 8 5

Tentukan rencana pengiriman roti yang akan memaksimumkan total keuntungan !

7. Tiga kilang minyak dengan kapasitas harian maksimum masing-masing 6, 5 dan 8 juta
liter bensin mensuplai 3 daerah distribusi yang permintaannya masing-masing 4, 8, dan 7
juta liter bensin setiap harinya. Bensin dikirimkan ke ketiga daerah tersebut melalui jaringan
pipa. Biaya pengiriman per juta liter bensin tampak pada tabel di bawah ini (dalam ratusan
TRANSPORTASI 211

ribu rupiah). Tabel tersebut menunjukkan bahwa kilang minyak pertama tidak terhubung
dengan daerah distribusi ketiga.
Daerah Distribusi
1 2 3
1 12 18 -
Kilang 2 30 10 8
Minyak
3 20 25 12

a. Nyatakan masalah tersebut dalam model transportasi dan selesaikanlah !

b. Misalkan kapasitas kilang minyak ke-3 diturunkan menjadi 6 juta liter. Disamping itu,
daerah distribusi-1 harus menerima semua permintaannya, dan setiap satu juta liter
kekurangan permintaan bensin ke daerah - 2 dan 3 akan menyebabkan terjadinya
kerugian sebesar 5 (ratusan ribu rupiah). Nyatakan masalah tersebut dalam model
transportasi dan selesaikanlah !

c. Misalkan permintaan di daerah-3 turun menjadi 4 juta liter. Setiap kelebihan pengiriman
bensin ke daerah-3 dapat dimanfaatkan untuk keperluan di daerah tersebut sehingga tidak
menyebabkan adanya biaya tambahan. Akan tetapi, kelebihan pengiriman ke daerah-1
dan 2 harus dikirimkan ke daerah lain (diluar ketiga daerah tersebut). Akibatnya,
dibutuhkan biaya transportasi tambahan sebesar 15 dan 20 (ratusan ribu) rupiah dari per
juta liternya untuk mengirimkan bensin tersebut dari daerah-1 dan 2. Selesaikanlah
masalah transportasi tersebut !

8. Dalam masalah transportasi di bawah ini, total permintaan melebihi total persediaan.
Misalkan tidak ada kerugian karena permintaan tidak terpenuhi, tetapi permintaan tujuan-3
harus terpenuhi seluruhnya. Carilah penyelesaian optimalnya !
Tujuan
Sumber I II III Persediaan
A 5 1 7 10
B 6 4 6 80
C 3 2 5 15
Permintaan
212 Riset Operasi : Suatu Tinjauan Algoritmis

9. Selesaikan masalah transportasi untuk meminimumkan total biaya pengiriman apabila biaya
pengiriman, permintaan dan persediaan barang tampak dalam tabel di bawah ini
D1 D2 D3 D4
O1 1 2 -2 3 70
O2 2 4 0 1 38
O3 1 2 -2 5 32
40 28 30 42

10. Selesaikan masalah transportasi berikut ini untuk meminimumkan total biaya pengiriman,
jika dimulai dari penyelesaian awal x12 = 30, x21 = 40, x32 = 20, x43 = 60
D1 D2 D3
O1 4 5 2 30
O2 4 1 3 40
O3 3 6 2 20
O4 2 3 7 60
40 50 60

11. Seorang petani mempunyai 3 ladang A, B, C yang masing-masing membutuhkan 100, 300
dan 50 unit air. Bendungan air dapat memberikan 150 unit, sedangkan sumur dapat
memberikan 200 unit air. Kebutuhan air sisanya diharapkan dari turunnya hujan.

Tabel berikut ini menunjukkan biaya per unit air pada waktu musim kemarau dari
bendungan dan sumur, sedangkan baris ketiga menunjukkan kerugian akibat tidak turunnya
hujan. Tentukan bagaimana air dalam bendungan dan sumur diatur untuk meminimumkan
total biayanya !
A B C
Bendungan 3 5 7 150
Sumur 6 4 10 200
Tdk Turun Hujan 8 10 3 100
100 300 50
Bab 6

TRANSSHIPMENT

Dalam bab 5 telah dibahas masalah transportasi, yaitu cara pengiriman sejumlah barang dari
sumber ke tujuan agar total biayanya minimum. Dalam bab ini dibahas masalah transshipment,
yaitu pengiriman barang dari sumber ke tujuan melalui perantara (junction).

6.1 Transshipment Sebagai Perluasan Masalah

Transportasi

Masalah Transshipment (pengapalan) adalah perluasan dari masalah transportasi. Dalam


masalah transportasi, barang dikirimkan langsung dari sumber ke tujuan untuk meminimumkan
total biaya pengiriman. Dalam transshipment, pengiriman tidak harus dilakukan secara langsung,
tapi boleh dilewatkan ke satu/beberapa tempat perantara (junction). Untuk lebih jelasnya,
perhatikan contoh 6.1 berikut ini

Contoh 6.1

Misalkan 10 unit barang ada di Jakarta dan 10 unit lainnya di Malang, hendak dikirimkan ke
Semarang dan Jogjakarta, yang masing-masing membutuhkan 10 unit barang. Pengiriman dapat
dilakukan secara langsung, atau melewati cabangnya di kota Surabaya. Biaya pengiriman satu
unit barang dari sumber ke tujuan maupun perantara tampak pada label garis dalam gambar 6.1.
Dalam gambar 6.1, titik yang bertanda (+) menunjukkan titik sumber dan titik yang bertanda (-)
menunjukkan titik tujuan.
224 Riset Operasi : Suatu Tinjauan Algoritmis

+10 Jakarta 3 Semarang -10

4 3

2 Surabaya 6

1 2

-10 Jogjakarta 5 Malang +10

Gambar 6.1

Baik titik sumber maupun titik tujuan dapat bertindak pula sebagai perantara. Sebagai contoh,
barang bisa dikirimkan dari Malang ke Semarang secara langsung atau melewati Surabaya yang
merupakan titik perantara.
(5)
+10 1 5 -10 +10 1 3 5 -10

(10) (5)
(5) 3
2 3 6 2 3
(10) (5)
1 2
(10)
-10 2 4 +10 -10 2 4 +10

(a) (b)

(5)
+10 1 3 5 -10 +10 1 5 -10
(5) 4 (10) 4 3
(10)
3 6 3

1 (10) 2 (5) 1 (10) 2


(5) (10)
-10 2 4 +10 -10 2 4 +10

(c) (d)

Gambar 6.2

Beberapa penyelesaian yang mungkin tampak dalam gambar 6.2 a – d (titik 1, 2, 3, 4, dan 5
masing-masing menyatakan kota Jakarta, Jogjakarta, Surabaya, Malang dan Semarang). Angka
dalam kurung di sisi garis menyatakan jumlah barang yang dikirim Masing-masing penyelesaian
TRANSSHIPMENT 225

memiliki total biaya pengiriman yang berbeda-beda. Pengiriman seperti gambar 6.2 a
membutuhkan biaya = 10 (2) + 10 (6) = 80, sedangkan biaya pengiriman sesuai gambar 6.2 b – d
masing-masing adalah 65, 85, dan 100. Disamping beberapa penyelesaian yang tampak dalam
gambar 6.1 a - d tersebut, masih banyak lagi kemungkinan penyelesaian yang bisa dilakukan.

6.2 Penyelesaian Masalah Transshipment

Seperti masalah transportasi, tujuan masalah transshipment adalah bagaimana mengatur


pengiriman agar total biayanya seminimum mungkin. Penyelesaian dilakukan dengan cara
mengubah masalah transshipment menjadi masalah transportasi, dan kemudian
menyelesaikannya dengan algoritma transportasi (cara penyelesaian masalah transportasi dapat
dilihat pada bab 5). Transformasi masalah transshipment ke masalah transportasi meliputi
beberapa bagian

1. Menyeimbangkan tabel. Telitilah apakah jumlah persediaan barang (node bertanda (+)) sama
dengan jumlah permintaan (node bertanda (-)). Jika belum sama, maka tabel harus
diseimbangkan dengan menambahkan sumber/tujuan semu.

2. Tentukan titik yang merupakan titik sumber, titik tujuan dan titik perantara. Titik sumber
adalah titik yang hanya bisa mengirimkan barang dan tidak bisa menerima barang.
Sebaliknya, titik tujuan adalah titik yang hanya bisa menerima barang dan tidak bisa
mengirimkan barang. Titik perantara adalah titik yang bisa mengirimkan sekaligus menerima
barang.

Dalam gambar, titik sumber ditandai dengan adanya garis keluar dari titik tersebut tanpa
adanya garis masuk. Sebaliknya, titik tujuan ditandai dengan adanya garis masuk tanpa ada
garis keluar dari titik tersebut. Jika ada garis yang masuk dan keluar dari suatu titik, maka
titik tersebut merupakan titik perantara.

Sumber dalam masalah transportasi yang sesuai adalah gabungan dari sumber dan titik
perantara, sedangkan tujuan merupakan gabungan dari tujuan dan titik perantara dalam
masalah transshipment
226 Riset Operasi : Suatu Tinjauan Algoritmis

3. Tentukan jumlah persediaan dan permintaan tiap titik.

Misalkan dalam masalah transshipment mula-mula, Si adalah persediaan titik-i dan Dj adalah
permintaan titik-j. T = Si = D j . Maka dalam masalah transportasinya, titik sumber
i j

memiliki persediaan sebesar S’i = Si dan titik tujuan memiliki kebutuhan sebesar D’j = Dj.
Titik perantara memiliki persediaan sebesar P’i = Si + T (atau permintaan sebesar Dj + T).

4. Tentukan biaya pengiriman dari Si ke Dj.

cij jika ada jalur langsung dari Si ke Dj


'
cij 0 jika i = j
jika tidak ada jalur langsung dari Si ke Dj

Contoh 6.2

Selesaikan masalah transshipment dalam contoh 6.1

Penyelesaian

Jumlah persediaan = 10 + 10 = 20 unit, dan jumlah permintaan = 10 + 10 = 20 unit. Berarti


masalah sudah seimbang. T = 20

Tampak dari gambar 6.1 bahwa titik yang menjadi sumber adalah Jakarta (titik – 1) dan yang
menjadi tujuan adalah Semarang (titik – 5). Titik-titik lain merupakan titik perantara karena ada
garis yang masuk dan sekaligus keluar dari titik-titik tersebut. Jadi masalah transportasi yang
sesuai memiliki 4 sumber (masing-masing titik 1, 2, 3, dan 4) serta memiliki 4 tujuan (masing-
masing titik 2, 3, 4 dan 5). Perhatikan disini bahwa titik 2, 3 dan 4 menjadi sumber sekaligus
tujuan.

Jumlah persediaan titik – 1 = 10 karena merupakan titik sumber. Persediaan titik – 2 = 0 (karena
titik-2 tidak menghasilkan barang) + 20 (karena titik-2 merupakan titik perantara) = 20.
Persediaan titik – 3 = 0 + 20 = 20 dan persediaan titik – 4 = 10 (awalnya titik-4 memang
memiliki 10 unit barang) + 20 (karena titik-4 merupakan perantara) = 30.
TRANSSHIPMENT 227

Jumlah permintaan titik – 2 = 10 (awalnya titik-2 membutuhkan 10 unit barang) + 20 (karena


titik-2 adalah perantara) = 30. Permintaan titik – 3 = 0 + 20 = 20. Permintaan titik – 4 = 0 + 20 =
20 dan permintaan titik – 5 = 10 (titik-5 merupakan tujuan sehingga tidak perlu ditambah
dengan 20).

Tabel 6.1 a menunjukkan tabel transportasi yang sesuai untuk masalah transshipment contoh 6.1.
Baris S2 berarti titik – 2 berfungsi sebagai sumber dan kolom D2 berarti titik – 2 sebagai tujuan.

Tujuan
D2 D3 D4 D5 Persediaan

S1 10
Sumber

S2 0+20 = 20

S3 0+20 = 20

S4 10+20 = 30

10+20 0+20 0+20


Permintaan 10
= 30 = 20 = 20

Tabel 6.1 a

Tujuan
D2 D3 D4 D5 Persediaan

2 4 M 3
S1 10
Sumber

0 M 5 M
S2 20

1 0 M 3
S3 20

M 2 0 6
S4 30

Permintaan 30 20 20 10

Tabel 6.1 b
228 Riset Operasi : Suatu Tinjauan Algoritmis

Masalah berikutnya adalah menentukan biaya transportasi masing-masing sel. Untuk jalur
langsung yang ada (misal dari S2 ke D3), biaya transportasi adalah biaya yang tertera pada
gambar 6.1. Jika tidak ada jalur langsung (misal dari S1 ke D4) maka biaya transportasinya = M
(M = bilangan positip besar). Biaya transportasi ke titik itu sendiri (misal dari S2 ke D2) = 0.
Tabel lengkap masalah transportasinya tampak pada tabel 6.1 b.

Setelah terbentuk tabel transportasi, langkah berikutnya adalah menyelesaikannya dengan


algoritma transportasi (algoritma transportasi selengkapnya dapat dilihat pada bab 5). Misalkan
digunakan metode biaya terendah sebagai penyelesaian awalnya. Maka berturut-turut diisikan
x21 = 20 (pilih sembarang diantara x21, x32 dan x43), x43 = 20 (pilih sembarang antara x32 dan x43),
x32 = 20 dan sekaligus x42 = 0 (karena kekurangan basis), x11 = 10 dan sekaligus x31 = 0 (karena
kekurangan basis) dan terakhir x44 = 10.

Tabel 6.2 menunjukkan penyelesaian fisibel awal dan sekaligus uji optimalitasnya dengan
mengambil u4 = 0. Tampak bahwa tabel 6.2 belum optimal dan sel x14 harus diisi dengan
kuantitas sebesar 10 unit sesuai dengan loop x14 – x44 – x42 – x32 – x31 – x11 – x14.

Tujuan
D2 D3 D4 D5 Persediaan Ui
2 4 3 M M+1 3 -2
S1 10 -1
10 - +
Sumber

0 M M+1 5 8 M M-3
S2 20 -3
20
1 0 M M+2 3 -1
S3 20 -2
0 +
20 -

M M-3 2 0 6
S4 30 0
0 +
20 10 -

Permintaan 30 20 20 10
Vj 3 2 0 6

Tabel 6.2

Hasil revisi dan sekaligus uji optimalitasnya (dengan v1 = 0) tampak pada tabel 6.3, yang
merupakan tabel optimal.
TRANSSHIPMENT 229

Tujuan
D2 D3 D4 D5 Ui
2 4 3 M M+1 3
S1 2
0 10
Sumber 0 M M+1 5 8 M M-1
S2 0
20
1 0 M M+2 3 1
S3 1
10 10
M M-3 2 0 6 2
S4 3
10 20

Vj 0 -1 -3 1

Tabel 6.3

Jika dikembalikan ke masalah semula, maka supaya biaya pengirimannya optimal, maka
dilakukan pengiriman barang dari S1 – D5 = 10, S3 – D2 = 10, dan S4 – D3 = 10 (lihat gambar
6.3). Biaya totalnya = 10 (3) + 10 (1) + 10 (2) = 60.

(10)
+10 1 3 5 -10

1 (10) 2
(10)
-10 2 4 +10

Gambar 6.3

Contoh 6.3

Suatu perusahaan akan mengirimkan 70 unit produk dari lokasi – 1 ke lokasi – 2 (membutuhkan
45 unit) dan ke lokasi – 3 (membutuhkan 25 unit). Pengiriman bisa dilakukan secara langsung
atau melalui lokasi lain terlebih dahulu. Biaya pengiriman per unit produk antar 2 lokasi tampak
dalam tabel 6.4 .
230 Riset Operasi : Suatu Tinjauan Algoritmis

KE LOKASI
DARI 1 2 3 4
1 - 38 56 34
2 38 - 27 -
3 56 27 - 19
4 34 - 19 -

Tabel 6.4
Tentukan cara pengiriman yang akan meminimumkan total biaya pengiriman !

Penyelesaian

Pengiriman dapat digambarkan dalam gambar 6.4 a. Jumlah sumber = 70 dan jumlah permintaan
= 45 + 25 = 70. Jadi masalahnya sudah seimbang

Tampak dalam gambar 6.4 a bahwa satu-satunya sumber adalah titik – 1 sehingga biaya
pengiriman tidak akan optimal apabila barang yang keluar dari titik-1 kembali lagi ke titik – 1.
Dengan kata lain, semua garis menuju titik-1 dapat dihilangkan.

38
+70 1 2 -45
38

56
34 34 27 27
56

19
4 3 -25
19

Gambar 6.4 a
Gambar 6.4 b menunjukkan revisi model transshipment setelah semua garis menuju titik-1
dihilangkan.

Dalam gambar 6.4 b tampak bahwa titik yang menjadi sumber adalah titik-1, dan tidak ada titik
yang menjadi tujuan. Titik 2, 3 dan 4 semuanya merupakan titik perantara. Jadi dalam tabel
transportasi yang sesuai, ada 4 sumber (baris) masing-masing titik – 1, 2, 3 dan 4 dan ada 3
tujuan (kolom) yaitu titik 2, 3 dan 4.
TRANSSHIPMENT 231

+70 1 38 2 -45

34 56 27 27

19
4 3 -25
19

Gambar 6.4 b

Jumlah persediaan titik-1 adalah 70 unit. Jumlah persediaan titik 2, 3 dan 4 semuanya = 0 + 70 =
70 (karena ketiganya titik perantara sehingga harus ditambah dengan total barang). Jumlah
permintaan titik – 2 = 45 + 70 = 115, titik – 3 = 25 + 70 = 95, dan permintaan titik – 4 = 0 + 70 =
70. Perhatikan disini bahwa sesudah dijadikan masalah transportasi, tabel harus tetap seimbang
(jumlah permintaan = jumlah persediaan).

Biaya pengiriman disesuaikan dengan tabel 6.4. Biaya pengiriman antara 2 titik yang tidak
berhubungan langsung = M (M = bilangan positip besar) dan biaya pengiriman antara 2 titik
yang sama = 0.

Tujuan
D2 D3 D4 Persediaan Ui
38 56 34 -3
S1 70 56
45 25 - +
Sumber

0 27 9 M M+1
S2 70 18
70
27 45 0 19 38
S3 70 0
70
M M-1 19 0
S4 70 19
0 +
70 -

Permintaan 115 95 70
Vj -18 0 -19

Tabel 6.5 a
Tabel 6.5 a menunjukkan tabel awal transportasi, sekaligus penyelesaian awal dengan metode
biaya terendah, dan hasil uji optimalitasnya. Pada pengisian variabel basis, berturut-turut diisikan
x21 = 70 (dipilih sembarang antara x21, x32 atau x43), x32 = 70 (dipilih sembarang antara x32 atau
232 Riset Operasi : Suatu Tinjauan Algoritmis

x43), x43 = 70 dan sekaligus x42 = 0 (karena kekurangan basis), x11 = 45 dan terakhir x12 = 25.
Hasil pengujian optimalitas (dengan mengambil v2 = 0) menunjukkan bahwa tabel 6.5 a belum
optimal dan sel x13 perlu diisi dengan kuantitas sebesar 25 unit sesuai dengan loop x13 – x43 – x42
– x12 – x13.

Tabel 6.5 b menunjukkan hasil revisi tabel 6.5 a dengan mengambil u1 = 0. Tampak bahwa tabel
6.5 b sudah optimal. Jika dikembalikan ke masalah semula, maka didapatkan gambar 6.5. Biaya
pengiriman minimumnya = 45 (38) + 25 (34) + 25 (19) = 3035

Tujuan
D2 D3 D4 Ui
38 56 3 34
S1 0
45 25
Sumber

0 27 12 M M+4
S2 -38
70
27 42 0 19 38
S3 -53
70
M M-4 19 0
S4 -34
25 45

Vj 38 53 34

Tabel 6.5 b

+70 1 38 2 -45
(45)
(25)

34

(25)
4 19 3 -25

Gambar 6.5
TRANSSHIPMENT 233

6.3 Soal Tidak Seimbang

Sama seperti penyelesaian masalah transportasi, kasus tidak seimbang dalam masalah
transshipment diselesaikan dengan cara menambahkan sumber/tujuan semu. Biaya pengiriman
dari sumber semu (atau ke tujuan semu) = 0.

Contoh 6.4

Tentukan cara pengiriman barang pada keadaan yang digambarkan pada gambar 6.6 supaya
memenuhi semua permintaan tapi dengan total biaya se minimum mungkin.

8
+95 -30
+15
1 3 3 4 5

2 3 4
+70 -45
-30
2 7 4 2 6

Gambar 6.6

Penyelesaian

Jumlah persediaan = 95 + 70 + 15 = 180 unit, sedangkan jumlah permintaan = 30 + 45 + 30 =


105 unit. Maka terdapat kekurangan permintaan sebesar 180 – 105 = 75 unit. Untuk
menyeimbangkan tabel, maka ditambahkan permintaan semu (titik – 7) sebesar 75 unit.

Dari gambar 6.6, tampak bahwa titik yang merupakan sumber adalah titik – 1 dan 2, tujuan
adalah titik – 5, 6 serta 7 (semu). Titik 3 dan 4 adalah titik perantara. Maka dalam tabel
transportasinya ada 4 baris (S1, S2, S3, dan S4) dan 5 kolom (D3, D4, D5, D6 dan D7).

Jumlah persediaan S1 dan S2 masing-masing adalah 95 dan 70. Persediaan titik perantara S3 = 15
+ 180 = 195, dan S4 = 0 + 180 = 180. Jumlah permintaan D3 = 0 + 180 = 180, D4 = 30 + 180 =
210. Permintaan titik tujuan D5, D6 dan D7 masing-masing adalah 30, 45 dan 75 unit.

Biaya pengiriman antar 2 titik ditentukan seperti pada contoh 6.2 dan 6.3 dengan biaya
pengiriman ke tujuan semu = 0. Tabel 6.6 menunjukkan tabel awal transportasi dan
penyelesaian awal dengan metode Vogel (cara pengisian dengan metode Vogel dapat dilihat
234 Riset Operasi : Suatu Tinjauan Algoritmis

kembali pada bab 5.2.3). Tanda (*) pada selisih 2 baris/kolom menunjukkan baris/kolom dengan
selisih terbesar. Pada iterasi – 1, diambil x33 = 30. Pada iterasi – 2, diambil x42 = 180 (dipilih
sembarang antara kolom-2 atau baris-1). Berikutnya berturut-turut diambil x34 = 45, x32 = 30, x15
= 75. Setelah hanya tersisa kolom-1, diambil x31 = 90, x21 = 70 dan terakhir x11 = 20.

Tujuan
D3 D4 D5 D6 D7 Persediaan ui
3 M M-6 8 1 M M-7 0
S1 95 3
20 75
Sumber

2 7 2 M M-6 M M-6 0 1
S2 70 2
70
0 3 4 4 0 3
S3 195 0
90 30 30 45
M M+3 0 M M-1 2 1 0 6
S4 180 -3
180

180 210 30 45 75
vj 0 3 4 4 -3

Tabel 6.6

Tujuan
D3 D4 D5 D6 D7 Persediaan Selisih 2 baris
3 M 8 M 0
S1 95 3 3 3 3 3*
20 75
Sumber

2 7 M M 0
S2 70 2 2 2 2 2
70
0 3 4 4 0
15+180 =
S3 0 0 0 0 0
90 30 30 45 195
M 0 M 2 0
0+180 =
S4 0 0 - - -
180 180
Permin- 0+180 30+180
30 45 75
taan = 180 = 210
2 3 4* 2 0
Selisih 2 kolom

2 3* - 2 0
2 4 - M-4* 0
2 4* - - 0
2 - - - 0

Tabel 6.7
TRANSSHIPMENT 235

Tabel 6.7 menunjukkan uji optimalitas tabel 6.6 dengan mengambil u3 = 0. Ternyata
penyelesaian awal sudah optimal sehingga tidak perlu direvisi lagi. Jika dikembalikan ke
masalah semula, maka didapatkan distribusi pengiriman barang seperti pada gambar 6.7. Di titik
– 1 barang tersisa 75 unit (dikirim ke tujuan semu).

+95 +15 -30


1 3 3 (30) 4 5
(20)
(45)
2 3 (30) 4
(70)
+70 -30 -45
2 4 6

Gambar 6.7

6.4 Kasus-kasus Khusus

Pada prinsipnya setelah masalah transshipment dijadikan tabel transportasi, maka semua kasus
khusus yang terjadi pada masalah transportasi juga berlaku pada masalah transshipment.

Alternatif penyelesaian terjadi jika pada tabel optimalnya ada sel dengan nilai cij – ui – vj =
0. Alternatif didapatkan dengan cara “memaksa” sel tersebut menjadi basis (diisi dengan
kuantitas).

Untuk menyelesaikan soal memaksimumkan, maka masalah terlebih dahulu dikembalikan


ke masalah meminimumkan dengan cara mengubah biaya pengiriman dengan negatifnya
(kecuali biaya = M yang tidak dinegatifkan). Pembaca dapat mencoba contoh 6.2 – 6.4
dengan mengganti soal meminimumkan menjadi soal memaksimumkan.
236 Riset Operasi : Suatu Tinjauan Algoritmis

SOAL-SOAL LATIHAN

1. Diketahui masalah pengangkutan yang mengirimkan 10 dan 15 unit barang pada titik 1
dan 3, serta permintaan sebesar 15 dan 10 unit pada titik 2 dan 4. Diagram
pengirimannya tampak pada gambar di bawah ini. Selesaikan masalah pengangkutan
tersebut melalui penyelesaian masalah transportasi.

3
1 3

6 4
3 5 3
2 1
3
2 4
2

2. Diketahui masalah pengangkutan yang mengirimkan 8 unit barang di titik 1 dan 6 unit di
titik 3 dan 4, serta permintaan sebesar 7 unit di titik 5 dan 6 unit di titik 7. Diagram
pengirimannya tampak pada gambar di bawah ini. Selesaikan masalah pengangkutan
tersebut melalui penyelesaian masalah transportasi.

4
1 5
5 2
3 3
4
1
4 3
2
3 6

5 6
4 7
12

3. Tentukan pengangkutan dengan biaya minimum untuk masalah pengangkutan yang


digambarkan dalam gambar di bawah ini
TRANSSHIPMENT 237

+20
3
3 14
10
5
+20 1 2 -25
3 3

4 4
6 8

+30 5 6 -35
15

4. Suatu perusahaam mobil mendapatkan pesanan dari lokasi 5, 6, dan 7 masing-masing


sejumlah 75, 60, dan 80 unit mobil jenis tertentu. Proses produksi yang dilakukan meliputi
pembuatan body di lokasi 1 atau 2. Body mesin yang sudah dibuat kemudian dikirim ke
lokasi 3 atau 4 untuk dirakit dengan mesinnya, barulah kemudian dikirim ke
langganannya.

Biaya produksi per body adalah 533 (ribu) di lokasi 1 dan 550 (ribu) di lokasi 2. Perakitan
di lokasi 3 dan 4 masing-masing membutuhkan biaya 2256 dan 2239 (ribu). Biaya
pengiriman diantara lokasi adalah sebagai berikut :
LOKASI 3 4 LOKASI 5 6 7
1 45 59 3 72 65 79
2 65 52 4 81 74 63

Kapasitas produksi di lokasi 1 dan 2 masing-masing adalah 150 dan 170 body. Lokasi 3
dan 4 dapat merakit berapapun mobil yang masuk ke lokasinya. Tentukan pengaturan
produksi dan pengangkutan yang memenuhi semua permintaan dengan biaya minimum.
Bab 7

PENUGASAN

Dalam bab ini dibahas masalah Assignment (penugasan), yang merupakan kasus khusus dari
masalah transportasi, dimana setiap sumber dan setiap tujuan hanya memiliki 1 unit barang. Ini
berarti bahwa setiap sumber hanya bisa mengalokasikan barang ke satu tujuan saja.

7.1 Permasalahan Penugasan

Kasus penugasan lebih mudah dipahami dengan mengandaikannya sebagai sejumlah pekerjaan
(sumber) yang akan didistribusikan ke sejumlah pekerja (tujuan). Masing-masing pekerja dapat
mengerjakan semua jenis pekerjaan tetapi dengan bobot (waktu, upah, dll) yang berbeda-beda.
Masalah yang dihadapi adalah bagaimana mendistribusikan pekerjaan ke pekerja sehingga total
bobotnya minimum.

Contoh 7.1

Seorang pelatih renang memiliki 4 orang perenang yang akan diterjunkan dalam lomba 400
meter gaya ganti perseorangan. Dalam lomba itu masing-masing perenang akan berenang sejauh
100 meter dalam salah satu gaya dari 4 gaya yang diwajibkan (gaya punggung, dada, kupu-kupu
dan gaya bebas) .

Semua perenang dapat berenang dalam setiap gaya. Akan tetapi karena spesialisasi yang
berbeda-beda, maka waktu yang dibutuhkannyapun juga berbeda-beda. Tabel 7.1 menunjukkan
waktu (dalam detik) yang dibutuhkan perenang dengan gaya yang ditentukan.
GAYA
PERENANG Punggung Dada Kupu-kupu Bebas
1 65 73 62 57
2 67 70 65 58
3 68 72 69 55
4 71 69 75 57
240 Riset Operasi : Suatu Tinjauan Algoritmis

Tabel 7.1

Beberapa kemungkinan yang dapat dipilih pelatih dapat dilihat dalam tabel 7.2.
Perenang Total Waktu
Kemungkinan 1 2 3 4
1 Punggung Dada Kupu-kupu Bebas 261
2 Bebas Kupu-kupu Punggung Dada 259
3 Dada Kupu-kupu Punggung Bebas 263

Tabel 7.2

Tampak bahwa pemilihan perenang yang berbeda akan menghasilkan total waktu yang berbeda.
Masalahnya adalah menentukan alokasi perenang yang menghasilkan total waktu seminimum
mungkin.

Penyelesaian masalah penugasan dengan metode biaya terendah tidak menjamin total waktunya
paling kecil. Sebagai contoh, perhatikan masalah penugasan yang melibatkan 2 pekerja (A dan
B) dan 2 pekerjaan (1 dan 2) yang waktunya sebagai berikut :
Pekerjaan
Pekerja 1 2
A 3 2
B 7 4

Penyelesaian dengan biaya terendah akan mengalokasikan pekerja A dengan pekerjaan – 2


(waktu terendah = 2). Akibatnya, pekerja B harus dialokasikan ke pekerjaan – 1. Toal waktunya
= 2 + 7 = 9. Sebaliknya, alokasi pekerja A ke pekerjaan – 1 dan pekerja B ke pekerjaan – 2
memiliki total waktu yang lebih sedikit, yaitu = 3 + 4 = 7

7.2 Penyelesaian Masalah Penugasan

Masalah penugasan m pekerja ke m buah pekerjaan dapat dinyatakan sebagai masalah program
linier sebagai berikut :
m m
Minimumkan Z = cij xij
i 1 j 1
PENUGASAN 241

m
Kendala xij 1 ; i = 1, 2, … , m
j 1

m
xij 1 ; j = 1, 2, … , m
i 1

xij = 0 atau 1, i = 1, 2, … , m ; j = 1, 2, … , m

Penyelesaian dengan program linier akan membutuhkan m2 buah variabel, belum termasuk
variabel longgar dalam metode simpleks. Jumlah variabel yang besar ini akan menyebabkan
biaya komputasi sangat tinggi.

Masalah penugasan juga dapat diselesaikan dengan metode transportasi. Untuk itu paling sedikit
harus ditambahkan (m-1) buah variabel semu. Permasalahannya adalah jumlah perhitungan
yang harus dilakukan relatif banyak untuk setiap iterasinya. Algoritma lain yang lebih sederhana
dan sering dipakai adalah algoritma Hungarian.

Prinsip dasar algoritma hungarian sama dengan metode transportasi yaitu

1. Tentukan penyelesaian fisibel awal.

2. Uji optimalitasnya. Jika sudah optimal, proses dihentikan. Jika belum optimal lakukan
langkah 3.

3. Revisi tabel untuk meningkatkan optimalitas. Kembali ke langkah 2.

Menentukan penyelesaian fisibel awal.

Algoritma untuk membuat penyelesaian fisibel awal adalah sebagai berikut :

1. Dalam setiap baris, tentukan sel yang bobotnya terkecil. Kurangkan seluruh sel pada baris
tersebut dengan sel yang bobotnya terkecil.

2. Ulangi langkah 1 untuk setiap kolom.

Dengan menyelesaikan langkah 1-2, maka setiap baris dan setiap kolom tabel pasti tidak ada
yang negatif dan memuat paling sedikit sebuah nol. Elemen nol inilah yang merupakan
variabel basis.
242 Riset Operasi : Suatu Tinjauan Algoritmis

Uji optimalitas

Tutup semua variabel basis (nol) dalam penyelesaian fisibel awal dengan kombinasi garis
horisontal dan vertikal sesedikit mungkin. Jika tabel terdiri dari n baris (dan n kolom) maka
paling banyak akan dibutuhkan n garis. Jika garis yang dibutuhkan untuk menutup semua nol
dalam tabel < n, maka tabel belum optimal dan harus direvisi.

Merevisi Tabel

Perhatikan sel-sel tabel hasil uji optimalitas. Ada 3 jenis sel : Jenis pertama adalah sel yang tidak
tertutup garis. Semua sel tersebut pasti bernilai positip (karena yang bernilai nol pasti sudah
tertutup garis pada pengujian optimalitas). Jenis kedua adalah sel yang tertutup dengan sebuah
garis dan jenis ketiga adalah sel yang tertutup oleh perpotongan 2 buah garis horisontal dan
vertikal. Sel jenis kedua dan ketiga pasti mengandung nol.

Dalam merevisi tabel, sel yang berpengaruh dan nilainya harus direvisi adalah sel jenis pertama
dan ketiga. Revisi dilakukan dengan menambah variabel basis (nol) dari sel jenis pertama dan
kalau perlu mengurangi variabel basis dari sel jenis ketiga.

Algoritma untuk merevisi tabel adalah sebagai berikut

1. Tentukan sel yang tidak tertutup garis dengan bobot terkecil. Misal bobotnya adalah c.

2. Kurangkan setiap sel yang tidak tertutup garis dengan c.

3. Tambahkan setiap sel yang tertutup 2 garis dengan c.

Perhatikan bahwa dalam langkah 2, pasti akan terjadi penambahan sel yang berbobot nol.
Akan tetapi belum tentu ada sel yang tertutup oleh 2 garis yang bernilai nol. Oleh sebab itu
belum tentu ada pengurangan basis dalam langkah 3.

Lakukan langkah pengujian dan revisi berulang-ulang hingga tabel optimal. Alokasi optimal
ditunjukkan dengan elemen 0 pada tabel optimal. Untuk menentukan alokasi optimal, lakukan
langkah-langkah sebagai berikut :

1. Carilah baris/kolom yang hanya memuat sebuah nol. Kemudian ambillah sel tersebut sebagai
alokasi optimalnya.
PENUGASAN 243

2. Hapuslah baris dan kolom yang sesuai dengan sel terpilih tersebut.

3. Ulangi langkah 1-2 untuk elemen 0 lainnya hingga semua baris/kolom dialokasikan.

Untuk memperjelas langkah-langkah metode hungarian, pandang contoh 7.2

Contoh 7.2

Selesaikan masalah pelatih renang dalam contoh 7.1

Penyelesaian

Menentukan penyelesaian fisibel awal

Dari tabel mula-mula, elemen terkecil baris 1, 2, 3 dan 4 masing-masing adalah 57, 58, 55, 57.
Kurangkan semua elemen pada baris –1 dengan 57, semua elemen baris – 2 dengan 58, semua
elemen baris – 3 dengan 55 dan semua elemen baris – 4 dengan 57. Hasilnya tampak pada tabel
7.3 a (P = gaya punggung, D = gaya dada, K = gaya kupu-kupu dan B = gaya bebas).

Gaya Gaya
P D K B P D K B
1 8 16 5 0 1 0 4 0 0
Perenang

Perenang

2 9 12 7 0 2 1 0 2 0

3 13 17 14 0 3 5 5 9 0

4 14 12 18 0 4 6 0 13 0

(a) (b)
Tabel 7.3 a - b

Berikutnya cari elemen terkecil untuk tiap kolom tabel 7.3 a. Didapatkan elemen terkecil kolom
1, 2, 3 dan 4 berturut-turut adalah 8, 12, 5 dan 0. Kurangkan tiap elemen pada kolom – 1 dengan
8, kolom – 2 dengan 12, kolom – 3 dengan 5 dan kolom – 4 dengan 0. Didapatkan tabel 7.3 b.
244 Riset Operasi : Suatu Tinjauan Algoritmis

Pengujian Optimalitas

Setiap baris dan setiap kolom tabel 7.3 b pasti mengandung elemen 0. Tutup semua elemen 0
dalam tabel 7.3 b dengan kombinasi garis horisontal dan vertikal (tidak boleh diagonal) sesedikit
mungkin. Tidak ada algoritma untuk menentukan apakah garis yang sudah kita buat merupakan
garis yang jumlahnya paling sedikit. Akan tetapi penutupan bisa dilakukan dengan membuat
garis (horisontal atau vertikal) yang akan menutup elemen nol sebanyak-banyaknya.

Gaya Gaya
P D K B P D K B

1 0 4 0 0 1 0 5 0 1
Perenang

Perenang
2 1 0 2 0 2 0 0 1 0

3 5 5 9 0 3 4 5 8 0

4 6 0 13 0 4 5 0 12 0

(c) (d)

Tabel 7.3 c -d

Dalam tabel 7.3 b, mula-mula ambil garis vertikal di kolom – 4. Ada 4 buah nol yang belum
tertutup, yaitu x11. x13, x22, dan x42. Diambil garis horisontal pada baris – 1 dan garis vertikal pada
kolom – 2. Tabel 7.3 c menunjukkan penutupan garis yang dilakukan pada tabel 7.3 b. Dengan
ketiga garis ini semua nol sudah tertutup. Karena jumlah garis yang dibutuhkan = 3 < 4, berarti
bahwa tabel belum optimal .

Revisi Tabel

Perhatikan elemen-elemen yang tidak tertutup garis dan elemen-elemen yang tertutup
perpotongan 2 garis. Elemen terkecil yang tidak tertutup garis adalah 1. Kurangkan semua
elemen yang tidak tertutup garis dengan 1 dan sebaliknya, tambahkan semua elemen yang
tertutup 2 garis (sel x12 dan x14) dengan 1. Hasilnya tampak pada tabel 7.3 d.
PENUGASAN 245

Uji optimalitas kembali dilakukan pada tabel 7.3 d. Bagaimanapun juga caranya, pasti
dibutuhkan 4 garis untuk menutup semua nol. Ini berarti tabel 7.3 d sudah optimal.

Untuk menentukan alokasi optimalnya, perhatikan elemen-elemen 0 pada tabel 7.3 d. Pada baris
– 1 ada 2 buah elemen 0 sehingga kita tidak bisa menentukan sel mana yang harus kita pilih.
Elemen 0 yang tunggal pada baris/kolom ada pada baris – 3 (sel x34) dan kolom – 3 (sel x13).
Ambillah kedua sel ini sebagai alokasi optimal. Kemudian hapuskanlah baris-3 dan kolom-4
(karena sel x34 sudah dipilih sehingga semua elemen 0 di baris-3 dan kolom-4 tidak boleh ada
yang dipilih lagi) serta baris –1 dan kolom-3 (karena sel x13 sudah dipilih sehingga semua elemen
0 di baris-1 dan kolom-3 tidak boleh ada yang dipilih lagi). Hasilnya tampak pada tabel 7.3 e
(elemen yang dilingkari adalah alokasi yang dipilih dan baris/kolom yang diarsir adalah
baris/kolom yang sudah tidak boleh dialokasikan lagi).

Gaya Gaya
P D K B P D K B

1 0 5 0 1 1 0 5 0 1
Perenang

Perenang

2 0 0 1 0 2 0 0 1 0

3 4 5 7 0 3 4 5 7 0

4 5 0 11 0 4 5 0 11 0

(e) (f)
Tabel 7.3 e - f

Dari sel yang tidak diarsir di tabel 7.3 e, alokasi 0 yang tunggal terjadi pada baris – 4 (sel x42).
Ambillah x42 sebagai alokasi dan hilangkanlah baris-4 dan kolom-2 (lihat tabel 7.3 f). Satu-
satunya elemen yang tersisa adalah x21 yang diambil sebagai alokasi terakhir. Jadi alokasi
optimalnya adalah : perenang – 1 : gaya kupu-kupu (62 detik), perenang – 2 : gaya punggung
(67 detik), perenang – 3 : gaya bebas (55 detik) dan perenang – 4 : gaya dada (69 detik). Total
waktunya = 62 + 67 + 55 + 69 = 253 detik.
246 Riset Operasi : Suatu Tinjauan Algoritmis

7.3 Kasus-Kasus Khusus

7.3.1 Kasus Tidak Seimbang

Kasus tidak seimbang terjadi jika jumlah pekerja tidak sama dengan jumlah pekerjaan. Sebelum
menggunakan algoritma penugasan, soal harus terlebih dahulu diseimbangkan dengan cara
menambahkan sejumlah pekerja atau pekerjaan semu (mana yang lebih sedikit) hingga menjadi
seimbang. Biaya pada sel semu = 0

Contoh 7.3

Tabel 7.4 menunjukkan biaya yang harus dikeluarkan suatu perusahaan untuk mengalokasikan 4
orang pekerja pada 3 buah pekerjaan berbeda. Masing-masing pekerja bisa melakukan semua
pekerjaan tersebut tapi dengan biaya yang berbeda-beda. Carilah siapa yang harus melakukan
tiap-tiap pekerjaan untuk meminimumkan biaya keseluruhan.
Pekerjaan
Pekerja 1 2 3
1 7 3 5
2 2 2 1
3 6 5 3
4 3 4 7

Tabel 7.4

Penyelesaian

Karena jumlah pekerja lebih banyak dari jumlah pekerjaan, maka tambahkan sebuah pekerjaan
semu (pekerjaan – 4) sehingga soal menjadi seimbang. Biaya pekerjaan – 4 untuk semua pekerja
= 0. Hasilnya tampak pada tabel 7.5 a.

Berikutnya algoritma penugasan dapat diterapkan pada tabel 7.5 a. Elemen terkecil dalam tiap
baris = 0. Maka pengurangan terhadap elemen terkecil tiap baris tidak menghasilkan perubahan
tabel.
PENUGASAN 247

Elemen terkecil pada kolom 1, 2, 3 dan 4 masing-masing adalah 2, 2, 1 dan 0. Kurangkan semua
elemen kolom –1 dengan 2, kolom – 2 dengan 2, kolom – 3 dengan 1 dan kolom – 4 dengan 0.
Didapat tabel 7.5 b.

Pekerjaan Pekerjaan
1 2 3 4* 1 2 3 4*
1 7 3 5 0 1 5 1 4 0
Pekerja

Pekerja
2 2 2 1 0 2 0 0 0 0

3 6 5 3 0 3 4 3 2 0

4 3 4 7 0 4 1 2 6 0

(a) (b)

Pekerjaan Pekerjaan
1 2 3 4* 1 2 3 4*

1 5 1 4 0 1 4 0 3 0
Pekerja

Pekerja

2 0 0 0 0 2 0 0 0 1

3 4 3 2 0 3 3 2 1 0

4 1 2 6 0 4 0 1 5 0

(c) (d)
Tabel 7.5 a - d

Uji optimalitas dilakukan dengan menutup semua nol pada tabel 7.5 b dengan garis horisontal
dan vertikal sesedikit mungkin. Melihat posisi sel nol pada tabel 7.5 b, jelas hanya dibutuhkan 2
garis, yaitu pada kolom – 4 dan baris – 2 (lihat 7.5 c). Tabel harus direvisi. Elemen tidak tertutup
garis yang terkecil pada tabel 7.5 c adalah 1. Kurangkan semua elemen tidak tertutup garis
dengan 1 dan tambahkan semua elemen yang tertutup 2 garis dengan 1. Hasilnya tampak pada
tabel 7.5 d. Semua nol pada tabel 7.5 d hanya dapat ditutup dengan 4 garis sehingga tabel 7.5 d
sudah optimal.
248 Riset Operasi : Suatu Tinjauan Algoritmis

Elemen 0 yang tunggal terdapat pada kolom 3 (x23) dan baris 3 (x34). Maka kedua sel ini dipilih.
Baris-2 dan kolom-3 (karena x23 sudah dipilih) serta baris-3 dan kolom-4 (karena x34 sudah
dipilih) dihilangkan dari proses pemilihan berikutnya (lihat tabel 7.5 e).

Pekerjaan
1 2 3 4*

1 4 0 3 0

Pekerja 0 0 0 1
2

3 3 2 1 0

4 0 1 5 0

Tabel 7.5 e

Dari sisa nol yang belum terarsir jelas bahwa alokasi yang dipilih adalah sel x12 dan x41. Jadi
alokasi optimalnya adalah : pekerja–1 mengerjakan pekerjaan-2 (biaya = 3), pekerja-2
mengerjakan pekerjaan-3 (biaya = 1), pekerja-3 tidak mendapatkan pekerjaan (mengerjakan
pekerjaan semu) dan pekerja-4 mengerjakan pekerjaan-1 (biaya = 3). Total biaya = 3 + 1 + 3 =
7.

7.3.2 Alternatif Penyelesaian

Sama seperti pada masalah transportasi, alternatif penyelesaian dalam masalah penugasan terjadi
jika terdapat lebih dari satu alokasi penugasan yang memiliki total biaya yang sama. Cirinya
dapat dilihat pada tabel optimal yang tidak memiliki elemen nol tunggal pada semua baris/kolom
tersisa. Untuk lebih jelasnya, perhatikan contoh 7.4

Contoh 7.4

Selesaikanlah masalah penugasan dalama tabel 7.6 berikut ini dengan tujuan untuk
meminimumkan biaya.
Pekerjaan
Pekerja 1 2 3 4 5
A 10 10 5 6 7
PENUGASAN 249

B 8 8 2 7 6
C 9 9 3 4 8
D 7 6 4 5 5
E 9 10 3 7 6

Tabel 7.6

Penyelesaian

Masalah penugasan dalam tabel 7.6 sudah seimbang. Hasil pengurangan setiap baris dalam tabel
7.6 dengan sel terkecil dalam baris tersebut tampak dalam tabel 7.7 a. Hasil pengurangan setiap
kolom tabel 7.7 a dengan elemen terkecil dalam kolom tersebut tampak pada tabel 7.7 b.

Penutupan elemen 0 tabel 7.7 b dengan garis tampak pada tabel 7.7 c. Untuk menutup semua nol,
cukup digunakan 3 garis, sehingga tabel 7.7 c belum optimal.

Elemen terkecil yang tidak tertutup garis dalam tabel 7.7 c adalah 1. Hasil revisi tabel 7.7 c
(dengan mengurangi setiap elemen tidak tertutup garis dengan 1 dan menambah setiap elemen
yang tertutup 2 garis dengan 1) tampak pada tabel 7.7 d.

1 2 3 4 5 1 2 3 4 5

A 5 5 0 1 2 A 2 3 0 0 1

B 6 6 0 5 4 B 3 4 0 4 3

C 6 6 0 1 5 C 3 4 0 0 4

D 3 2 0 1 1 D 0 0 0 0 0

E 6 7 0 4 3 E 3 5 0 3 2

(a) (b)
250 Riset Operasi : Suatu Tinjauan Algoritmis

1 2 3 4 5 1 2 3 4 5

A 2 3 0 0 1 A 1 2 0 0 0

B 3 4 0 4 3 B 2 3 0 4 2

C 3 4 0 0 4 C 2 3 0 0 3

D 0 0 0 0 0 D 0 0 1 1 0

E 3 5 0 3 2 E 2 4 0 3 1

(c) (d)

Tabel 7.7 a - d

Tabel 7.7 d juga belum optimal karena jumlah minimal garis penutupnya = 4 (lihat tabel 7.7 e).
Perhatikan disini bahwa garis penutup tabel 7.7 d tidak harus seperti tabel 7.7 e (misal garis pada
baris-1 bisa diganti dengan garis pada kolom-5). Yang penting adalah jumlahnya minimal
(dalam hal ini = 4). Jika garis penutupnya berbeda, maka hasil iterasi juga akan berbeda. Namun
alokasi elemen 0 pada tabel optimalnya akan tetap sama, meskipun angka-angka bukan 0
mungkin berbeda. Hasil revisi tabel 7.5 e tampak pada tabel 7.5 f

1 2 3 4 5 1 2 3 4 5

A 1 2 0 0 0 A 1 2 1 1 0

B 2 3 0 4 2 B 1 2 0 4 1

C 2 3 0 0 3 C 1 2 0 0 2

D 0 0 1 1 0 D 0 0 2 2 0

E 2 4 0 3 1 E 1 3 0 3 0

(e) (f)
PENUGASAN 251

1 2 3 4 5 1 2 3 4 5

A 1 2 1 1 0 A 0 1 1 0 0

B 1 2 0 4 1 B 0 1 0 3 1

C 1 2 0 0 2 C 1 2 1 0 3

D 0 0 2 2 0 D 0 0 3 2 1

E 1 3 0 3 0 E 0 2 0 2 0

(g) (h)

Tabel 7.7 e - h

Hasil pengujian optimalitas tabel 7.7 f tampak pada tabel 7.7 g. Jumlah garis penutupnya masih =
4 sehingga tabel belum optimal. Hasil revisi tabel 7.7 g tampak pada tabel 7.7 h. Bagaimanapun
caranya, untuk menutup semua nol dalam tabel 7.7 h, selalu dibutuhkan 5 buah garis. Maka tabel
7.7 h sudah optimal.

Alokasi pekerja/pekerjaan yang tunggal terjadi pada baris-3 (x34) dan kolom-2 (x42). Setelah
baris-3, 4 dan kolom 2, 4 dihilangkan maka akan didapatkan tabel 7.7 i. Tampak bahwa sudah
tidak ada alokasi elemen 0 yang tunggal lagi karena dalam tiap baris dan kolomnya selalu
terdapat > 1 buah elemen 0. Ini berarti soal memiliki alternatif penyelesaian. Untuk memperoleh
penyelesaian-penyelesaiannya, diambil sembarang elemen 0 yang belum terarsir (untuk
mempermudah, ambillah salah satu 0 dari baris/kolom yang memuat 2 buah nol).

1 2 3 4 5

A 0 1 1 0 0

B 0 1 0 3 1

C 1 2 1 0 3

D 0 0 3 2 1

E 0 2 0 2 0

Tabel 7.7 i
252 Riset Operasi : Suatu Tinjauan Algoritmis

Misalkan diambil elemen 0 yang terletak pada baris – 1. Ada 2 buah nol yaitu pada kolom-1 (x11)
atau pada kolom 5 (x15). Jika diambil x11, maka akan didapat tabel 7.7 j. Jika diambil x15 akan
didapat tabel 7.7 k.

1 2 3 4 5 1 2 3 4 5

A 0 1 1 0 0 A 0 1 1 0 0

B 0 1 0 3 1 B 0 1 0 3 1

C 1 2 1 0 3 C 1 2 1 0 3

D 0 0 3 2 1 D 0 0 3 2 1

E 0 2 0 2 0 E 0 2 0 2 0

(j) (k)
Tabel 7.7 j - k

Karena kedua alternatif itu memungkinkan, maka akan dilacak satu persatu alokasi sisanya.
Perhatikan tabel 7.7 j. Dari alokasi yang tersisa harus diambil x23 dan x55.

Sebaliknya, jika yang diambil x15 (tabel 7.7 k), maka masih ada 2 kemungkinan lagi yaitu x21
dan x53, atau x23 dan x51. Jadi seluruhnya ada 3 alternatif yang mungkin diambil yaitu :

Alternatif –1 : D-2, C-4, A-1, B-3 dan E-5

Alternatif – 2 : D-2, C-4, A-5, B-1 dan E-3

Alternatif – 3 : D-2, C-4, A-5, B-3 dan E-1

Semua alternatif ini dapat digambarkan dalam gambar 7.1. Angka dalam kurung pada gambar
7.1 menunjukkan biaya yang dibutuhkan untuk alokasi yang diambil. Semua alternatif tersebut
memiliki total biaya = 28
A-1 (10) ; B-3 (2) ; E-5
(6)
Alokasi tunggal :
D-2 (6) ; C-4 (4)
B-1 (8) ; E-3 (3)
A-5 (7)
B-3 (2) ; E-1 (9)

Gambar 7.1
PENUGASAN 253

7.3.3 Alokasi Terlarang

Kadang-kadang ada suatu sel tertentu dalam tabel penugasan yang tidak mungkin diisi (dalam
aplikasinya, misalkan ada seorang pekerja yang tidak bisa mengerjakan salah satu pekerjaan).
Untuk membuat agar sel terlarang tidak mungkin terisi, maka biaya pada sel terlarang dibuat
sebesar-besarnya (ingat fungsinya adalah meminimumkan), yaitu dengan M = suatu bilangan
positip besar.

Contoh 7.5

Perhatikan masalah untuk menempatkan 4 operator ke 4 mesin. Biaya penempatan (dalam


ribuan) tampak pada tabel 7.8. Operator-1 tidak dapat ditempatkan ke mesin-3. Demikian juga,
operator-3 tidak dapat ditempatkan ke mesin-4. Carilah penempatan yang optimal !
Mesin
Operator 1 2 3 4
1 5 5 - 2
2 7 4 2 3
3 9 3 5 -
4 7 2 6 7

Tabel 7.8

Penyelesaian

Untuk menjamin bahwa sel x13 dan x34 (penempatan yang tidak mungkin dilakukan) tidak
menjadi alokasi yang diambil, maka pada sel tersebut diisi dengan M = suatu bilangan positip
besar. Tabel awal masalah penugasan tampak pada tabel 7.9 a.
254 Riset Operasi : Suatu Tinjauan Algoritmis

Mesin
1 2 3 4

1 5 5 M 2

Operator
2 7 4 2 3

3 9 3 5 M

4 7 2 6 7

Tabel 7.9 a

Mesin Mesin
1 2 3 4 1 2 3 4

1 3 3 M-2 0 1 0 3 M-2 0
Operator

Operator

2 5 2 0 1 2 2 2 0 1

3 6 0 2 M-3 3 3 0 2 M-3

4 5 0 4 5 4 2 0 4 5

(b) (c)
Tabel 7.9 b – c

Tabel 7.9 b merupakan hasil pengurangan tiap baris tabel 7.9 a dengan elemen terkecilnya. Tabel
7.9 c merupakan pengurangan tabel 7.9 b dengan elemen terkecil tiap kolom, sekaligus garis
penutup pada pengujian optimalitasnya. Tampak bahwa hanya dibutuhkan 3 garis penutup
sehingga tabel belum optimal.

Mesin Mesin
1 2 3 4 1 2 3 4

1 0 5 M-2 0 1 0 5 M-2 0
Operator

Operator

2 2 4 0 1 2 2 4 0 1

3 1 0 0 M-5 3 1 0 0 M-5

4 0 0 2 3 4 0 0 2 3

(d) (e)
Tabel 7.9 d - e
PENUGASAN 255

Hasil revisi tabel 7.9 c tampak pada tabel 7.9 d. Karena untuk menutup semua elemen nolnya
membutuhkan 4 buah garis maka tabel 7.9 d merupakan tabel optimal. Baris/kolom yang
memiliki elemen nol tunggal adalah baris-2 dan kolom-4 (sel x23 dan x14).

Dari sel yang tidak terarsir sisanya, jelas bahwa alokasi yang diambil adalah x32 dan x41. Jadi
alkoasi optimalnya adalah : Operator-1 – mesin-4 (biaya = 2) ; operator-2 – mesin-3 (biaya = 2)
; operator-3 – mesin-2 (biaya = 3) ; operator-4 – mesin-1 (biaya = 7). Total biaya yang
dibutuhkan = 2 + 2 + 3 + 7 = 14 (ribuan). Tampak bahwa dalam setiap tabel, sel x13 dan sel x34
selalu terisi dengan biaya yang merupakan fungsi M sehingga tidak mungkin terpilih pada tabel
optimalnya.

Contoh 7.6

Perhatikan kembali permasalahan pada contoh 7.5. Misalkan ada mesin ke-5 yang tersedia.
Biaya penempatan operator 1, 2, 3, dan 4 pada mesin ke-5 masing-masing adalah 2, 1, 2, dan
8. Mesin yang baru ini dapat menggantikan salah satu mesin yang lama jika dipandang lebih
ekonomis. Rumuskanlah kembali masalah tersebut sebagai masalah penugasan dan carilah
penyelesaian optimalnya. Apakah dipandang lebih ekonomis untuk mengganti salah satu mesin
yang sudah ada ? Jika demikian, mesin manakah yang diganti ?

Penyelesaian

Dengan adanya 5 buah mesin, maka terjadi kekurangan operator sehingga perlu ditambahkan
seorang operator semu. Pada penyelesaian optimalnya, mesin yang dikerjakan oleh operator
semu menunjukkan mesin yang tidak ditempatkan. Jika mesin yang tidak ditempatkan (tidak
memiliki operator) tersebut adalah mesin – 5 (mesin baru), berarti bahwa penempatan mesin
baru tidak lebih ekonomis. Akan tetapi jika mesin yang tidak memiliki operator tersebut adalah
mesin-i (i = 1, 2, 3, 4), maka mesin-i merupakan mesin yang harus digantikan oleh mesin – 5.
256 Riset Operasi : Suatu Tinjauan Algoritmis

Mesin
1 2 3 4 5

1 5 5 M 2 2

2 7 4 2 3 1

Operator
3 9 3 5 M 2

4 7 2 6 7 8

5* 0 0 0 0 0

Tabel 7.10 a

Tabel 7.10 a menunjukkan biaya penempatan yang baru dengan masuknya mesin-5. Biaya
penempatan operator semu ke tiap mesin = 0. Tabel 7.10 b merupakan pengurangan tabel
berdasarkan elemen terkecil baris. Karena semua elemen pada baris-5 = 0, maka pengurangan
dengan elemen terkecil tiap kolom tidak menghasilkan perubahan tabel.

Tabel 7.10 c menunjukkan garis penutup yang dibutuhkan untuk menutup semua nol pada tabel
7.10 b. Tampak hanya dibutuhkan 4 buah garis sehingga tabel perlu direvisi.

Mesin Mesin
1 2 3 4 5 1 2 3 4 5

1 3 3 M-2 0 0 1 3 3 M-2 0 0

2 6 3 1 2 0 2 6 3 1 2 0
Operator

Operator

3 7 1 3 M-2 0 3 7 1 3 M-2 0

4 5 0 4 5 6 4 5 0 4 5 6

5* 0 0 0 0 0 5* 0 0 0 0 0

(b) (c)
Tabel 7.10 b - c

Tabel 7.10 d adalah hasil revisi tabel 7.10 c, yang merupakan tabel optimalnya. Baris/kolom
yang memiliki elemen 0 tunggal adalah baris 3, 4 (sel x34 dan x42) dan kolom 1, 4 (sel x51 dan
x14). Karena hanya tersisa sebuah sel (lihat tabel 7.10 e), maka x23 juga diambil sebagai alokasi
optimalnya.
PENUGASAN 257

Mesin Mesin
1 2 3 4 5 1 2 3 4 5
1 2 3 M-3 0 0 1 2 3 M-3 0 0

2 5 3 0 2 0 2 5 3 0 2 0
Operator

Operator
3 6 1 2 M-2 0 3 6 1 2 M-2 0

4 4 0 3 5 6 4 4 0 3 5 6

5* 0 1 0 1 1 5* 0 1 0 1 1

(d) (e)
Tabel 7.10 d - e

Jadi alokasi optimalnya adalah : operator-1 – mesin-4 (biaya = 2) ; operator-2 – mesin-3 (biaya
= 2) ; operator-3 – mesin-5 (biaya = 2) ; operator-4 – mesin-2 (biaya = 2). Mesin – 1 tidak
dijalankan (karena dialokasikan ke operator semu). Total biaya yang dibutuhkan = 2 + 2 + 2 + 2
= 8 (ribuan). Tampak bahwa dengan mengganti mesin-1 dengan mesin-5 maka biaya turun dari
14 menjadi 8. Caranya adalah dengan mengganti mesin – 1 dengan mesin – 5.

7.3.4 Fungsi Memaksimumkan

Seperti pada masalah transportasi (bab 5), untuk menyelesaikan fungsi yang memaksimumkan
dalam masalah penugasan, soal terlebih dahulu dijadikan fungsi meminimumkan dengan cara
menegatifkan semua biaya. Setelah menjadi masalah meminimumkan, langkah selanjutnya
dilakukan seperti pada contoh-contoh terdahulu.

Contoh 7.7

Sekelompok mahasiswa yang terdiri dari 4 pria dan 4 wanita merencanakan suatu rekreasi
bersama. Tingkat kebahagiaan antara pria ke-i dan wanita ke-j jika mereka berpacaran
dinyatakan dalam tabel 7.11 (data diambil dari sifat-sifat mereka)
258 Riset Operasi : Suatu Tinjauan Algoritmis

Wanita
Pria 1 2 3 4
1 11 1 5 8
2 9 9 8 1
3 10 3 5 10
4 1 13 12 11

Masalah yang dihadapi adalah menentukan pasangan pria dan wanita selama rekreasi agar
memaksimumkan jumlah total kebahagiaan semua pasangan. Nyatakan masalah ini dalam
masalah penugasan dan selesaikanlah.

Penyelesaian

Mula-mula tabel kebahagiaan (yang harus dimaksimumkan) diubah menjadi tabel kesedihan
(yang harus diminimumkan) dengan cara menegatifkan semua isi tabel 7.11. Didapatkan tabel
7.12 a.

Hasil pengurangan tabel 7.12 a dengan elemen terkecil tiap baris tampak pada tabel 7.12 b.
Perhatikan bahwa hasil pengurangan ini selalu menghasilkan tabel dengan semua elemen yang
tidak negatif. Pengurangan tiap kolom tampak pada tabel 7.12 c.

Wanita
1 2 3 4

1 -11 -1 -5 -8

2 -9 -9 -8 -1
Pria

3 -10 -3 -5 -10

4 -1 -13 -12 -11

Tabel 7.12 a

Jumlah garis minimum yang dibutuhkan untuk menutup semua nol pada tabel 7.12 c adalah
sebanyak 4 buah. Ini berarti bahwa tabel 7.12 c sudah optimal.
PENUGASAN 259

Wanita Wanita
1 2 3 4 1 2 3 4

1 0 10 6 3 1 0 10 5 3

2 0 0 1 8 2 0 0 0 8
Pria

Pria
3 0 7 5 0 3 0 7 4 0

4 12 0 1 2 4 12 0 0 2

(b) (c)

Tabel 7.12 b-c

Wanita
1 2 3 4

1 0 10 5 3

2 0 0 0 8
Pria

3 0 7 4 0

4 12 0 0 2

Tabel 7.12 d

Pasangan yang diasosiasikan secara tunggal adalah pria-3 dengan wanita-4 (dengan kebahagiaan
= 10) dan pria-1 dengan wanita-1 (kebahagiaan = 11). Jika baris 1, 3 dan kolom 1, 4 dihilangkan
tampak bahwa ada 2 alternatif penyelesaian (lihat tabel 7.12 d)

Alternatif – 1 : Pria-2 dengan wanita-2 (kebahagiaan = 9) dan pria-4 dengan wanita-3


(kebahagiaan = 12)

Alternatif – 2 : Pria-2 dengan wanita-3 (kebahagiaan = 8) dan pria-4 dengan wanita-2


(kebahagiaan = 13)

Untuk semua alternatif tersebut, total kebahagiaan = 42


260 Riset Operasi : Suatu Tinjauan Algoritmis

7.4 Masalah Penjaja Keliling (Travelling Salesman

Problem)

Masalah penjaja keliling dapat dinyatakan sebagai berikut :

Diberikan beberapa kota dan jalan yang menghubungkan kota-kota tersebut. Seseorang hendak
mengunjungi tiap kota tepat satu kali, dimulai dan diakhiri pada kota yang sama. Masalahnya
adalah menentukan urut-urutan kota yang harus dikunjungi sehingga total jarak (atau waktu)
yang ia tempuh seminimum mungkin.

Masalah penjaja keliling dapat diselesaikan dengan menganggapnya sebagai masalah penugasan
dengan pekerja dan pekerjaan sama-sama menyatakan kota-kota yang hendak dikunjungi. Biaya
tiap pasang kota adalah jarak (atau waktu) yang hendak diminimumkan. Supaya tidak langsung
kembali ke kota yang sama maka biaya cii = M untuk semua i

Misalkan perjalanan dimulai dari kota-1. Jika pasangan kota penyelesaian masalah penugasan
meliputi semua kota sebelum kembali ke kota-1, maka berarti penyelesaian masalah penugasan
adalah penyelesaian masalah penjaja keliling. Akan tetapi jika sebelum mengunjungi semua
kota, ia sudah kembali ke kota-1, maka terjadi subtour. Dalam keadaan ini masalah penugasan
harus dipecah menjadi 2 bagian dengan menggunakan pendekatan branch & bound dengan
memutuskan salah satu jalur subtour. Masing-masing bagian diselesaikan dengan algoritma
hungarian. Untuk lebih jelasnya, perhatikan contoh 7.8 dan 7.9 berikut ini.

Contoh 7.8

Seorang salesman hendak mengunjungi 4 kota berbeda (A, B, C dan D) seperti yang tampak
dalam gambar 7.2 berikut ini. Angka di samping garis menunjukkan waktu tempuh (jam) satu
kota dengan yang lainnya. Tentukan urutan perjalanan yang harus ia lalui agar total waktunya
minimum !
PENUGASAN 261

A
4 B
2 1

2
1

C D
5

Gambar 7.2

Penyelesaian

Masalah penugasan yang sesuai terdiri dari 4 baris dan 4 kolom seperti yang tampak pada tabel
7.13. Biaya menyatakan waktu tempuhnya.

Kota Tujuan
A B C D

A M 4 2 2
Kota Asal

B 4 M 1 1

C 2 1 M 5

D 2 1 5 M

Tabel 7.13

Kota Tujuan Kota Tujuan


A B C D A B C D

A M 2 0 0 A M 2 0 0
Kota Asal

Kota Asal

B 3 M 0 0 B 2 M 0 0

C 1 0 M 4 C 0 0 M 4

D 1 0 4 M D 0 0 4 M

(a) (b)
Tabel 7.14 a – b
262 Riset Operasi : Suatu Tinjauan Algoritmis

Hasil pengurangan baris dan kolom tampak pada tabel 7.14 a dan b. Untuk menyingkat
penulisan, maka pengurangan terhadap sel dengan biaya M tetap ditulis M karena pengurangan
tersebut tidak berpengaruh terhadap pemilihan sel tersebut sebagai alokasi optimal.

Tampak bahwa tabel 7.14 b sudah optimal. Ada 4 alternatif penyelesaian, masing- masing adalah
(angka dalam kurung menyatakan waktu yang dibutuhkan) :

Alternatif – 1 Alternatif – 2 Alternatif – 3 Alternatif – 4


A – C (2) A – C (2) A – D (2) A – D (2)
B – D (1) B – D (1) B – C (1) B – C (1)
C – A (2) C – B (1) C – A (2) C – B (2)
D – B (1) D – A (2) D – B (1) D – A (1)

Total = 6 Total = 6 Total = 6 Total = 6


Subtour : Tour : Tour : Subtour :
A-C ; C-A A-C-B-D-A A-D-B-C-A A-D ; D-A
B-D ; D-B B-C ; C-B

Karena ada alternatif yang merupakan tour murni (mulai dari A, mengunjungi semua kota lain
sebelum kembali ke A lagi) maka penyelesaian masalah penugasan tersebut juga sekaligus
merupakan penyelesaian masalah penjaja keliling.

Ada 2 tour optimal yang bisa dilakukan yaitu pada alternatif – 2 dan alternatif – 3. Perhatikan
bahwa sebenarnya kedua tour tersebut marupakan perjalanan yang bolak balik saja. Ini terjadi
karena graf pada gambar 7.2 bersifat simetris.

Contoh 7.9

Ulangi contoh 7.8 jika salesman tersebut harus mengunjungi 5 kota yang jaraknya (km) tampak
pada gambar 7.3.
PENUGASAN 263

6 13

E B
16 22

20 20 29

D 11 C
30

Gambar 7.3

Penyelesaian

Sub problem - 1

A B C D E A B C D E

A M 13 22 16 6 A M 0 11 10 0

B 13 M 29 20 8 B 0 M 16 12 0

C 22 29 M 11 30 C 6 11 M 0 19

D 16 20 11 M 20 D 5 7 0 M 14

E 6 8 30 20 M E 0 0 24 19 M

(a) (b)
Tabel 7.15 a - b

Tabel 7.15 a adalah tabel masalah penugasan yang sesuai dengan masalah salesman pada gambar
7.3. Setelah pengurangan per baris dan per kolom, ternyata tabel belum optimal dan perlu
direvisi sekali lagi. Revisi dilakukan dengan mengambil garis penutup nol pada kolom 4, 5 serta
baris 4, 5. Tabel 7.15 b merupakan tabel optimalnya.

Ada 2 penyelesaian (keduanya memiliki total jarak 49), yaitu :

C-D (11) ; D-C (11) ; A-B (13) ; E-A (6) ; B-E (8).

C-D (11) ; D-C (11) ; A-E (6) ; B-A (13) ; E-B (8).
264 Riset Operasi : Suatu Tinjauan Algoritmis

Keduanya memiliki 2 buah sub tour yaitu : C-D-C dan A-B-E-A (atau sebaliknya). Berarti
penyelesaian masalah penugasan bukan merupakan penyelesaian masalah salesman tersebut
karena ia harus kembali ke kota awal sebelum mengunjungi semua kota.

Ambil sembarang subtour, misal C-D (atau D-C). Percabangan masalah dilakukan dengan
melarang penggunaan jalur C-D (sub problem – 2) atau melarang penggunaan jalur D-C (sub
problem – 3). Ini bisa dilakukan dengan mengambil cCD = M (atau cDC = M).

Sub problem – 2 = sub problem – 1 + cCD = M

A B C D E A B C D E

A M 13 22 16 6 A M 5 16 0 0

B 13 M 29 20 8 B 5 M 21 2 0

C 22 29 M M 30 C 0 5 M M 8

D 16 20 11 M 20 D 5 7 0 M 9

E 6 8 30 20 M E 0 0 24 4 M

(a) (b)
Tabel 7.16 a - b

Tabel 7.16 a adalah tabel awal sub problem 2. Sel yang diarsir adalah perubahan yang dilakukan
dari tabel 7.15 a, yaitu dengan melarang jalur C-D. Dengan pengurangan baris dan kolom
ternyata tabel sudah optimal. Tabel 7.16 b merupakan tabel optimalnya

Tabel 7.16 b memiliki penyelesaian tunggal yaitu A-D (16) ; B-E (8) ; C-A (22) ; D-C (11)
; E-B (8) dengan total jarak = 65. Tampak bahwa penyelesaian inipun masih mengandung 2
buah sub tour yaitu A-D-C-A dan B-E-B. Jadi percabangan harus dilakukan lagi hingga
didapat penyelesaian yang tidak mengandung sub tour. Misalkan dipilih salah satu tour secara
bebas, yaitu B-E. Percabangan dilakukan dengan melarang jalur B-E (sub problem 4) dan
melarang jalur E-B (sub problem 5)
PENUGASAN 265

Sub problem – 3 = sub problem – 1 + cDC = M

Tabel 7.17 a adalah tabel awal sub problem 3 dan tabel 7.17 b adalah penyelesaian optimalnya.

A B C D E A B C D E

A M 13 22 16 6 A M 5 0 10 0

B 13 M 29 20 8 B 5 M 5 12 0

C 22 29 M 11 30 C 11 16 M 0 19

D 16 20 M M 20 D 0 2 M M 4

E 6 8 30 20 M E 0 0 8 14 M

(a) (b)
Tabel 7.17 a – b

Tabel 7.17 b juga memiliki penyelesaian tunggal yaitu A-C (22) ; B-E (8) ; C-D (11) ; D-A (16)
; E-B (8) dengan jarak total = 65. Penyelesaian ini masih mengandung sub tour yaitu A-C-D-A
dan B-E-B sehingga perlu dilakukan pencabangan. Misalkan percabangan dilakukan pada jalur
B-E dengan cara melarang penggunaan jalur B-E (sub problem 6) atau jalur E-B (sub problem
7).

Sub Problem - 1
Sub Tour :
C-D-C
A-B-E-A
Jarak = 49

CCD = M CDC = M

Sub Problem - 2 Sub Problem - 3


Sub Tour : Sub Tour :
A-D-C-A A-C-D-A
B-E-B B-E-B
Jarak = 65 Jarak = 65

Gambar 7.4

Percabangan masalah semula ke sub problem 2 dan 3 dapat digambarkan dalam gambar 7.4.
Perhatikan bahwa pada setiap cabang yang lebih bawah, total jaraknya akan semakin besar
266 Riset Operasi : Suatu Tinjauan Algoritmis

Sub problem – 4 = sub problem – 2 + cBE = M

Percabangan dari sub problem 2 dilakukan dengan memutuskan jalur B-E (sub problem 4) dan
jalur E-B (sub problem 5).

Tabel 7.18 a menunjukkan tabel penugasan awal dari sub problem 4 dan tabel 7.17 b adalah tabel
optimalnya.

Tampak bahwa pada tabel optimalnya tidak terbentuk sub tour. Yang terjadi adalah tour optimal
A – E – B – D – C – A dengan total jarak 67. Karena merupakan tour pertama yang didapatkan,
maka tour sub problem 4 disimpan sebagai calon penyelesaian optimal. Ada kemungkinan
bahwa pada sub problem lain akan didapatkan tour lain yang memiliki total jarak yang lebih
kecil. Akan tetapi jika sub problem lain tidak memiliki tour atau memiliki tour dengan total jarak
lebih dari 67, maka tour sub problem 4 menjadi penyelesaian masalah salesman.

A B C D E A B C D E

A M 13 22 16 6 A M 5 16 3 0

B 13 M 29 20 M B 0 M 16 0 M

C 22 29 M M 30 C 0 5 M M 8

D 16 20 11 M 20 D 5 7 0 M 9

E 6 8 30 20 M E 0 0 24 7 M

(a) (b)
Tabel 7.18 a – b

Sub problem – 5 = sub problem – 2 + cEB = M

Tabel 7.19 a dan b merupakan tabel awal dan tabel optimal sub problem 5. Seperti juga pada sub
problem 4, sub problem 5 juga menghasilkan tour optimal A – D – C – B – E – A dengan total
jarak 70. Karena total jarak yang dihasilkan lebih besar dari sub problem 4 (= 67), maka tour sub
problem 5 tidak dipakai.
PENUGASAN 267

A B C D E A B C D E

A M 13 22 16 6 A M 0 16 0 0

B 13 M 29 20 8 B 5 M 21 2 0

C 22 29 M M 30 C 0 0 M M 8

D 16 20 11 M 20 D 5 2 0 M 9

E 6 M 30 20 M E 0 M 24 4 M

(a) (b)
Tabel 7.19 a - b

Sub Problem - 1
Sub Tour :
C-D-C
A-B-E-A
Jarak = 49

CCD = M CDC = M

Sub Problem - 2 Sub Problem - 3


Sub Tour : Sub Tour :
A-D-C-A A-C-D-A
B-E-B B-E-B
Jarak = 65 Jarak = 65

CBE = M CEB = M

Sub Problem - 4 Sub Problem - 5


Tour : Tour :
A-E-B-D-C-A A-D-C-B-E-A
Jarak = 67 Jarak = 70
(menjadi calon (diabaikan karena
solusi optimal) jarak > 67)

Gambar 7.5

Gambar 7.5 menunjukkan percabangan yang dilakukan pada sub problem 2. Meskipun tour
calon penyelesaian optimal sudah diperoleh, proses tidak dapat dihentikan dan percabangan tetap
harus dilakukan pada sub problem 3 karena ada kemungkinan cabang dari sub problem 3
memberikan tour dengan total jarak lebih kecil dari 67.
268 Riset Operasi : Suatu Tinjauan Algoritmis

Sub problem – 6 = sub problem – 3 + cBE = M

Sub problem 6 merupakan pencabangan sub problem 3 dengan menutup jalur E – B. Tabel 7.20
a dan b masing-masing merupakan tabel awal dan tabel optimal sub problem –6.

Pada tabel 7.20 b tampak bahwa terdapat tour A – E – B – C – D – A dengan total jarak = 70.
Perhatikan bahwa sebenarnya tour ini merupakan kebalikan tour pada sub problem 5. Karena
total jaraknya > 67, maka tour pada sub problem inipun diabaikan.

A B C D E A B C D E

A M 13 22 16 6 A M 5 0 10 0

B 13 M 29 20 M B 0 M 0 7 M

C 22 29 M 11 30 C 11 16 M 0 19

D 16 20 M M 20 D 0 2 M M 4

E 6 8 30 20 M E 0 0 8 14 M

(a) (b)
Tabel 7.20 a – b

Sub problem – 7 = sub problem – 3 + cEB = M

Sub problem 7 merupakan percabangan sub problem 3 dengan menutup jalur E-B. Tabel 7.21 a
dan b merupakan tabel awal dan tabel optimalnya. Penyelesaian optimal sub problem 7
menghasilkan tour A – C – D – B – E – A dengan total jarak 67. Perhatikan bahwa tour yang
dihasilkan sub problem 7 adalah kebalikan tour yang dihasilkan sub problem 4. Ini terjadi karena
jalur antar 2 kota merupakan jalur yang bolak-balik dengan jarak yang sama. Secara umum, jika
jalur antar kota adalah jalur searah (atau 2 arah tetapi dengan jarak berbeda), maka tour optimal
yang dihasilkanpun juga tidak akan bolak-balik.

Karena sudah tidak ada lagi sub tour yang terjadi pada sub problem 4-7, maka proses
percabangan dihentikan. Tour yang menghasilkan total jarak terpendek diambil sebagai
penyelesaian masalah salesman, yaitu tour A – E – B – D – C – A (atau sebaliknya) dengan
total jarak = 67
PENUGASAN 269

A B C D E A B C D E

A M 13 22 16 6 A M 3 0 10 0

B 13 M 29 20 8 B 5 M 5 12 0

C 22 29 M 11 30 C 11 14 M 0 19

D 16 20 M M 20 D 0 0 M M 4

E 6 M 30 20 M E 0 M 8 14 M

(a) (b)
Tabel 7.21 a – b

Seluruh proses percabangan capat digambarkan dalam gambar 7.6. Calon solusi optimal pada
sub problem 4 akhirnya diambil sebagai penyelesaian optimal karena tidak ada cabang yang
memiliki total jarak < 67.
270 Riset Operasi : Suatu Tinjauan Algoritmis

Sub Problem - 1
Sub Tour :
C-D-C
A-B-E-A
Jarak = 49

CCD = M CDC = M

Sub Problem - 2 Sub Problem - 3


Sub Tour : Sub Tour :
A-D-C-A A-C-D-A
B-E-B B-E-B
Jarak = 65 Jarak = 65

CBE = M CEB = M CBE = M CEB = M

Sub Problem - 4 Sub Problem - 5 Sub Problem - 6 Sub Problem - 7


Tour : Tour : Tour : Tour :
A-E-B-D-C-A A-D-C-B-E-A A-E-B-C-D-A A-C-D-B-E-A
Jarak = 67 Jarak = 70 (kebalikan SP-5) (kebalikan SP-4)
(menjadi calon (diabaikan karena Jarak = 70 Jarak = 67
solusi optimal) jarak > 67) (diabaikan krn >67) (optimal)

Gambar 7.6
PENUGASAN 271

SOAL-SOAL LATIHAN

1. Matriks di bawah ini menunjukkan biaya penempatan suatu pekerjaan ke mesin tertentu.
Mesin
Pekerjaan A B C
1 380 610 330
2 210 380 415
3 260 210 300

a. Selesaikanlah masalah penugasan tersebut agar total biayanya minimum

b. Misalkan angka dalam tabel diatas merupakan keuntungan. Apakah penyelesaian


optimalnya berubah ?

2. Perusahaan garmen Simon Corp mempunyai masalah dalam mengalokasikan pesanan


produksi yang diterimanya untuk bulan depan di beberapa departemennya. Perusahaan
mengetahui besarnya biaya pengadaan setiap produksi yang dipesan di tiap departemen,
seperti yang tampak pada tabel di bawah ini. Selanjutnya perusahaan tersebut harus
menentukan biaya termurah untuk semua produksinya karena tiap departemen hanya mampu
mengerjakan satu pekerjaan saja.
Departemen
Pesanan A B C D E
1 120 150 75 90 100
2 140 80 90 85 170
3 50 40 40 70 110
4 75 65 45 70 90
5 110 90 140 115 100

3. Selesaikanlah masalah penugasan berikut ini dengan tujuan untuk meminimumkan biaya.

a.
-3 2 1
1 3 4
1 2 6
272 Riset Operasi : Suatu Tinjauan Algoritmis

b.
3 8 2 10 3
8 7 2 9 7
6 4 2 7 5
8 4 2 3 5
9 10 6 9 10

c.
3 9 2 3 7
6 1 5 6 6
9 4 7 10 3
2 5 4 2 1
9 6 2 4 6

4. Selesaikanlah masalah penugasan berikut ini dengan algoritma Hungarian. Carilah siapa
yang harus melakukan tiap-tiap pekerjaan untuk meminimumkan biaya keseluruhan. Berapa
efektifitas keseluruhan yang paling minimum ?
Pekerjaan
Pekerja 1 2 3 4
1 - 2 2 5
2 2 - 4 4
3 1 2 - 2
4 2 4 3 -

5. Untuk meningkatkan rasa tertarik dan untuk memberikan lingkungan diskusi ilimiah,
fakultas teknik memutuskan untuk mengadakan seminar tentang 4 topik utama yaitu
Ekologi, Energi, Transportasi dan Bioteknik. Seminar tersebut dilakukan dalam satu minggu
pada siang hari. Akan tetapi pengaturan seminar (satu seminar untuk setiap topik dan satu
seminar dalam sehari) harus dilakukan secara hati-hati sehingga jumlah mahasiswa yang
tidak dapat mengikuti seminar (karena bersamaan dengan jadwal kuliah) sesedikit mungkin.
Setelah diteliti, jumlah mahasiswa yang tidak dapat hadir pada hari tertentu adalah sebagai
berikut :
PENUGASAN 273

Topik Seminar
Hari Ekologi Energi Transportasi Bioteknik
Senin 50 40 60 20
Selasa 40 30 40 30
Rabu 60 20 20 30
Kamis 30 30 10 30
Jumat 10 20 10 30

a. Tunjukkan bahwa masalah untuk menentukan jadwal seminar yang optimal ekuivalen
dengan masalah penugasan.

b. Dengan menggunakan (a), carilah pengaturan jadwal seminar yang paling optimal !

6. Empat buah pekerjaan dalam dilakukan oleh 5 buah mesin berbeda. Waktu pemanasan
(setup) setiap pekerjaan pada berbagai mesin tampak pada tabel berikut ini :
Mesin
Pekerjaan 1 2 3 4 5
1 10 11 4 2 8
2 7 11 10 14 12
3 5 6 9 12 14
4 5 6 9 12 14

Carilah pengaturan pekerjaan pada mesin yang akan meminimumkan total waktu setup.

7. Perhatikan kembali soal latihan #3 b - c. Misalkan matriks yang ada merupakan jarak tempuh
antar 2 kota. Seorang sales hendak berkunjung ke tiap kota masing-masing satu kali.
Tentukan urut-urutan kota yang harus ia kunjungi supaya total perjalanan yang ia lakukan
sependek mungkin. Berapa total jarak yang ia tempuh ?

8. Suatu kelompok pemuda/i yang terdiri dari 6 pria dan 6 wanita menyukai satu sama lain
dan ingin saling berpacaran dengan teman dalam kelompoknya. Tujuannya adalah untuk
memaksimumkan total kebahagiaan. Tiap wanita ke-i menentukan tingkat kesukaannya
terhadap pria ke-j sebagai aij, dan setiap pria menentukan tingkat kesukaannya terhadap
274 Riset Operasi : Suatu Tinjauan Algoritmis

wanita sebagai bij. Besaran cij = aij + bij dipakai sebagai ukuran tingkat kebahagiaan
pasangan pria-i dengan wanita-j jika mereka menikah nantinya. Dengan tabel cij berikut
ini, bagaimana pasangan-pasangan harus dipilih ?
Wanita
Pria 1 2 3 4 5 6
1 5 0 -6 8 7 -4
2 -5 2 -3 0 6 -7
3 3 -4 4 3 -5 2
4 3 4 9 7 -2 3
5 0 -1 -3 2 -1 2
6 4 3 2 -1 0 4
Bab 8

MODEL JARINGAN

Jaringan adalah suatu sistem yang terdiri dari titik dan garis-garis yang menghubungkan titik-titik
tersebut. Dalam dunia nyata, titik bisa dipandang sebagai lokasi (kota, daerah, dll) dan garis
adalah hubungan antara lokasi-lokasi tersebut (misal jaringan listrik, jalan yang menghubungkan
kota, jariangan pipa air, dll).

Pada bab ini dibahas tentang beberapa permasalahan yang dapat dinyatakan dalam model
jaringan, antara lain menentukan pohon rentang minimum, pencarian jarak terdekat, serta
penjadwalan proyek

8.1 Graf Sebagai Representasi Jaringan

Beberapa contoh permasalahan yang dapat dinyatakan dalam model jaringan antara lain :

1. Suatu perusahaan air minum hendak menghubungkan beberapa daerah dengan pipa. Jika
diketahui biaya pengadaan pipa air, bagaimana jaringan pipa air yang harus dibuat agar
semua daerah teraliri air, tetapi total panjang piapa yang digunakan seminimum mungkin ?

2. Suatu barang hendak dikirimkan dari kota A ke kota B. Jika diketahui kota-kota diantara A
dan B beserta jaraknya, kota-kota manakah yang harus dilewati agar jalurnya terpendek ?

3. Suatu proyek melibatkan sejumlah aktivitas yang harus dilakukan dalam urutan tertentu.
Bagaimana manajer proyek menentukan penjadwalan proyek agar proyek dapat diselesaikan
secepat-cepatnya ?

Jaringan dapat direpresentasikan dengan baik melalui graf. Untuk itu sebelum membicarakan
dan menyelesaikan masalah jaringan, terlebih dhulu kita bicarakan tentang graf, mulai dari
definisi-definisi dasar, graf-graf khusus, dan struktur data penyimpanan graf dalam komputer.
276 Riset Operasi : Suatu Tinjauan Algoritmis

8.1.1 Graf

Suatu graf G terdiri dari 2 himpunan yang berhingga, yaitu himpunan titik-titik tidak kosong
(simbol V(G)) dan himpunan garis-garis (simbol E(G)).

Setiap garis berhubungan dengan satu atau dua titik. Titik-titik tersebut dinamakan Titik Ujung.
Garis yang hanya berhubungan dengan satu titik ujung disebut Loop. Dua garis berbeda yang
menghubungkan titik yang sama disebut Garis Paralel.

Dua titik dikatakan berhubungan (adjacent) jika ada garis yang menghubungkan keduanya.
Titik yang tidak mempunyai garis yang berhubungan dengannya disebut Titik Terasing
(Isolating Point)

Graf yang tidak mempunyai titik (sehingga tidak mempunyai garis) disebut Graf Kosong.

Berdasarkan jenis garisnya, graf dapat dibagi menjadi 2 yaitu Graf Berarah (directed graph) dan
Graf Tak Berarah (undirected graph). Dalam graf berarah, semua garisnya memiliki arah yang
menunjukkan titik asal dan tujuan garis yang bersangkutan. Jika semua garisnya tidak memiliki
arah, maka grafnya disebut Graf Tak Berarah. Jika hanya disebutkan graf saja, maka yang
dimaksud adalah graf tak berarah.

Berdasarkan label garisnya, graf dapat dibagi menjadi 2 macam yaitu graf tak berlabel dan graf
berlabel. Dalam graf tak berlabel, garis yang menghubungkan kedua titik (baik dalam graf
berarah maupun tak berarah) tidak menyatakan bobot/kualitas hubungan tersebut. Garis hanyalah
sekedar menunjukkan bahwa kedua titik berhubungan. Sebaliknya, dalam graf berlabel, setiap
garis diasosiasikan dengan suatu bilangan riil yang menunjukkan bobot hubungan antara kedua
titik. Dalam dunia nyata, bobot garis menyatakan jarak, waktu, biaya, dll

Graf akan lebih mudah terbaca jika dinyatakan dengan gambarnya. Gambar suatu graf G terdiri
dari himpunan titik-titik V(G), himpunan garis-garis E(G) yang menghubungkan titik-titik
tersebut (beserta arah garis pada graf berarah), dan label pada garisnya (jika ada). Perhatikan
bahwa panjang, kelengkungan, ketebalan, bentuk garis serta letak titik tidak berpengaruh dalam
suatu graf. Yang dipentingkan adalah titik-titik mana yang berhubungan.
MODEL JARINGAN 277

Contoh 8.1

Ada 7 kota (A, ... , G) yang beberapa diantaranya dapat dihubungkan secara langsung dengan
jalan darat. Hubungan-hubungan langsung yang dapat dilakukan adalah sebagai berikut :

A dengan B dan D

B dengan D

C dengan B

E dengan F.

Buatlah graf yang menunjukkan keadaan transportasi di 7 kota tersebut.

Penyelesaian

Misalkan kota-kota dianggap sebagai titik-titik. Dua titik/kota dihubungkan dengan garis bila dan
hanya bila ada jalan yang menghubungkan langsung kedua kota tersebut. Maka keadaan
transportasi di 7 kota dapat dinyatakan dalam gambar 8.1

Dalam graf tersebut e1 berhubungan dengan titik A dan B (keduanya disebut titik ujung e1).
Titik A dan B dikatakan berhubungan, sedangkan titik A dan C tidak berhubungan karena
tidak ada garis yang menghubungkannya secara langsung.

Titik G adalah titik terasing karena tidak ada garis yang berhubungan dengan G. Dalam
interpretasinya, kota G merupakan kota yang terasing karena tidak dapat dikunjungi dari kota-
kota lain dengan jalan darat.

B
E
e1
e4
A e5 G
e3 C
e2
F
D

Gambar 8.1
278 Riset Operasi : Suatu Tinjauan Algoritmis

Contoh 8.2

Ada 4 macam golongan darah, masing–masing A, B, AB dan O. Darah gol O dapat diberikan
kesemua golongan. Darah golongan A dan B dapat diberikan ke golongannya sendiri atau ke
golongan O. Darah golongan AB hanya dapat diberikan pada pasien dengan golongan AB.
Gambarlah graf untuk menyatakan keadaan tersebut.

Penyelesaian

AB

A B

Gambar 8.2
Graf untuk menyatakan transfusi darah merupakan graf berarah karena transfusi hanya dapat
dilakukan searah. Titik dalam graf menyatakan golongan darah. garis dari titik vi ke vj
menunjukkan transfusi dari golongan darah vi ke golongan darah vj. Gambar 8.2 menyatakan
keadaan tranfusi darah yang mungkin dilakukan.

Contoh 8.3

Dalam suatu propinsi, ada 8 kota (v1, v2, ..., v8) yang akan dihubungkan dengan jaringan listrik.
Biaya pemasangan jaringan listrik yang mungkin dibuat antar 2 kota adalah sebagai berikut :
MODEL JARINGAN 279

Garis Kota yang dihubungkan Biaya per satuan


e4 v2 – v3 3
e7 v4 – v6 4
e2 v1 – v7 5
e8 v3 – v4 5
e9 v3 – v5 5
e1 v1 – v2 15
e3 v1 – v4 15
e10 v6 – v8 15
e5 v7 – v8 15
e11 v5 – v6 15
e6 v6 – v7 18

Nyatakan masalah tersebut dalam suatu graf

Penyelesaian

Dalam graf, kota dinyatakan dengan titik dan garis antar 2 titik menyatakan bahwa antara kedua
kota dapat dihubungkan dengan jaringan listrik secara langsung. Mengingat terdapat biaya
pemasangan antar 2 kota, maka graf yang paling tepat digunakan adalah graf berlabel. Label
suatu titik menyatakan biaya pemasangan tersebut.

Gambar 8.3 menyatakan graf yang sesuai dengan permasalahan. Angka dalam kurung di setiap
garis menyatakan bobot/biaya pemasangan listrik antar 2 kota.

e1 (15)
v1 v2
e2 (5) e3 (15) e4 (3)
e8 (5)
v7 v4 v3
e6 (18)
e5 (15) e7 (4) e9 (5)

v8 v5
e10 (15) v6 e11 (15)

Gambar 8.3

Graf Sederhana (Simple Graph) adalah graf yang tidak mempunyai loop ataupun garis paralel.
280 Riset Operasi : Suatu Tinjauan Algoritmis

Graf Lengkap (Complete Graph) dengan n titik (simbol Kn) adalah graf sederhana dengan
n titik, dimana setiap 2 titik berbeda dihubungkan dengan suatu garis. Banyaknya garis dalam
n ( n 1)
suatu graf lengkap dengan n titik adalah buah
2

Contoh 8.4

Gambarlah K2, K3, K4, K5, dan K6 !

Penyelesaian

K2 K3 K4 K5 K6

Gambar 8.4

8.1.2 Subgraf

Konsep subgraf sama dengan konsep himpunan bagian. Dalam teori himpunan, himpunan A
dikatakan merupakan himpunan bagian B bila dan hanya bila setiap anggota A merupakan
anggota B. Karena graf merupakan himpunan yang terdiri dari titik dan garis maka H dikatakan
subgraf G jika semua titik dan garis H juga merupakan titik dan garis dalam G.

Misalkan G adalah suatu graf. Graf H dikatakan subgraf G bila dan hanya bila :

a. V (H) V (G)

b. E (H) E (G)

c. Setiap garis dalam H mempunyai titik ujung yang sama dengan garis tersebut dalam G.

Contoh 8.5
MODEL JARINGAN 281

Dalam gambar 8.5 (a) – (b), apakah H merupakan subgraf G ?

a. e4
e4
v2 v2

e1 e2

v1 v3 v3
e3

G H

v2
v1 v2
b. v1 e4
e2 e2
e1 e1
e3 e3
e4
v3 v3
G H
Gambar 8.5

Penyelesaian

a. V (H) = { v2, v3 } dan V (G) = { v1, v2, v3 }, sehingga V (H) V (G).

E(H) = { e4 } dan E(G) = { e1, e2, e3, e4 } sehingga E(H) E(G). Garis e4 di H merupakan
loop pada v2 dan garis e4 juga merupakan loop pada v2 di G. Maka H merupakan subgraf G.

b. H bukan merupakan subgraf G karena meskipun V(H) = V(G) = { v1, v2, v3 } dan E(H) =
E(G) = { e1, e2, e3, e4 }, tetapi garis e4 dalam H tidak menghubungkan titik yang sama dengan
garis e4 dalam G. Dalam H, garis e4 merupakan loop di v3, sedangkan dalam G, garis e4
merupakan loop dalam v2.

8.1.3 Derajat

Misalkan v adalah titik dalam suatu graf G. Derajat titik v (simbol d(v)) adalah jumlah garis
yang berhubungan dengan titik v dan garis suatu loop dihitung dua kali. Derajat total G adalah
jumlah derajat semua titik dalam G.
282 Riset Operasi : Suatu Tinjauan Algoritmis

Perhatikan bahwa derajat total G adalah 2 kali jumlah garisnya. Ini berarti bahwa derajat total
suatu graf selalu genap. Akibatnya jumlah titik yang berderajat ganjil selalu genap.

Contoh 8.6

Tentukan derajat tiap-tiap titik dalam graf pada gambar 8.6. Berapa derajat totalnya ?

e1
e4 v5
v1
v3

e2 e3
v6
v4
e5
v2

Gambar 8.6

Penyelesaian

d(v1) = 4 karena garis yang berhubungan dengan v1 adalah e2, e3 dan loop e1 yang dihitung dua
kali

d(v2) = 2 karena garis yang berhubungan dengan v2 adalah e2 dan e3.

d(v3) = d(v5) = 1 karena garis yang berhubungan dengan v3 dan v5 adalah e4

d(v4) = 2 karena garis yang berhubungan dengan v4 adalah loop e5 yang dihitung 2 kali.

d(v6) = 0 karena tidak ada garis yang berhubungan dengan v6.


6
Derajat total = d ( vi ) = 4 + 2 + 1 + 2 + 1 + 0 = 10.
i 1

8.1.4 Sirkuit Euler dan Sirkuit Hamilton

Misalkan G adalah suatu graf. Misalkan pula v dan w adalah 2 titik dalam G
MODEL JARINGAN 283

Suatu Walk dari v ke w adalah barisan titik-titik berhubungan dan garis secara berselang-seling,
diawali dari titik v dan diakhiri pada titik w.

Walk dengan panjang n dari v ke w dituliskan sebagai berikut : v0 e1 v1 e2 v2 … vn-1 en vn dengan


v0= v ; vn= w ; vi-1 dan vi adalah titik-titik ujung garis ei.

Path dengan panjang n dari v ke w adalah walk dari v ke w yang semua garisnya berbeda. Path
dari v ke w dituliskan sebagai v = v0 e1 v1 e2 v2 … vn-1 en vn = w dengan ei ej untuk i j.

Path sederhana dengan panjang n dari v ke w adalah Path dari v ke w yang semua titiknya
berbeda. Path sederhana dari v ke w berbentuk v = v0 e1 v1 e2 v2 … vn-1 en vn = w dengan ei
ej untuk i j dan vk vm untuk k m.

Sirkuit dengan panjang n adalah Path yang dimulai dan diakhiri pada titik yang sama. Sirkuit
adalah path yang berbentuk v0 e1 v1 e2 v2 … vn-1 en vn dengan v0 = vn.

Sirkuit sederhana dengan panjang n adalah Sirkuit yang semua titiknya berbeda. Sirkuit
sederhana berbentuk v0 e1 v1 e2 v2 … vn-1 en vn dengan ei ej untuk i j dan vk vm untuk k
m kecuali v0 = vn.

Relasi antara walk, path dan sirkuit dapat digambarkan dalam gambar 8.7
Walk v  w
v = v0 e1 v1 e2 v2 ... vn-1 en vn = w
vi-1 dan vi adalah titik-titik ujung garis ei

semua garis berbeda

Path v  w

semua titik titik awal dan akhir


berbeda sama (v0 = vn)

Path sederhana v  w Sirkuit

titik awal dan akhir semua titik berbeda


sama (v0 = vn) kecuali v0 = vn

Sirkuit Sederhana

Gambar 8.7
284 Riset Operasi : Suatu Tinjauan Algoritmis

Contoh 8.7

Tentukan mana diantara barisan titik dan garis pada gambar 8.8 yang merupakan walk, path, path
sederhana, sirkuit dan sirkuit sederhana.

a. v1 e1 v2 e3 v3 e4 v3 e5 v4

b. v1 e1 v2 e3 v3 e5 v4 e5 v3 e6 v5

c. v2 e3 v3 e5 v4 e10 v5 e6 v3 e7 v6 e8 v2

d. v2 e3 v3 e5 v4 e10 v5 e9 v6 e8 v2

e. v1

e4
e5
v3 v4

e2 e3
e6
v1 e7 e10
v2
e1
e8
e9
v6 v5

Gambar 8.8
Penyelesaian

a. Semua garis berbeda (e1, e3, e4 dan e5 masing-masing muncul sekali). Ada titik yang
berulang (v3 muncul 2 kali). Titik awal dan titik akhir tidak sama (titik awal = v1 dan titik
akhir v4). Disimpulkan bahwa barisan tersebut merupakan Path dari v1 ke v4 dengan panjang
4.

b. Ada garis yang muncul lebih dari sekali, yaitu e5 (muncul 2 kali) berarti barisan tersebut
merupakan walk dari v1 ke v5 dengan panjang 5.

c. Semua garisnya berbeda. Ada titik berulang (v3 muncul 2 kali). Titik awal dan akhirnya
sama, yaitu v2. Berarti barisan tersebut merupakan sirkuit dengan panjang 6. Barisan
tersebut bukan merupakan sirkuit sederhana karena ada 2 titik ditengah yang muncul lebih
dari 1 kali, yaitu v3

d. Semua garis dan titiknya berbeda. Barisan diawali dan diakhiri pada titik yang sama yaitu v3.
Disimpulkan bahwa barisan tersebut merupakan sirkuit sederhana dengan panjang 5.
MODEL JARINGAN 285

e. Karena barisan hanya memuat satu titik saja, berarti tidak ada garis yang sama. Barisan
diawali dan diakhiri pada titik yang sama serta tidak mempunyai titik yang sama diantaranya.
Maka disimpulkan bahwa barisan merupakan sirkuit sederhana (seringkali disebut sirkuit
trivial).

Misalkan G adalah suatu graf.

Dua titik v dan w dalam graf G dikatakan terhubung bila dan hanya bila ada walk dari v ke w

Graf G dikatakan terhubung bila dan hanya bila setiap 2 titik dalam G terhubung. Graf G
dikatakan tidak terhubung bila dan hanya bila ada 2 titik dalam G yang tidak terhubung.

Sirkuit Euler G adalah sirkuit dimana setiap titik dalam G muncul paling sedikit sekali dan setiap
garis dalam G muncul tepat satu kali.

Suatu graf terhubung G disebut Sirkuit Hamilton bila ada sirkuit yang mengunjungi setiap
titiknya tepat satu kali (kecuali titik awal yang sama dengan titik akhirnya)

Perhatikan perbedaan sirkuit Euler dan sirkuit Hamilton. Dalam sirkuit Euler, semua garis harus
dilalui tepat satu kali, sedangkan semua titiknya boleh dikunjungi lebih dari satu kali. Sebaliknya,
dalam sirkuit Hamilton semua titik harus dikunjungi tepat satu kali dan tidak harus melalui
semua garisnya. Dalam sirkuit Euler, yang dipentingkan adalah garisnya. Sebaliknya dalam
sirkuit Hamilton, yang dipentingkan adalah kunjungan pada titiknya.

Sirkuit Euler dapat dideteksi dengan mudah. Graf G adalah sirkuit Euler bila dan hanya bila
setiap titiknya memiliki derajat genap. Sebaliknya, tidak ada implikasi 2 arah yang menjelaskan
syarat tentang adanya sirkuit Hamilton.

Penerapan sirkuit Hamilton yang sering dijumpai adalah masalah penjaja keliling (travelling
salesperson problem). Diketahui beberapa kota beserta dengan jalan dan jarak antar kota.
Seseorang hendak berkeliling mengunjungi setiap kota tepat satu kali, dimulai dan diakhiri dari
kota yang sama. Masalahnya adalah jalur mana yang harus ia lalui agar total jarak perjalanannya
seminimum mungkin.
286 Riset Operasi : Suatu Tinjauan Algoritmis

Pengertian walk, path, sirkuit dalam graf berarah sama dengan walk, path dan sirkuit dalam graf
tak berarah. Hanya saja dalam graf berarah, perjalanan yang dilakukan harus mengikuti arah
garis. Untuk membedakan dengan graf tak berarah, maka walk, path dan sirkuit dalam graf
berarah disebut walk berarah, path berarah dan sirkuit berarah.

Suatu graf berarah yang tidak memuat sirkuit berarah disebut Graf Berarah tanpa Sirkuit
(Directed Acyclic Graph = DAG), atau kadang-kadang disebut Asklik saja.

8.1.5 Representasi Graf Dalam Matriks

Matriks/array merupakan struktur data yang mudah dan tepat untuk menyatakan suatu graf. Hal
ini sangat membantu untuk membuat program komputer yang berhubungan dengan graf.
Dengan menyatakan graf sebagai suatu matriks, maka perhitungan–perhitungan yang diperlukan
dapat dilakukan dengan mudah. Matriks yang umum dipakai untuk merepresentasikan graf
adalah matriks hubung (adjacency matrix)

Misalkan G adalah graf tak berarah dengan titik–titik v1 v2 ... vn (n berhingga). Matriks hubung
yang sesuai dengan graf G adalah matriks Anxn = (aij) dengan aij = jumlah garis yang
menghubungkan titik vi dengn titik vj ; i, j = 1, 2, ... , n.

Perhatikan bahwa matriks hubung selalu merupakan matriks bujur sangkar karena jumlah baris =
jumlah kolom = jumlah titik dalam G. Apabila grafnya tak berarah maka jelas bahwa matriks
hubung selalu merupakan matriks yang simetris (aij = aji i, j).

Apabila grafnya merupakan graf sederhana berlabel, maka elemen matriks hubung menyatakan
bobot garis, bukan jumlah garis.

Contoh 8.8

Nyatakan graf dalam contoh 8.1 – 8.3 dalam matriks hubung

Penyelesaian
MODEL JARINGAN 287

A B C D E F G
A 0 1 0 1 0 0 0
B 1 0 1 1 0 0 0
C 0 1 0 0 0 0 0
A1 =
D 1 1 0 0 0 0 0
E 0 0 0 0 0 1 0
F 0 0 0 0 1 0 0
G 0 0 0 0 0 0 0
O A B AB
O 1 1 1 1
A2 = A 0 1 0 1
B 0 0 1 1
AB 0 0 0 1
v1 v2 v3 v4 v5 v6 v7 v8
v1 0 15 15 5
v2 15 0 3
v3 3 0 5 5
A3 = v4 15 5 0 4
v5 5 0 15
v6 4 15 0 18 15
v7 5 18 0 15
v8 15 15 0

Perhatikan bahwa matriks hubung dalam contoh 8.1 merupakan matriks yang simetris karena
grafnya tak berarah. Akan tetapi matriks contoh 8.2 bukanlah matriks yang simetris.

8.1.6 Pohon

Misalkan G adalah suatu graf sederhana (tidak memiliki garis paralel dan loop).

G disebut Pohon bila dan hanya bila G tidak memuat sirkuit dan terhubung. Pohon semu (Trivial
Tree) adalah Pohon yang hanya terdiri dari sebuah titik. Pohon Kosong (Empty Tree) adalah
Pohon yang tidak mempunyai titik.
288 Riset Operasi : Suatu Tinjauan Algoritmis

G disebut Hutan (Forest) bila dan hanya bila G tidak memuat sirkuit

Contoh 8.9

Tentukan mana diantara graf pada gambar 8.9 yang merupakan Pohon atau Hutan

v1 v5

v2
v2 v4 v6
v3

v1

v4 v5 v6 v7 v8
v7 v8
v3

(a) (b)

v1 v7 v2 v4 v5 v6
v3 v1
v4 v8
v7 v8
v2 v5 v3
v9
v6

(c) (d)
Gambar 8.9
Penyelesaian

a. Merupakan pohon karena terhubung dan tidak memuat loop

b. Merupakan pohon karena terhubung dan tidak memuat loop.

Perhatikan bahwa sebenarnya graf pada gambar 8.9 (a) sama dengan graf pada gambar 8.9
(b), meskipun tampaknya berbeda. Suatu Pohon tidak harus mempunyai bentuk graf yang
menyerupai tanaman (ada akar dan cabang–cabang)

c. Bukan merupakan pohon karena walk v3 v4 v5 v3 merupakan suatu sirkuit.


MODEL JARINGAN 289

d. Merupakan suatu hutan karena tidak memuat sirkuit dan tidak terhubung. Hutan tersebut
terdiri dari 2 komponen yang masing-masing merupakan suatu pohon.

Pohon berakar (Rooted Tree) adalah suatu pohon dimana ada satu titik yang dikhususkan dari
yang lain. Titik tersebut disebut Akar (Root).

Tingkat (Level) suatu titik adalah banyaknya garis antara titik tersebut dengan akar. Tinggi
(height) pohon adalah tingkat maksimum yang dimiliki oleh titik-titik pohon.

Anak (Children) dari titik v adalah semua titik yang berhubungan langsung dengan v, tapi
mempunyai tingkat yang lebih tinggi dari v. Jika w adalah anak dari v, maka v disebut orang tua
(parent) dari w. Dua titik yang mempunyai orang tua yang sama disebut saudara (Sibling).

Pohon Biner (Binary Tree) adalah pohon berakar yang setiap titiknya mempunyai paling banyak
2 anak, yang disebut Anak Kiri (Left Child) dan Anak Kanan (Right Child).

Pohon Biner Penuh (Full Binary Tree) adalah Pohon Biner yang setiap titiknya mempunyai tepat
2 anak.

Pohon Rentang suatu graf terhubung G adalah subgraf G yang merupakan pohon dan memuat
semua titik dalam G. Setiap graf terhubung pasti memiliki paling sedikit sebuah pohon rentang.

Contoh 8.10

Carilah semua pohon rentang yang mungkin dibuat dari graf G yang tampak pada gambar 8.10

v1 v2 v3

v4 v5 v6

Gambar 8.10
Penyelesaian
290 Riset Operasi : Suatu Tinjauan Algoritmis

Graf G mempunyai satu sirkuit yaitu v1 v2 v5 v4. Untuk membuat pohon rentang, salah atu garis
dalam sirkuit ini harus dihilangkan agar merupakan pohon.

Karena satu-satunya sirkuit adalah v1 v2 v5 v4 yang memuat 4 garis, sedangkan untuk menjadikan
pohon cukup dihilangkan satu garis, maka ada 4 pohon rentang yang mungkin dibuat. Keempat
pohon rentang tersebut tampak pada gambar 8.11 (a) – (d)

v1 v2 v3 v1 v2 v3 v1 v2 v3 v1 v2 v3

v4 v5 v6 v4 v5 v6 v4 v5 v6 v4 v5 v6

(a) (b) (c) (d)

Gambar 8.11

8.2 Pohon Rentang Minimum

Misalkan G adalah graf berlabel. Pohon rentang minimum adalah pohon rentang G dengan total
bobot seminimum mungkin.

Dalam contoh 8.3, jika semua jaringan listrik dibuat (sehingga jaringannya seperti pada gambar
8.3), maka akan memboroskan biaya. Beberapa jalur yang menghubungkan 2 kota secara
langsung tidak perlu dibuat karena kota-kota tersebut tetap dapat teraliri listrik secara tidak
langsung, tetapi dengan melalui kota lain. Sebagai contoh, jalur yang menghubungkan v6 dan v7
secara langsung (garis e6) dapat dihapus. Dengan penghapusan jalur tersebut, v6 dan v7 tetap
terhubung melalui v8. Masalahnya adalah mencari jalur yang menghubungkan semua kota
(dengan menghapus beberapa garis dalam graf) sedemikian hingga total biaya pemasangan
jaringan listrik seminimum mungkin. Atau dengan kata lain, mencari pohon rentang dengan total
bobot seminimum mungkin.

Cara yang paling sederhana adalah dengan mendaftarkan semua pohon rentang yang mungkin
dibuat dan menghitung total bobot tiap-tiap pohon rentang. Selanjutnya dipilih pohon rentang
MODEL JARINGAN 291

dengan total bobot yang paling kecil. Metode ini tidak efisien, terutama pada graf yang cukup
besar karena terdapat banyak sekali pohon rentang yang dapat dibuat.

Ada beberapa algoritma untuk mencari pohon rentang minimum, yaitu algoritma Kruskall dan
algoritma Prim. Keduanya merupakan algoritma greedy, karena pada tiap langkahnya selalu
mencari garis yang memiliki bobot terkecil yang dapat dipilih.

8.2.1 Algoritma Kruskall

Untuk mencari pohon rentang minimum dari graf G dengan algoritma yang ditemukan Kruskal,
mula-mula semua garis dalam G diurutkan berdasarkan bobotnya dari kecil ke besar. Kemudian
pilih garis dengan bobot terkecil. Pada setiap langkah, dipilih garis dengan bobot terkecil, tetapi
tidak membentuk loop dengan garis-garis yang sudah dipilih terdahulu.

Misalkan G adalah graf mula-mula dengan n titik, T adalah Pohon Rentang Minimum. E adalah
himpunan semua garis G

Algoritma pembuatan pohon rentang minimum dengan algoritma Kruskal adalah sebagai
berikut

1. Isi T dengan semua titik-titik G tanpa garis.

2. m = 0

3. Selama m < (n-1) lakukan :

a. Tentukan garis e E dengan bobot minimum. Jika ada beberapa e dengan sifat tersebut,
pilih salah satu secara senbarang

b. Hapus e dari E

c. Jika e ditambahkan ke T tidak menghasilkan sirkuit, maka

i. tambahkan e ke T

ii. m = m + 1
292 Riset Operasi : Suatu Tinjauan Algoritmis

Contoh 8.11

Carilah pohon rentang minimum contoh 8.3 dengan menggunakan algoritma Kruskal. Berapa
bobot minimum totalnya?

Penyelesaian

G mula-mula tampak pada gambar 8.3 dan himpunan semua garis dalam G (= E) dalam keadaan
urut (kecil ke besar) tampak pada tabel penyelesaian contoh 8.3

v1 v2

e4 (3)
v7 v4 v3

v8 v5
v6

Gambar 8.12 (a)


Mula-mula T adalah graf yang berisi semua titik dalam G tanpa garis. Ambil garis dalam E
dengan bobot minimum. Diperoleh garis e4 dengan bobot = 3. Pohon rentang T yang mula-mula
tanpa garis menjadi graf seperti gambar 8.12 (a)

Dalam iterasi selanjutnya ditambahkan garis satu persatu pada T selama penambahan garis
tersebut tidak membentuk loop dengan garis yang sudah ada sebelumnya. Tambahkan garis e7
(bobot 4).

Selanjutnya ada 3 garis dengan bobot terkecil, yaitu e2, e8, dan e9 yang semuanya mempunyai
bobot = 5. Pilih sembarang garis, misalnya berturut-turut e2, e8, dan e9. Karena penambahan
ketiga garis tersebut tidak menghasilkan loop, maka ketiganya ditambahkan dalam graf T.
Didapat graf pada gambar 8.12 (b).
MODEL JARINGAN 293

v1 v2
e2 (5)
e4 (3)
e8 (5)
v7 v4 v3

e7 (4) e9 (5)

v8 v5
v6

Gambar 8.12 (b)


Selanjutnya, ada 5 garis yang mempunyai bobot sama yaitu 15. Pilih salah satu sembarang,
misalnya e1. Dengan penambahan garis e1 maka T menjadi graf seperti pada gambar 8.12 (c).

e1 (15)
v1 v2
e2 (5)
e4 (3)
e8 (5)
v7 v4 v3

e7 (4) e9 (5)

v8 v5
v6

Gambar 8.12 (c)


Dari 4 garis yang mempunyai bobot 15 sisanya, misalkan dipilih garis e3. Jika garis e3
ditambahkan pada T, maka akan terbentuk loop v1 v2 v3 v4 v1. Maka garis e3 tidak boleh dipilih.
Selanjutnya, dari 3 garis yang mempunyai bobot terkecil (= 15) lainnya, misalkan dipilih garis
e10. Dengan graf penembahan garis e10, maka T menjadi graf seperti pada gambar 8.12 (d).

e1 (15)
v1 v2
e2 (5)
e4 (3)
e8 (5)
v7 v4 v3

e7 (4) e9 (5)

v8 v5
e10 (15) v6

Gambar 8.12 (d)


Karena graf G terdiri dari 8 titik dan 7 garis, maka iterasi dihentikan dan T yang tampak pada
gambar 8.12 (d) adalah pohon rentang minimumnya.

Bobot total = 3 + 4 + 5 + 5 + 5 + 15 + 15 = 52.


294 Riset Operasi : Suatu Tinjauan Algoritmis

Perhatikan bahwa mungkin ada beberapa pohon rentang minimum berbeda untuk suatu graf
tertentu. Akan tetapi semua pohon rentang minimum mempunyai total bobot yang sama. Seperti
misalnya pada contoh 8.11, jika pada langkah terakhir ditambahkan garis e5 (bukan e10 seperti
pada penyelesaian contoh 8.11) maka didapat pohon rentang minimum yang berbeda, tetapi
dengan bobot total yang sama, yaitu 52.

8.2.2 Algoritma Prim

Metode lain untuk mencari pohon rentang minimum ditemukan oleh Robert C.Prim. Berbeda
dengan algoritma Kruskal yang dimulai dengan graf tanpa garis, algoritma Prim dimulai dari graf
yang kosong sama sekali. Untuk mencari pohon rentang minimum T dari graf G dengan
algoritma Prim, mula-mula dipilih satu titik sembarang (misal v1). Kemudian ditambahkan satu
garis yang berhubungan dengan v1 dengan bobot yang paling minimum (misal e1) dan titik ujung
lainnya ke T sehingga T terdiri dari sebuah garis e1 dan 2 buah titik-titik ujung garis e1 (salah
satunya adalah v1). Pada setiap langkah selanjutnya, dipilih sebuah garis dalam E(G) yang bukan
angggota E(T) dengan sifat :

Garis tersebut berhubungan dengan salah satu titik V(T).

Garis tersebut mempunyai bobot yang paling kecil

Langkah tersebut diulang-ulang hingga diperoleh (n-1) garis dalam E(T) (n adalah jumlah titik
dalam G).

Misalkan G adalah graf berlabel dengan n titik dan T adalah Pohon Rentang Minimum yang
akan dibentuk (mula-mula kosong). Algoritma Prim adalah sebagai berikut :

0. Inisialisasi : Mula-mula T adalah graf kosong.

1. Ambil sembarang v V(G). Masukkan v kedalam V(T).

2. V(G) = V(G) – {v}.

3. Untuk i = 1, 2, ... , n-1, lakukan :

a. Pilihlah garis e E(G) dan e E (T) dengan syarat :


MODEL JARINGAN 295

i. e berhubungan dengan satu titik dalam T

ii. e mempunyai bobot terkecil dibandingkan dengan semua garis yang berhubungan
dengan titik–titik dalam T

Misalkan w adalah titik ujung e yang tidak berada dalam T

b. Tambahkan e ke E(T) dan w ke V(T)

c. V(G) = V(G) – {w}

Algoritma Prim mungkin menghasilkan pohon rentang yang berbeda dengan pohon rentang
yang dihasilkan melalui algoritma Kruskal. Tetapi pohon rentang yang dihasilkan oleh kedua
algoritma tersebut merupakan pohon rentang minimum yang mempunyai jumlah bobot yang
sama.

Contoh 8.12

Gunakan algoritma Prim untuk mencari pohon rentang minimum contoh 8.3, dimulai dari titik
v1.

Penyelesaian

Misalkan G adalah graf mula-mula seperti yang tampak pada gambar 8.13, dan T adalah pohon
rentang minimum yang akan dibuat. Mula-mula V(T) = {v1} dan E(T) = { }.

Pada iterasi pertama, pilih garis ei E(G) dan ei E(T) yang berhubungan dengan v1 dengan
bobot terkecil. Ada 3 garis yang berhubungan dengan v1 masing-masing garis e1 (dengan bobot
15), e2 (bobot 5) dan e3 (bobot 15). Pilih garis dengan bobot terkecil yaitu e2. Tambahkan e2 ke
E(T) dan titik ujung e2 (= v7) ke V(T)

Sekarang V(T) = { v1,v7 } dan E(T) = { e2 }.

Pada iterasi kedua, pilih garis ej E(G) dan ej E(T) yang berhubungan dengan titik-titik dalam
V(T) dengan bobot terkecil. Garis-garis diluar E(T) yang berhubungan dengan titik-titik dalam
V(T) adalah : e1 (bobot 15), e3 (bobot 15), e5 (bobot 15) dan e6 (bobot 18). Ada 3 garis dengan
296 Riset Operasi : Suatu Tinjauan Algoritmis

bobot terkecil yang sama, yaitu 15. Pilih salah satu sembarang, misalnya e1. Tambahkan e1 ke
E(T) dan titik ujung e1 (= v2) ke V(T).

Sekarang V(T) = {v1, v7, v2} dan E(T) = {e2, e1}.

Proses iterasi yang sama diulang-ulang hingga V(T) memuat semua titik dalam G (atau jumlah
iterasi adalah (n-1), dengan n adalah jumlah titik dalam G). Didapatkan hasil sebagai berikut
(angka di dalam kurung pada kolom kedua menyatakan bobot garis yang terpilih) :
Iterasi Garis yang Titik yang Keterangan
terpilih ditambahkan
Mula-mula - v1 -
1 e2 (5) v7 -
2 e1 (15) v2 pilih antara e1, e3, e5
3 e4 (3) v3 -
4 e8 (5) v4 pilih antara e8 dan e9
5 e7 (4) v6 -
6 e9 (5) v5 -
7 e10 (15) v8 pillih antara e5 dan e10

Pohon rentang yang terbentuk setelah semua iterasi dilalui adalah pohon rentang minimum yang
sama dengan pohon rentang minimum hasil algoritma Kruskal yang tampak pada gambar 8.12
(d). Namun secara umum, pohon rentang yang dihasilkan oleh kedua metode berbeda, meskipun
bobot totalnya sama.

Secara manual, tampaknya algoritma Prim lebih sulit dan membutuhkan proses yang lebih lama.
Akan tetapi jika diimplementasikan dalam suatu program, algoritma Prim akan memiliki waktu
proses yang lebih cepat dibandingkan algoritma Kruskall. Hal ini disebabkan karena dalam
algoritma Kruskall, setiap kali akan menambahkan sebuah garis, haruslah dicek dahulu apakah
penambahan tersebut tidak akan membentuk sirkuit. Pengecekan ini tidak perlu dilakukan dalam
algoritma Prim. Pengecekan terjadi atau tidaknya sirkuit cukup dilakukan dengan melihat apakah
kedua ujung garis merupakan anggota V(T). Jika ya, berarti penambahan tersebut menghasilkan
sirkuit.
MODEL JARINGAN 297

8.2.3 Pohon Steiner

Pohon Steiner merupakan perluasan dari pohon rentang minimum. Dalam pohon rentang
minimum, kita mencari pohon yang menghubungkan semua titik dalam graf dengan bobot
minimum. Semua titik dalam pohon rentang minimum haruslah merupakan titik dalam graf
mula-mula. Dalam pohon Steiner, selain titik-titik dalam graf semula, diperbolehkan menambah
sejumlah titik tambahan agar total bobot pohon rentang yang dihasilkan minimum.

Untuk lebih jelasnya, perhatikan contoh 8.13 berikut ini. Untuk lebih memudahkan visualisasi,
panjang garis dalam graf sebanding dengan jarak yang sebenarnya.

Contoh 8.13

Diketahui graf gambar 8.13 (panjang garis sebanding dengan jarak antara 2 titik).

v1 v2
8

6 6

8
v3 v4

Gambar 8.13

Gambar 8.14 (a) merupakan pohon rentang minimumnya dengan total jarak = 6+8+6 = 20.
Gambar 8.14 (b) merupakan pohon steiner dengan penambahan 2 buah titik (s1 dan s2). Jarak v1
ke s1 adalah 3 2 . Maka total jaraknya = 4*3 2 + 2 = 18,97.

Perhatikan bahwa pohon steiner juga menghubungkan semua titik dalam graf semula. Akan
tetapi dengan penambahan beberapa titik tambahan akan menyebabkan total jaraknya lebih kecil
dibanding pohon rentang biasa.

Titik s1 dan s2 yang ditambahkan sering disebut dengan titik Steiner.


298 Riset Operasi : Suatu Tinjauan Algoritmis

v1 v2 v1 v2
8
3 2 3 2

2
6 6 s1 s2

3 2 3 2

v3 v4 v3 v4

(a) (b)
Gambar 8.14
Aplikasi pohon steiner antar lain : penentuan topologi jaringan, jaringan komunikasi,
penjadwalan multiprosesor, dll.

Hingga sekarang belum ada algoritma yang dapat menyelesaikan masalah pohon steiner secara
lengkap. Masalah utamanya adalah menentukan berapa banyak titik steiner yang perlu
ditambahkan dan dimana posisinya. Beberapa penyelesaian yang sudah dicoba antara lain
dengan metode cabang-batas (branch-bound), cabang-potong (branch-cut), enumerasi pohon
rentang, pemrograman dinamik, dll. Metode lain yang sedang dikembangkan akhir-akhir ini
adalah pendekatan penyelesaiannya dengan metode heuristik (misal pencarian lokal, simulated
anealing, dll).

8.3 Jalur Terpendek

Permasalahan jalur terpendek merupakan masalah klasik dalam Riset Operasi. Sebagai contoh,
misalkan graf gambar 8.3 menyatakan 8 buah kota yang dihubungkan dengan jalan darat (bukan
jaringan listrik). Label garis menyatakan jarak antar 2 kota Misalkan seseorang hendak bepergian
dari titik v7 ke v5. Terdapat banyak jalur yang dapat ia lalui, misalnya v7-v1-v2-v3-v5 (total jarak
28), v7-v6-v4-v3-v5 (total jarak 32), dll. Permasalahannya adalah menemukan jalur (path) yang
total jaraknya paling minimum.

Ada beberapa jenis permasalahan jalur terpendek :

a. Jalur terpendek antara 2 buah titik


MODEL JARINGAN 299

b. Jalur terpendek antara semua pasangan titik dalam graf

c. Jalur terpendek dari suatu titik ke semua titik lainnya

Ada beberapa variasi permasalahan jalur terpendek, misalnya lajur terpendek antara 2 buah titik
dengan tambahan syarat harus melalui suatu titik lainnya, jalur “terpendek” kedua, ketiga, dst

8.3.1 Algoritma Dijkstraa

Algoritma yang ditemukan oleh Dijkstraa merupakan algoritma untuk mencari jalur terpendek
antara 2 titik. Misalkan G adalah graf berlabel (berarah atau tidak berarah) dengan titik-titik V(G)
= {v1, v2, ..., vn} dan path terpendek yang dicari adalah dari v1 ke vn. Algoritma Dijkstraa dimulai
dari titik v1. Dalam iterasinya, algoritma akan mencari satu titik yang jumlah bobotnya dari titik 1
terkecil. Titik-titik yang terpilih dipisahkan (disebut titik permanen), dan titik-titik tersebut tidak
diperhatikan lagi dalam iterasi berikutnya.

Misalkan :

V(G) = { v1,v2,.., vn }.

L = Himpunan titik-titik V(G) yang sudah terpilih (titik permanen) dalam jalur path
terpendek.

D(j) = Jumlah bobot path terkecil dari v1 ke vj.

w(i,j) = Bobot garis dari titik vi ke titik vj.

w*(1,j) = Jumlah bobot path terkecil dari v1 ke vj

Algoritma Dijkstraa untuk mencari path terpendek adalah sebagai berikut :

1. Inisialisasi : L = { } ; V = {v2, v3, ... , vn}

2. Untuk i = 2, ... , n, lakukan D(i) = W(1,i)

3. Selama vn L (vn belum merupakan titik permanen), lakukan :

a. Pilih titik vk V-L (titik tidak permanen) dengan D(k) terkecil.

L=L { vk } (jadikan vk menjadi titik permanen)


300 Riset Operasi : Suatu Tinjauan Algoritmis

b. Untuk setiap vj V-L lakukan :

Jika D(k) + W(k,j) < D(j) maka ganti D(j) dengan D(k) + W(k,j)

Menurut algoritma diatas, jalur terpendek dari titik v1 ke vn adalah melalui titik-titik dalam L
secara berurutan, dan jumlah bobot path terkecilnya adalah D(n).

Contoh 8.14

Carilah jalur terpendek dari titik v1 ke v7 dalam graf berarah berlabel gambar 8.15

v2 7 v4 2 v6
3 8
1
v1 2 5 4

9 7 9
v7
v3 4 v5

Gambar 8.15
Penyelesaian

Matriks hubung W untuk menyatakan graf gambar 8.15 adalah sebagai berikut :

v1 v2 v3 v4 v5 v6 v7
v1 3 9
v2 7 1
v3 2 7 4
W =
v4 2 8
v5 5 9
v6 4
v7

I=0

Mula-mula L = { } dan V = { v2, v3, ... , v7 }.


MODEL JARINGAN 301

D(2) = W(1,2) = 3 ; D(3) = W(1,3) = 9


D(4) = W(1,4) = ; D(5) = W(1,5) =
D(6) = W(1,6) = ; D(7) = W(1,7) =

Pada iterasi pertama, D(1) = 0 dan diambil sebagai titik permanen pertama. L = { v1 }. Iterasi
selengkapnya tampak pada tabel 8.1.

I=1

Harga D(j) yang mungkin berubah adalah pada titik-titik yang dapat dicapai secara langsung dari
titik permanen terakhir (dalam iterasi ini adalah dari titik v1 dengan nilai D(1) = 0). Titik yang
dapat dicapai langsung dari v1 adalah titik v2 dan v3.

D(2) adalah harga minimum dari nilai D(2) sebelumnya (= ) dibandingkan dengan D(titik
permanen sebelumnya) + jarak dari titik permanen sebelumnya ke titik v2 secara langsung =
min ( , D(1) + W(1, 2) ) = min ( , 0+3) = 3.

Secara analog, D(3) adalah harga minimum dari nilai D(3) sebelumnya (= ) dibandingkan
dengan D(titik permanen sebelumnya) + jarak dari titik permanen sebelumnya ke titik v2 secara
langsung = min ( , D(1) + W(1, 3) ) = min ( , 0+9) = 9.

Jadi diperoleh nilai baru D(2) = 3 dan D(3) = 9. Nilai D(j) yang lain tetap karena tidak dapat
dicapai secara langsung dari v1. Karena titik tujuan (v7) belum merupakan titik permanen, maka
iterasi dilanjutkan. Nilai D(j) terkecil pada iterasi ini adalah D(2) = 3. Maka titik v2 dijadikan titik
permanen untuk iterasi berikutnya. Dalam tabel 8.11, hal ini ditandai dengan arsiran pada sel
kolom D(2) pada I=1

I=2

Pada iterasi ini titik permanen yang didapat sebelumnya adalah v2 dengan D(2) = 3. Titik yang
dapat dicapai secara langsung dari titik permanen v2 adalah v4 (dengan D(4) = ) dan v5
(dengan D(5) = ). Maka

D(4) = min ( , 3 + W(2, 4)) = min ( , 3 + 7) = 10

D(5) = min ( , 3 + W(2, 5)) = min ( , 3 + 1) = 4

Pada iterasi ini, nilai D(j) yang lain adalah (lihat tabel 8.1 pada I = 2) :
302 Riset Operasi : Suatu Tinjauan Algoritmis

D(1) = 0 (sudah permanen)

D(2) = 3 (sudah permanen)

D(3) = 9 (tetap seperti iterasi sebelumnya),

D(6) = D(7) = (tetap seperti iterasi sebelumnya).

Nilai D(j) paling minimum adalah D(5) = 4. Maka titik v5 kita jadikan titik permanen pada iterasi
berikutnya.

I=3

Pada iterasi sebelumnya (I = 2), titik permanen adalah v5 dengan D(5) = 4. Titik yang dapat
dicapai langsung dari v5 adalah v4 (D(4) = 10) dan v6 (D(6) = )

D(4) = min (10, 4 + W(5, 4)) = min (10, 4 + 5) = 9

D(6) = min ( , 4 + W(5, 6)) = min ( , 4 + 9) = 13

Pada iterasi ini, nilai D(j) yang lain adalah (lihat tabel 8.1 pada I = 3) :

D(1) = 0 (sudah permanen)

D(2) = 3 (sudah permanen)

D(3) = 9 (tetap seperti iterasi sebelumnya),

D(5) = 4 (sudah permanen)

D(7) = (tetap seperti iterasi sebelumnya).

Nilai D(j) minimum adalah D(3) = D(4) = 9. Pilih salah satunya secara sembarang, misal D(3).
Maka titik v3 dijadikan titik permanen pada iterasi berikutnya.
MODEL JARINGAN 303

I=4

Titik permanen sebelumnya adalah v3 dengan D(3) = 9. Titik yang dapat dicapai langsung dari v3
adalah v4 dan v5. Akan tetapi v5 sudah merupakan titik permanen sehingga yang mungkin
mengalami perubahan hanyalah D(4) saja. Maka

D(4) = min (9, 9 + W(3, 4)) = min (9, 9+7) = 9

Pada iterasi ini harga D(j) minimum adalah D(4) = 9

I=5

Titik permanen sebelumnya adalah v4 dengan D(4) = 9. Titik yang dapat dicapai secara langsung
dari v4 adalah v6 dan v7 (keduanya bukan merupakan titik permanen). Maka :

D(6) = min (13, 9 + W(4, 6)) = min (13, 9+2) = 11

D(7) = min ( , 9 + W(4, 7)) = min ( , 9+8) = 17

Nilai D(j) minimum adalah D(6) = 11. Titik v6 dijadikan titik permanen. Karena v7 belum
merupakan titik permanen maka iterasi perlu dilanjutkan.

I=6

Satu-satunya titik yang belum permanen adalah v7. Maka

D(7) = min (17, 11 + W(6, 7)) = min (17, 11+4) = 15.

Disini iterasi dihentikan karena satu-satunya titik yang tersisa adalah v7 sehingga otomatis akan
menjadi titik permanen.

Jarak minimum v1 ke v7 adalah 15. Perhatikan bagaimana iterasi ini dikerjakan dalam tabel 8.1.
Iterasi dihentikan pada I = 6 karena titik tujuan (v7) sudah menjadi titik permanen
304 Riset Operasi : Suatu Tinjauan Algoritmis

Interpretasi :

Pada setiap langkah, algoritma Dijkstraa menguji apakah jarak ke suatu titik akan lebih pendek
apabila jalurnya dilakukan melalui titik permanen yang didapat sebelumnya. Titik permanen
merupakan titik yang jaraknya dari titik sumber (= v1) terpendek. Jadi sudah tidak perlu
dievaluasi lagi dalam iterasi berikutnya.

Sebagai contoh, pada I=1 di titik v4. Perjalanan tidak mungkin dilakukan langsung dari titik v1 ke
v4 (tidak ada garis dari v1 ke v4 langsung), sehingga jaraknya . Pada iterasi I=2, diuji apakah
jalur akan lebih pendek (dibanding ) apabila perjalanan dilakukan melalui v2 (titik permanen
pada I=2). Jadi jalurnya v1 v2 v4. Ternyata jalurnya lebih pendek yaitu sebesar 3+7 = 8.
Hal yang sama juga terjadi pada titik v5. Perjalanan dari v1 ke v5 lewat v2 lebih pendek
dibandingkan jarak sebelumnya (= ).

Selanjutnya pada I=3 diuji lagi apakah perjalanan ke v4 akan lebih pendek lagi jika dilakukan
lewat titik permanen pada I=2 (= v5). Ternyata perjalanan ke v4 lewat v5 (jalur v1 v2 v5
v4) memiliki jarak 4+5 = 9 yang lebih pendek dari jarak sebelumnya (= 10), sehingga jalur
baru ini diambil sebagai jalur baru.
i D(1) D(2) D(3) D(4) D(5) D(6) D(7) L
0 0 { v1 }
1 - min min { v1, v2 }
( ,0+3) ( ,0+9)
=3 =9
2 - - 9 min min { v1, v2, v5 }
( ,3+7) ( ,3+1)
= 10 =4
3 - - 9 min - min { v1, v2, v5, v3 }
(10,4+5) ( ,4+9)
=9 = 13
4 - - - min - 13 { v1, v2, v5, v3,
(9,9+7) v4 }
=9
5 - - - - - min min { v1, v2, v5, v3,
(13,9+2) ( ,9+8) v4, v6 }
= 11 = 17
6 - - - - - - min { v1, v2, v5, v3,
(17,11+ v4, v6, v7 }
4) = 15
Tabel 8.1
MODEL JARINGAN 305

Untuk mencari jalur yang menghasilkan jarak terpendek, maka perhatikan tabel 8.1 dari bawah
ke atas, dimulai dari titik permanen terakhir (v7). Perhatikan titik permanen vj pada iterasi ke-i.
Apabila D(j) pada iterasi ke-I mengalami penurunan dibandingkan D(j) pada iterasi ke I-1 (sel di
atasnya dalam tabel 8.1), maka titik permanen pada iterasi ke I-1 merupakan jalur yang harus
dilalui.Perhatikan iterasi pada I=6 (dengan titik permanen v7) tabel 8.1. Nilai D(7) pada I=6
mengalami penurunan dibandingkan dengan nilai D(7) pada I=5 (sel di atasnya). Maka titik
permanen pada I=5 (v6) merupakan jalur yang harus dilalui sebelum v7.

Sekarang perhatikan titik permanen v6 pada I=5. D(6) pada I=5 mengalami penurunan
dibandingkan dengan D(6) pada I=4. Ini berarti titik permanen pada I=4 (yaitu v4) menjadi titik
yang harus dilalui sebelum v6.

Berikutnya, perhatikan titik yang dilalui terakhir (v4 yang merupakan titik permanen pada I=4).
D(4) pada I=4 tidak mengalami penurunan dibandingkan dengan D(4) pada I=3. Ini berarti titik
permanen pada I=3 (= v3) tidak menjadi jalur yang dilalui. Naik lagi pada I=2. Disini terjadi
penurunan nilai D(4) pada I=2 dibandingkan dengan nilai D(4) dibawahnya. Berarti titik
permanen pada iterasi I=2 (v5) menjadi titik yang harus dilalui.

Secara analog, nilai D(5) juga mengalami penurunan pada I=1 dibandingkan dengan I=2. Berarti
titik permanen pada I=1 (= v2) menjadi titik yang dilalui. Demikian juga pada D(2), penurunan
terjadi pada I=1 dibandingkan dengan I=2. Jadi titik permanen pada I=1 (v1) menjadi titik yang
dilalui.

Jadi jalur optimalnya adalah : v7 v6 v4 v5 v2 v1

Contoh 8.15

Carilah jarak terpendek dari titik a ke titik z pada graf gambar 8.14 dengan algoritma Dijkstraa
306 Riset Operasi : Suatu Tinjauan Algoritmis

b 3
e
2 2 5 1
1
a c z

2 7 3
4

d 4 f

Gambar 8.16

Penyelesaian

Langkah pencarian jalur terpendek sama dengan langkah yang dilakukan pada contoh 8.14.
Bedanya, dalam kasus ini, semua garisnya tak berarah. Jadi semua jalurnya dipandang sebagai
jalur 2 arah. Hasil iterasi selengkapnya tampak dalam tabel 8.2
i D(a) D(b) D(c) D(d) D(e) D(f) D(z) L
0 0 {a}
1 - min min min { a, c }
( ,0+2) ( ,0+1) ( ,0+4)
=2 =1 =4
2 - min - min min min { a, c, b }
(2,1+2) (4,1+2) ( ,1+5) ( ,1+7)
=2 =3 =6 =8
3 - - - 3 min 8 { a, c, b, d
(6,2+3) }
=5
4 - - - - 5 min { a, c, b,
(8,3+4) d, e }
=7
5 - - - - - 7 min { a, c, b,
( ,5+1) d, e, z }
=6

Tabel 8.2

Perhatikan bahwa dalam iterasinya, tidak perlu semua titik diuji. Iterasi akan berhenti jika titik
tujuan sudah menjadi titik permanen. Dalam contoh 8.15, Iterasi tetap dihentikan setelah titik
tujuan (= z) menjadi permanen meskipun titik f belum menjadi titikpermanen.
MODEL JARINGAN 307

8.3.2 Algoritma Warshall

Algoritma Dijkstraa bertujuan untuk mencari jarak terpendek dari suatu titik ke titik lain. Apabila
diinginkan untuk mencari jarak terpendek dari semua titik ke semua titik, maka algoritma
Dijkstraa harus dilakukan berulang-ulang sebanyak jumlah titiknya. Jika demikian maka
efisiensinya menjadi buruk. Algoritma Warshall merupakan algoritma yang lebih efisien untuk
mencari jarak terpendek dari semua titik ke semua titik.

Algoritma Warshall untuk mencari path terpendek merupakan algoritma yang sederhana dan
mudah implementasinya. Prinsip dasarnya tidak jauh berbeda dengan algoritma Dijkstraa. Pada
iterasi ke-I, dihitung jarak terpendek dari semua titik ke semua titik apabila pathnya melalui titik
vi

Misalkan W(0) adalah matriks hubung graf berarah berlabel mula-mula.

W* adalah matriks hubung minimal dengan wij* = path terpendek dari titik vi ke vj.

Algoritma Warshall untuk mencari path terpendek adalah sebagai berikut :

1. W = W(0)
2. Untuk k = 1 hingga n, lakukan : { pengujian jarak lewat titik vk }
Untuk i = 1 hingga n, lakukan :
Untuk j = 1 hingga n lakukan :
Jika Wi,j > Wi,k + Wk,j maka tukar Wi,j dengan Wi,k + Wk,j

3. W* = W

Meskipun waktu prosesnya bukanlah yang tercepat, algoritma Warshall sering dipergunakan
untuk menghitung path terpendek karena kesederhanaan algoritmanya. Disamping itu, program
implementasi algoritma Warshall sangat mudah dibuat.

Algoritma Warshall di atas hanyalah menghitung jarak terpendek dari semua titik ke semua titik,
tapi tidak menjelaskan bagaimana path terpendeknya. Untuk menentukan path yang
menghasilkan jarak terpendek, tambahkan matriks bujur sangkar (ukuran nxn) Z yang disusun
sebagai berikut :
308 Riset Operasi : Suatu Tinjauan Algoritmis

(0) j jika W (0)i , j


Inisialisasi : Z i, j =
0 jika W (0)i , j

Dalam iterasi ke-k, apabila titik vk disisipkan antara titik-I dan titik-j (berarti menukar Wi,j
dengan Wi,k + Wk,j ), maka ganti Zij dengan Zik. Agar lebih efisien, penggantian matriks Z
dilakukan bersama-sama dengan iterasi pencarian jarak terpendeknya.

Jarak terpendek dari titik vi ke titik vj dilakukan melalui titik v1, v2, …, vq yang didapat dari Z
optimalnya sebagai berikut :

v1 = Zij

v2 = Zv1,j

v3 = Zv2, j

….

vj = Zvq, j

Revisi algoritma Warshall dengan melibatkan path terpendeknya adalah sebagai berikut :

1. W = W(0) ; Z = Z(0)
2. Untuk k = 1 hingga n, lakukan : { pengujian jarak lewat titik vk }
Untuk i = 1 hingga n, lakukan :
Untuk j = 1 hingga n lakukan :
Jika Wi,j > Wi,k + Wk,j maka
a. tukar Wi,j dengan Wi,k + Wk,j
b. Ganti Zij dengan Zik

3. W* = W

Contoh 8.16

Carilah path terpendek dari titik vi ke titik vj (i, j = 1, 2, ... , 6) graf berarah berlabel pada gambar
8.17
MODEL JARINGAN 309

7 v2 4
v1 v3

2 1 3
2 1
4 2
v4 v6
v5

Gambar 8.17
Penyelesaian :

Matriks hubung graf gambar 8.15 adalah

v1 v2 v3 v4 v5 v6
v1 7 2
v2 4 1
(0)
W = W = v3 3
v4 4
v5 2 2
v6 1

Matriks path Z(0) dibuat dengan aturan

j jika W (0)i , j
Z(0) =
0 jika W (0)i , j

Ini berarti bahwa jika titik vi dihubungkan langsung dengan titik vj, maka elemen matriks Zi, j
sama dengan nilai kolom (= j)

v1 v2 v3 v4 v5 v6
v1 0 2 0 4 0 0
v2 0 0 3 0 5 0
(0)
Diperoleh Z = v3 0 0 0 0 0 6
v4 0 2 0 0 0 0
v5 1 0 3 0 0 0
v6 0 2 0 0 0 0
310 Riset Operasi : Suatu Tinjauan Algoritmis

Iterasi untuk k = 1

Untuk setiap titik diuji apakah jarak antara 2 titik akan lebih pendek jika perjalanan dilakukan
melalui titik v1. Dalam setiap sel matriks W dicek apakah Wi, j > Wi, 1 + W1, j. Jika ya, maka Wi,j
diganti dengan Wi, 1 + W1, j. Sebagai contoh :

 W1,2 = 7, sedangkan W1,1 + W1,2 = +7= . Karena W1,2 W1,1 + W1,2 maka harga
W1,2 tidak diubah.

 W5,4 = , sedangkan W5,1 + W1,4 = 2 + 2 = 4. Karena W5,4 > W5,1 + W1,4, maka harga W5,4
diubah menjadi 4.

Ini berarti bahwa ada path dari v5 ke v4 melalui v1 yang mempunyai bobot lebih kecil (yaitu
path v5 v1 v4 dengan jumlah bobot 4) dibandingkan dengan path dari v5 ke v4 secara
langsung (bobot = karena tidak ada path dari v5 ke v4 secara langsung)

Dengan cara yang sama, harga Wi,j dihitung untuk setiap i dan j. Didapatkan matriks W(1).
Elemen matriks W(1) yang diberi kotak menunjukkan nilai yang berubah dibandingkan dengan
matriks W(0). Ini berarti bahwa perjalanan dari titik vi ke vj pada elemen yang diberi kotak akan
lebih optimal jika dilakukan melewati titik v1. Sel dengan nilai W(1) yang berubah akan
menghasilkan perubahan pula pada matriks path Z(1)

Z(1) i, j = Z(0) i, k = Z(0) i, 1. Maka

Z(1) 5, 2 = Z(0) 5, 1 = 1. Z(1) 5, 4 = Z(0) 5, 1 = 1.

v1 v2 v3 v4 v5 v6 v1 v2 v3 v4 v5 v6
v1 7 2 v1 0 2 0 4 0 0
v2 4 1 v2 0 0 3 0 5 0
W(1) = 3
; Z(1) = v 0 0 0 0 0 6
v3 3

v4 4 v4 0 2 0 0 0 0
v5 2 9 2 4 v5 1 1 3 1 0 0
v6 1 v6 0 2 0 0 0 0

Perhatikan bahwa dalam iterasi ke-k, maka semua elemen matriks W maupun Z dalam kolom-k
tidak berubah
MODEL JARINGAN 311

Iterasi untuk k = 2

Iterasi untuk k = 2 dilakukan dengan cara yang sama seperti iterasi untuk k = 1, hanya titik
perantaranya adalah titik v2. Pengujian dilakukan apakah perjalanan yang dilakukan melewati
titik v2 akan menghasilkan jarak yang lebih pendek. Sebagai contoh :

 W6,5 = , sedangkan W6,2 + W2,5 = 1+1 = 2. Karena W6,5 > W6,2 + W2,5 maka harga W6,5
diganti dengan 2. Ini berarti bahwa path dari v6 ke v5 melalui v2 (v6 v2 v5) lebih pendek
dibandingkan path dari v6 ke v5 secara langsung ataupun melalui v1

Proses yang sama dilakukan untuk semua elemen matriks. Didapatkan matriks W(2). Sama
seperti matriks W(1), elemen yang diberi kotak menunjukkan elemen yang mengalami
perubahan dibandingkan dengan matriks W(1). Untuk semua elemen matriks W yang berubah
akan menyebabkan perubahan pada matriks Z di sel yang sama.

v1 v2 v3 v4 v5 v6 v1 v2 v3 v4 v5 v6

v1 7 11 2 8 v1 0 2 2 4 2 0
4 1 v2 0 0 3 0 5 0
W(2) = v2 ; Z(2) =
v3 3 v3 0 0 0 0 0 6
v4 4 8 5 v4 0 2 2 0 2 0
v5 2 9 2 4 10 v5 1 1 3 1 1 0
v6 1 5 2 v6 0 2 2 0 2 0

Dengan cara yang sama, untuk iterasi k = 3, 4, 5, 6, diperoleh matriks

v1 v2 v3 v4 v5 v6 v1 v2 v3 v4 v5 v6

v1 7 11 2 8 14 v1 0 2 2 4 2 2
0 0 3 0 5 3
W(3) = v2 4 1 7
; Z(3) = v2
v3 3 v3 0 0 0 0 0 6
v4 4 8 5 11 v4 0 2 2 0 2 2
v5 2 9 2 4 10 5 v5 1 1 3 1 1 3
v6 v6
1 5 2 8 0 2 2 0 2 2
312 Riset Operasi : Suatu Tinjauan Algoritmis

v1 v2 v3 v4 v5 v6 v1 v2 v3 v4 v5 v6
v1 6 10 2 7 13 v1 0 4 4 4 4 4

W(4) = v2 4 1 7
; Z(4) = v2 0 0 3 0 5 3
v3 3 v3 0 0 0 0 0 6
v4 4 8 5 11 v4 0 2 2 0 2 2
v5 2 8 2 4 9 5 v5 1 1 3 1 1 3
v6 1 5 2 8 v6 0 2 2 0 2 2

v1 v2 v3 v4 v5 v6 v1 v2 v3 v4 v5 v6
v1 9 6 9 2 7 12 v1 4 4 4 4 4 4
(5) (5)
W = v2 3 9 3 5 1 6 ; Z = v2 5 5 5 5 5 5
v3 3 v3 0 0 0 0 0 6
v4 7 4 7 9 5 10 v4 2 2 2 2 2 2
v5 2 8 2 4 9 5 v5 1 1 3 1 1 3
v6 4 1 4 6 2 7 v6 2 2 2 2 2 2

v1 v2 v3 v4 v5 v6 v1 v2 v3 v4 v5 v6

v1 9 6 9 2 7 12 v1 4 4 4 4 4 4
(6) (6)
W*= W = v2 3 7 3 5 1 6 ;Z = v2 5 5 5 5 5 5
v3 7 4 7 9 5 3 v3 6 6 6 6 6 6
v4 7 4 7 9 5 10 v4 2 2 2 2 2 2
v5 2 6 2 4 7 5 v5 1 3 3 1 3 3
v6 4 1 4 6 2 7 v6 2 2 2 2 2 2

W* merupakan matriks jarak terpendek dari semua titik ke semua titik, dan Z(6) merupakan path
yang harus dilalui. Sebagai contoh, jarak dari v1 ke v6 adalah 12. Path yang harus dilalui adalah :

Z(6) 1,6 = 4

Z(6) 4,6 = 2

Z(6) 2,6 = 5

Z(6) 5,6 = 3

Z(6) 3,6 = 6

Jadi path terpendek dari v1 ke v6 adalah v1 v4 v2 v5 v3 v6 dengan jarak


terpendek = 12
MODEL JARINGAN 313

Dalam contoh 8.15, W* bukan merupakan matriks simetris karena grafnya merupakan graf
berarah sehingga secara umum jarak terpendek dari vi ke vj berbeda dengan jarak dari vj ke vi.

Jika pada W* ada wij denngan harga berarti tidak ada path dari vi ke vj baik langsung maupun
tidak langsung.

8.3.3 Jalur Terpendek pada Graf Berarah Tanpa Sirkuit

Apabila grafnya berarah dan tidak memuat sirkuit, maka graf tersebut dapat “diurutkan” secara
topologi sebagai { v1, v2, … , vn } sedemikian hingga semua garis berarahnya adalah dari titik vi
ke vj dengan i < j. Dengan pengurutan ini maka pencarian jarak terpendek dari suatu titik ke
semua titik lainnya akan lebih efisien.

Misalkan W adalah matriks hubung graf berarah. Didefinisikan matriks biner B sebagai

1 jika Wi , j
B i, j =
0 jika Wi , j

Ti adalah matriks graf yang diurutkan secara topologi

Algoritma pengecekan apakah suatu graf berarah memiliki sirkuit berarah adalah sebagai berikut

Untuk i = 1 hingga n, lakukan :


Jika semua elemen kolom ke-k = 0 maka
a. hapus elemen kolom Bi, k dan baris Bk, j
b. Tambahkan vk ke vektor T
Jika tidak ada elemen dalam satu kolom yang semuanya bernilai nol,
maka hentikan iterasi. Return G memuat sirkuit

Misal Ti = { i1, i2, … , in }, maka urutan titik-titik graf secara topologi adalah { vi1, vi2, … , vin }.

Contoh 8.17

Ujilah apakah graf berarah pada gambar 8.15 memuat sirkuit berarah
314 Riset Operasi : Suatu Tinjauan Algoritmis

Penyelesaian

Matriks hubung W untuk menyatakan graf gambar 8.15 adalah sebagai berikut :

v1 v2 v3 v4 v5 v6 v7
v1 3 9
v2 7 1
v3 2 7 4
W =
v4 2 8
v5 5 9
v6 4
v7

Maka matriks biner yang sesuai adalah :

v1 v2 v3 v4 v5 v6 v7
v1 0 1 1 0 0 0 0
v2 0 0 0 1 1 0 0
v3 0 1 0 1 1 0 0
B(0) =
v4 0 0 0 0 0 1 1
v5 0 0 0 1 0 1 0
v6 0 0 0 0 0 0 1
v7 0 0 0 0 0 0 0

Tampak bahwa elemen kolom ke-1 semuanya = 0. Maka T1 = { v1 }.

Hapus kolom v1 dan baris v1. Matriks B menjadi :

v2 v3 v4 v5 v6 v7
v2 0 0 1 1 0 0
v3 1 0 1 1 0 0
(1)
B = v4 0 0 0 0 1 1
v5 0 0 1 0 1 0
v6 0 0 0 0 0 1
v7 0 0 0 0 0 0

Semua elemen pada kolom-2 (v3) = 0. Maka T = { v1, v3 }. Hapus kolom v3 dan baris v3.
Didapat
MODEL JARINGAN 315

v2 v4 v5 v6 v7
v2 0 1 1 0 0
v4 0 0 0 1 1
B(2) =
v5 0 1 0 1 0
v6 0 0 0 0 1
v7 0 0 0 0 0

Berikutnya berturut-turut didapatkan matriks B(3), B(4), B(5), B(6) dengan menghapus titik v2,
v5, v4, dan v6.

v4 v5 v6 v7
v4 v6 v7
v4 0 0 1 1
v4 0 1 1
B(3) = v5 1 0 1 0 ; B(4) = ;
v6 0 0 1
v6 0 0 0 1
v7 0 0 0
v7 0 0 0 0

v6 v7
B(5) = v6 0 1 ; B(6) = (0)
v7 0 0

Karena tingal sebuah titik v7, maka iterasi dihentikan. T = { v1, v3, v2, v5, v4, v6, v7 }. Graf
gambar 8.15 dapat digambarkan dalam bentuk terurut topologi sebagai gambar 8.18. Tampak
disini bahwa semua titik seolah-olah dapat diurutkan sedemikian hingga semua garisnya
mengarah ke kanan
7
4 9
v1 v3 v5 v6 4
9 2 1 5 2
v7
v2 v4
3 7 8

Gambar 8.18

Contoh 8.18

Ujilah apakah graf berarah pada gambar 8.17 memuat sirkuit berarah
316 Riset Operasi : Suatu Tinjauan Algoritmis

Penyelesaian
Matriks hubung W dan matriks Biner B graf gambar 8.17 adalah sebagai berikut :

v1 v2 v3 v4 v5 v6 v1 v2 v3 v4 v5 v6
v1 7 2 v1 0 1 0 1 0 0
v2 4 1 v2 0 0 1 0 1 0
W(0) = v 3 ; B(0) = v 0 0 0 0 0 1
3 3

v4 4 v4 0 1 0 0 0 0
v5 2 2 v5 1 0 1 0 0 0
v6 1 v6 0 1 0 0 0 0

Tampak disini bahwa tidak ada satu kolompun yang semua nilainya = 0. Berarti grafnya memuat
sirkuit berarah. Tidak ada satu titikpun yang semua garisnya mengarah keluar. Pasti selalu ada
garis yang masuk ke titik tersebut. Hal ini secara jelas dapat dilihat pada graf gambar 8.17. Di
titik v1, ada garis masuk dari v5. Di titik v2, ada garis yang masuk dari v4 dan v6, …. dan
seterusnya.

Jika titik-titik dalam graf dapat diurutkan secara topologi, maka pencarian jarak terpendek dari
satu titik ke semua titik lain dapat dilakukan dengan lebih cepat.

Misal G adalah graf berarah tanpa sirkuit yang diurutkan dalam urutan topologi T = { v1, v2, … ,
vn }. D(i) = jarak terpendek titik v1 ke titik vi, dan W(i, j) adalah jarak titik vi ke vj. Algoritma
pencarian jarak terpendek adalah sebagai berikut :

Inisialisasi : D(1) = 0 ; D(2) = D(3) = … = D(n) =

For I = 1 to n-1

Jika D(I) + W(I, j) < D(j) maka D(j) = D(I) + W(I, j)

Contoh 8.19

Carilah jarak terpendek dari titik v1 ke semua titik lain pada graf gambar 8.18

Penyelesaian

Urutan topologi titik-titik pada gambar 8.18 adalah T = { v1, v3, v2, v5, v4, v6, v7 }. Iterasi
pencariannya tampak pada tabel 8.3. Urut-urutan letak titik pada tabel 8.3 disesuaikan dengan
MODEL JARINGAN 317

urut-urutan topologi titiknya. Perhatikan bahwa pada iterasi ke-I, kita mencari jarak terpendek
yang bisa dicapai dari titik-i.

Sebagai contoh, pada I = 1, kita mencari kemungkinan jarak terpendek yang bisa dicapai dari
titik v1. Karena titik v1 hanya terhubung dengan titik v3 dan v2, maka hanya D(3) dan D(2) saja
yang mungkin berubah. D(3) (nilainya = ) dibandingkan dengan nilai D(1) + W(1,3) = 0 + 9 =
9. Karena 9 < maka D(3) diganti dengan 9. D(2) (nilainya = ) dibandingkan dengan nilai
D(1) + W(1,2) = 0 + 3 = 3. Karena 3 < maka D(3) diganti dengan 3

Secara analog, pada iterasi I=2, kita mencari jarak terpendek dari titik v3. Titik v3 terhubung ke
titik v2, v5 dan v4. Maka D(2), D(5) dan D(4) (yang pada iterasi sebelumnya nilainya adalah 3,
dan ) masing-masing dibandingkan dengan D(3)+W(3,2), D(3)+W(3,5), dan
D(3)+W(3,4).

i D(1) D(3) D(2) D(5) D(4) D(6) D(7) Ket

0 0 Inisialisas
i

1 - Min ( , Min ( , jarak dari


0+9) = 9 0+3) = 3 v1

2 - - Min (3, Min ( , Min ( , jarak dari


9+2) = 3 9+4) = 13 9+7) = 16 v3

3 - - - Min (13, Min (16, jarak dari


3+1) = 4 3+7) = 10 v2

4 - - - - Min (10, Min ( , jarak dari


4+5) = 9 4+9) = 13 v5

5 - - - - - Min (13, Min ( , jarak dari


9+2) = 11 9+8) = 17 v4

6 - - - - - - Min (17, jarak dari


11+4) = 15 v6
Tabel 8.3
Jadi jarak terpendek dari v1 ke v3 = 9, ke v2 = 3, ke v5 = 4, ke v4 = 9, ke v6 = 11 dan ke v7 = 15.
Pencarian jalur terpendeknya sama dengan algoritma Dijkstraa. Sebagai contoh, path terpendek
dari v1 ke v7 dicari secara mundur dari I=6. Jika terjadi penurunan jarak dibandingkan dengan
318 Riset Operasi : Suatu Tinjauan Algoritmis

nilai D(I) pada iterasi sebelumnya, berarti titik vi dilalui. Sebagai contoh, karena pada I = 5, nilai
D(7) = 17 dan pada I = 6, nilai D(7) = 15 (berarti terjadi penurunan jarak), maka titik v6 dilalui
sebelum mencapai titik v7. Sebaliknya, tidak terjadi penurunan nilai D(2) pada I=1 ke I = 2.
Maka v3 tidak dilalui dalam path terpendeknya. Dengan membuat iterasi mundur, maka titik
yang harus dilalui adalah v1 v2 v5 v4 v6 v7

8.3.4 Masalah Penggantian Peralatan

Pada kebanyakan peralatan, biaya operasional dan perawatan akan meningkat seiring dengan
bertambahnya umur peralatan. Sebagai contoh, semakin lama umur mobil, biaya
servis/perawatan dan konsumsi bahan bakar serta komponen-komponennya akan semakin boros.
Penggantian peralatan lama dengan alat yang baru akan menurunkan biaya perawatan dan
operasional. Akan tetapi penggantian (replacement) peralatan lamapun juga membutuhkan biaya.
Masalah yang dihadapi disini adalah kapan peralatan harus diganti agar total biaya
(perawatan/operasional dan penggantian) yang dikeluarkan selama kurun waktu tertentu menjadi
seminimum mungkin.

Masalah penggantian alat dapat diselesaikan dengan merubahnya menjadi masalah pencarian
jarak/path minimum. Dalam hal ini titik vj dalam graf menyatakan awal tahun ke-j. Label garis
berarah dari titik vi ke titik vj menyatakan total biaya yang dikeluarkan jika alat yang dibeli pada
awal tahun ke-i dijual pada awal tahun ke-j (i < j). Gambar 8.19 menunjukkan keadaan masalah
penggantian alat selama 5 periode. Perhatikan bahwa jumlah titiknya adalah (5+1) buah.

d26
d25
d24 d46
v2
v1 d12 d23 d34 d45 d56 v6
v3 v4 v5
d13 d35
d14 d36
d15
d16

Gambar 8.19

Misalkan
MODEL JARINGAN 319

Kj = harga pembelian alat baru pada tahun ke-j

cj = biaya perawatan dan operasional selama pengoperasian tahun ke-j. cj+1 > cj karena biaya
operasional meningkat seiring dengan lamanya pemakaian alat. Diasumsikan bahwa biaya ini
hanya dipengaruhi oleh berapa lama alat dipakai, dan tidak dipengaruhi oleh kapan pembelian
dilakukan.

Si,j = harga penjualan kembali alat lama yang dibeli pada tahun ke-i dan sudah dipakai selama j
tahun

Jarak antara titik vi ke vj (= dij) menyatakan total biaya yang harus dikeluarkan apabila alat
yang dibeli pada awal tahun ke-i dijual pada awal tahun ke-j. Total biaya ini adalah harga
pembelian alat baru pada awal tahun ke-i dikurangi dengan harga penjualan alat lama (yang
dibeli pada awal tahun ke-i) setelah dipakai selama (j-i) periode, dan ditambah dengan jumlah
biaya operasional/perawatan pada tahun pertama hingga tahun ke (j-i) pemakaian.
j i
di, j Ki Si , j i ct
t 1

Sebagai contoh pada gambar 8.19, d23 = K2 – S2,1 + c1. d23 menyatakan total biaya yang
dikeluarkan jika alat yang dibeli pada tahun-2 dijual lagi pada tahun-3 (lihat gambar 8.19). Total
biaya yang dikeluarkan adalah harga pembelian alat pada tahun ke-2 (= K2) – harga penjualan
alat yang dibeli pada tahun ke-2 setelah dipakai 1 tahun (= S2,1) + biaya operasional selama 1
tahun pemakaian (= c1).

Secara analog, d25 = K2 – S2,3 + (c1 + c2 + c3) menyatakan biaya yang dikeluarkan jika alat yang
dibeli pada tahun ke-2 dijual kembali pada tahun ke-5 (setelah dipakai selama 3 tahun). Biaya ini
adalah harga pembelian pada tahun ke-2 – harga jual kembali alat (yang dibeli pada tahun ke-2
tersebut) setelah dipakai selama 3 tahun + biaya perawatan/operasional pada tahun ke-1, 2 dan 3.

Setiap path dari titik v1 ke titik v6 pada gambar 8.19 menyatakan keputusan penggantian alat
yang mungkin dibuat.

Path v1 v2 v3 v4 v5 v6 menyatakan keputusan untuk membeli alat baru setiap tahun.

Biaya totalnya = d12 + d23 + d34 + d45 + d56


320 Riset Operasi : Suatu Tinjauan Algoritmis

= (K1 – S1,1 + c1) + (K2 – S2,1 + c1) + (K3 – S3,1 + c1) + (K4 – S4,1 +
5
c1) + (K5 – S5,1 + c1) = Ki Si ,1 5 ci
i 1

Path v1 v2 v5 v6 menyatakan bahwa pembelian alat baru dilakukan 3 kali yaitu pada
awal tahun ke-1, awal tahun ke-2 (setelah pemakaian selama 1 tahun) dan awal tahun ke-5
(setelah 3 tahun pemakaian). Biaya = d12 + d25 + d56 = (K1 – S1,1 + c1) + (K2 – S2,3 + c1+ c2+ c3)
+ (K5 – S5,1 + c1)

Path v1 v6 menyatakan keputusan untuk melakukan 1 kali pembelian alat saja yaitu pada
awal tahun. Biaya totalnya = K1 – S1,5 + c1+ c2+ c3+ c4+ c5.

Contoh 8.20

Pada tahun 2000, sebuah perusahaan pengangkutan memiliki masalah dalam penggantian
armada mobilnya untuk pemakaian 5 tahun ke depan. Perkiraan harga sebuah mobil baru tampak
pada tabel 8.4 a.
Awal Harga Beli Lama Biaya Operasional
Tahun (juta) Pemakaian & Perawatan (juta)
2001 150 1 30
2002 160 2 35
2003 180 3 50
2004 200 4 60

Tabel 8.4 a Tabel 8.4 b

Tabel 8.4 b menunjukkan biaya operasional dan perawatan untuk lama pemakaian 1-4 tahun.
Biaya ini hanya dipengaruhi oleh lama pemakaian, dan tidak dipengaruhi oleh kapan mobil
dibeli.

Apabila mobil lama dijual, maka harga jualnya tergantung dari tahun pembelian dan lama
pemakaiannya. Harga jual tersebut tampak pada tabel 8.4 c. Tanda (-) pada tabel 8.4 c
menunjukkan bahwa penjualan tidak mungkin dilakukan karena waktu penjualannya melebihi
batas waktu (tahun 2005).
MODEL JARINGAN 321

Lama Pemakaian (tahun)


Tahun Beli 1 2 3 4
2001 130 110 100 90
2002 140 130 125 -
2003 150 140 - -
2004 170 - - -
Tabel 8.4 c
Tentukan kapan pembelian mobil baru harus dilakukan agar total biaya yang dikeluarkan pada
tahun 2005 seminimum mungkin.

Penyelesaian

Misalkan tahun ke-1 adalah tahun 2001. Penggantian mobil pada tahun ke-i dapat digambarkan
pada gambar 8.20.

d25
d24
v2
v1 d12 d23 d34 d45
v3 v4 v5
d13 d35
d14
d15

Gambar 8.20

Titik vi menyatakan pembelian mobil baru dilakukan pada tahun ke-i. Garis dari titik vi ke vj (i <
j) menyatakan total biaya yang dikeluarkan apabila mobil yang dibeli pada tahun vi dijual lagi
pada tahun vj (berarti tahun vj melakukan pembelian mobil baru lagi). Label garis dij
menunjukkan biaya total yang harus dikeluarkan apabila penggantian mobil yang dibeli pada
tahun ke-i dilakukan pada tahun ke-j. Biaya ini adalah biaya pembelian mobil baru pada tahun
ke-i dikurangi harga penjualan mobil bekas pada tahun ke-j (setelah dipakai (j-i) tahun)
ditambah biaya perawatan selama (j-i) tahun pemakaian.
j i
di, j Ki Si , j i ct
t 1

d12 = biaya total yang dikeluarkan apabila pembelian mobil dilakukan pada tahun 2001 dan
dijual lagi tahun 2002 = harga mobil tahun 2001 – harga jual kembali mobil pada tahun 2002
(setelah dipakai 1 tahun) + biaya operasional dan perawatan selama 1 tahun (2001 - 2002).
322 Riset Operasi : Suatu Tinjauan Algoritmis

d12 = K1 – S1,1 + c1 = 150 – 130 + 30 = 50

d13 = K1 – S1,2 + c1 + c2 = 150 – 110 + 30 + 35 = 105

... dan seterusnya

d25 = K2 – S2,3 + c1 + c2 + c3 = 160 – 125 + 30 + 35 + 50 = 150

Dengan perhitungan-perhitungan yang sama, maka didapat matriks biaya yang merupakan
matriks jarak d =

1 2 3 4 5
1 50 105 165 235
2 50 95 150
3 60 105
4 60
5

Karena grafnya jelas tidak memiliki sirkuit (semua garis vi ke vj jika i < j), maka pencarian jarak
terpendek pada graf berarah tanpa sirkuit (lihat sub bab 8.3.3) lebih mudah dilakukan. Tabel 8.5
adalah tabel iterasi pencarian jarak terpendek dari titik v1 ke titik v5
i D(1) D(2) D(3) D(4) D(5)

0 0

1 - Min ( , 0+50) = Min ( , 0+105) Min ( , 0+165) Min ( , 0+235)


50 = 105 = 165 = 235

2 - - Min (105, 50+50) Min (165, 50+95) Min (235,


= 100 = 145 50+150) = 200

3 - - - Min (145, Min (200,


100+60) = 145 100+105) = 200

4 - - - - Min (200,
145+60) = 200

Tabel 8.5
Jarak terpendek dari titik v1 ke titik v5 adalah 200 dengan path v1 v2 v5. Jika
diinterpretasikan ke soal aslinya, agar total biayanya minimum, maka pembelian mobil dilakukan
pada awal tahun ke-1 dan awal tahun ke-2
MODEL JARINGAN 323

8.4 Manajemen Proyek

8.4.1 Proyek

Proyek adalah sembarang pekerjaan yang memiliki awal dan akhir, terdiri dari beberapa
pekerjaan/aktivitas yang harus dilaksanakan dengan urutan tertentu. Tiap-tiap pekerjaan
membutuhkan sumber daya (biaya, tenaga, waktu) yang berbeda-beda.

Contoh 8.21

Pembangunan sebuah gedung dapat dipandang sebagai suatu proyek yang terdiri dari beberapa
pekerjaan, antara lain :

1. Penggalian tanah untuk pondasi

2. Pembuatan pondasi

3. Mendirikan tiang untuk tembok

4. Pembuatan dinding

5. Konstruksi atap

6. Pembuatan jaringan listrik

7. Pembuatan sistem pembuangan air

8. Pembuatan pintu dan jendela

9. Pengecatan

Pekerjaan-pekerjaan tersebut harus dilakukan berurutan. Ini berarti bahwa suatu pekerjaan tidak
mungkin dilakukan sebelum suatu pekerjaan lain selesai. Urutan pekerjaan tidaklah sepenuhnya
serial. Beberapa pekerjaan mungkin dapat dilakukan secara paralel, misalnya pembuatan
pintu/jendela dapat dilakukan jauh-jauh hari sebelum pemasangannya. Berarti pembuatan pintu
jendela dapat dilakukan paralel dengan pekerjaan sebelumnya (misalkan pembuatan dinding).
324 Riset Operasi : Suatu Tinjauan Algoritmis

Ada 2 masalah yang muncul dalam penyelesaian proyek :

1. Menentukan urut-urutan pekerjaan (kapan suatu pekerjaan harus dimulai) sehingga


keseluruhan pekerjaan selesai dengan secepat-cepatnya.

2. Menentukan jalur kritis, yaitu pekerjaan-pekerjaan yang jika pelaksanaannya ditunda akan
menyebabkan penyelesaian keseluruhan proyek mundur. Selanjutnya, misalkan tersedia dana
tambahan untuk mempercepat pekerjaan, pekerjaan mana saja yang penyelesaiannya dapat
dipercepat tanpa merubah jalur kritis, tapi dengan biaya tambahan yang semurah-murahnya.

8.4.2 Pembuatan Jaringan Proyek

Proyek dapat dinyatakan dalam suatu graf berarah yang disebut jaringan proyek. Titik
menyatakan kejadian selesainya suatu aktivitas dan dimulainya aktivitas yang lain. Garis dalam
graf berarah menyatakan pekerjaan-pekerjaan yang harus dilakukan. Label garis menunjukkan
lama waktu penyelesaian pekerjaan

Contoh 8.22

Misalkan suatu proyek pembuatan alat dari logam terdiri dari beberapa aktivitas. Mula-mula ada
3 komponen logam (A, B, dan C) yang harus dicairkan di tempat pengecoran logam (lokasi-1).
Setelah itu, ketiga komponen tersebut akan digabungkan di tempat pencetakan (lokasi-2) dan
kemudian dikirimkan ke tempat penyimpanan (lokasi-5)

Komponen A dapat dikirim langsung dari tempat pengecoran ke tempat pencetakan, lalu ke
tempat penyimpanan.

Sebaliknya, komponen B dan C yang keluar dari tempat pengecoran harus dikirim dulu ke
tempat pembubutan (lokasi-3). Dari tempat pembubutan, komponen B langsung dikirim ke
tempat pencetakan. Akan tetapi komponen C harus dibawa ke tempat penggilingan (lokasi-4)
terlebih dahulu sebelum bisa dibawa ke tempat pencetakan.

Buatlah jaringan yang menyatakan aktivitas proyek tersebut.


MODEL JARINGAN 325

Penyelesaian

Misalkan titik-i menyatakan lokasi-i, dengan

lokasi-1 adalah tempat pengecoran logam,

lokasi-2 adalah tempat pencetakan

lokasi-3 adalah tempat pembubutan

lokasi-4 adalah tempat penggilingan dan

lokasi-5 adalah tempat penyimpanan

Garis dari titik-i ke titik-j menyatakan aktivitas pengiriman komponen dari lokasi-i ke lokasi-j.
Sebagai contoh, garis berarah dari titik-3 ke titik-2 menyatakan aktivitas pengiriman (komponen
B) dari tempat pembubutan ke tempat pencetakan. Graf berarah yang menyatakan proyek dapat
dilihat pada gambar 8.21.

1 2 5

3 4

Gambar 8.21

Ada beberapa hal yang harus diperhatikan dalam pembuatan jaringan proyek :

Tiap aktivitas harus dinyatakan dengan sebuah garis berarah. Ini berarti bahwa suatu aktivitas
tidak boleh muncul lebih dari satu kali.

Tidak boleh ada 2 atau lebih aktivitas yang dimulai dan diakhiri pada titik yang sama (lihat
gambar 8.22 a). Kasus ini timbul jika ada 2 aktivitas yang dapat dimulai serentak. Untuk
menghindari kondisi seperti itu, maka dibuat suatu aktivitas dummy dengan waktu
pelaksanaan = 0 (gambar 8.22 b).
326 Riset Operasi : Suatu Tinjauan Algoritmis

akt-1

akt-1
1 2
1 2 akt-2 akt dummy
akt-2

Gambar 8.22 a Gambar 8.22 b

Jaringan tidak boleh memuat sirkuit (graf berarahnya harus asiklik). Jadi jaringan yang
memuat graf gambar 8.23 tidak diperbolehkan karena tidak jelas aktivitas mana yang
menjadi prasyarat.

akt-1 akt-3

1 akt-2 3

Gambar 8.23

Jaringan harus memiliki titik awal dan titik akhir yang tunggal. Titik awal merupakan awal
dari keseluruhan rangkaian kegiatan. Titik akhir merupakan akhir dari semua kegiatan.

Visualisasi graf berarah tidaklah penting. Untuk soal yang sama, beberapa orang mungkin
membuat graf yang tampak berbeda, meskipun sebenarnya sama.

Pembuatan graf umumnya tidak “sekali jadi”. Kita mungkin perlu berkali-kali menggambar
ulang untuk mengatur posisi titik agar graf yang kita gambar tidak terlalu “ruwet”. Ini
disebabkan karena graf akhir yang terbentuk harus memenuhi semua kondisi yang
ditetapkan, sedangkan penggambaran graf harus dilakukan tahap demi tahap.

Contoh 8.23

Buatlah jaringan aktivitas A, B, ... , L yang memenuhi kondisi-kondisi berikut ini :

1. A, B dan C adalah aktivitas awal yang bisa dimulai bersamaan


MODEL JARINGAN 327

2. A, B harus dikerjakan sebelum D

3. B harus dikerjakan sebelum E, F dan H

4. F dan C harus dikerjakan sebelum G

5. E dan H harus dikerjakan sebelum I dan J

6. C, D, F dan J harus dikerjakan sebelum K

7. K harus dikerjakan sebelum L

8. I, G dan L adalah aktivitas akhir proyek.

Penyelesaian

Graf berarah jaringan proyek tampak pada gambar 8.24. Perhatikan beberapa hal yang muncul
dalam pembuatan jaringan proyek.

1. Untuk memulai penggambaran graf, tentukan aktivitas awal, yaitu aktivitas yang tidak
memiliki prasyarat (aktivitas lain yang harus dilakukan terlebih dahulu). Dalam contoh 8.23,
aktivitas awalnya adalah A, B dan C.

2. Perhatikan kapan kita harus menambahkan aktivitas dummy. Penambahan aktivitas dummy
harus dilakukan secukupnya untuk mengurangi kompleksitas graf yang terbentuk.

Aktivitas dummy D1 perlu ditambahkan karena baik A maupun B menjadi prasyarat bagi
D. Hal yang sama muncul pada D2, yang harus ditambahkan karena H dan E menjadi
prasyarat bagi I dan J.

Aktivitas dummy D3 ditambahkan karena D dan J tidak menjadi prasyarat bagi G. Apabila
aktivitas C berupa garis dari titik-1 langsung ke titik-7 dan F dari titik-2 langsung ke titik-7
(titik-6 digabungkan ke titik-7), berarti G berupa garis dari titik-7 ke titik-9. Jika demikian
maka aktivitas C, F, D, dan J menjadi prasyarat bagi K dan G. Padahal yang menjadi
prasyarat G hanyalah F dan C saja (kondisi 4)
328 Riset Operasi : Suatu Tinjauan Algoritmis

3
D
7
K
A D1 4 8
D2 J L
H
1 B 2 E 5 I 9
D3
C F G

6
Gambar 8.24

8.4.3 Metode Jalur Kritis (CPM)

Dalam jaringan proyek, ada beberapa aktivitas yang pelaksanaannya dapat ditunda, dan ada
beberapa aktivitas lain yang penyelesaiannya tidak dapat ditunda lagi. Sebagai contoh, dalam
penyelesaian proyek bangunan (contoh 8.21), aktivitas pembuatan jendela dan pintu bisa dimulai
sejak pembuatan pondasi dilakukan (meskipun pemasangannya menunggu selesainya
pembuatan dinding). Pembuatan jendela dan pintu umumnya membutuhkan waktu yang lebih
cepat dibandingkan penyelesaian seluruh kegiatan dari awal proyek hingga semua dinding
selesai dibuat. Ini berarti bahwa pembuatan pintu dan jendela merupakan aktivitas yang
penyelesaiannya dapat ditunda. Sebaliknya, pembuatan dinding merupakan aktivitas yang
penyelesaiannya tidak dapat ditunda lagi karena pembuatan atap, jaringan listrik, pemasangan
pintu, dll baru dapat dimulai setelah dinding selesai didirikan. Berarti aktivitas pembuatan
dinding merupakan aktivitas yang tidak dapat ditunda pelaksanaannya. Penundaan pembuatan
dinding akan mengakibatkan penyelesaian keseluruhan proyek mundur.

Aktivitas yang tidak dapat ditunda pelaksanaannya disebut aktivitas kritis. Sebaliknya, aktivitas
yang dapat ditunda pelaksanaannya disebut aktivitas yang tidak kritis. Masalah yang harus
diselesaikan dalam jaringan proyek adalah menentukan jalur kritis, yaitu urut-urutan aktivitas
kritis, beserta total waktu tercepat untuk menyelesaikan seluruh proyek. Salah satu metode yang
sering dipakai untuk menentukan jalur kritis adalah metode jalur kritis (critical path method =
CPM)

Misalkan tij adalah waktu yang dibutuhkan untuk menyelesaikan aktivitas dari titik-i ke titik-j.
Untuk mencari jalur kritis, ada 2 ukuran yang dihitung untuk setiap titik :
MODEL JARINGAN 329

1. ESj (= Earliest Start kegiatan j) yaitu waktu tercepat untuk memulai pekerjaan di titik-j.
Pekerjaan yang dimulai dari titik-j baru dapat dimulai apabila semua kegiatan prasyaratnya
sudah selesai.

ES j max ESi tij


i

Perhitungan ES dimulai dari titik awal hingga titik akhir (perhitungan maju). Nilai ES untuk
titik awal = 0. ES di titik-j dapat dihitung bila semua ES di titik prasyaratnya sudah diketahui.
Dalam gambar 8.24, ES titik-7 dapat dihitung apabila ES di semua titik prasyaratnya (yaitu
titik 3, 5 dan 6) sudah diketahui.

2. LCi (= Latest Completion kegiatan i) yaitu waktu terlama untuk memulai kegiatan di titik-i.
Apabila ditunda lagi maka penyelesaian keseluruhan proyek akan mundur.

LCi min LC j tij


j

Perhitungan LC dilakukan mundur, yaitu dari titik akhir ke titik awal. Nilai LC di titik akhir
sama dengan nilai ES di titik tersebut. LC di titik-i dapat dihitung jika LC di semua titik
penerusnya (titik-titik yang menggunakan titik-i sebagai prasyarat) sudah diketahui. Dalam
gambar 8.24, LC di titik-2 dapat dihitung jika LC di titik-3, 4, 5 dan 6 sudah diketahui.

Waktu tercepat penyelesaian seluruh proyek adalah ES di titik akhirnya. Jalur kritis jaringan
proyek adalah path dari titik awal ke titik akhir yang melalui semua titik dengan ES = LC

Contoh 8.24

Perhatikan kembali contoh 8.22. Misalkan waktu (hari) yang dibutuhkan untuk tiap aktivitas
tampak pada label graf gambar 8.25.

3 2
1 2 5

2 5 3

1
3 4

Gambar 8.25
330 Riset Operasi : Suatu Tinjauan Algoritmis

a. Berapa waktu tercepat untuk menyelesaikan seluruh proyek ?

b. Manakah jalur kritisnya ?

Penyelesaian

Pertama-tama dicari ES untuk setiap titik dahulu. Titik awal proyek adalah titik-1. Maka ES1 =
0. Titik berikutnya yang dapat dicari ESnya adalah titik-3. Karena satu-satunya prasyarat titik-3
adalah titik-1 yang merupakan titik awal, maka ES3 = ES1 + t13 = 0 + 2 = 2.

Perhatikan bahwa sampai disini ES2 belum dapat dihitung karena ES4 belum diketahui (ingat
bahwa ES suatu titik dapat dihitung setelah ES semua titik prasyaratnya diketahui. Prasyarat
titik-2 adalah titik-1, 3, dan 4).

Titik yang berikutnya dapat dicari adalah titik-4. Satu-satunya prasyarat titik-4 adalah titik-3
sehingga ES4 = ES3 + t34 = 2 + 1 = 3.

Karena ES semua prasyarat titik-2 sudah diketahui, maka sekarang ES2 dapat dihitung. ES2 =
max (ES1+t12, ES3+t32, ES4+t42) = max (0+3, 2+5, 3+3) = 7. Jadi aktivitas yang dimulai dari
titik-2 (pengiriman dari tempat pencetakan ke tempat penyimpanan) baru dapat dilakukan setelah
hari ke 7. Pelaksanaan tidak dapat dilakukan lebih cepat karena harus menunggu selesainya
pengiriman dari tempat pembubutan (aktivitas dari titik-3 ke titik-2).

Berikutnya, ES5 = ES2 + t25 = 7+2 = 9.

Gambar 8.26 menunjukkan jaringan proyek yang dilengkapi dengan nilai ES untuk tiap titik
(dinyatakan dengan angka dalam kotak di sisi setiap titik).

7
3 2
0 1 2 5 9

2 5 3

= ES
1
2
3 4 3

Gambar 8.26
MODEL JARINGAN 331

Karena titik-5 adalah titik akhir jaringan proyek, maka berarti waktu tercepat penyelesaian
seluruh proyek adalah 9 hari.

Berikutnya, untuk mencari jalur kritisnya, dihitung LC untuk tiap titik, dimulai dengan titik akhir
(titik-5). LC titik-i dapat dihitung apabila semua titik yang memiliki prasyarat titik-i sudah
diketahui LCnya. Sebagai contoh, titik-2 dan titik-4 memiliki prasyarat titik-3. Maka LC3 baru
dapat dihitung setelah LC2 dan LC4 dihitung.

LC5 = ES5 = 9.

LC2 = LC5 – t25 = 9 – 2 = 7

Perhatikan pada saat ini, satu-satunya LC yang dapat dicari adalah LC4 karena titik-4 hanya
memiliki prasyarat titik-2 saja. LC3 belum dapat dihitung karena LC4 belum diketahui. LC1 juga
belum dapat dihitung karena LC3 belum diketahui.

LC4 = LC2 – 3 = 7 – 3 = 4

LC3 = min (LC2 – t32, LC4 – t34) = min (7–5, 4–1) = min (2, 3) = 2

LC1 = min (LC2 – t12, LC3 – t13) = min (7–3, 2–2) = min (4, 0) = 0.

Nilai LC dinyatakan dengan angka pada segitiga di sebelah tiap titik pada gambar 8.27

7
0 7 9
3 2
0 1 2 5 9

2 5 3 = LC

= ES
2 1 4
2
3 4 3
Gambar 8.27
Jalur kritis adalah jalur yang melalui semua titik dimana ES = LC. Dalam contoh ini melalui titik
1 – 3 – 2 - 5 (digambarkan dengan garis tebal pada gambar 8.27

Contoh 8.25
332 Riset Operasi : Suatu Tinjauan Algoritmis

Carilah jalur kritis jaringan proyek gambar 8.28. Berapa waktu tercepat penyelesaian seluruh
proyek ?
4 4 6

3 6 1

1 2 2 0 5 5

4 3 8

3 9 7

Gambar 8.28
Penyelesaian

Perhatikan bahwa graf jaringan proyek merupakan graf yang tidak memiliki sirkuit sehingga
pasti memiliki titik awal dan titik akhir. Titik awal adalah suatu titik dimana tidak ada garis yang
masuk ke titik tersebut. Sebaliknya, titik akhir adalah titik dimana tidak ada garis yang keluar
dari titik tersebut.

Jaringan proyek gambar 8.28 memiliki titik awal pada titik-1 dan titik akhir pada titik-7. ES1 = 0.
ES titik lainnya dihitung dengan urut-urutan sebagai berikut :

ES2 = ES1 + t12 = 0 + 2 = 2

ES3 = ES2 + t23 = 2 + 4 = 6

ES4 = max (ES2+t24, ES3+t34) = max (2+3, 6+0) = 6

ES5 = max (ES4+t45, ES3+t35) = max (6+6, 6+3) = 12

ES6 = max (ES4+t46, ES5+t56) = max (6+4, 12+1) = 13

ES7 = max (ES6+t67, ES5+t57, ES3+t37) = max (13+5, 12+8, 6+9) = 20

Berarti waktu tercepat untuk menyelesaikan seluruh proyek adalah ES7 = 20

LC dihitung mundur dari titik akhir (titik-7). LC7 = ES7 = 20. LC titik-titik lainnya dihitung
dengan urut-urutan sebagai berikut :

LC6 = LC7 – t67 = 20 – 5 = 15


MODEL JARINGAN 333

LC5 = min (LC7 – t57, LC6 – t56) = min (20 – 8, 15 – 1) = 12

LC4 = min (LC5 – t45, LC6 – t46) = min (12 – 6, 15 – 4) = 6

LC3 = min (LC4 – t34, LC5 – t35, LC7 – t37) = min (6 – 0, 12 – 3, 20 – 9) = 6

LC2 = min (LC3 – t23, LC4 – t24) = min (6 – 4, 6 – 3) = 2

LC1 = LC2 – t12 = 2 – 2 = 0

Titik-titik dengan ES = LC adalah titik 1, 2, 3, 4, 5, dan 7. Maka jalur kritis adalah jalur yang
melewati titik-titik tersebut. Gambar 8.29 menunjukkan ES dan LC setiap titik beserta jalur
kritisnya (garis tebal)

6
= LC 15
6 4 4 6
13
= ES
3 6 1
2
2
0
1 2 2 0 5 5
0
12
4 3 12 8

20
6 3 9 7
20
6

Gambar 8.29

Perhatikan bahwa jalur kritis harus melewati semua titik dengan ES = LC, termasuk aktivitas
dummy. Jadi jalur kritisnya bukan titik 1 - 2 – 3 – 5 - 7, tetapi 1 - 2 – 3 – 4 – 5 - 7 karena titik 4
juga harus masuk dalam jalur kritis.

Agar keseluruhan penyelesaian seluruh kegiatan tidak mundur, maka semua aktivitas di jalur
kritis harus diselesaikan tepat waktu. Ini berarti tidak ada kelonggaran waktu sama sekali bagi
kegiatan-kegiatan tersebut. Sebaliknya, aktivitas yang tidak berada di jalur kritis memiliki waktu
longgar (slack) dan tidak harus dimulai tepat waktu. Aktivitas tersebut masih dimungkinkan
untuk ditunda. Ada 2 macam waktu longgar yang dikenal, yaitu total slack dan free slack.
334 Riset Operasi : Suatu Tinjauan Algoritmis

Total slack (= TS) adalah total waktu luang yang tersedia untuk melakukan aktivitas =
maksimum waktu yang tersedia untuk melakukan aktivitas dikurangi waktu penyelesaian
aktivitas.

TSij = LCj – ESi - tij

Free Slack (= FS) adalah waktu luang yang masih tersedia jika semua aktivitas dimulai secepat-
cepatnya

FSij = ESj – ESi - tij

Untuk semua aktivitas di jalur kritis, TS dan FS = 0

Sebagai contoh, perhatikan aktivitas 4-6 (dengan t46 = 4) pada gambar 8.29

titik 4 titik 6

LC 6 15

ES 6 13

Maka TS46 = LC6 – ES4 – t46 = 15 – 6 – 4 = 5

FS46 = ES6 – ES4 – t46 = 13 – 6 – 4 = 3

Gambar 8.30 menunjukkan diagram interpretasi kedua jenis slack

total waktu yang dimiliki = 15 - 6 = 9

3 t46 = 4 4
Total Slack =
9-4=5

waktu yang dimiliki jika semua kegiatan


dilakukan secepat-cepatnya = 13 - 6 = 7
3 t46 = 4 4
Free Slack =
7-4=3
6 7 8 9 10 11 12 13 14 15
ES4 =
ES6 = 13 LC6 = 15
LC4 = 6

Gambar 8.30
MODEL JARINGAN 335

Contoh 8.26

Carilah slack (total slack dan free slack) tiap garis pada jaringan proyek contoh 8.25

Penyelesaian

Tabel 8.6 adalah hasil perhitungan TS dan FS (dengan indeks i adalah titik sumber dan indeks j
menyatakan titik tujuan) untuk tiap garis gambar 8.29

Aktivitas ESi ESj LCj tij TSij FSij


1 2 0 2 2 2 2-0-2 = 0 2-0-2 = 0
2 3 2 6 6 4 6-2-4 = 0 6-2-4 = 0
2 4 2 6 6 3 6-2-3 = 1 6-2-3 = 1
3 4 6 6 6 0 6-6-0 = 0 6-6-0 = 0
3 5 6 12 12 3 12-6-3 = 3 12-6-3 = 3
3 7 6 20 20 9 20-6-9 = 5 20-6-9 = 5
4 5 6 12 12 6 12-6-6 = 0 12-6-6 = 0
4 6 6 13 15 4 15-6-4 = 5 13-6-4 = 3
5 6 12 13 15 1 15-12-1 = 2 13-12-1 = 0
5 7 12 20 20 8 20-12-8 = 0 20-12-8 = 0
6 7 13 20 20 5 20-13-5 = 2 20-13-5 = 2
Tabel 8.6
Gambar 8.31 merupakan penyempurnaan gambar 8.29 setelah dilengkapi dengan nilai TS dan
FS untuk setiap garis
336 Riset Operasi : Suatu Tinjauan Algoritmis

TS = 5
6 FS = 3
= LC 15
6 4 4 6
TS = 0 TS = 2 13
= ES TS = 1
FS = 0 FS = 0
FS = 1
3 6 1
2
TS = 0 TS = 2
2 FS = 0 FS = 2
0
1 2 2 0 5 5
0 TS = 0 TS = 0
TS = 3
FS = 0 FS = 3 12 FS = 0
TS = 0 4 3 12 8
FS = 0

20
6 3 9 7
TS = 5 20
6 FS = 5
Gambar 8.31

Contoh 8.27

Carilah ES, LC, TS dan FS jaringan proyek yang tampak pada gambar 8.32
2 2 4

3 7 5

0 3 0 5 6 6

2 3 2

1 2 3

Gambar 8.32
Penyelesaian

ES0 = 0

ES1 = ES0 + t01 = 0 + 2 = 2

ES2 = ES0 + t02 = 0 + 3 = 3

ES3 = max (ES1+t13, ES2+t23) = max (2+2, 3+3) = 6

ES4 = max (ES2+t24, ES3+t34) = max (3+2, 6+0) = 6


MODEL JARINGAN 337

ES5 = max (ES3+t35, ES4+t45) = max (6+3, 6+7) = 13

ES6 = max (ES3+t36, ES4+t46, ES5+t56) = max (6+2, 6+5, 13+6) = 19

Berarti waktu tercepat untuk menyelesaikan seluruh proyek adalah ES6 = 19

LC dihitung mundur dari titik-6). LC6 = ES6 = 19. LC titik-titik lainnya dihitung dengan urut-
urutan sebagai berikut :

LC6 = LC7 – t67 = 20 – 5 = 15

LC5 = min (LC7 – t57, LC6 – t56) = min (20 – 8, 15 – 1) = 12

LC4 = min (LC5 – t45, LC6 – t46) = min (12 – 6, 15 – 4) = 6

LC3 = min (LC4 – t34, LC5 – t35, LC7 – t37) = min (6 – 0, 12 – 3, 20 – 9) = 6

LC2 = min (LC3 – t23, LC4 – t24) = min (6 – 4, 6 – 3) = 2

LC1 = LC2 – t12 = 2 – 2 = 0

Jalur kritis : 0 – 2 – 3 – 4 – 5 – 6. Dengan mengetahui ES dan LC di tiap titik, maka FS dan TS


untuk tiap garis bisa dihitung. Perhitungan selengkapnya ada pada tabel 8.7. Gambar 8.33 adalah
jaringan proyek yang sudah dilengkapi dengan ES, LC, FS dan TS.

TS = 1 6 = LC
3
FS = 1 6
3 2 2 4 = ES
TS = 8
TS = 0 FS = 8
TS = 0 7 5
FS = 0 3
TS = 0 FS = 0
TS = 0
FS = 0 FS = 0 13
0 19
0 3 0 13 5 6 6
0 TS = 0 19
TS = 4 FS = 0
FS = 4
2 3 2
TS = 2
FS = 0 TS = 11
FS = 11
4 1 2 3
TS = 2 6
2 FS = 2
6

Gambar 8.33
338 Riset Operasi : Suatu Tinjauan Algoritmis

Aktivitas ESi ESj LCj tij TSij FSij


0 1 0 2 4 2 4-0-2 = 2 2-0-2 = 0
0 2 0 3 3 3 3-0-3 = 0 3-0-3 = 0
1 3 2 6 6 2 6-2-2 = 2 6-2-2 = 2
2 3 3 6 6 3 6-3-3 = 0 6-3-3 = 0
2 4 3 6 6 2 6-3-2 = 1 6-3-2 = 1
3 4 6 6 6 0 6-6-0 = 0 6-6-0 = 0
3 5 6 13 13 3 13-6-3 = 4 13-6-3 = 4
3 6 6 19 19 2 19-6-2 = 11 19-6-2 = 11
4 5 6 13 13 7 13-6-7 = 0 13-6-7 = 0
4 6 6 19 19 5 19-6-5 = 8 19-6-5 = 8
5 6 13 19 19 6 19-13-6 = 0 19-13-6 = 0

Tabel 8.7

Contoh 8.28

Untuk membuat anggaran tahun depan, sebuah perusahaan harus mengambil informasi dari
bagian penjualan, produksi, dan keuangan. Tabel 8.8 adalah aktivitas yang harus dilakukan,
aktivitas prasyarat serta waktu penyelesaian. Buatlah model jaringan yang sesuai dan tentukan
jalur kritisnya. Berapa waktu tercepat untuk menyelesaikan seluruh proyek ?

Aktivitas Waktu
Aktivitas Uraian Aktivitas
Prasyarat (hari)
A Memprediksi volume penjualan - 10
B Studi pasar - 7
C Merancang item produk dan fasilitas A 5
D Mempersiapkan jadwal produksi C 3
E Memperkirakan biaya produksi D 2
F Menentukan harga jual barang B, E 1
G Mempersiapkan anggaran E, F 14

Tabel 8.8
MODEL JARINGAN 339

Penyelesaian

Gambar 8.34 adalah jaringan proyek yang sesuai. Waktu tercepat penyelesaian seluruh proyek
adalah 35 hari dengan jalur kritis 1 – 2 – 3 – 4 – 5 – 6 – 7.

Perhatikan bahwa prasyarat kegiatan G (yaitu E dan F) dapat diringkas menjadi F saja karena E
sudah merupakan prasyarat untuk F
15
10
TS = 0 15 TS = 0
10 FS = 0 FS = 0 = LC
18
2 C=5 3 D=3 4 18
TS = 0 = ES
FS = 0
TS = 0
A = 10 E=2
FS = 0

1 2 5 F=1 6 G = 14 7
TS = 13 TS = 0 TS = 0
0 FS = 13 20 FS = 0 21 FS = 0 35
0 20 21 35

Gambar 8.34

8.4.4 Optimisasi Jalur Kritis

Dalam suatu proyek, biasanya lama pengerjaan suatu aktivitas berhubungan dengan biaya. Biaya
proyek dapat dibagi menjadi 2 macam :

1. Biaya Langsung

Biaya ini berhubungan langsung dengan suatu aktivitas, misalnya upah pekerja. Biaya
langsung akan meningkat apabila waktu pengerjaan proyek diturunkan. Akan tetapi tetap ada
waktu minimum dimana waktu pelaksanaan aktivitas dapat diturunkan. Waktu minimum
tersebut titik crash. Gambar 8.35 adalah grafik waktu penyelesaian aktivitas versus biaya
langsung yang dikeluarkan. Titik normal adalah waktu pengerjaan normal, sedangkan titik
crash adalah waktu penyelesaian tercepat yang dapat dilakukan
340 Riset Operasi : Suatu Tinjauan Algoritmis

biaya langsung
tc = waktu penyelesaian pada titik crash
tn = waktu penyelesaian normal
titik crash
cc cc = biaya titik crash
cn = biaya normal

titik normal
cn
waktu penyelesaian
tc tn proyek

Gambar 8.35
2. Biaya Tidak Langsung

Biaya tak langsung berhubungan dengan biaya overhead seperti biaya administrasi, ijin,
supervisi, dll. Umumnya biaya tidak langsung akan meningkat jika waktu pengerjaan proyek
dinaikkan.

Biaya langsung biasanya lebih diperhatikan karena secara langsung dapat mempengaruhi waktu
penyelesaian proyek. Misalkan terdapat dana tambahan untuk mempercepat penyelesaian
proyek. Masalahnya adalah memilih kegiatan-kegiatan yang dapat dipercepat penyelesaiannya
(tanpa merubah jalur kritis) dengan biaya yang semurah-murahnya.

Kegiatan yang dapat dipercepat adalah kegiatan yang berada di jalur kritis karena kegiatan inilah
yang menentukan lama pengerjaan suatu proyek. Pekerjaan di jalur kritis dianalisa dan waktu
penyelesaiannya diturunkan. Pekerjaan yang diprioritaskan untuk dipercepat adalah pekerjaan
yang penurunan waktunya tidak membutuhkan banyak biaya tambahan.

cc cn
Slope/kemiringan garis gambar 8.35 dapat ditentukan dengan persamaan : m . Slope
tn tc
menyatakan besarnya kenaikan biaya untuk penurunan satu unit waktu pengerjaan. Semakin
kecil slope, berarti penurunan waktu pengerjaan hanya membutuhkan tambahan biaya yang
sedikit, sehingga pekerjaan ini diprioritaskan untuk dipercepat.

Algoritma pengoptimalan metode CPM adalah sebagai berikut :

1. Cari jalur kritis untuk biaya normal


MODEL JARINGAN 341

2. Tentukan slope tiap pekerjaan di jalur kritis

3. Tentukan slope terkecil (misal mk)

4. Turunkan waktu penyelesaian aktivitas-k sekecil-kecilnya tanpa mengubah jalur kritis

5. Ulangi langkah 3-4 hingga tidak ada lagi aktivitas yang dapat dipercepat tanpa merubah
jalur kritis

6. Percepat waku pengerjaan untuk tiap aktivitas dengan slope terkecil berikutnya, tapi dengan
memperhatikan efeknya pada jalur non kritis.
342 Riset Operasi : Suatu Tinjauan Algoritmis

SOAL-SOAL LATIHAN

1. Hitunglah jumlah titik, jumlah garis dan derajat masing-masing titik graf berikut ini. Jika ada,
tentukan titik terasing dan titik pendan.

a b c a b

f e d e d c

(a) (b)

a b c d

i h g e

(c)

2. Perhatikan graf G berikut ini

b
a

e
d

Tentukan mana diantara graf (a)-(f) di bawah ini yang merupakan subgraf G

a b a b a b

c c c

e e e
d d d

(a) (b) (c)


MODEL JARINGAN 343

b b b
a a a

c c c

e e e
d d d

(d) (e) (f)

3. Berapa jumlah titik yang dimiliki oleh suatu graf G jika G memiliki :

a. 16 garis dan semuanya berderajat 2

b. 21 garis, 3 titik berderajat 4, dan sisanya berderajat 3

c. 24 garis dan semuanya berderajat sama

4. Misalkan G adalah graf dengan 12 garis. Misalkan pula G memiliki 6 titik berderajat 3 dan
sisanya berderajat kurang dari 3. Tentukan jumlah minimum titik dalam G !

5. Dalam graf di bawah ini, tentukan apakah barisan berikut ini merupakan walk, path, path
sederhana, sirkuit atau sirkuit sederhana.

v3
e1 e2 e4
e3
v0 e10 e5
e9 v2 e7

e6
v5 e8 v4

a. v0 e1 v1 e10 v5 e9 v2 e2 v1

b. v4 e7 v2 e9 v5 e10 v1 e3 v2 e9 v5

c. v2

d. v5 v2 v3 v4 v4 v5

e. e5 e8 e10 e3

6. Dalam graf di bawah ini, tentukan apakah barisan berikut ini merupakan walk, path, path
sederhana, sirkuit atau sirkuit sederhana
344 Riset Operasi : Suatu Tinjauan Algoritmis

v3
e1 e3
e2
v0
e10 e9 e4
e7 v2
e5
e8

v5 e6 v4

a. v1 e2 v2 e3 v3 e4 v4 e5 v2 e2 v1 e1 v0

b. v2 v3 v4 v5 v2

c. v4 v2 v3 v4 v5 v2 v4

d. v0 v5 v2 v3 v4 v2 v1

e. v5 v4 v2 v1

7. Perhatikan graf berikut ini :

e2
e1 e3 e5
v1 v4
v2 v3
e4

a. Berapa jumlah path sederhana dari v1 ke v4 ?

b. Berapa jumlah path dari v1 ke v4 ?

c. Berapa jumlah walk dari v1 ke v4 ?

8. Tentukan mana diantara graf-graf berikut ini yang memiliki sirkuit Euler. Carilah sirkuit
Euler graf yang memilikinya.

t v
a b
a b c

s w c
u
d e f e
d
r z y x

(a) (b) (c)


MODEL JARINGAN 345

9. Seseorang hendak berjalan mengelilingi kota yang petanya tampak pada gambar berikut ini.
Mungkinkah ia memulai dan mengakhiri perjalanannya dari titik yang sama dan melalui
setiap jembatan tepat satu kali ? Jika mungkin, bagaimana caranya ?

C
A
D

10. Carilah matriks adjacency (matriks hubung) untuk graf berikut ini

e1
e1
v1 v2 v1 v2
e2 e3
e3 e2 e4

e5
v3 v4 v3
e6

(a) (b)

e1 e2
v1 v2 v1 v2
e4 e3
e3 e5
e1 e5
e4
v4 v4 v3
v3 e6
e2

(c) (d)

11. Perhatikan pohon berikut ini dengan akar titik a

a. Berapakah level titik n ?

b. Berapakah level titik a ?

c. Berapa tinggi pohon berakar tersebut ?


346 Riset Operasi : Suatu Tinjauan Algoritmis

d. Apakah anak titik n ?

e. Apakah orang tua titik g ?

f. Apakah saudara titik j ?

g. Apakah turunan titik f ?

b d
c
e g i
f h
j l n o p
k m
s t v
u w
q r
z
x y

(a) (b)

12. Berapa banyak pohon rentang yang bisa dibuat dari graf berikut ini ?

c b c
a b
b e
a f a d

d c
d f e

(a) (b) (c)

a b v0 v1

d c v3 v2

(d) (e)

13. Tentukan pohon rentang minimum graf berikut ini dengan algoritma Kruskal. Ulangi lagi
dengan algoritma Prim. Apakah hasilnya sama ?
MODEL JARINGAN 347

b 12 e b 5 c

15 2
10 7 10 2
1 11
14 6 5
a 4 f h 9 a d 4
c 6
9 4
13 3 5 6 4

d 4 g f 10 e

(a) (b)

12
a a b
1 11
6 b 7 20
4 5
f
9 10 2
3 8 c e f
2 d
10 8 18
c 7 15 19
e
4 5
g h
d 13

(c) (d)

14. Sebuah perusahaan ingin membangun sistem telekomunikasi yang menghubungkan 7


cabangnya. Jarak antar cabang dinyatakan dalam tabel berikut ini :
a b c d e f g
a 0 20 42 31 28 29 33
b 0 25 35 29 24 31
c 0 41 33 22 38
d 0 34 36 40
e 0 41 32
f 0 25
g 0
Misalkan biaya pembuatan jaringan sebanding dengan jaraknya. Tentukan jaringan
termurah untuk menghubungkan 7 cabang tersebut. Berapa biaya termurahnya ?

15. Sebuah universitas membeli lahan untuk taman. Perancang taman sedang mengatur tempat
untuk pondok, taman kecil, kursi taman, dan lain-lain. Lokasinya dinyatakan dengan node
pada jaringan gambar di bawah ini. Garis pada jaringan menyatakan jalan yang mungkin
dilalui diantara tempat-tempat tersebut. Bagaimana cara membangun jalan yang
menghubungkan tempat-tempat tersebut, tapi dengan total panjang jalan yang minimum ?
348 Riset Operasi : Suatu Tinjauan Algoritmis

6 12 12
2
5 3 8 3
1 8 6
6
8 5 11 7 4 11 7 15
9 6
2 3 4 1 2 2
4
1 4 6 8 3 10 5 14
9
7
3 2 5 4
3 4
3
9 6 13

16. Buatlah pohon bentang minimum untuk jaringan komunikasi darurat berikut ini

5 6
1 4 2

2 3
2

3 7
4 3
5 2
2
5
3
8
4 7

17. Di sebuah pabrik sabun, petugas pengawas kualitas mengambil sampel produk dari berbagai
area produksi dan mengirimkannya ke laboratorium untuk dianalisa. Manajer merasa bahwa
proses ini terlalu lambat sehingga ia merencanakan membuat tabung conveyor (alat
pembawa barang) otomatis untuk menggantikan peran petugas untuk membawa sampel dari
berbagai area produksi ke lab. Gambar berikut ini menunjukkan jaringan conveyor yang bisa
dibuat. Bagaimana cara pembuatan conveyor yang mampu menghubungkan semua area
dengan lab (node 1) tapi dengan panjang total yang minimum ?
2 5
5

6 8 6
3
4
7 3
1 4
6
8 5 2 8
6
5 4
4
6
7
MODEL JARINGAN 349

18. Di sebuah universitas sedang dibangun sistem jaringan komunikasi elektronik. Jaringan di
bawah ini menunjukkan hubungan yang mungkin dibuat antara kantor-kantornya. Jarak antar
kantor (ratusan meter) dinyatakan dengan angka pada garis. Buatlah rancangan komunikasi
antar kantor yang memungkinkan semua kantor berkomunikasi tapi dengan total jarak
pembuatan yang paling minimum !
2 3 6

2 0.5 1.5 1
2
1 7
1 3 3
2.5
0.5
1.2 8
3
1.6 5
4
1 4
4

19. Sebuah perusahaan TV kabel baru saja mendapat persetujuan untuk membangun jaringan
pelayanan TV kabel yang menghubungkan 3 kota. Titik-titik pada gambar jaringan di bawah
ini adalah titik distribusi yang harus terhubung oleh jaringan TV. Angka pada garis
menunjukkan jarak antara 2 titik distribusi (km). Tentukan jaringan yang memungkinkan
perusahaan untuk menjangkau semua titik distribusi dengan total jarak kabel yang paling
minimum.

2 4 8 3 9

2 3 4
3 4
3 4 7
3
1 7
2 4 11
2 2 6
4
4 4 3 6 5 10
3 4
5
5

20. Gunakan algoritma Dijkstraa untuk mencari jarak terpendek dari a ke z pada graf berikut
ini :
350 Riset Operasi : Suatu Tinjauan Algoritmis

3
b e 5
2 2 1 2 2
5
1
a c z a 2 1 z

2 7 3 4
4 3
5
d 4 f

(a) (b)

a 3 3 4

4 2 2 1
5 5
8 8 1
4 7

5 2 5 6 2 2
a 3
1 z
5 1 7
3 4
10 7 6 7 6 5
2 6 5
z

(c) (d)

21. Sebuah perusahaan pengantaran paket yang berpusat di kota Jogja mengadakan program
spesial pengantaran langsung ke 10 kota tujuan (kota 1 .. 10). Paket dengan tujuan salah satu
dari 10 kota tersebut akan langsung dikirim setiap kali order diterima. Gambar berikut ini
menunjukkan 10 kota (jarak dalam km) yang dapat dilayani untuk pengantaran. Tentukan
rute terpendek dari Jogja ke 10 kota lainnya
2
15
5
8 7

3 4 4
4
13 5
6
Jogja 6 2 8 7 10
15 3
4 5
5
5
10
9
4
9
12
5
MODEL JARINGAN 351

22. Sebuah perusahaan harus memutuskan kapan waktu yang paling tepat untuk mengganti
komponen, dan berapa lama komponen baru akan digunakan.. Gambar di bawah ini
menunjukkan waktu dan biaya penggantian komponen. Node 0, …, 4 menyatakan tahun
penggantian komponen. Label garis dari node x ke node y menunjukkan biaya yang
dibutuhkan untuk penggantian yang dilakukan pada tahun x dan komponen baru digunakan
hingga tahun ke y. Sebagai contoh, garis dari node 0 ke node 2 berarti bahwa komponen
lama tetap dipakai dan baru diganti pada akhir tahun 2. Tentukan jadwal penggantian yang
harus dilakukan untuk meminimumkan total biaya selama 4 tahun tersebut.
2800
2000
1000
0 600 1 500 2 800 3 700 4
1400 1600
2100

23. Sebuah perusahaan ingin melakukan pelatihan untuk karyawannya. Relasi prasyarat harus
dilakukan pada sesi pelatihan. Aktivitas berikut ini adalah pekerjaan yang harus diselesaikan
setiap peserta program pelatihan. Buatlah jaringan proyek untuk masalah ini
Aktivitas A B C D E F G H
Aktivitas Prasyarat - - A A, B A, B C D, F E, G

24. Sebuah pengembang mengkoordinasikan konstruksi kompleks perkantoran. Sebagai bagian


dari proses perencanaan, perusahaan membuat daftar aktivitas di bawah ini. Gambarlah
jaringan proyek yang dapat dipakai untuk membantu penjadwalan aktivitas proyek
Aktivitas A B C D E F G H I J
Aktivitas Prasyarat - - - A, B A, B D E C C F, G, H, I

25. Diketahui aktivitas proyek sbb. Proyek selesai jika aktivitas F dan G selesai
Aktivitas A B C D E F G
Aktivitas Prasyarat - - A A C, B C, B D, E
Waktu (bulan) 4 6 2 6 3 3 5

a. Buatlah jaringan proyek


b. Carilah jalur kritis
c. Apakah mungkin menyelesaikan proyek dalam 1,5 tahun ?
26. Selesaikan jaringan proyek di bawah ini !
352 Riset Operasi : Suatu Tinjauan Algoritmis

Aktivitas A B C D E F G H I J
Aktivitas Prasyarat - - - B A B C, D B, E F, G H

27. Diketahui jaringan proyek dan waktu (minggu) sbb


C H

D F Finish
Start

B E G

Aktivitas A B C D E F G H
Waktu 5 3 7 6 7 3 10 8

a. Tentukan jalur kritisnya


b. Berapa lama waktu untuk menyelesaikan seluruh proyek ?
c. Bisakah aktivitas D ditunda tanpa menyebabkan keseluruhan proyek mundur ? Jika bisa,
berapa lama aktivitas tersebut dapat ditunda ?
d. Bisakah aktivitas C ditunda tanpa menyebabkan keseluruhan proyek mundur ? Jika bisa,
berapa lama aktivitas tersebut dapat ditunda ?

28. Manajer kondominium sedang merenovasi bangunan utamanya. Waktu yang tersedia adalah
17 minggu dengan aktivitas sbb :
Aktivitas A B C D E F G H
Aktivitas Prasyarat - - - A, B, C C, D A D, F E
Waktu (minggu) 3 1 2 4 5 3 6 4

a. Gambarkan jaringan proyek


b. Aktivitas mana saja yang kritis ?
c. Aktivitas apa yang memiliki waktu slack (tunda) paling besar ?
d. Bisakah seluruh proyek selesai dalam 17 minggu ?

29. Suatu perguruan tinggi merencanakan akan menbangun kompleks olahraga multi fungsi di
dalam kampus. Aktivitas yang berhubungan adalah sebagai berikut :
Akt Uraian Prasyarat Waktu (mg)
MODEL JARINGAN 353

A Survei posisi bangunan - 6


B Perancangan bangunan induk - 8
C Memperoleh persetujuan yayasan A, B 12
D Memilih arsitek C 4
E Membuat anggaran C 6
F Finalisasi rancangan D, E 15
G Mengusahakan dana E 12
H Memilih kontraktor F, G 8

a. Gambarkan jaringan proyek


b. Tentukan jalur kritis
c. Susunlah penjadwalan aktivitas-aktivitas proyek
d. Bisakah seluruh proyek selesai dalam 1 tahun ?

30. Perencana tata kota merencanakan membangun taman rekreasi baru. Pekerjaan di dalamnya
meliputi membersihkan area piknik dan bermain, membangun jalan, membangun tempat
berteduh, membeli peralatan taman, dll. Berikut ini adalah gambar jaringan proyek dan
waktu penyelesaian (minggu) tiap pekerjaan.

D H

C E I Finish
Start

B F G

Aktivitas A B C D E F G H I
Waktu 9 6 6 3 0 3 2 6 3

a. Tentukan jalur kritisnya


b. Tentukan penjadwalan tiap aktivitas dalam proyek
c. Yayasan ingin agar taman rekreasi dibuka 6 bulan lagi. Bisakan manajer proyek
melakukannya ?
d. Bisakah aktivitas C ditunda tanpa menyebabkan keseluruhan proyek mundur ? Jika bisa,
berapa lama aktivitas tersebut dapat ditunda ?
Daftar Pustaka

Anderson, D.R., Sweeney, D.J., William, T.A.(2005), an Introduction to Management Science,


Quantitative Approaches to Decision Making, 11th ed, South-Western.

Bronson, R. (1983), Theory and Problems of Operations Research, Schaum’s Outline Series,
McGraw-Hill

Deo, N. (1986), Graph Theory with Applications to Engineering and Computer Science,
McGraw-Hill

Gillett, B.E. (1976), Introduction to Operations Research, A Computer-Oriented Algorithmic


Approach, McGraw-Hill

Hillier, F.S., Lieberman, G.J. (1986), Introduction to Operations Research, 4th ed, McGraw-Hill

Ignizio, J.P., Cavalier, T.M. (1994), Linear Programming, Prentice Hall Int

Jong Jek Siang. (2009), Matematika Diskrit dan Aplikasinya pada Ilmu Komputer, ed 4, Andi
Offset

Loomba, N.P. (1979), Linear Programming, An Introductory Analysis, McGraw-Hill

Mital, K.V. (1979), Optimization Methods in Operations Research and Systems Analysis, Wiley
Eastern Limited

Ravindran, A., Phillips, D.T., Solberg, J.J. (1987), Operations Research, Principles and Practice,
2nd ed, John Wiley & Sons

Susanta, B. (1986), Diktat Kuliah Program Linier, FMIPA UGM

Taha, H.A. (1987), Operations Research, an Introduction, 3rd ed, MacMillan Publishing Co,
Inc

Takaoka, T. (1998), Shortest path algorithm for Nearly acyclic directed graph, Theoretical
Computer Science, 203 (1) pages 143-150

Takaoka, T. (2001), Improved Shortest Path Algorithm for Nearly Acyclic Directed Graph,
TElectronic Notes in theoretical Computer Science 42 (2001),
www.elsevier.nl/locate/entcs/volume42.html

Terry L Dennis, Laurie B Dennis (1991), Management Science, West Publication Company.

Thie, P.R. (1979), An Introduction to Linear Programming and Game Theory, John Wiley &
Sons

Wu, N, Coppins, R. (1981), Linear Programming and Extensions, McGraw-Hill

Anda mungkin juga menyukai