Metode branch-and-cut untuk menyelesaikan permasalahan rute kendaraan berkapasitas - USD Repository

  

METODE BRANCH-AND-CUT UNTUK MENYELESAIKAN

PERMASALAHAN RUTE KENDARAAN BERKAPASITAS

Skripsi

Diajukan untuk Memenuhi Salah

  

Satu Syarat Memperoleh Gelar Sarjana Sains

Program Studi Matematika

Disusun Oleh :

Victor

  

NIM : 063114001

PROGRAM STUDI MATEMATIKA JURUSAN MATEMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

  

BRANCH AND CUT METHOD TO SOLVE CAPACITATED VEHICLE

ROUTING PROBLEMS

Thesis

Presented as Partial Fulfillment of the Requirements

  

To Obtain The Sarjana Sains

In Mathematics

By :

Victor

  

Student Number : 063114001

MATHEMATICS STUDY PROGRAM MATHEMATICS DEPARTMENT

SCIENCE AND TECHNOLOGY FACULTY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

HALAMAN PERSEMBAHAN

  Kupersembahkan untuk Papa dan mama

Keluargaku tercinta

  ABSTRAK

  Permasalahan rute kendaraan berkapasitas (CVRPCapacitated Vehicle Routing

  

Problems) adalah permasalahan pengiriman dimana setiap konsumen hanya

  dilayani satu kali, kendaraan yang digunakan identik, hanya terdapat satu sumber, dan terdapat batasan kapasitas pada kendaraan dengan tujuan utama adalah peminimalan total biaya. Dalam penulisan ini akan diperkenalkan suatu metode iterasi untuk menyelesaikan permasalahan di atas, yaitu metode branch-and-cut. Metode branch-and-cut adalah suatu metode iterasi yang digunakan untuk menyelesaikan permasalahan program linear bilangan bulat dengan menyelesaikan permasalahan program linear relaksasi lalu menambahkan kendala

  

cuts dan membuat percabangan jika hasil yang didapat bukan bilangan bulat

  sampai pada setiap percabangannya menghasilkan bilangan bulat atau tidak mempunyai penyelesaian. Metode branch-and-cut merupakan kombinasi dari dua metode, yaitu metode branch-and-bound dan metode cutting plane.

  

ABSTRACT

  Capacitated vehicle routing problems is distribution problem where each costumer is served once, vehicle that is used are identical, there is only one depot, and only the capacity restriction for the vehicle are imposed and the objective is to minimize the total cost. In this thesis will be introduced a iterate method to solve above problems, which is branch-and-cut method. Branch-and-cut method is a iterate method which is used to solve integer linear programming by solving the relaxation linear programming then add new cuts constraint and make branching if the solution is not integer, until in each branching has integer solution or has not any solution. Branch-and-cut method is a combination from two methods, which is branch-and-bound method and cutting plane method.

KATA PENGANTAR

  Segala puji dan syukur, penulis panjatkan kepada Tuhan Yesus Kristus, sang Juru Selamat, sehingga karena kasih dan karunia-Nya skripsi ini dapat terselesaikan tepat waktu.

  Dalam penyusunan skripsi ini penulis membutuhkan bantuan dari berbagai pihak. Oleh karena itu, pada kesempatan ini ingin mengucapakan terima kasih atas segala segala bimbingan, bantuan, dorongan dan kerjasama yang telah diberikan sehingga skripsi ini dapat terselesaikan dengan baik, kepada:

  1. Ibu Lusia Krismiyati Budiasih, S.Si., M.Si., selaku dosen pembimbing dan Kaprodi Matematika FST-USD yang dengan rendah hati mau meluangkan banyak waktu luang dan penuh kesabaran telah membimbing selama penyusunan skripsi ini dari awal hingga akhir.

  2. Ibu Ch. Enny Murwaningtyas, S.Si., M.Si., selaku dosen penguji yang telah memberikan saran dan kritik dalam skripsi ini.

  3. Bapak St. Eko Hari Parmadi, S.Si., M.Kom., selaku dosen penguji yang telah memberikan saran dan kritik dalam skripsi ini.

  4. Papa, mama, kakak-kakakku, dan keluargaku atas kasih sanyang, doa, semangat, dan dukungannya.

  5. Sahabat-sahabatku seperjuangan angkatan 2006, terima kasih atas semangat dan dukungannya.

  6. Teman-teman kost, terima kasih atas saran-saran dan bantuannya.

  7. Semua pihak yang telah membantu penulisan skripsi ini yang tidak dapat penulis sebutkan satu persatu.

  Tak ada gading yang tak retak, penulis menyadari kekurangan dalam skripsi ini, untuk itu saran serta kritik sangat diharapkan dalam peningkatan kualitas skripsi ini, dan akhirnya penulis berharap semoga skripsi ini dapat bermanfaat bagi semua pihak.

  Yogyakarta, Juni 2010 Penulis

  

