• Tidak ada hasil yang ditemukan

PEMROGRAMAN INTEGER DENGAN FUNGSI OBJEKTIF LINEAR SEPOTONG - SEPOTONG

N/A
N/A
Protected

Academic year: 2021

Membagikan "PEMROGRAMAN INTEGER DENGAN FUNGSI OBJEKTIF LINEAR SEPOTONG - SEPOTONG"

Copied!
23
0
0

Teks penuh

(1)

PEMROGRAMAN INTEGER DENGAN

FUNGSI OBJEKTIF LINEAR SEPOTONG - SEPOTONG

Oleh :

FEBIANA RESI SAPTA

G54102037

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

(2)

ABSTRACT

FEBIANA RESI SAPTA. Integer Programming with Piecewise Linear Objective Function. Supervised by PRAPTO TRI SUPRIYO and SISWANDI.

Integer Linear programming (ILP/IP) can not be used to finish problems containing piecewise linear objective function, because basically piecewise linear function is not representing a linear function.

This article give an method to express piecewise linear function as linear function, so that problem ILP with piecewise linear objective function can be expressed as ILP in the standard form. This matter can be done with two steps, the first step is to change the piecewise linear objective function ( f x( )) becomes z f b1 ( 1)+z f b2 ( 2)+ +... z f bn ( n), where b1, , b2 ..., bn represent break points. The Second step is adding new constraints so that the formula at step one can be used.

(3)

ABSTRAK

FEBIANA RESI SAPTA. Integer Programming dengan Fungsi Objektif Linear Sepotong-Sepotong. Dibimbing oleh PRAPTO TRI SUPRIYO dan SISWANDI.

Integer Linear Programming (ILP) tidak dapat digunakan untuk menyelesaikan permasalahan yang mengandung fungsi objektif linear sepotong-sepotong, karena pada dasarnya fungsi linear sepotong-sepotong bukan merupakan fungsi linear.

Tulisan ini memberikan suatu metode untuk menyatakan fungsi linear sepotong-sepotong sebagai fungsi linear, sehingga masalah ILP dengan fungsi objektif linear sepotong-sepotong dapat dinyatakan sebagai ILP dalam bentuk standar.

Hal ini dapat dilakukan dengan dua langkah, langkah pertama adalah merubah fungsi objektif linear sepotong-sepotong (f x( )) menjadi z f b1 (1)+z f b2 ( 2)+ +... z f bn ( n), dimana

, , ..., 1 2

b b bn merupakan break point. Kemudian langkah kedua menambahkan kendala-kendala baru sedemikian sehingga formula pada langkah satu dapat berfungsi.

(4)

PEMROGRAMAN INTEGER DENGAN

FUNGSI OBJEKTIF LINEAR SEPOTONG - SEPOTONG

Skripsi

Sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains

Pada Fakultas Matematika dan Ilmu Pengetahuan Alam

Institut Pertanian Bogor

Oleh :

FEBIANA RESI SAPTA

G54102037

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

BOGOR

2008

(5)

Judul : Pemrograman Integer dengan Fungsi Objektif Linear

Sepotong- Sepotong

Nama : Febiana Resi Sapta

NIM : G54102037

Menyetujui:

Tanggal Lulus :

Pembimbing I,

Drs. Prapto Tri Supriyo, M.Kom.

NIP 131878952

Pembimbing II,

Drs. Siswandi, M.Si.

NIP 131957320

Mengetahui

Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam

Institut Pertanian Bogor

Dr. drh. Hasim, DEA.

(6)

RIWAYAT HIDUP

Penulis dilahirkan di Ciamis pada tanggal 18 februari 1984, penulis merupakan putra keempat dari pasangan Bapak Djuarman Tanuwirya dan Ibu Tarsini Yahya.

Pada tahun 2002 penulis lulus dari SMU Negri 1 Cibadak Sukabumi, dan diterima untuk melanjutkan kuliah di Institut Pertanian Bogor mengambil jurusan Matematika dan Ilmu Pengetahuan Alam.

Selama menempa ilmu perkuliahan, penulis juga menjalani aktifitas lain, yaitu berorganisasi di dalam dan luar kampus. Di dalam kampus penulis pernah menjabat sebagai Ketua GUMATIKA (Himpunan Mahasiswa Matematika), Dewan Pembina HIMASI (Himpunan Mahasiswa Sukabumi), Dewan Pembina KBMGJ (Himpunan Mahasiswa Ciamis Jabodetabek), dan menjadi kepanitian di berbagai kegiatan BEM FMIPA. Sedangkan di luar Kampus penulis aktif sebagai Sekretaris Jendral di DAMAS (Daya Mahasiswa Sunda) cabang Bogor, Kordinator Wilayah VI (Bogor, Sukabumi, Cianjur) BARA SUNDA (Barisan Putra Sunda), Kordinator Wilayah Bogor GEMA JABAR (Gerakan Masyarakat Jawa Barat), Pengurus Widang Pariwisata DPD KNPI Kota Bogor, dan sering terlibat serta diberi tanggung jawab untuk melaksanakan sebuah kegiatan oleh Pemda Kabupaten dan Kota Bogor.

(7)

PRAKATA

Puji syukur penulis haturkan ke hadirat Allah SWT yang telah memberi nikmat sehat jasmani maupun rohani sehingga penulis dapat menyelesaikan skripsi ini. Shalawat serta salam tercurah kepada junjungan nabi besar Muhammad SAW yang telah memberikan contoh teladan agar tidak tersesat dalam menjalani hidup.

Pada kesempatan ini penulis ingin mengucapkan banyak terima kasih kepada semua pihak yang telah membantu penulis dalam menyelesaikan skripsi ini, diantara lain :

