BAB 2
LANDASAN TEORI
2.1 Perencanaan Produksi
Produksi yang dalam bahasa inggris disebut production adalah keseluruhan proses
yang dilakukan untuk menghasilkan produk atau jasa. Produk yang dihasilkan
sebagai output dari proses tersebut dapat berupa produk akhir (finished product) yang sering disebut juga produk jadi, produk setengah jadi (work-in-process) atau
bahan baku (raw materials) yang semuanya bersifat tangible (berwujud fisik).
Jasa (services) adalah output yang bersifat intangible (berwujud non-fisik).
Aktifitas produksi sebagai suatu bagian dari fungsi organisasi perusahaan
bertanggung jawab terhadap pengolahan bahan baku menjadi produk jadi yang
dapat dijual. Untuk melaksanakan fungsi produksi tersebut diperlukan rangkaian
kegiatan yang akan membentuk suatu sistim produksi.
Sistim produksi merupakan kumpulan dari sub-sistim yang saling
berinteraksi dengan tujuan mentransformasi input produksi menjadi output
produksi. Input produksi ini dapat berupa bahan baku, mesin, tenaga kerja, modal
dan informasi sedangkan output produksi merupakan produk yang dihasilkan
berikut hasil sampingannya seperti limbah, informasi, dan sebagainya. Sub-sistim
dari sistim produksi tersebut antara lain adalah perencanaan dan pengendalian
produksi, pengendalian kualitas, penentuan standar-standar operasi, penentuan
fasilitas produksi, perawatan fasilitas produksi dan penentuan harga pokok
produksi.
Tujuan akhir dari suatu perusahaan adalah untuk memperoleh keuntungan
disamping tercapainya kelanjutan dan pengembangan usaha. Salah satu fungsi
yang terpenting dalam mendukung usaha untuk mencapai tujuan tersebut adalah
perencanaan produksi. Perencanaan produksi dapat didefinisikan sebagai proses
produksi atau operasi sehingga permintaan pasar dapat dipenuhi dengan jumlah
yang tepat.
The American Production and Inventory Control Society mendefinisikan perencanaan produksi sebagai suatu kegiatan yang berkenaan dengan penentuan
apa yang harus diproduksi, berapa banyak diproduksi, kapan diproduksi, dan apa
sumber daya yang dibutuhkan untuk mendapatkan produk yang telah ditetapkan
(Sinulingga, 2009).
Perencanaan produksi dilakukan dengan tujuan menentukan arah awal dari
tindakan-tindakan yang harus dilakukan di masa mendatang, apa yang harus
dilakukan, berapa banyak melakukannya, dan kapan harus melakukan. Karena
perencanaan ini berkaitan dengan masa mendatang, maka perencanaan disusun
atas dasar perkiraan yang dibuat berdasarkan data masa lalu dengan menggunakan
beberapa asumsi.
Kegunaan dari pelaksanaan perencanaan produksi adalah:
1. Suatu perencanaan meliputi usaha untuk menetapkan tujuan yang dipilih
untuk dicapai sehingga dengan adanya perencanaan produksi dapat
memberikan arah bagi setiap kegiatan produksi. Dengan adanya kejelasan
arah tersebut maka kegiatan akan dapat dilaksanakan dengan efektif.
2. Dengan perencanaan produksi yang berisi formulasi tujuan yang hendak
dicapai maka akan memungkinkan untuk mengetahui apakah tujuan tersebut
telah tercapai atau tidak. Dengan demikian, koreksi-koreksi terhadap
penyimpangan dari tujuan yang telah ditetapkan dapat diketahui secepatnya
sehingga pemborosan dan usaha yang tidak menunjang pencapaian tujuan
dapat dihindari.
3. Memudahkan pelaksanaan kegiatan untuk mengidentifikasi
hambatan-hambatan yang mungkin muncul dalam usaha pencapaian tujuan tersebut.
4. Menghindarkan pertumbuhan dan perkembangan yang tidak terkendali.
selalu menambah jumlah dan jenis tenaga kerja yang sudah dimiliki untuk
memperbaiki mutu serta jumlah output.
2.2 Program Linier
Konsep linear programming ditemukan dan diperkenalkan pertama kali oleh George Dantzig. Program linier merupakan suatu metode untuk membuat
keputusan di antara berbagai aternatif kegiatan dibatasi oleh kendala tertentu.
Keputusan yang diambil dinyatakan sebagai fungsi tujuan sedangkan
kendala-kendala yang dihadapi dalam membuat keputusan tersebut dinyatakan dalam
bentuk fungsi-fungsi kendala. Fungsi tujuan dan fungsi kendala tersebut berupa
fungsi linier, baik dalam bentuk persamaan maupun pertidaksamaan pada
variabel-variabel keputusannya.
Bentuk umum dari permasalahan LP adalah:
Maximum 𝑐𝑐𝑇𝑇𝑥𝑥
Kendala: 𝐴𝐴𝑥𝑥 ≤ 𝑏𝑏 2.1
Beberapa contoh aplikasi LP yang telah berhasil diterapkan dalam bidang
militer, industri, dan sosial adalah:
1. Mengembangkan jadwal produksi yang bertujuan memuaskan konsumen
terhadap produk yang dikonsumsikan dan pada saat yang sama dapat
meminimalisasi biaya produksi dan persediaan.
2. Penentuan kombinasi produk (product-mix), yaitu menentukan produk mana
dari sejumlah alternatif kemungkinan produksi yang dapat memaksimalkan
keuntungan.
3. Penentuan sistim distribusi yang akan meminimalisasi biaya total pengiriman
dengan menggunakan mobil box dari gudang ke berbagai pasar.
4. Menganalisis portofolio investasi dari berbagai alternatif investasi dalam
saham dan obligasi sehingga seorang investor dapat menentukan portofolio
5. Menentuan penjadwalan untuk melakukan aktifitas produksi bagi tenaga kerja
di perusahaan.
2.2.1 Unsur – Unsur Program Linier
Adapun unsur-unsur dalam program linier adalah:
a. Variabel Keputusan
Variabel keputusan adalah variabel yang menguraikan secara lengkap
keputusan-keputusan yang akan dibuat. Variabel keputusan ini tidak negatif.
b. Fungsi Tujuan
Adapun tujuan dalam program linier adalah masalah optimasi yakni tujuan
memaksimumkan atau meminimumkan sesuatu di mana tingkat pencapaian
tujuan ini dibatasi oleh kendala yang mencerminkan keterbatasan yang
dimiliki.
c. Kendala Tujuan
Kendala merupakan batasan-batasan yang harus diperhatikan dalam
penyelesaian program linier. Kendala tersebut dibuat dalam fungsi linier.
2.2.2 Asumsi Dasar Program Linier
Dalam model program linier terdapat asumsi-asumsi yang harus dipenuhi agar
permasalahan program linier menjadi absah, adapun asumsi program linier adalah
sebagai berikut:
1. Asumsi kesebandingan (proposionality)
a. Kontribusi setiap variabel keputusan terhadap fungsi tujuan adalah
sebanding dengan nilai variabel keputusan.
b. Kontribusi suatu variabel keputusan terhadap ruas kiri dari setiap
pembatas juga sebanding dengan nilai variabel keputusan itu.
2. Asumsi penambahan (additivity)
a. Kontribusi setiap variabel keputusan terhadap fungsi tujuan tidak
b. Kontribusi suatu variabel keputusan terhadap ruas kiri dari setiap
pembatas bersifat tidak bergantung pada nilai dari variabel keputusan
yang lain.
3. Asumsi pembagian (divisibility)
Dalam persoalan program linier, variabel keputusan boleh diasumsikan
berupa bilangan pecahan.
4. Asumsi kepastian (certainty)
Setiap parameter, yaitu koefisien fungsi tujuan, ruas kanan, dan koefisien
teknologi, diasumsikan dapat diketahui secara pasti.
2.3 Program Bilangan Bulat Linier
Program bilangan bulat linier (Integer Linear Programming / ILP) adalah bentuk
khusus dari permasalahan program linier di mana pada solusi optimalnya
beberapa atau seluruh variabelnya dibatasi harus berupa bilangan bulat (integer)
tak negatif. ILP digunakan untuk memodelkan permasalahan yang mengandung
variabel keputusan yang harus bernilai integer, misalnya variabel yang
menggambarkan jumlah orang atau jumlah unit produk yang akan diproduksi.
Permasalahan di mana seluruh variabelnya dibatasi harus berupa integer
tak negatif disebut permasalahan program integer linier murni (Pure Integer
Linear Programming / PILP). Jika hanya beberapa variabel saja yang harus bernilai integer, permasalahan ini disebut sebagai permasalahan integer linier
campuran (Mixed Integer Linear Programming / MILP). Dalam suatu kondisi
khusus di mana seluruh variabel keputusan dalam suatu masalah harus bernilai 0
atau 1 maka permasalahan tersebut disebut Binary Integer Linear Programming
(BILP).
Bentuk umum dari ILP adalah:
𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑎𝑎𝑀𝑀𝑎𝑎𝑀𝑀𝑀𝑀𝑛𝑛 ∶ 𝑍𝑍= � 𝑐𝑐𝑗𝑗𝑥𝑥𝑗𝑗
𝑛𝑛
𝐾𝐾𝐾𝐾𝑛𝑛𝐾𝐾𝑀𝑀𝐾𝐾𝑀𝑀: � 𝑀𝑀𝑀𝑀𝑗𝑗𝑥𝑥𝑗𝑗 𝑛𝑛
𝑗𝑗=1
=𝑏𝑏𝑀𝑀
𝑥𝑥𝑗𝑗 ≥ 0
𝑥𝑥𝑗𝑗 ∈ 𝑍𝑍+
𝑀𝑀 = 1,2,3, … ,𝑚𝑚;𝑗𝑗= 1,2,3, … ,𝑛𝑛 2.2 keterangan:
𝑍𝑍 = Fungsi tujuan 𝑥𝑥𝑗𝑗 = Variabel keputusan j
𝑐𝑐𝑗𝑗 = Koefisien dari variabel keputusan j
𝑀𝑀𝑀𝑀𝑗𝑗 = Koefisien dari variabel keputusan dalam kendala ke-i
𝑏𝑏𝑀𝑀 = Sumber daya yang tersedia dalam kendala ke-i
Banyak permasalahan yang dapat dimodelkan sebagai program integer,
misalnya dalam ilmu pengetahuan, teknologi, bisnis dan lingkungan, oleh karena
itu tidak mengherankan bahwa banyak metode penyelesaian dan kode yang
muncul untuk menyelesaikan program integer. Beberapa metode dapat digunakan
untuk seluruh tipe ILP dan beberapa metode hanya diperuntukkan untuk
menyelesaikan suatu masalah ILP tertentu.
Pada dasarnya, solusi integer optimal berada dekat dengan solusi program
linier. Titik-titik yang berada dalam daerah fisibel (feasible region) berupa
titik-titik yang fisibel sebagai koordinat yang bernilai integer disebut integer lattice points. Pemecahan persoalan LP biasa terletak pada batas luar dari daerah fisibelnya, khususnya pada titik-titik ekstrimnya yang disebut vertex.
Misalkan daerah fisibel tersebut dapat diciutkan menjadi convex hull of the
feasible lattice points, di mana convex hull merupakan daerah convex terkecil yang memuat semua titik-titik lattice. Convex hull diperoleh sebagai hasil modifikasi dari persoalan asli dengan jalan menambahkan kendala linier baru.
1. Mencakup setiap pemecahan integer yang fisibel terhadap persoalan asli. Jadi
pemecahan yang menghasilkan bilangan-bilangan bulat atau integer masih
merupakan penyelesaian dari persoalan LP yang asli.
2. Setiap pemecahan dasar dari persoalan baru merupakan pemecahan integer.
Pemecahan dasar optimal dari persoalan yang baru juga merupakan
pemecahan optimal dari permasalahan LP yang asli namun berupa integer.
Dalam prakteknya sukar untuk memotong daerah fisibel menjadi convex
hull of the feasible lattice points sehingga diperlukan metode yang terdiri dari urutan langkah-langkah dengan jalan selalu menambahkan kendala baru terhadap
persoalan asli sebagai kelanjutan dari hasil perhitungan sebelumnya. Konsep
inilah yang diterapkan dalam metode branch and bound, cutting plane dan metode
branch and cut.
2.4 Metode Simpleks
Masalah program linier berkembang pesat setelah ditemukan suatu metode
penyelesaian program linier yaitu metode simpleks yang ditemukan oleh George
Dantzig pada tahun 1947. Permasalahan linier sederhana yang mengandung dua
atau tiga variabel dapat diselesaikan dengan menggunakan metode grafik. Namun
untuk masalah program linier yang mengandung lebih dari tiga variabel, metode
grafik tidak dapat digunakan sehingga diperlukan metode yang dapat digunakan
untuk menyelesaiakan masalah program linier yang rumit. Metode simpleks
adalah metode yang dapat menyelesaiakan masalah program linier dengan jumlah
variabel yang besar.
Penyelesaian model program linier dengan menggunakan metode simpleks
memerlukan pengubahan model formulasi ke dalam bentuk standar dengan syarat
sebagai berikut:
variable. Untuk pertidaksamaan yang dibatasi oleh tanda lebih besar (≥)
diubah ke dalam bentuk persamaan dengan menambahkan surplus variable.
2. Nilai ruas kanan setiap kendala bertanda positif, jika nilai ruas kanan dari
suatu kendala bertanda negative maka harus diubah menjadi positif dengan
mengalikan pertidaksamaan dengan -1.
3. Semua variabel keputusan bernilai nonnegatif.
Ada beberapa istilah yang sangat sering digunakan dalam metode
simpleks, di antaranya:
1. Iterasi adalah tahapan perhitungan di mana nilai dalam perhitungan itu
tergantung dari nilai tabel sebelumnya.
2. Variabel nonbasis adalah variabel yang nilainya diatur menjadi nol pada
sembarang iterasi. Dalam terminologi umum, jumlah variabel nonbasis selalu
sama dengan derajat bebas dalam sistim persamaan.
3. Variabel basis merupakan variabel yang nilainya bukan nol pada sembarang
iterasi. Pada solusi awal, variabel basis merupakan variabel slack (jika fungsi
kendala merupakan pertidaksamaan ≤ ) atau variabel buatan (jika fungsi
kendala menggunakan pertidaksamaan ≥ atau =). Secara umum, jumlah
variabel basis selalu sama dengan jumlah fungsi pembatas (tanpa fungsi non
negatif).
4. Solusi atau nilai kanan merupakan nilai sumber daya pembatas yang masih
tersedia. Pada solusi awal, nilai kanan atau solusi sama dengan jumlah
sumber daya pembatas awal yang ada, karena aktivitas belum dilaksanakan.
5. Variabel slack adalah variabel yang ditambahkan ke model matematika kendala untuk mengkonversikan pertidaksamaan ≤ menjadi persamaan (=).
Penambahan variabel ini terjadi pada tahap inisialisasi. Pada solusi awal,
variabel slack akan berfungsi sebagai variabel basis.
6. Variabel surplus adalah variabel yang dikurangkan dari model matematika kendala untuk mengkonversikan pertidaksamaan ≥ menjadi persamaan (=).
Penambahan ini terjadi pada tahap inisialisasi. Pada solusi awal, variabel
7. Variabel buatan adalah variabel yang ditambahkan ke model matematika
kendala dengan bentuk ≥ atau = untuk difungsikan sebagai variab el basis
awal. Penambahan variabel ini terjadi pada tahap inisialisasi. Variabel ini
harus bernilai 0 pada solusi optimal, karena kenyataannya variabel ini tidak
ada. Variabel hanya ada di atas kertas.
8. Kolom pivot (kolom kerja) adalah kolom yang memuat variabel masuk.
Koefisien pada kolom ini akan menjadi pembagi nilai kanan untuk
menentukan baris pivot (baris kerja).
9. Baris pivot (baris kerja) adalah salah satu baris dari antara variabel basis yang
memuat variabel keluar.
10. Elemen pivot (elemen kerja) adalah elemen yang terletak pada perpotongan
kolom dan baris pivot. Elemen pivot akan menjadi dasar perhitungan untuk
tabel simpleks berikutnya.
2.4.1 Langkah-Langkah Metode Simpleks
Algoritma metode simpleks untuk persoalan maksimasi:
1. Konversikan formulasi model program linier ke dalam bentuk standar.
2. Cari Solusi Basis Feasible (BFS).
3. Jika seluruh variabel nonbasis (NBV) mempunyai koefisien nonnegatif
(artinya berharga positif atau nol) pada baris fungsi tujuan [baris persamaan 𝑍𝑍 yang biasa disebut baris 0 atau baris (𝑍𝑍𝑗𝑗 − 𝐶𝐶𝑗𝑗)], maka BFS sudah optimal.
Jika pada baris 0 masih ada variabel dengan koefisien negatif, pilihlah salah
satu variabel yang mempunyai paling negatif pada baris 0 itu. Variabel ini
akan memasuki status variabel basis, karena itu variabel ini disebut sebagai
variabel yang masuk basis (entering variable, disingkat EV).
4. Hitung rasio dari ruas kanan atau (koefisien EV) pada setiap baris di mana
EV mempunyai koefisien positif. Variabel basis pada baris pembatas dengan
rasio positif terkecil akan berubah status menjadi variabel nonbasis. Variabel
ini kemudian disebut sebagai variabel yang meninggalkan basis (leaving
5. Lakukan operasi baris elementer (ERO) untuk membuat koefisien EV pada
baris dengan rasio positif terkecil ini menjadi bernilai 1 dan bernilai 0 pada
baris-baris lainnya.
6. Kembali ke langkah 3.
2.5 Metode Dual Simpleks
Apabila pada suatu iterasi diperoleh persoalan program linier yang sudah
optimum (berdasarkan kondisi optimalitas), tetapi belum fisibel (ada pembatas
nonnegatif yang tidak terpenuhi), maka persoalan tersebut harus diselesaikan
dengan menggunakan metode dual Simpleks. Syarat digunakannya metode ini
adalah bahwa seluruh pembatas harus merupakan ketidaksamaan yang bertanda
(≤), sedangkan fungsi tujuan bisa berupa maksimasi atau minimasi.
Pada dasarnya metode dual Simpleks ini menggunakan tabel yang sama
seperti metode simpleks pada primal, tetapi leaving dan entering variable-nya ditentukan sebagai berikut:
1. Leaving variable (kondisi fisibilitas)
Yang menjadi leaving variable pada dual Simpleks adalah variabel basis yang
memiliki harga negatif terbesar. Jika semua variabel basis telah berharga
positif atau nol, berarti keadaan fisibel telah tercapai.
2. Entering variable (kondisi optimalitas)
a. Tentukan perbandingan (rasio) antara koefisien persamaan z dengan
koefisien persamaan leaving variable. Abaikan penyebut yang positif
atau nol. Jika semua penyebut berharga positif atau nol, berarti persoalan
yang bersangkutan tidak memiliki solusi fisibel.
b. Untuk persoalan minimasi, entering variable adalah variabel dengan
rasio terkecil, sedangkan persoalan maksimasi, entering variable adalah
2.6 Metode Branch and Bound
Metode branch and bound pertama kali dkembangkan pada tahun 1960 oleh Land
dan G. Doig yang digunakan untuk menyelesaikan masalah mixed integer linear programming dan pure integer linear programming secara umum. Selanjutnya pada tahun 1965 E. Balas mengembangkan algoritma tambahan untuk
menyelesaiakan masalah binary integer linear programming.
Metode branch and bound awalnya hanya digunakan untuk menyelesaikan
masalah program integer. Setelah diteliti lebih lanjut, ternyata metode ini juga
dapat digunakan untuk menyelesaikan masalah lainnya seperti traveling salesman
problem, scheduling dan sebagainya. Ide mendasar dari metode ini adalah membagi daerah layak menjadi beberapa sub-bagian yang mengandung titk-titik
fisibel dengan koordinat integer dengan menambahkan kendala tambahan
kemudian menyelesaikannya.
Untuk menyelesaikan suatu masalah program integer dengan
menggunakan metode branch and bound, langkah pertama adalah mengabaikan
kendala integer dari permasalahan awal sehingga terbentuk permasalahan LP
relaksasi kemudian diselesaikan. Banyak metode yang dapat digunakan untuk
menyelesaiakan permasalahan LP relaksasi. Namun, metode yang umum
digunakan adalah metode simpleks. Jika permasalahan tersebut tidak mempunyai
penyelesaian optimum yang bernilai integer, maka dua kendala baru dibentuk.
Kendala tersebut adalah batas atas dan bawah dari variabel yang dibatasi harus
bernilai integer namun belum bernilai integer.
Konsep dasar dari metode branch and bound adalah pengamatan terhadap
tiap-tiap nilai 𝑥𝑥𝑗𝑗, di mana 𝑥𝑥𝑗𝑗 adalah variabel yang dibatasi harus bernilai integer.
Jika nilai 𝑥𝑥𝑗𝑗 belum integer, maka masalah awal dibagi menjadi dua masalah baru
dengan menambahkan dua kendala baru yaitu, �𝑥𝑥𝑗𝑗� ≤ 𝑥𝑥𝑗𝑗 dan 𝑥𝑥𝑗𝑗 ≤ �𝑥𝑥𝑗𝑗�+ 1 di
mana �𝑥𝑥𝑗𝑗� adalah integer terdekat yang lebih kecil dari 𝑥𝑥𝑗𝑗. Proses inilah yang
pencabangan masalah akan mengakibatkan berkurangnya nilai fungsi tujuan pada
solusi optimal.
Sebagai salah satu hasil pencabangan variabel yang belum integer pada
setiap cabang, satu dari dua kejadian berikut akan terjadi. Yang pertama, solusi
yang diperoleh tidak memenuhi syarat integer dari variabel yang dicabangkan, dan
memperoleh nilai fungsi objektif yang kurang sesuai dibandingkan dengan
pencabangan lain yang semua solusinya sudah integer, dalam kasus ini
pencabangan dilanjutkan. Yang kedua, mungkin diperoleh solusi lain yang sudah
memenuhi syarat integer, dalam kasus ini pencabangan dihentikan.
Terdapat dua tahap yang dipakai dalam algoritma branch and bound,
yaitu:
1. Pencabangan, yaitu mempartisi masalah tersebut menjadi beberapa
sub-masalah dengan cara menambahkan kendala yang merupakan syarat perlu
untuk mencari solusi integer fisibel tanpa mengubah himpunan solusi integer
semula.
2. Pembatasan, yaitu nilai fungsi objektif dari suatu sub-masalah yang
mempunyai solusi integer dipakai sebagai batas nilai fungsi objektif dari
sub-masalah lainnya.
Branch and bound adalah algoritma yang paling umum digunakan untuk menyelesaikan masalah integer programming. Algoritma branch and bound juga
telah banyak digunakan sebagai kode program computer, misalnya OSL,
LAMPU, dan LINDO.
Berikut ini adalah langkah-langkah penyelesaian suatu masalah
maksimisasi dengan metode branch and bound:
1. Selesaikan masalah program linier relaksasi dengan metode simpleks.
2. Teliti solusi optimalnya, jika variabel keputusan yang diharapkan adalah
integer, solusi optimum integer telah tercapai. Jika satu atau lebih variabel
3. Jadikan solusi pada penyelesaian langkah 1 menjadi batas atas dan untuk
batas bawahnya merupakan solusi yang variabel keputusannya telah
dibulatkan (rounded–down).
4. Pilih variabel yang mempunyai nilai pecahan terbesar (artinya bilangan
desimal terbesar) dari masing-masing variabel untuk dijadikan pencabangan
ke dalam sub-masalah. Tujuannya adalah untuk menghilangkan solusi yang
tidak memenuhi persyaratan integer dalam masalah itu. Pencabangan itu
dilakukan secara mutually exclusive untuk memenuhi persyaratan integer
dengan jaminan tidak ada solusi fisibel (layak) yang diikutsertakan.
5. Untuk setiap sub-masalah, nilai optimum fungsi tujuan ditetapkan sebagai
batas atas. Solusi optimum yang dibulatkan menjadi batas bawah (solusi yang
sebelumnya tidak bulat kemudian dibulatkan). Sub-masalah yang memiliki
batas atas kurang dari batas bawah yang ada, tidak diikutsertakan pada analisa
selanjutnya. Suatu solusi integer fisibel (layak) adalah sama baik atau lebih
baik dari batas atas untuk setiap sub-masalah yang dicari. Jika solusi yang
demikian terjadi, suatu sub-masalah dengan batas atas terbaik dipilih untuk
dicabangkan. Kembali ke langkah 4.
2.7 Metode Cutting Plane
Metode cutting plane yang digunakan untuk menyelesaikan masalah secara
umum, pertama kali dikemukakan oleh Gomory (1963). Metode cutting plane merupakan metode yang digunakan untuk menyelesaikan program integer linier,
baik integer murni maupun campuran dengan penambahan batasan baru yang
disebut gomory. Batasan gomory diberikan jika nilai dari variabel keputusan belum integer (bernilai pecahan). Batasan-batasan tersebut secara efektif akan
menyingkirkan beberapa ruang penyelesaian yang tidak berisi titik integer yang
layak, tetapi tidak pernah menyingkirkan satupun titik integer yang layak (Taha,
1996).
1. Selesaikan masalah program integer dengan menggunakan metode simpleks.
Masalah sederhana dapat diselesaikan dengan pendekatan grafik, sehingga
pendekatan gomory kurang efisien.
2. Periksa solusi optimum. Jika semua variabel basis memiliki nilai integer,
solusi optimum integer telah diperoleh dan proses solusi telah berakhir. Jika
satu atau lebih variabel basis masih meiliki nilai pecah, teruskan ke tahap 3.
3. Buatlah suatu batasan gomory dan cari solusi optimum melalui prosedur dual
Simpleks. Kembali ke tahap 2 (Taha, 1996).
Misalnya diberikan sebuah permasalahan integer programming berikut:
Tabel 2.1 Tabel Optimum Masalah Program Linier
Basis 𝑥𝑥1 … 𝑥𝑥𝑀𝑀 … 𝑥𝑥𝑚𝑚 𝑤𝑤1 … 𝑤𝑤𝑗𝑗 … 𝑤𝑤𝑛𝑛 Hasil
Tentukan baris sumber dengan menentukan baris variabel keputusan yang
akan dibulatkan. Jika lebih dari satu, dipilih nilai pecahan terbesar.
Disimpulkan bahwa 0 <𝑓𝑓𝑀𝑀 < 1 dan 0 <𝑓𝑓𝑀𝑀𝑗𝑗 < 1, yang mana 𝑓𝑓𝑀𝑀 dan 𝑓𝑓𝑀𝑀𝑗𝑗
adalah pecahan positif, sehingga:
𝑥𝑥𝑀𝑀 = 𝛽𝛽𝑀𝑀− � 𝛼𝛼𝑀𝑀𝑗𝑗𝑤𝑤𝑗𝑗
Persamaan 2.4 haruslah integer yang berakibat sisi kiri juga harus integer. Karena
𝑓𝑓𝑀𝑀𝑗𝑗 ≥0 dan 𝑤𝑤𝑗𝑗 ≥0 untuk semua i dan j maka:
batasannya dapat ditulis dalam bentuk:
𝑆𝑆𝑔𝑔𝑀𝑀 =� 𝑓𝑓𝑀𝑀𝑗𝑗𝑤𝑤𝑗𝑗
𝑛𝑛
𝑗𝑗=1
− 𝑓𝑓𝑀𝑀
atau,
Tabel 2.2 Setelah Penambahan Pemotongan Fraksional
Basis 𝑥𝑥1 … 𝑥𝑥𝑀𝑀 … 𝑥𝑥𝑚𝑚 𝑤𝑤1 … 𝑤𝑤𝑗𝑗 … 𝑤𝑤𝑛𝑛 𝑆𝑆𝑔𝑔𝑀𝑀 Hasil
di mana 𝑆𝑆𝑔𝑔𝑀𝑀 adalah variabel slack nonnegatif yang berdasarkan definisinya
haruslah integer. Persamaan batasan ini mendefinisikan pemotong fraksional. Dari
Tabel 2.2 𝑤𝑤𝑗𝑗 = 0 dan 𝑆𝑆𝑔𝑔𝑀𝑀 =−𝑓𝑓𝑀𝑀 tidak layak. Ini berarti bahwa batasan baru
tersebut tidak dipenuhi oleh solusi yang diberikan. Metode dual Simpleks dapat
dipergunakan untuk mengatasi ketidaklayakan ini yang setara dengan memotong
bidang solusi ke arah solusi integer optimal.
Jika solusi baru (setelah menerapkan metode dual Simpleks) adalah integer,
proses berakhir. Jika tidak, sebuah gomory baru ditambahkan dari tabel yang dihasilkan dan metode dual Simpleks kembali digunakan untuk mengatasi
ketidaklayakan. Prosedur ini dilakukan sampai solusi integer dicapai. Jika di salah
satu iterasi metode dual Simpleks menunjukkan bahwa tidak ada solusi layak,
2.8 Metode Branch and Cut
Banyak permasalahan optimisasi dapat diformulasikan sebagai masalah Integer Linear Programming (ILP). Masalah tersebut dapat diselesaikan dengan metode branch and bound dan metode branch and cut. Algoritma metode branch and cut dibuat dari kombinasi metode cutting-plane dengan metode branch and bound.
Prosedur metode branch and cut adalah menyelesaikan rangkaian relaksasi program linier dari masalah integer linear programming. Metode cutting plane
memperbaharui relaksasi dari masalah untuk lebih mendekati penyelesaian berupa
integer, dan metode branch and bound memproses dengan membagi dan menyelesaikan (devide and conquer) masalah.
Misalkan bahwa titik 𝑥𝑥∗ adalah solusi layak untuk linear programming. Jika 𝑥𝑥∗ berada pada daerah integral, maka 𝑍𝑍 merupakan solusi optimal untuk integer
linear programming sudah diperoleh. Jika tidak, maka nilai fungsi objektif merupakan batas atas dari nilai optimum, tetapi dibutuhkan penyelesaian lebih
lanjut untuk memperoleh nilai optimum berupa integer. Dengan penambahan
bidang pemotongan (cutting plane) atau membagi masalah tersebut menjadi
bagian-bagian masalah (branch).
Mitchell (1999) menjelaskan bahwa secara umum algoritma branch and
cut adalah sebagai berikut:
1. Inisialisasi: nyatakan persoalan awal ke dalam bentuk ILP0 dan titik-titik aktif
menjadi 𝐿𝐿= {𝐼𝐼𝐿𝐿𝐼𝐼0}. Tetapkan batas bawah menjadi 𝑧𝑧= −∞. Tetapkan 𝑧𝑧𝐾𝐾 = +∞ untuk sebuah persoalan 𝐾𝐾 ∈ 𝐿𝐿.
2. Penghentian proses: jika 𝐿𝐿= ∅ maka solusi 𝑥𝑥∗ yang menghasilkan nilai 𝑧𝑧
objektif yang terbaik merupakan solusi optimal. Jika tidak ditemukan 𝑥𝑥∗
(misalnya, 𝑧𝑧=−∞) maka ILP tidak layak.
3. Pemilihan masalah: pilih dan hilangkan masalah 𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾 dari L.
4. Relaksasi: selesaikan relaksasi program linier dari 𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾. Jika relaksasi tidak layak, tetapkan 𝑧𝑧𝐾𝐾 = −∞ dan lanjut ke langkah 6. Misalkan 𝑧𝑧 merupakan nilai
5. Tambahkan bidang pemotongan: jika diinginkan carilah bidang pemotongan
yang akan memenuhi 𝑥𝑥𝐾𝐾𝑙𝑙, jika sudah ditemukan, tambahkan bidang
pemotongan tersebut pada relaksasi dan kembali ke langkah 4.
6. Pengukuran dan pemangkasan:
a. Jika 𝑧𝑧𝐾𝐾 ≤ 𝑧𝑧 kembali ke langkah 2.
b. Jika 𝑧𝑧𝐾𝐾 > 𝑧𝑧 dan 𝑥𝑥𝐾𝐾𝑙𝑙 adalah integer yang layak, perbaharui nilai 𝑧𝑧 dengan
melakukan teknik rounded down berdasarkan nilai 𝑧𝑧𝐾𝐾, kemudian buang
dari L seluruh masalah di mana 𝑧𝑧𝐾𝐾 ≤ 𝑧𝑧, dan lanjut ke langkah 2.
7. Pemilihan: misalkan �𝑆𝑆𝐾𝐾𝑗𝑗�
𝑗𝑗=1
𝑗𝑗=𝑀𝑀
adalah partisi dari kumpulan kendala 𝑆𝑆𝐾𝐾 dari
masalah 𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾. Tambahkan permasalahan �𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾𝑗𝑗�
𝑗𝑗=1
𝑗𝑗=𝑀𝑀
ke dalam L, di mana
𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾𝑗𝑗 adalah 𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾 dengan daerah layak yang terbatas pada 𝑆𝑆𝐾𝐾𝑗𝑗 dan 𝑧𝑧
𝐾𝐾𝑗𝑗 di mana
𝑗𝑗 = 1, … ,𝑀𝑀 ditetapkan ke dalam nilai 𝑧𝑧𝐾𝐾 untuk permasalahan induk.
di mana:
ILP0 = Bentuk ILP dari permasalahan awal
𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾 = Bentuk ILP dari sebuah permasalahan l∈L
L = Himpunan titik-titik aktif dari persoalan ILP
𝑧𝑧𝐾𝐾 = Batas atas dari nilai fungsi tujuan suatu sub-masalah l∈L
z = Batas bawah dari nilai fungsi tujuan
x* = Solusi dari suatu sub-masalah
𝑥𝑥𝐾𝐾𝑙𝑙 = Solusi optimal dari suatu sub-masalah
𝑆𝑆𝐾𝐾 = Kendala dari masalah 𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾
�SLj� J=1 J=k
= Partisi dari kumpulan kendala 𝑆𝑆𝐾𝐾 Dari masalah 𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾
𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾𝑗𝑗 = 𝐼𝐼𝐿𝐿𝐼𝐼𝐾𝐾 dengan daerah layak yang terbatas pada 𝑆𝑆𝐾𝐾𝑗𝑗 dan 𝑧𝑧
𝐾𝐾𝑗𝑗 di mana
j = 1, … , k
Pada algoritma branch and cut, diberikan L yang merupakan himpunan titik aktif pada pencabangan branch and cut. Nilai objektif terbaik yang diperoleh
dari titik layak dinotasikan sebagai 𝑧𝑧. Lebih lanjut, 𝑧𝑧𝐾𝐾 adalah batas atas nilai
memperbaharui 𝑧𝑧𝐾𝐾. Dalam beberapa kondisi, sejumlah cutting plane ditemukan pada langkah 5, biasanya cutting plane yang diperoleh dipilah dan yang ditambahkan pada persamaan adalah subsetnya. Sub-masalah yang terbentuk pada
langkah 7 disebut sub-masalah anak dan sub-masalah pada node sebelumnya
sebagai sub-masalah induknya. Biasanya pembagian masalah tersebut
menggunakan bentuk dari variabel penghubung 𝑥𝑥𝑀𝑀 ≤ 𝑀𝑀 dan 𝑥𝑥𝑀𝑀 ≥ 𝑀𝑀 untuk suatu variabel 𝑥𝑥𝑀𝑀 dan a merupakan integer. Kendala-kendala tersebut dapat diselesaikan
dengan berbagai metode untuk ILP. Secara khusus pada langkah awal
diselesaikan dengan metode simpleks, jawaban berikutnya diperoleh dengan
metode dual Simpleks. Solusi dual untuk jawaban sub-masalah akhir adalah layak
untuk sub-masalah awal. Lebih lanjut, ketika pemotongan (cut) ditambahkan pada
langkah 5, juga memanfaaatkan iterasi dual Simpleks untuk mendapatkan solusi
optimal yang integer. Cutting plane yang ditambahkan pada salah satu vertex dari
pohon branch and cut mungkin tidak berlaku untuk sub-masalah lain. Dalam hal