DAFTAR ISI

  Halaman HALAMAN JUDUL ........................................................................................ i HALAMAN JUDUL DALAM BAHASA INGGRIS ..................................... ii HALAMAN PERSETUJUAN PEMBIMBING .............................................. iii HALAMAN PENGESAHAN .......................................................................... iv PERNYATAAN KEASLIAN KARYA .......................................................... v HALAMAN PERSEMBAHAN ...................................................................... vi LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ........................................................ vii ABSTRAK ....................................................................................................... viii ABSTRACT ..................................................................................................... ix KATA PENGANTAR ..................................................................................... x DAFTAR ISI .................................................................................................... xii DAFTAR GAMBAR ....................................................................................... xiv BAB I. PENDAHULUAN ...............................................................................

  1 A. Latar Belakang Masalah .......................................................................

  1 B. Perumusan Masalah .............................................................................

  3 C. Batasan Masalah ..................................................................................

  3 D. Tujuan Penulisan ..................................................................................

  4 E. Metode Penulisan .................................................................................

  4 F. Manfaat Penulisan ................................................................................

  4 G. Sistematika Penulisan ..........................................................................

  4

  BAB II. METODE BRANCH-AND-BOUND DAN CUTTING PLANE .........

  6 A. Matriks dan Operasi Baris Elementer ..................................................

  6 B. Program Linear.....................................................................................

  8 C. Metode Simpleks yang Diperbaharui ...................................................

  16 D. Metode Branch-and-bound ..................................................................

  22 E. Metode Cutting plane ...........................................................................

  36 BAB III. METODE BRANCH-AND-CUT PADA PERMASALAHAN RUTE KENDARAAN BERKAPASITAS ......................................................

  47 A. Permasalahan Rute Kendaraan Berkapasitas (Capacitated Vehicle Routing

Problems - CVRP) ................................................................................

  47 B. Metode Branch-and-cut .......................................................................

  54 C. Perbandingan Metode Branc- and-Cut, Cutting plane, dan Branc-and-

Bound. ..................................................................................................

  66 BAB IV. APLIPAKSI METODE BRANCH-AND-CUT DALAM MASALAH PENDISTRIBUSIAN BUSA PADA PABRIK “Sari Guna” ..............

  84 BAB V. PENUTUP

  A. Kesimpulan .......................................................................................... 101

  B. Saran ..................................................................................................... 102 DAFTAR PUSTAKA ...................................................................................... 103 LAMPIRAN ..................................................................................................... 104

  DAFTAR GAMBAR Halaman Gambar 2.4.1. Algoritma Metode Branch-and-bound .....................................

  26 Gambar 2.5.1 Algoritma Metode Cutting plane ..............................................

  39 Gambar 3.2.1. Algoritma Metode Branch-and-cut ..........................................

  57 Gambar 4.1.1. Graf permasalahan distribusi di pabrik busa “Sari Guna” .......

  85 Gambar 4.1.2. Nama busur-busur pada permasalahan Pabrik “Sari Guna” .....

  86