• Bapak Drs. Prapto Tri Supriyo, M.Kom dan Bapak Drs. Siswandi, M.Si Selaku dosen pembimbing yang senantiasa sabar memberikan bimbingan dan arahan sampai skripsi ini dapat selesai.

• Bapak Donny Citra Lesmana, M.Sc sebagai dosen penguji atas saran dan masukannya. • Keluarga tercinta, mamih, kaka, aa, emas, eneng, serta bi mamah yang telah memberikan

dorongan moril dan materil yang mungkin sampai kapanpun takan terbalaskan. • Dhita Swaditra sebagi sumber inspirasiku

• Seluruh dosen beserta staf Departemen Matematika atas ilmunya yang tak ternilai.

• Teman-teman angkatan 39 terutama irwan, kabul, arip, fitrah yang sekian lama senasib sepenanggungan.

• Rekan-rekan seperjuangan angkatan 35, 36, 37, 38, 40 dan 41. • Dulur-dulur di DAMAS

• Seluruh pihak yang telah membantu terselesaikannya skripsi ini yang tidak dapat disebutkan satu per satu.

Penulis sadar sepenuhnya bahwa banyak sekali kekurangan dalam penyusunan skripsi ini. Harapan penulis adalah bahwa karya ilmiah ini akan dapat memberikan banyak manfaat bagi penulis maupun para pembacanya.

Bogor, Agustus 2008

(8)

DAFTAR ISI

Halaman

I. PENDAHULUAN

1.1 Latar Belakang ... 1

1.2 Tujuan ... 1

II. LANDASAN TEORI 2.1 Pemrograman Linear... 1

2.2 Pemrograman Linear Bilangan Bulat ... 2

2.3 Metode Branch and Bound untuk menyelesaikan masalah Pemrograman Linear Bilangan Bulat ... 2

III. PEMBAHASAN ... 5

IV. CONTOH KASUS... 7

V. SIMPULAN DAN SARAN 5.1 Simpulan ... 9

5.2 Saran ... 9

DAFTAR PUSTAKA... 9

(9)

I PENDAHULUAN

1.1 Latar Belakang

Banyak masalah dalam dunia nyata yang dapat diformulasikan ke dalam model matematika. Misalnya masalah dalam pendistribusian barang, penentuan rute kendaraan, penjadwalan mata pelajaran dan masih banyak lagi.

Riset operasi merupakan salah satu metode yang sering digunakan untuk memformulasikan, menganalisa, dan menentukan solusi optimum dari masalah-masalah tersebut. Tahap-tahap yang harus dilalui untuk melakukan sebuah studi riset operasi mencakup: (1) Definisi masalah; (2) Pengembangan model; (3) Pemecahan

model; (4) Pegujian keabsahan model; (5) Implementasi hasil akhir.

Pada karya ilmiah ini akan dibahas mengenai pemodelan dalam bentuk integer programming dengan fungsi objektif linear sepotong-sepotong (piecewise linear functions).

1.2 Tujuan

Tujuan penulisan karya ilmiah ini adalah memberikan metode untuk menyelesaikan masalah integer programming dengan fungsi objektif linear sepotong-sepotong.

II LANDASAN TEORI

2.1 Pemrograman Linear

Pemrograman linear adalah pemodelan secara matematis dari suatu masalah nyata untuk mencari solusi optimum yang memenuhi sejumlah kendala tertentu.

Fungsi yang dioptimalkan disebut dengan fungsi objektif yang merupakan suatu fungsi linear. Kendalanya dapat berupa persamaan atau pertidaksamaan linear.

Dalam bentuk matriks-vektor masalah pemrograman linear standar dapat dituliskan sebagai berikut :

Maksimumkan

z

=

c

T

x

Dengan kendala Ax= b x≥0

dengan x dan c berupa vektor berukuran n, b berupa vektor berukuran m, sedangkan A berupa matriks berukuran m n× yang disebut juga matriks kendala.

Definisi 1 (Fungsi Linear)

Misalkan f x x( ,1 2,...,xn) menyatakan

suatu fungsi dalam variabel - variabel

, ,..., 1 2

x x xn, f x x( ,1 2,...,xn) dikatakan

fungsi linear jika dan hanya jika f dapat disajikan sebagai

f x x( ,1 2,...,xn)=c x1 1+c x2 2+ +... c xn n. Dengan c c1, , 2 ..., cn adalah konstanta.

(Winston, 1995)

Fungsi yang Terdefinisi Sepotong-Sepotong

Fungsi yang didefinisikan oleh rumus yang berlainan di bagian yang berbeda dari daerah asalnya dinamakan fungsi yang terdefinisi sepotong-sepotong.

Contoh 1: Fungsi f didefinisikan oleh : ( )