BAB I PENDAHULUAN A. Latar Belakang Masalah Berkembangnya sebuah perusahaan yang memproduksi barang dapat

  menyebabkan perusahaan perlu melakukan perluasan bidang usaha. Dengan adanya perluasan bidang usaha, perusahaan dituntut untuk dapat memenuhi kebutuhan konsumen yang ada. Hal ini mengakibatkan biaya operasi perusahaan semakin besar, terutama pada bidang pengiriman barang. Oleh sebab itu, belakangan ini banyak terlihat peningkatan kegunaan dari pengoptimalan pengiriman barang yang berbasis pada riset operasi dan pemograman matematika. Banyak perusahaan-perusahaan menggunakan pengoptimalan untuk masalah perencanaan pengiriman barang dan dapat menghemat antara 5% sampai 20% dari total biaya pengiriman itu sendiri (Paolo T, 2002). Permasalahan seperti pengiriman barang dari produsen kepada konsumen seperti ini secara umum disebut permasalahan rute kendaraan (Vehicle Routing Problem).

  Dengan menggunakan metode jaringan yang ada pada riset operasi, pengiriman barang biasanya digambarkan menggunakan graf dengan anak panah dan simpul. Anak panah menggambarkan jalan atau rute yang dapat dilewati. Tidak semua anak panah dapat langsung dilewati begitu saja menuju konsumen, ini semua tergantung dari apakah rute tersebut hanya dapat dilewati satu arah saja atau dapat dilewati dua arah. Setiap anak panah mempunyai nilainya masing- masing yang mungkin dapat diartikan sebagai ongkos atau secara umum sering dianggap sebagai panjang atau waktu tempuh rute tersebut. Simpul menggambarkan tempat-tempat yang dilewati sewaktu mengirimkan barang dan simpul terakhir biasanya diartikan sebagai konsumen atau tempat terakhir pengiriman barang tersebut.

  Permintaan-permintaan yang diajukan konsumen dapat berbeda-beda dan harus dipenuhi. Beberapa bentuk permintaan yang mungkin diajukan konsumen antara lain adalah banyaknya barang yang mungkin berbeda-beda dan konsumen dapat dilayani yang dikarenakan konsumen sedang tidak ada ditempat, adanya batasan waktu yang diberikan konsumen untuk memenuhi permintaannya, dan banyaknya kendaraan yang bisa dipakai untuk melayani konsumen. Terkadang setiap permintaan konsumen tidak dapat dipenuhi seutuhnya atau tidak sama sekali. Untuk menghadapi hal seperti ini prioritas atau pinalti yang berhubungan dengan keterbatasan pengiriman dapat diberikan kepada konsumen.

  Permintaan-permintaan konsumen dilayani oleh perusahaan menggunakan kendaraan. Kendaraan disini mempunyai karakteristik yang berbeda-beda bergantung pada keperluan konsumen. Beberapa karakteristik dari kendaraan tersebut adalah sumber (home depot) dan kemungkinan berakhir ditempat lain setelah menyelesaikan masalah, kapasitas kendaraan yang mengekspresikan berat atau volum atau banyaknya barang yang dapat dibawa sebuah kendaraan, jenis barang yang dapat diangkut oleh sebuah kendaraan, jalan yang mana yang bisa dilalui oleh sebuah kendaraan, dan biaya yang dikenakan pada kendaraan (jarak, waktu, jalan, dll).

  Melihat adanya berbagai macam permintaan dari konsumen dan karakteristik yang ada pada kendaraan, maka ada banyak masalah pengoptimalan yang timbul yaitu permasalahan rute kendaraan berkapasitas (Capacitated Vehicle

  Routing Problems), yang merupakan bentuk paling dasar dari permasalahan pada

  VRP, distance-constained VRP, VRP dengan Time Windows, VRP dengan Backhauls dan VRP dengan Pickup and Delivery. Dalam penulisan ini hanya akan

  dibahas pada permasalahan rute kendaraan berkapasitas (Capacitated Vehicle Routing Problems).

  Permasalahan rute kendaraan berkapasitas adalah masalah pengoptimalan yang hanya berbasis pada satu tempat awal, permintaan konsumen yang pasti, semua kendaraan yang dipakai adalah identik, dan terdapat batasan kapasitas pada kendaraan. Tujuan dari masalah pengoptimalan di atas adalah untuk meminimumkan total biaya untuk melayani semua komnsumen yang ada.

  Permasalahan rute kendaraan berkapasitas dapat digambarkan dengan graf, dimana semua simpul melambangkan konsumen-konsumen serta anak panah yang melambangkan biaya yang diperlukan dari simpul awal menuju simpul tujuan. Secara umum perjalanan dari suatu simpul menuju simpul yang sama tidak diperbolehkan. Untuk menghindari hal ini didefinisikan biaya perjalanan tersebut adalah ∞ . Setiap konsumen mempunyai suatu bilangan nonnegatife yang menyatakan permintaan yang harus dikirimkan ke konsumen tersebut, sedangkan permintaan untuk sumber adalah 0. Pengiriman barang dilakukan dengan sejumlah kendaraan di sumber yang masing-masing mempunyai kapasitas yang sama. Untuk menjamin adanya daerah yang memenuhi, perlu diasumsikan bahwa setaiap permintaan konsumen tidak lebih dari kapasitas kendaraan

  Dari graf tersebut, Capacitated Vehicle Routing Problem dapat dirumuskan sebagai permasalahan program linear bilangan bulat. Untuk menyelesaikan permasalahan tersebut, dapat menggunakan metode Cutting plane, metode Branch-and-bound, metode Branch-and-cut, metode Set Covering, metode Classical Heuristics, metode Metaheuristics, metode implicit

  

enumeration, dan lain sebagainya. Namun, dalam penulisan ini akan dipaparkan

  metode Branch-and-cut untuk menyelesaikan masalah Capacitated Vehicle Routing Problem.

  B. Perumusan Masalah

  Berdasarkan latar belakang masalah di atas dapat dirumuskan permasalahan sebagai berikut:

  1. Bagaimana cara menentukan solusi optimal Capacitated Vehicle Routing Problem dengan menggunakan metode Branch-and-cut.

  2. Bagaimana algoritma metode Branch-and-cut dan implementasinya menggunakan bahasa pemrogaman MATLAB.

  C. Batasan Masalah

  Pembahasan metode Branch-and-cut dibatasi hanya pada permasalahan rute kendaraan pada kendaraan yang berkapasitas.

  D. Tujuan Penulisan

  Tujuan penulisannya adalah untuk menyelesaikan permasalahan rute kendaraan berkapasitas dengan menggunakan metode Branch-and-cut dan untuk menyusun algoritma Branch-and-cut menggunakan bahasa pemrograman MATLAB.

  E. Metode Penulisan

  Metode penulisan ini menggunakan metode studi pustaka, yaitu dengan menggunakan buku-buku pendukung yang berkitan dengan metode Branch-and-

  cut dan menuliskan programnya dengan bahasa pemrograman MATLAB.

  F. Manfaat Penulisan

  Manfaat penulisan ini adalah untuk memperoleh pengetahuan tentang metode Branch-and-cut dalam menyelesaikan permasalahan rute kendaraan berkapasitas serta pemrogramannya dengan bahasa pemrograman MATLAB.

  G. Sistematika Penulisan

BAB I PENDAHULUAN A. Latar Belakang Masalah B. Perumusan Masalah C. Batasan Masalah D. Tujuan Penulisan E. Metode Penulisan F. Manfaat Penulisan G. Sistematika Penulisan BAB II METODE BRANCH-AND-BOUND DAN CUTTING PLANE A. Matriks dan Operasi Baris Elementer B. Program Linear

  D. Metode Branch-and-bound

  E. Metode Cutting plane

BAB III METODE BRANCH-AND-CUT PADA PERMASALAHAN RUTE KENDARAAN BERKAPASITAS A. Permasalahan Rute Kendaraan Berkapasitas (Capacitated Vehicle Routing Problems - CVRP) B. Metode Branch-and-cut C. Perbandingan Metode Branch-and-bound, Cutting plane, dan Branch-and- cut. BAB IV APLIPAKSI METODE BRANCH-AND-CUT DALAM MASALAH PENDISTRIBUSIAN BUSA PADA PABRIK “Sari Guna” BAB V PENUTUP A. Kesimpulan B. Saran

BAB II METODE BRANCH-AND-BOUND DAN CUTTING PLANE A. Matriks dan Operasi Baris Elementer Definisi 2.1.1 Matriks bujur sangkar A berukuran n n

  × mempunyai invers jika ada matriks B sehingga

  AB = BA = I . Matriks B disebut matriks invers dari A. n Teorema 2.1.2

  Jika matriks A berukuran

  n × mempunyai invers, maka untuk sebarang matriks n

  kolom b berukuran n × 1 , sistem persamaan Ax = mempunyai penyelesaian b

  − 1

  tunggal, yaitu x = A b berukuran n × 1 .

  Bukti:

  Karena A mempunyai invers, maka

  Ax b

  =

  − 1 1 A Ax A b

  =

  − 1 Ix = A b1 x = A b

  Selanjutnya akan dibuktikan bahwa Ax = mempunyai penyelesaian tunggal. b Misalkan x dan x merupakan penyelesaian dari sistem persamaan linear, yang 1 2 berarti

  Ax Ax 1 = 2 Ax Ax ο = − 2 1 A(x x ) ο = − 2 1

  − 1 1 A A A(x x ) ο = − 2 1

  = I(xx )

  ο 2 1

  = xx

  ο 2 1 x = x 1 2

  ■

  Definisi 2.1.3

  Matriks yang mempunyai invers disebut matriks tak singular, sedangkan matriks yang tidak mempunyai invers disebut matriks singular.

  Definisi 2.1.4 Operasi baris elementer pada suatu matriks adalah salah satu operasi: 1. Menukar letak dari dua baris tersebut.

  2. Mengalikan suatu baris dengan konstanta tak nol.

  3. Menganti suatu baris dengan hasil penjumlahan baris tersebut dan kelipatan baris lain.

  Definisi 2.1.5

  Sebuah sistem persamaan

  Ax = terdiri dari tiga matriks, yaitu matriks b

  koefisien, A, matriks variabel, x, dan matriks ruas kanan, b. Matriks lengkap adalah matriks yang terdiri dari matriks koefisien dan matriks ruas kanan, yakni .

  A b [ ]