{

jika 0 jika 0 x x f x x x ≥ = − <

Definisi 2 (Pertidaksamaan Linear)

Untuk sembarang fungsi linear 1 2

( , ,..., )n

f x x x dan sembarang bilangan b, pertidaksamaan f x x( , ,..., )1 2 xn ≤ dan b 1 2 ( , ,..., )n f x x x ≥ dinamakan b pertidaksamaan linear. (Winston, 1995)

(10)

2

Definisi 3 (Daerah Fisibel)

Daerah fisibel pemrograman linear adalah daerah yang memenuhi semua kendala pada pemrograman linear.

(Nash & Sofer, 1996)

Definisi 4 (Solusi Fisibel)

Suatu solusi disebut fisibel jika memenuhi semua kendala pada pemrograman linear.

(Nash & Sofer, 1996)

Definisi 5 (Solusi Optimum)

Solusi optimum (terbaik) adalah suatu solusi dalam daerah fisibel yang menyebabkan nilai fungsi objektif terkecil (dalam masalah minimisasi), untuk masalah maksimisasi solusi optimum suatu pemrograman linear adalah suatu solusi dalam daerah fisibel yang menyebabkan nilai fungsi objektif terbesar.

(Winston, 1995)

2.2 Integer Linear Programming

Model pemrograman linear bilangan bulat (integer linear programming/ILP) atau disebut juga integer programming (IP), adalah suatu model pemrograman linear dengan variabel yang digunakan berupa bilangan bulat (integer). Jika semua variabel harus berupa integer, maka masalah tersebut disebut pure integer programming. Jika hanya sebagian yang harus integer maka disebut mixed integer programming. IP dengan semua variabelnya harus bernilai 0 atau 1 disebut 0-1 ILP.

Definisi 6 (Pemrograman Linear Relaksasi)

Pemrograman linear relaksasi dari suatu IP merupakan pemrograman linear yang diperoleh dari IP tersebut dengan menghilangkan kendala integer atau kendala 0-1 pada variabelnya.

(Winston, 1995)

2.3 Metode Branch and Bound untuk menyelesaikan masalah Integer

Programming

Dalam penulisan karya ilmiah ini, untuk memperoleh solusi optimal dari masalah IP digunakan software LINGO 8.0 yaitu sebuah program yang didesain untuk membangun dan menentukan solusi model linear, nonlinear, dan optimisasi integer menjadi lebih cepat, mudah, dan lebih efisien dari pada penyelesaian secara manual, dengan

prinsip pemecahannya berdasarkan metode branch and bound.

Prinsip dasar metode branch and bound adalah memecah daerah fisibel dari masalah LP-relaksasi dengan membuat subproblem-subproblem.

¾ Branch

Membuat partisi daerah solusi ke dalam subproblem. Tujuannya untuk menghapus daerah solusi yang tidak fisibel. Hal ini dicapai dengan menentukan kendala yang penting untuk menghasilkan solusi IP, secara tidak langsung titik integer yang tidak fisibel terhapus. Dengan kata lain, hasil pengumpulan dari subproblem – subproblem yang lengkap menunjukkan setiap titik integer yang fisibel dari masalah asli. Karena sifat alami partisi itu, maka proses tersebut dinamakan Branching.

¾ Bound

Misalkan masalahnya diasumsikan merupakan tipe maksimisasi, nilai objektif yang optimal untuk setiap subproblem dibuat dengan membatasi pencabangan dengan batas bawah dari nilai objektif yang dihubungkan dengan sembarang nilai integer yang fisibel. Hal ini sangat penting untuk mengatur dan menempatkan solusi optimum. Operasi ini yang menjadi alasan dinamakan Bounding.

(Taha, 1975) Langkah-langkah dari metode branch and bound adalah sebagai berikut :

Langkah 1 : Periksa apakah IP memenuhi kondisi berikut:

(1) Subproblem tidak fisibel.

(2) Subproblem menghasilkan solusi optimal dengan semua variabel bernilai integer. (3) Nilai optimal untuk subproblem lebih

kecil dari (dalam masalah memaksimumkan) batas bawah (lower bound/LB).

Jika kondisi tersebut terpenuhi, maka cabang subproblem tidak diperlukan.

Langkah 2 : Sebuah subproblem mungkin dapat dihapuskan dari pertimbangan dengan kondisi sebagai berikut :

(1) Subproblem tidak fisibel.

(2) Batas bawah (yang menunjukkan nilai optimal dari kandidat terbaik) setidaknya lebih besar dari nilai optimal subproblem.

(11)

3

1

x

Contoh 2:

Misalkan diberikan masalah integer programming berikut: Maksimumkan z=5x1+4x2 terhadap x1+x2≤5 10x1+6x2≤45 1, 2 0 x x ≥ dan integer Daerah fisibel untuk masalah IP di atas diberikan pada gambar berikut:

1 2 3 4 5 1 2 3 4 5 6 7

Gambar 1 Daerah fisibel IP.

Metode Branch and Bound dimulai dengan menentukan solusi LP-relaksasi (subproblem 1 : maksimumkan 1 2 5 4 z= x + x dengan kendala x1+x2≤5, 1 2 10x +6x ≤45, x x1, 2≥ ). 0

Solusi LP-relaksasi untuk masalah di atas adalah x1=3,75, x2 =1,75, dan

23, 75

z= . Solusi tersebut tidak memenuhi kendala bilangan bulat. Oleh karena itu harus dibuat subproblem yang baru dengan memilih variabel yang tidak memenuhi kendala bilangan bulat. Dengan memilih

1 3,75

x = , diketahui bahwa daerah

(

3< <x1 4

)

dari daerah fisibel subproblem 1

tidak akan memuat solusi IP yang fisibel karena tidak memenuhi kendala integer. Subproblem yang baru adalah sebagai berikut:

• Subproblem 2 : Subproblem 1 + kendala

(

x1≤ , yaitu : 3

)

Maksimumkan 1 2 5 4 z= x + x Terhadap kendala : x1+x2≤5 10x1+6x2≤45 1, 2 0 x x ≥ dan integer

(

x1≤ 3

)

• Subproblem 3 : Subproblem 1 + kendala

(

x1≥4

)

, yaitu : Maksimumkan 1 2 5 4 z= x + x Terhadap kendala : x1+x2≤5 10x1+6x2 ≤45 1, 2 0 x x ≥ dan integer

(

x1≥4

)

Daerah fisibel untuk subproblem 2 dan subproblem 3 diberikan pada gambar berikut: 1 2 3 4 5 1 2 3 4 5 6 7

Gambar 2 Daerah fisibel untuk subproblem 2 dan subproblem 3.

Pada subproblem 2 diperoleh solusi LP-relaksasi x1=3, x2 = , dan 2 z=23. Karena semua variabel bernilai bilangan bulat (solusinya memenuhi kendala bilangan bulat), maka tidak perlu dibuat subproblem baru. Pada subproblem 3 diperoleh solusi LP-relaksasi x1=4, x2=0.8333, dan

23, 3333

z= . Karena variabelnya tidak memenuhi kendala bilangan bulat, maka harus dibuat subproblem baru. Subproblem yang baru adalah sebagai berikut:

• Subproblem 4 : Subproblem 3 + kendala

(

x2≥ , yaitu : 1

)

Maksimumkan 1 2 5 4 z= x + x Terhadap kendala : x1+x2≤5 10x1+6x2 ≤45 1, 2 0 x x ≥ dan integer

(

x1≥4

)

(

x2≥ 1

)

1

x

2 x

x

2

(12)

4

Subproblem 5 Subproblem 4

1 4, 5 , 2 0 dan 22, 5

x = x = z=

Batas bawah (optimum)

x1 < 3 x1 > 4 Subproblem 2* Subproblem 3 Subproblem 1 1 3, 75 , 2 1, 25 dan 23, 75 x = x = z= 1 4, 2 0, 8333 dan 23, 3333 x = x = z= 1 3, 2 2 dan 23 x = x = z= Solusi takfisibel

• Subproblem 5 : Subproblem 3 + kendala

(

x2≤ , yaitu : 0

)

Maksimumkan 1 2 5 4 z= x + x Terhadap kendala : x1+x2≤5 10x1+6x2≤45 1, 2 0 x x ≥ dan integer

(

x1≥4

)

(

x2≤ 0

)

Pada subproblem 4 diperoleh solusi tak fisibel, maka tidak perlu dibuat subproblem

baru. Pada subproblem 5 diperoleh solusi LP-relaksasi x1=4,5, x2= , dan 0 z=22,5. Karena variabelnya tidak memenuhi kendala bilangan bulat, maka seharusnya dibuat subproblem baru., akan tetapi karena nilai z maksimum yang akan dihasilkan lebih kecil dari batas bawah, maka tidak perlu dibuat subproblem baru.

Branching Subproblem untuk masalah IP di atas diberikan pada Gambar 3, sedangkan solusi lengkapnya dapat dilihat pada lampiran 1.

(13)

5

III PEMBAHASAN

Grafik fungsi linear sepotong-sepotong

(piecewise linear function) terdiri dari beberapa segmen garis yang kontinu. Fungsi linear sepotong–sepotong pada Gambar 4 terdiri dari tiga segmen garis. Nilai x yang membuat kemiringan dari fungsi linear sepotong – sepotong berubah (atau titik yang membuat fungsi tersebut tidak linear) disebut break point. Jadi x=0, x=20,

40,

x= x=50adalah break point dari fungsi pada Gambar 4.

Sebagai ilustrasi mengenai bagaimana fungsi linear sepotong-sepotong dapat terjadi dan sangat berguna dalam aplikasi nyata dapat dilihat pada Gambar 5. Misalkan dalam pembelian bahan baku pada sebuah pabrik tahu. Pemasok bahan baku (kedelai)

akan memberikan diskon harga kepada pabrik tahu tersebut, yang besarannya disesuaikan dengan banyaknya pembelian kedelai, dengan rincian sebagai berikut :

• biaya pembelian 500 karung kedelai pertama seharga $25 per karung. • biaya pembelian 500 karung kedelai

berikutnya seharga $20 per karung. • biaya pembelian 500 karung kedelai

berikutnya seharga $15 per karung. Semakin banyak pabrik tahu tersebut membeli, maka harga kedelainya menjadi semakin murah. Andaikan pemasok hanya memiliki persediaan kedelai sebanyak 1500 karung. Misalkan x adalah banyaknya karung kedelai yang dibeli dan ( )c x adalah biaya pembelian tiap x karung kedelai untuk :

Untuk 0≤ ≤x 500, ( )c x =25x Untuk 500< ≤x 1000,

c x( )= biaya pembelian 500 karung kedelai pertama yaitu $25 per karung ditambah biaya pembelian berikutnya yaitu

500

x− karung kedelai dengan harga $20 perkarung 25(500) 20( 500) 12500 20( ) 1000 20 2500 x x x = + − = + − = + Untuk 1000< ≤x 1500, c x( )=biaya pembelian 1000 karung kedelai pertama ditambah biaya pembelian berikutnya yaitu x-1000 karung kedelai dengan harga $15 per karung

Sehingga fungsi biaya pembelian tiapx karung kedelai dapat dituliskan dalam bentuk: 25 (0 500) ( ) 20 2500 (500 1000) 15 7500 (1000 1500) x x c x x x x x ≤ ≤ = + < ≤ + < ≤

⎪⎩

20(1000) 2500 15( 1000) 20(1000) 2500 15( ) 15(1000) 15 2500 5(1000) 15 7500 x x x x = + + − = + + − = + + = + 10 20 30 40 50 x C(x) Gambar 4

Gambar 5 Biaya pembelian bahan baku tahu 500 1000 1500 6000 12000 18000 24000 30000

(14)

6

Pada pembelian sejumlah tertentu pabrik tahu akan mendapatkan diskon harga dari si pemasok, hal ini menyebabkan fungsi pembelian bahan baku tahu menjadi tidak linear, akan tetapi termasuk dalam fungsi linear sepotong-sepotong. Sehingga dapat disimpulkan bahwa ( )c x memiliki break point b1 = 0, b2 = 500, b3 = 1000, b4 = 1500.

Fungsi linear sepotong-sepotong sebenarnya bukan merupakan fungsi linear, maka pemrograman linear tidak dapat digunakan untuk memecahkan masalah-masalah optimisasi dengan melibatkan fungsi ini.

Namun demikian ternyata fungsi linear sepotong-sepotong dapat direpresentasikan ke dalam bentuk linear dengan menambah kendala-kendala linear tertentu.

Misalkan ( )f x adalah fungsi linear sepotong-sepotong, yang memiliki break point b1, b2, b3, …, bn. Untuk suatu

( k k = 1, 2, ..., -1),n bk ≤ ≤x bk+1. Selanjutnya untuk suatu bilangan

(0 1), k k zz x dapat dituliskan sebagai : 1 (1 ) k k k k x=z b + −z b+

karena ( )f x merupakan fungsi linear untuk 1

,

k k

b ≤ ≤x b+ sehingga dapat dituliskan : 1 1 ( ) (z (1 z ) ) z ( ) (1 z ) ( ) k k k k k k k k f x f b b f b f b + + = + − = + −

Untuk mengilustrasikannya, lihat lagi contoh pembelian kedelai pada Gambar 5, ambil x = 1100, sehingga kita memiliki b3 = 1000 ≤ 1100 ≤ 1500 = b4, dan dapat dituliskan: 4(1000) 1(1500) 5 5 x= + ( ) (1100) 4 1 (1000) (1500) 5 5 f x f f f = = + 4 1 (22500) (30000) 5 5 24000 = + =

Ada dua langkah utama yang harus kita lakukan ketika menemukan suatu masalah yang mengandung fungsi linear sepotong-sepotong, yaitu :

• Langkah Pertama

Nyatakan ( )f x dalam bentuk ( )

f x =z f b1 ( )1 +z f b2 ( ) ...2 + +z f bn ( )n • Langkah Kedua

Untuk menjamin formula di atas dapat berfungsi, selain kendala-kendala yang telah ada pada permasalahan tersebut, tambahkan kendala-kendala baru :

1 1 zy 2 1 2 zy +y

3 2 3 zy +y

M

1 2 1 n n n zy +y 1 n n zy 1 2 ... n1 1 y + y + + y = 1 2 ... n 1 z +z + +z = 1 1 2 2 ... n n x= z b +z b + +z b 0 atau 1, ( 1, 2, ..., 1) i y = i= n

0, ( 1, 2, ..., ) i zi= n

(y merupakan variabel tambahan). Dari langkah satu dan dua akan didapatkan sebuah fungsi objektif yang linear dengan kendala-kendalanya yang dapat diselesaikan dengan menggunakan pemrograman linear.

(15)

7

IV CONTOH KASUS

Euing Gas memproduksi 2 jenis gas

(gas 1 dan gas 2) dari 2 jenis minyak (minyak 1 dan minyak 2). Setiap galon gas 1 harus berisi minimal 50% minyak 1, dan setiap galon gas 2 harus terisi sedikitnya 60% minyak 1. Setiap galon gas 1 dapat terjual $12 dan gas 2 terjual seharga $14 per galon. Saat ini telah tersedia 500 galon minyak 1 dan 1000 galon minyak 2. Sebanyak 1500 galon lebih minyak 1 dapat dibeli dengan harga berikut : 500 galon pertama seharga $25 per galon, 500 galon berikutnya $20 per galon, dan 500 galon berikutya $15 per galon. Formulasikan Integer Programming yang dapat memaksimalkan keuntungan Euing Gas.

Penyelesaian :

Terlihat bahwa biaya pembelian minyak 1merupakan fungsi linear sepotong-sepotong, kita misalkan :

( )

c x = fungsi pembelian minyak 1 x = banyaknya minyak 1 yang dibeli

=

xij banyaknya minyak i yang digunakan untuk memproduksi gas j (i,j = 1,2)

Keuntungan Euink Gas (Z) = total pendapatan – biaya pembelian minyak 1

11 21 12 22 12( ) 14( ) ( ) Z = x +x + x +xc x Dengan : 25 (0 500) ( ) 20 2500 (500 1000) 15 7500 (1000 1500) x x c x x x x x ≤ ≤ = + < ≤ + < ≤

⎪⎩

Fungsi objektifnya adalah memaksimumkan

Z = 12(x11+x21) 14(+ x12 +x22)−c x( ) dengan kendala :

1. Euink Gas dapat menggunakan paling banyak x + 500 galon minyak 1.

ƒ

x

11

+

x

12

≤ +

x

500

2. Euing Gas dapat menggunakan paling banyak 1000 galon minyak 2.

ƒ

x

21

+

x

22

1000

3. Campuran minyak untuk membuat gas 1 minimal mengandung 50% minyak 1.

ƒ 11 11 21

0.5

atau

x

x

+

x

ƒ

0.5

x

11

0.5

x

21

0

4. campuran minyak untuk membuat gas 2 minimal mengandung 60% minyak 1.

ƒ 12 12 22

0.6

atau

x

x

+

x

ƒ

0.4

x

12

0.6

x

22

0

5.

x

ij

0

6.

0

≤ ≤

x

1500

Karena

c x

( )

merupakan fungsi linear sepotong-sepotong, fungsi objektifnya bukanlah fungsi linear dari x, dan optimisasi ini bukanlah suatu pemograman linear. Akan tetapi sesuai dengan penjelasan pada materi ini, kita dapat mengubah bentuk masalah ini menjadi masalah pemograman bilangan bulat. Setelah mengetahui break points untuk

c x

( )

adalah b1 = 0, b2 = 500, b3 = 1000, b4 = 1500, langkah selanjutnya adalah: Langkah 1 .

Nyatakan

c x

( )

dalam bentuk

1 2 3 4 ( ) (0) (500) (1000) (1500) c x z c z c z c z c = + + + Langkah 2.

Tambahkan kendala baru

1 2 3 4

0

500

1000

1500

x

=

z

+

z

+

z

+

z

1 1

z

y

,

z

2

y

1

+

y

2 3 2 3

z

y

+

y

,

z

4

y

3 1 2 3 4

1

z

+ + +

z

z

z

=

,

y

1

+

y

2

+

y

3

=

1

,

0,(

1, 2,3, 4)

i

z

i

=

0 atau 1,(

1, 2,3)

i

y

=

i

=

Persamaan baru yang merupakan masalah pemograman linear yaitu :

11 21 12 22 1 2 3 4 max 12( ) 14( ) (0) (500) (1000) (1500) z x x x x z c z c z c z c = + + + − − − − dengan kendala :

(16)

8

11 12 500 x +x ≤ +x (1) 21 22 1000 x +x ≤ (2) 11 21 0.5x −0.5x ≥ 0 (3) 12 22 0.4x −0.6x ≥ 0 (4) 1 2 3 4 0 500 1000 1500 x= z + z + z + z (5) 1 1 zy (6) 2 1 2 zy +y (7) 3 2 3 zy + y (8) 4 3 zy (9) 1 2 3 4 1 z +z +z +z = (10) 1 2 3 1 y +y + y = (11) 0 atau 1, ( 1, 2, 3) i y = i= (12) 0, ( 1, 2, 3, 4) i zi= (13) 0 ij x ≥ (14)

Untuk melihat kenapa formula ini bekerja, karena y1+y2+y3= dan 1

0 atau 1,

i

y = perhatikan (6)-(11) jika 1,

i

y = kemudian zi dan zi+1 positif, tapi

semua zi yang lain harus sama dengan 0,

misalkan jika y2 = maka 1, y3 = y1 =0,

kemudian perhatikan (6)-(9) menjadi

1 0, 1, 2 1, 3 4 0.

zzzz ≤ Kendala ini memaksa z1 =z4 =0 dan membiarkan z2

dan z3 menjadi bilangan tak negatif kurang

dari atau sama dengan 1. Selanjutnya pilih suatu nilai x sembarang, misalkan x=800. Catatan bahwa b2 =500≤ ≤x 1000=b3

.

Untuk x=800 nilai y1= tidak 1 dimungkinkan, karena jika y1= maka 1

2 3 0,

y = y = kemudian (8)&(9) memaksa

3

=

4

0.

z z

=

Kemudian masukan ke kendala (5) 800= =x 500 z2

,

yang tidak dapat dipenuhi dengan z2 ≤ 1. Serupa juga jika diambil y3=1 pada x=800 tidak akan terpenuhi. Jika kita coba y2=1 dari (6)&(9) memaksa z1

=

z4

=

0.

Kemudian (7)&(8) menjadi z2 ≤ 1 dan z3 ≤ 1 sekarang masukan ke kendala (5) 800 = x = 500z2 + 1000z3. karena z2+z3 = , kita peroleh 1

2 3 2 3 dan 5 5 z = z = . Sekarang fungsi objektifnya menjadi : 11 21 12 22 2 (500) 12 12 14 14 5 3 (1000) 5 c z x x x x c = + + + − − dengan kendala(1)-(14) Karena 2 (500) 3 (1000) (800) 5 5 c c c = +

Fungsi objektif kita menghasilkan nilai yang tepat untuk Euing Gas, jika dilakukan perhitungan maka solusi optimal untuk masalah maksimisasi pada perusahaan Euing Gas adalah sebagai berikut :

Z = $12500 x = 1000 galon x12 = 1500 galon x22 = 1000 galon x11 = 0 galon x21 = 0 galon

terlihat bahwa untuk mendapat keuntungan yang optimal Euing Gas harus membeli 1000 galon minyak 1 dan memproduksi 2500 galon gas 2. Solusi lengkapnya dapat dilihat pada lampiran 2.

(17)

9

V SIMPULAN DAN SARAN

5.1 Simpulan

Langkah pertama yang harus dilakukan untuk menyelesaikan masalah integer programming dengan fungsi objektif linear sepotong-sepotong yaitu dengan cara menyatakan fungsi linear sepotong-sepotong tersebut menjadi sebuah fungsi linear secara utuh.

Sehingga dengan demikian masalah pemrograman integer dengan fungsi objektif linear sepotong-sepotong dapat ditransformasikan menjadi pemrograman linear integer, dengan cara menyatakan

( )

f x dalam bentuk

1 ( )1 2 ( ) ...2 n ( ).n

z f b +z f b + +z f b

Kemudian tambahkan beberapa kendala baru yang menjamin fungsi objektif menjadi linear.

5.2 Saran

Pada pembahasan skripsi ini hanya dipelajari mengenai transformasi fungsi linear sepotong-sepotong yang kontinu, bagi yang berminat meneruskan, disarankan untuk menggali lagi apakah metode ini dapat digunakan untuk fungsi linear sepotong-sepotong yang tidak kontinu.

DAFTAR PUSTAKA

Nash, S.G. & A. Sofer. 1996. Linear and

Nonlinear Programming. McGraw-Hill, New York.

Taha, H. A. 1975. Integer Programming :

Theory, Aplications, and Computations Academic Press, New York.

Winston, W.L. 1995. Introduction to

Mathematical Programming 2nd ed.

Duxbury, New York.

Winston, W.L. 2004. Operation Research

Applications and Algorithms. Brooks /Cole-Thomson Learning. New York.

(18)

10

(19)

11

1

x

Lampiran 1 Syntax Program LINGO 8.0 untuk Menyelesaikan LP dengan Metode Branch and

Bound Dari LP pada Contoh 2

Misalkan diberikan masalah integer programming berikut: Maksimumkan z=5x1+4x2 terhadap x1+x2≤ 5 10x1+6x2≤45 1, 2 0 x x ≥ dan integer Penyelesaian:

Daerah fisibel untuk masalah IP di atas diberikan pada gambar berikut: 2 x 1 2 3 4 5 1 2 3 4 5 6 7

Gambar 1 Daerah fisibel IP

Anggap LP tersebut sebagai subproblem 1. 1. Cari solusi LP-Relaksasi dari subproblem 1

Syntax program LINGO 8.0: max=5*x1+4*x2; x1+x2<=5;

10*x1+6*x2<=45; x1>=0;

x2>=0;

Hasil yang diperoleh:

Global optimal solution found at iteration: 2 Objective value: 23.75000 Variable Value Reduced Cost

X1 3.750000 0.000000 X2 1.250000 0.000000 Row Slack or Surplus Dual Price 1 23.75000 1.000000 2 0.000000 2.500000 3 0.000000 0.2500000 4 3.750000 0.000000 5 1.250000 0.000000

Karena solusi yang didapat belum memenuhi kendala integer maka harus dibuat subproblem baru, yaitu:

• Subproblem 2 : Subproblem 1 + kendala

(

x1≤ 3

)

• Subproblem 3 : Subproblem 1 + kendala

(

x1≥4

)

2. Cari solusi LP dari subproblem 2

Syntax program LINGO 8.0: max=5*x1+4*x2; x1+x2<=5; 10*x1+6*x2<=45; x1>=0; x2>=0; x<=3;

(20)

12

Hasil yang diperoleh:

Global optimal solution found at iteration: 2 Objective value: 23.00000 Variable Value Reduced Cost

X1 3.000000 0.000000 X2 2.000000 0.000000 Row Slack or Surplus Dual Price 1 23.00000 1.000000 2 0.000000 4.000000 3 3.000000 0.000000 4 3.000000 0.000000 5 2.000000 0.000000 6 0.000000 1.000000

Karena hasilnya sudah memenuhi kendala integer maka subproblem 2 kita jadikan batas bawah.

3. Cari solusi LP dari subproblem 3 Syntax program LINGO 8.0: max=5*x1+4*x2; x1+x2<=5; 10*x1+6*x2<=45; x1>=0; x2>=0; x1>=4;

Hasil yang diperoleh:

Global optimal solution found at iteration: 3 Objective value: 23.33333 Variable Value Reduced Cost

X1 4.000000 0.000000 X2 0.8333333 0.000000 Row Slack or Surplus Dual Price 1 23.33333 1.000000 2 0.1666667 0.000000 3 0.000000 0.6666667 4 4.000000 0.000000 5 0.8333333 0.000000 6 0.000000 -1.666667

Karena solusi yang didapat belum memenuhi kendala integer maka harus dibuat subproblem baru, yaitu:

• Subproblem 4 : Subproblem 3 + kendala

(

x2≥ 1

)

• Subproblem 5 : Subproblem 3 + kendala

(

x2≤ 0

)

4. Cari solusi LP dari subproblem 4

Syntax program LINGO 8.0: max=5*x1+4*x2; x1+x2<=5; 10*x1+6*x2<=45; x1>=0; x2>=0; x1>=4; x2>=1;

(21)

13

Daerah subproblem 4 merupakan daerah tidak fisibel maka subproblem 4 tidak memiliki solusi fisibel.

5. Cari solusi LP dari subproblem 5 Syntax program LINGO 8.0: max=5*x1+4*x2; x1+x2<=5; 10*x1+6*x2<=45; x1>=0; x2>=0; x1>=4; x2<=0;

Hasil yang diperoleh

Global optimal solution found at iteration: 3 Objective value: 22.50000 Variable Value Reduced Cost

X1 4.500000 0.000000 X2 0.000000 0.000000 Row Slack or Surplus Dual Price 1 22.50000 1.000000 2 0.5000000 0.000000 3 0.000000 0.5000000 4 4.500000 0.000000 5 0.000000 0.000000 6 0.5000000 0.000000 7 0.000000 1.000000

Karena solusi yang didapat belum memenuhi kendala integer maka harus dibuat subproblem baru, yaitu:

• Subproblem 6: Subproblem 5 + kendala

(

x1≥ 5

)

• Subproblem 7 : Subproblem 5 + kendala

(

x1≤4

)

Akan tetapi karena hasilnya (22.5) kurang dari batas bawah (23)maka tidak perlu lagi melakukan perhitungan, karena sudah pasti nilai dari pencabangan berikutnya akan kurang dari batas bawah, sehingga dapat kita simpulkan bahwa subproblem 2 sebagai solusi optimum.

Lampiran 2 Penyelesaian solusi pada contoh kasus permasalahan perusahaan Euing Gas

menggunakan software LINGO 8.0 Syntax program LINGO 8.0: MODEL:

! solusi pada permasalahan Euink Gas;

SETS:

PRODUK / GAS1, GAS2/: HARGA_JUAL;

BAHAN_BAKU / MINYAK1, MINYAK2/: KAPASITAS, BELI; DECISION_VARIABLES(BAHAN_BAKU, PRODUK): PRODUKSI; DUMMY1 / Z1..Z4/: BETA, COST, BREAK_POINT;

DUMMY2 / Y1..Y3/: GAMMA; ENDSETS

DATA:

(22)

14

HARGA_JUAL = 12 14;

COST = 0 12500 22500 30000;!lengkapnya hitung dari c(0) sampai c(1500); BREAK_POINT = 0 500 1000 1500; ENDDATA !Fungsi objektif; Max = @sum(DECISION_VARIABLES(I, J): HARGA_JUAL(J)*PRODUKSI(I,J)) - @SUM(DUMMY1(I): BETA(I)*COST(I)); !Kendala 1; @FOR(BAHAN_BAKU(I)|I#EQ#1:

@SUM(PRODUK(J): PRODUKSI(I,J)) <= BELI(I) + KAPASITAS(I));

!Kendala 2;

@FOR(BAHAN_BAKU(I)|I#EQ#2:

@SUM(PRODUK(J): PRODUKSI(I,J)) <= KAPASITAS(I));

!kendala 3; @FOR(PRODUK(J)|J#EQ#1: @SUM(BAHAN_BAKU(I)|I#EQ#1: 0.5*PRODUKSI(I,J) - 0.5*PRODUKSI(I+1,J))>= 0); !kendala 4; @FOR(PRODUK(J)|J#EQ#2: @SUM(BAHAN_BAKU(I)|I#EQ#1: 0.4*PRODUKSI(I,J) - 0.6*PRODUKSI(I+1,J))>= 0); !kendala 5; @FOR(BAHAN_BAKU(I)|I#EQ#1:

@SUM(DUMMY1(J): BREAK_POINT(J)*BETA(J)) = BELI(I));

!kendala tambahan, memaksa pembelian untuk minyak 2 tidak ada;

@FOR(BAHAN_BAKU(I)|I#EQ#2: BELI(I)=0); !kendala 6; @FOR(DUMMY1(I)|I#EQ#1: @SUM(DUMMY2(J)|J#EQ#1:GAMMA(J))>= BETA(I)); !kendala 7; @FOR(DUMMY1(I)|I#EQ#2: @SUM(DUMMY2(J)|J#LT#3:GAMMA(J))>= BETA(I)); !kendala 8; @FOR(DUMMY1(I)|I#EQ#3: @SUM(DUMMY2(J)|J#GT#1:GAMMA(J))>= BETA(I)); !kendala 9; @FOR(DUMMY1(I)|I#EQ#4: @SUM(DUMMY2(J)|J#EQ#3:GAMMA(J))>= BETA(I)); !kendala 10; @SUM(DUMMY1(I):BETA(I))=1; !kendala 11; @SUM(DUMMY2(I):GAMMA(I))=1;

(23)

15

!kendala biner atau kendala 12; @FOR( DUMMY2: @BIN( GAMMA));

! kendala 13 dan 14 tidak perlu ditulis, sudah default Lingo untuk set up variabel yang dicari nilainya >=0;

END

Hasil yang didapat:

Global optimal solution found at iteration: 32 Objective value: 12500.00

Variable Value Reduced Cost

HARGA_JUAL( GAS1) 12.00000 0.000000 HARGA_JUAL( GAS2) 14.00000 0.000000 KAPASITAS( MINYAK1) 500.0000 0.000000 KAPASITAS( MINYAK2) 1000.000 0.000000 BELI( MINYAK1) 1000.000 0.000000 BELI( MINYAK2) 0.000000 0.000000 PRODUKSI( MINYAK1, GAS1) 0.000000 0.000000 PRODUKSI( MINYAK1, GAS2) 1500.000 0.000000 PRODUKSI( MINYAK2, GAS1) 0.000000 3.500000 PRODUKSI( MINYAK2, GAS2) 1000.000 0.000000 BETA( Z1) 0.000000 0.000000 BETA( Z2) 0.000000 0.000000 BETA( Z3) 1.000000 0.000000 BETA( Z4) 0.000000 0.000000 COST( Z1) 0.000000 0.000000 COST( Z2) 12500.00 0.000000 COST( Z3) 22500.00 0.000000 COST( Z4) 30000.00 0.000000 BREAK_POINT( Z1) 0.000000 0.000000 BREAK_POINT( Z2) 500.0000 0.000000 BREAK_POINT( Z3) 1000.000 0.000000 BREAK_POINT( Z4) 1500.000 0.000000 GAMMA( Y1) 0.000000 -10000.00 GAMMA( Y2) 0.000000 -2500.000 GAMMA( Y3) 1.000000 0.000000

Row Slack or Surplus Dual Price 1 12500.00 1.000000 2 0.000000 15.00000 3 0.000000 12.50000 4 0.000000 -6.000000 5 0.000000 -2.500000 6 0.000000 -15.00000 7 0.000000 0.000000 8 0.000000 -7500.000 9 0.000000 -2500.000 10 0.000000 0.000000 11 1.000000 0.000000 12 0.000000 -7500.000 13 0.000000 0.000000

Gambar

Gambar 3  Branching dan  Subproblem masalah IP pada contoh 2.
Grafik fungsi linear sepotong-sepotong  (piecewise linear function) terdiri dari  beberapa segmen garis yang kontinu

Referensi

Dokumen terkait

optimal pada optimasi linear adalah suatu titik pada daerah fisibel dengan nilai fungsi objektif paling besar sedangkan untuk masalah minimisasi, solusi optimal pada

Konsep dasar dari metode simpleks direvisi adalah jika suatu PL diasumsikan memiliki solusi fisibel basis, maka nilai variabeI basis dan fungsi objektif dapat

Pemodelan masalah penjadwalan ini dirumuskan dengan fungsi objektif yang meminimumkan biaya yang dikeluarkan pengelola kamar darurat dengan kendala: (i) tersedianya dokter

Jika solusi optimum ini mempunyai nilai fungsi objektif yang lebih baik daripada solusi fisibel yang diperoleh sebelumnya, maka solusi ini menjadi kandidat solusi optimum dan nilai

2 subproblem tersebut menghasilkan suatu solusi optimum dengan semua variabelnya bernilai integer; jika solusi optimum ini mempunyai nilai fungsi objektif yang lebih baik

Jika solusi optimum ini mempunyai nilai fungsi objektif yang lebih baik daripada solusi fisibel yang diperoleh sebelumnya, maka solusi ini menjadi kandidat

Jika solusi optimum ini mempunyai nilai fungsi objektif yang lebih baik daripada solusi fisibel yang diperoleh sebelumnya, maka solusi ini menjadi kandidat solusi optimum dan nilai

Suatu subproblem dapat dieliminasi apabila subproblem tersebut takfisibel dan batas bawah kandidat solusi lebih kecil (untuk masalah maksimisasi) dari nilai fungsi