B. Program Linear

  Program linear (Linear Programming - LP) adalah sebuah alat untuk menyelesaikan permasalahan optimisasi. Pada tahun 1947, George Dantzig mengembangkan sebuah metode yang efisien, yaitu metode algoritma simpleks untuk menyelesaikan permasalahan program linear. Sejak pengembangan dari algoritma simpleks, program linear telah banyak dipakai dalam permasalahan optimisasi di dalam berbagai industri yang berbeda-beda, seperti pada perbankan, bidang pendidikan, ilmu kehutanan, bidang perminyakan, dan transportasi.

  Dalam sebuah program linear terdiri dari enam faktor, yang pertama adalah variabel keputusan (decision variable). Dalam program linear, variabel keputusan haruslah dapat menggambarkan secara utuh keputusan apa saja yang harus dibuat. Sebagai contoh, yaitu banyaknya kendaraan yang harus dioperasikan setiap minggunya atau banyaknya pasukan yang diperlukan setiap minggunya.

  Faktor kedua adalah fungsi objektif (objective function). Dalam setiap program linear, keputusan yang dibuat biasanya ingin memaksimalkan (untung) atau meminimalkan (biaya) sebuah fungsi dari variabel keputusan. Fungsi seperti inilah yang disebut sebagai fungsi objektif.

  Faktor ketiga adalah kendala (constraints). Kendala adalah batasan- batasan yang diberikan pada variabel keputusan yang dapat berupa persamaan atau pertidaksamaan dalam variabel keputusan.

  Faktor keempat adalah koefisien teknis (technological coefficients). Koefisien teknis adalah koefisien yang dimiliki oleh variabel keputusan dalam kendala. Mengapa disebut sebagai koefisien teknis, karena koefisien teknis sering mencerminkan teknologi yang dipakai untuk menghasilkan hasil yang berbeda. Sedangkan konstanta yang berada pada ruas kanan persamaan atau pertidaksamaan di dalam kendala yang fungsinya adalah memperlihatkan banyaknya sumber daya yang tersedia disebut RHS (Right Hand Side), dan ini merupakan faktor kelima dalam program linear.

  Faktor keenam adalah tanda batasan (sign restrictions). Fungsi dari tanda batasan ini adalah untuk membatasi apakah variabel keputusan dapat bernilai positif atau negatif, atau variabel keputusan hanya boleh bernilai nonnegatif. Jika variabel keputusan dapat bernilai positif atau negatif, maka dapat dikatakan bahwa variabel keputusan tersebut tidak ada batasan tanda (Unrestricted Sign - sering disingkat dengan urs).

  Dari keenam faktor di atas secara umum sebuah program linear dirumuskan n Maksimumkan/minimumkan z c x

  = j j

  ∑

j =

1 Kendala n a x b 1 j j ≤ = ≥ 1

  ∑ j = 1 n M a x ≤ = ≥ b mj j m

  ∑ j = 1

  dengan z adalah fungsi objektif, x adalah variabel keputusan, j K K K

  a , ( i = ij 1 , , m , j = 1 , , n ) , adalah koefisien teknis, dan b , ( i = i 1 , , m ) , adalah RHS.

  Definisi 2.2.1

  Sebuah fungsi f x , x , K , x disebut fungsi linear jika dan hanya jika untuk

  ( ) 1 2 n

  sembarang konstanta a , a , K , a 1 2 n

  • f x , x , K , x = a x a x L a x

  ( ) 1 2 n 1 1 2 2 n n Definisi 2.2.2

  Untuk sembarang fungsi linear f x , x , K , x dan sembarang bilangan b ,

  ( ) 1 2 n

  pertidaksamaan f ( x , x , K , x ) ≤ b atau f ( x , x , K , x ) ≥ b disebut 1 2 n 1 2 n pertidaksamaan linear .

  Definisi 2.2.3

  Sebuah permasalahan program linear adalah permasalahan pengoptimalan di mana: 1. bertujuan mengoptimalkan (memaksimalkan atau meminimalkan) fungsi objektif.

  2. nilai dari variabel keputusan harus memenuhi setiap kendala yang ada.

  Setiap kendala harus merupakan persamaan linear atau pertidaksamaan linear.

  3. sebuah tanda batasan dihubungkan dengan setiap variabel. Untuk setiap variabel x , tanda batasan yang ditetapkan jika bukan nonnegatif ( x ), i i ≥ maka urs.

  Definisi 2.2.4

  Suatu program linear dikatakan mempunyai penyelesaian jika ada titik yang memenuhi semua kendala yang ada.

  Definisi 2.2.5

Daerah penyelesaian atau daerah layak sebuah program linear adalah himpunan

  dari semua titik-titik yang memenuhi semua kendala atau batasan yang ada pada program linear.

  Definisi 2.2.6

  Untuk permasalahan pemaksimalan (peminimalan), sebuah penyelesaian optimal untuk program linear adalah titik yang berada pada daerah layak yang jika substitusikan pada fungsi objektif menghasilkan nilai yang paling besar (kecil).

  Ada beberapa metode untuk menyelesaikan permasalahan program linear. Metode yang paling sering dipakai adalah metode simpleks. Terdapat beberapa definisi sebelum mengetahui algoritma dari metode simpleks

  Definisi 2.2.7

Variabel dasar (Basic VariableBV) adalah variabel dimana kolom yang

  bersesuaian pada tabel optimum hanya mempunyai satu elemen tak nol dan bernilai satu, sedangkan variabel non dasar (Non-Basic VariableNBV) adalah variabel dimana kolom yang bersesuaian pada tabel optimum mempunyai lebih dari satu elemen tak nol.

  Definisi 2.2.8

  Sebuah penyelesaian dasar untuk A x b didapat dengan mengatur n m = − variabel non dasar (Bukan Variabel Dasar – NBV) = 0 dan mencari nilai m variabel dasar (BV) yang tersisa.

  Metode Simpleks

  Agar sebuah permasalahan program linear dapat diselesaikan menggunakan metode simpleks, permasalahan tersebut haruslah dirubah menjadi bentuk standar.

  Yaitu dengan cara: n 1. Ubah fungsi objektif menjadi zc x = . i i

  

i =

1 2. Mengalikan -1 pada kendala dimana b . i <

  3. Ubah setiap pertidaksamaan linear f x , x , K , x b menjadi j ( ) ≤ 1 2 n j

f x , x , K , x s b , dengan s adalah variabel pengetat.

j

  ( ) + 1 2 n j j = j

  4. Ubah setiap pertidaksamaan linear f x , x , K , xb menjadi j ( ) 1 2 n j K

f ( x , x , , x ) − e = b , dengan e adalah variabel surplus.

j 1 2 n j j j

  5. Tambahkan tanda batasan e , s ( j 1 ,2 , K m ). j j ≥ = Tetapi dengan mengubah kendala pertidaksamaan menjadi kendala persamaan masih terdapat baris yang variabel dasarnya bernilai negatif, yaitu pada persamaan

  f x , x , K , x e b dan mungkin terdapat baris yang tidak mempunyai j ( ) − = 1 2 n j j

  variabel dasar, yaitu pada persamaan f x , x , K , x = b . Untuk mengatasi j ( ) 1 2 n j masalah ini, tambahkan variabel semu a pada setiap persamaan di atas. Tetapi, j setelah menambahkan variabel semu pada persamaan tersebut muncul permasalahan baru yaitu dengan mengambil a dan s sebagai variabel dasar j j menyebabkan x e . Dan jika memasukkan nilai x , tidak akan i j i = = = memenuhi kendala awal,

  f x , x , K , x b b j ( ) ≥ → ≥ 1 2 n j j dan f x , x , K , x = b → = b . j ( ) 1 2 n j j

  Untuk menyelesaikan masalah tersebut, pada permasalahan peminimalan ditambahkan bilangan yang sangat besar M pada fungsi objektif sebagai koefisien dari a , dan pada permasalahan pemaksimalan ditambahkan bilangan j

  M pada fungsi objektif sebagai koefisien dari a . Hal ini dimaksudkan agar

  − j variabel a keluar dari variabel dasar menjadi variabel non dasar. Selanjutnya j dibentuk matriks lengkapnya sebagai berikut:

  

x x L x s s L s e e L e a a L a RHS

1 2 n 1 2 j 1 2 j 1 2 j a a L a

  1 / L 1 / L 1 / L b 11 12 1 n1

  a a L a 21 22 2 n 1 / L − 1 / L 1 / L b 2 M M O M M M O M M M O M M M O M M a a L a L j 1 j 2 jn 1 / L − 1 / L 1 / b j

  − cc L − c L L ± M ± M L ± M 1 2 n

  Setelah mengubah program linear menjadi bentuk standar, lalu dilakukan uji optimalitas, dengan melihat koefisien pada baris ke-0 (baris paling bawah pada matriks lengkap yang merupakan koefisien di fungsi objektif). Pada permasalahan pemaksimalan (peminimalan), jika semua koefisien NBV pada baris ke-0 tak negatif (tak positif), maka bfs yang didapat adalah nilai optimal. Hal ini disebabkan jika salah satu NBV masuk menjadi BV hanya akan mengurangi (menambahkan) nilai z.

  Jika terdapat NBV, x , yang mempunyai koefisien negatif (positif), pilih j

  

NBV yang koefisiennya paling kecil (besar). Dengan memilih koefisien yang

  paling kecil (besar) diharapkan dapat memaksimalkan (meminimalkan) nilai z paling banyak. Untuk menentukan BV mana yang akan keluar, dilakukan uji rasio  

  b

    i yaitu dengan menghitung min , a > 0 . Dipilihnya a > adalah agar NBVijij

  a ij

    yang akan masuk bernilai positif dan diambil yang paling minimum agar saat membentuk variabel dasar yang baru, yaitu dengan melakukan operasi baris elementer berhingga kali, tidak membuat nilai variabel dasar yang lain menjadi

   

  b b b k i k

    negatif. Dengan dipilihnya yang paling minimum, maka .

  − ≥  

  a a a kj ij kj

    Secara umum algoritma metode simpleks untuk permasalahan pemaksimalan (peminimalan) adalah

  1. Mengubah program linear menjadi bentuk standar.

  2. Uji optimalitas.

  3. Menentukan variabel dasar mana yang akan keluar dan variabel non dasar mana yang akan masuk lalu kembali ke langkah ke-2.

  Contoh 2.2.1

  Maksimalkan

  5 x 4 x = 1 2 Kendala 1 + x x2

  • z

  5

  • 10 x
  • 1 6 x2

      45 Penyelesaian

      Iterasi 1 Langkah 1

      Ubah menjadi bentuk standar Maksimalkan

      z

      5 x1 4 xss = 2 1 2 Kendala 1 2 + + x x s = 1

      5 10 x 6 x s

      45 1 2 + + 2 = Dengan tabel awalnya adalah

      x x s s RHS 1 2 1 2

      1

      1

      1

      5

      10

      6

      1

      45

      5

      4 − −

      Langkah 2

      Dapat dilihat bahwa z , s 5 , s 45 merupakan penyelesaian dasar.

      = = = 1 2 Dipilih NBV= x karena x mempunyai koefisien negatif yang paling kecil. 1 1 Rasio x yang paling kecil adalah pada baris kendala ke-2, sehingga dengan 1 menggunakan operasi baris elementer didapat

      x x s s RHS 1 2 1 2 .

      4 1 . 1 .

      5 − 1 . 6 .

      1 4 .

      5 1 .

      5 22 .

      5 − Karena masih terdapat NBV yang negatif, lanjutkan ke langkah ke-2.

      Iterasi 2 Langkah 2 Dipilih NBV= x karena x mempunyai koefisien negatif yang paling kecil. 2 2 Rasio x yang paling kecil adalah pada baris ke-1, dengan menggunakan operasi 2 baris elementer didapat x x s s RHS 1 2 1 2

      1 2 . 5 − .

      25 1 .

      25 1 − 1 . 5 .

      15 3 .

      75 2 . 5 .

      25 23 .

      75 Iterasi 3

      Langkah 2

      Karena tidak ada NBV yang mempunyai koefisien negatif maka penyelesaian dasar z 23 . 75 , x 3 . 75 , x 1 . 25 merupakan penyelesaian optimal. = = = 1 2

    C. Metode Simpleks yang Diperbaharui

      Sebuah program linear dapat juga diselesaikan dengan metode simpleks yang sudah diperbaharui, yaitu dengan mengubahnya menjadi bentuk matriks.

      Perumusan secara umum program linear dalam bentuk matriks adalah Maksimumkan/minimumkan z cx

      = Kendala

      Ax = b x a a L a

          1 11 12 1 n    

      x a a L a

    2

    21 22 2 n

          dengan L , , , dan

      c = [ c c c ] x = A = 1 2 n

       M   M M M     

      x a a L a n m 1 m 2 mn

         

      b

        1  

      b 2

       

      b

      =  

      M  

      b m

        Misalkan N adalah matrik yang bersesuaian dengan koefisien variabel non dasar,

      B adalah matriks yang bersesuain dengan koefisien variabel dasar, x adalah N

      vektor dari variabel non dasar, x adalah vektor dari variabel dasar, c adalah B N vektor koefisien variabel non dasar pada fungsi objektif, dan c adalah vektor B koefisien veariabel dasar pada fungsi objektif. Dengan mengubah matriks A menjadi A N M B , vektor c menjadi c c M c , dan vektor x menjadi

      = [ ] = [ ] N B

      x

        N  

      x = L , maka akan didapat

         xB  

    • =     

      = B )

      ) . Untuk menguji apakah penyelesaian sementara sudah optimal adalah dengan melihat elemen-elemen pada vektor c

      c

      objektifnya akan bertambah sebesar α j

      x bertambah sebesar α , maka nilai dari fungsi

      (2.3.5) Jika nilai dari variabel non dasar j

      ) ) + =

      ∈ x j x , maka N z z x c

      ) yang bersesuaian dengan N

      ) adalah elemen dari vektor ) N B c c ( c 1 − − = B N

      c

      Misalkan j

      ) ) = , dengan b B x 1 −

      [ ] B B N N B N B N z x c x c x x c c

      z x c

      Dengan mensubstitusikan nilai variabel-variabel maka akan didapat penyelesaian sementara, yaitu B B

      − + = (2.3.4)

      z x ) N B c c ( b B c 1 − 1 −

      − + = Atau N B N B

      − −

      z Nx B c b B c x c 1 1

      − = (2.3.3) Dengan mensubstitusikan persamaan (2.3.3) ke persamaan (2.3.1) akan didapat N B B N N

      x , yaitu

    N B

    Nx B b B x 1 − 1 −

      Dari persamaan (2.3.2) dapat dicari nilai dari B

      = L M (2.3.1) dan b Bx Nx = + B N (2.3.2)

          

      ) .

      Teorema 2.3.1

      Pada permasalahan pemaksimalan (peminimuman), penyelesaian sementara ) )

      )

      − 1

      ) = z c x , dengan x = B b dikatakan optimal jika c c , c B B B ∀ ∈ ≤ j j )

      ( ∀ cc , c ≥ ) j j

      Bukti

      ) ) Perhatikan persamaan (2.3.5), z = ) + z c x . Karena diketahui ∀ cc , cN j j

      ) ( c , c ) dan , maka ˆ ( ˆ ). Akibatnya z z ˆ

      ∀ ∈ cxc xc x ≥ ≤ j j N N N ˆ

      ( z ≥ ). Dengan kata lain nilai z baru akan tidak lebih besar (kecil) dari nilai z z sebelumnya.

      ■ ) )

      Jika 0 c c , c ( c c , c ) maka dipilih c yang paling besar (kecil) ∃ ∈ ≥ ∃ ∈ ≤ j j j j j dan x akan masuk sebagai variabel dasar selanjutnya. Hal ini diharapkan j menambah (mengurangi) nilai z paling banyak.

      − 1 − 1 − 1

      ˆ Perhatikan persamaan (2.3.3), x = B bB Nx . Jika cB N ≥ , B N ij maka nilai ( ) x akan berkurang seiring dengan bertambahnya nilai x . Jika B i

      ( ) N i

      ˆ

      b i1 − 1

      ˆ

      x , b B b , maka x . Jika c ˆ B N , maka nilai x ( ) = ∈ ( ) = ∈ ≤ ( )

    N i B ij B

    i i i

      ˆ

      c ij

      bertambah seiring dengan bertambahnya nilai . Karena terdapat batasan

      ( ) x N i

      , maka dipilih untuk menentukan variabel dasar mana yang akan menjadi

      xB

      variabel non dasar, dilakukan uji rasio, yaitu dengan menghitung

      ) )

       

      b

       )  ) i 1 − 1 min : , ,

      ( ) x = c > bB b cB N B i  ) iji ij c ij

        Secara umum algoritma metode simpleks berbasis matriks untuk menyelesaikan permasalahan pemaksimalan (peminimalan) dapat ditulis menjadi langkah-langkah berikut:

      1. Uji program linear, yaitu apakah sebuah program linear mempunyai penyelesaian atau tidak. Jika B merupakan matriks singular, maka program linear tersebut tidak mempunyai penyelesaian. Jika B merupakan matriks tak singular lanjut ke langkah ke-2.

      )

      − 1 2. Uji optimalitas, yaitu dengan mencari ( ) . c = cc B N N B

      ) ) Jika 0 c , c ( c , c ), maka penyelesaian sementara

      ∀ ∈ c ≤ ∀ ∈ cj j j j sudah optimal, jika tidak lanjut ke langkah berikutnya.

      )

      3. Pilih elemen c yang mempunyai nilai positif (negatif) terbesar, lalu hitung )

      )  

      b

      ) )  i  − 1 − 1

      x = min : c > , bB b , cB N untuk masuk sebagai j  ) iji ij c ij

        variabel dasar baru.

      4. Baharui matriks B , x , x , c , dan c , dengan menukar variabel dasar B N B N baru dengan variabel non dasar yang baru. Kembali ke langkah pertama.

      Walaupun sudah menggunakan bentuk matriks, metode simpleks di atas masih terdapat kelemahan, yaitu menuntut untuk semua elemen b harus bernilai positif. Untuk mengatasi hal tersebut akan diperkenalkan metode dual simpleks,

      Secara umum algoritma metode dual simpleks berbasis matriks untuk menyelesaikan permasalahan program linear dapat ditulis menjadi langkah- langkah berikut:

      1. Jika setiap elemen b bernilai positif, maka penyelesaian sementara sudah optimal. Jika terdapat elemen b yang bernilai negatif, maka lanjut ke langkah selanjutnya.

      2. Pilih elemen b yang mempunyai nilai negatif terbesar, agar lalu hitung )

       

      c j ) )

        − 1

      x min : c ˆ , c c , c ˆ B N untuk masuk sebagai variabel j ij j ij = < ∈ ∈

        ˆ

      c ij

        dasar yang baru.

      3. Jika terdapat kendala dimana mempunyai RHS bernilai negatif dan setiap koefisien variabel pada kendala tersebut bernilai positif, maka permasalahan program linear tersebut tidak mempunyai daerah penyelesaian karena untuk sembarang variabel non dasar yang akan masuk menjadi variabel dasar akan selalu bernilai negatif, dan ini melanggar batasan bahwa setiap variabel dasar harus bernilai positif.

      Pada umumnya metode dual simpleks serting digunakan dalam situasi:

      1. Mencari penyelesaian optimal baru setelah menambah kendala baru pada program linear.

      2. Mencari penyelesaian optimal baru setelah mengganti nilai RHS program linear.

      3. Menyelesaikan permasalahan peminimalan yang setiap kendalanya mempunyai tanda ≥ .

      Definisi 2.2.11

    Program linear bilangan bulat adalah permasalahan program linear yang

    mengharuskan semua nilai variabelnya bernilai bulat.

      Definisi 2.2.12

      Program linear yang didapat dengan menghilangkan kendala bilangan bulat pada variabel disebut Program Linear Relaxation dari pemrogramman linear bilangan bulat.

      Banyak cara yang dapat digunakan untuk menyelesaikan sebuah program linear bilangan bulat, yaitu dengan menggunakan metode branch-and-bound, metode

      

    cutting plane, metode implicit enumeration, dan metode heuristics. Dalam bab