Optimasi pemotongan rol kertas dua dimensi dengan menggunakan program linear

(1)

i

DENGAN MENGGUNAKAN PROGRAM LINEAR

Tugas Akhir

Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Sains

Program Studi Matematika

Oleh:

Andreas Irawan Susanto NIM : 133114020

PROGRAM STUDI MATEMATIKA, JURUSAN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA YOGYAKARTA


(2)

ii

DIMENSIONAL USING LINEAR PROGRAMING

A Thesis

Presented as a Partial Fulfillment of the Requirements to Obtain the Degree of Sarjana Sains

Mathematics Study Program

Written by: Andreas Irawan Susanto Student Number: 133114020

MATHEMATICS STUDY PROGRAM DEPARTMENT OF MATHEMATICS FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY YOGYAKARTA


(3)

OPTIMASI

PEMOTONGAN

ROL

KERTAS

I}UA DIMENSI

DENGAN

MENGGUNAKAN PRoGRAM

ImnIn

Dsusun oleh:

14' "t

ll

IE

rt,

f

5*

*,q

t\

t{J

::

j

I

rj!,

' ,

s*.

le

i'":'

' i-'i

{;"=-

*+{

rf \

* i*:i t* ;-1

fuq-' 3

{*{u+*}

-YG. Hartono, S.Si., 19 Juli 2017


(4)

OPTIMASI

PEMOTONGAN

ROLL

KERTAS DUA

DIMENSI

DENGAN

MENGGUNAKAN

PROGRAM LIh{EAR

Disiapkan dan ditulis oleh Andreas Irawan Susanto

NIM

:133114020

Telah dipertaharkan Panitia Penguji i:.2017

Narna Ketua: Ir. Seloetaris: Anggota: YG.

Fakultas Sains dan Teknologi iuersitas Sanata Dhanna

lv

h* :'.-'va*;

s,r*r-rffii"

prneuP

fr.r/k"!^

ul;

zotr

lsb

fr'

9.

rt tsn'tr


(5)

v

HALAMAN PERSEMBAHAN

Skripsi ini saya persembahkan kepada:

 Tuhan Yesus Kristus atas segala Berkat dan Kasih-Nya disepanjang hidup saya.

 Papa dan Mama Tercinta yaitu Liem Kwan Seng dan Suwarni.

 Adik saya yaitu Elvika Kumalasari Susanto.

 Bapak YG. Hartono, S.Si., M.Sc., Ph.D., selaku dosen pembimbing skripsi saya.

Serahkanlah Perbuatanmu Kepada TUHAN,

Maka Terlaksanalah Segala Rencanamu

(Amsal 16:3)


(6)

Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian dari karya orang lain kecuali yang disebutkan dalam daftar pustaka sebagaimana layaknya karya ilmiah.

Andreas Irawan Susanto


(7)

vii

Industri kertas melakukan proses pemotongan kertas untuk menghasilkan berbagai jenis ukuran lembaran kertas. Proses pemotongan rol kertas dilakukan menggunakan mesin. Proses pemotongan ini harus dilakukan dengan optimal. Apabila tidak dilakukan dengan optimal maka akan menimbulkan sisa pemotongan kertas. Sisa kertas ini disebabkan oleh beberapa faktor yang salah satu di antaranya adalah ukuran rol kertas tidak sesuai dengan ukuran lembaran kertas produksi.

Proses pengoptimalan sisa pemotongan kertas menggunakan ilmu matematika, yaitu program linear. Pada tugas akhir ini dibahas masalah pen-goptimalan pemotongan kertas berupa Mixed Integer Non Linear Programing

(MINLP). MINLP dapat diselesaikan dengan cara merubah masalah MINLP ke-bentuk Mixed Integer Linear Programing (MILP). Proses pengubahan ini dil-akukan dengan cara memasukkan nilai dari salah satu variabel keputusan.Variabel keputusan tersebut adalah banyaknya pola pemotongan. Oleh sebab itu banyaknya pola pemotongan juga dicari terlebih dahulu.

Semua proses tersebut dilakukan pada MATLAB dengan membuat program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan program yang telah dibuat. Terdapat

juga contoh kasus dengan delapan jenis kertas produksi. Hasil yang diperoleh adalah cara pemotongan tiap rol, panjang setiap jenis kertas produksi yang telah dipotong dan sisa minimum pemotongan kertas.

Kata Kunci: Pemotongan Kertas, Pola Pemotongan Kertas, Program Linear, Mixed Integer Non Linear Programing (MINLP), Mixed Integer Linear Program-ing (MILP), MATLAB, dan GUI MATLAB.


(8)

viii

The cutting paper industry process produces various types of paper sheet sizes. The paper rolls cutting process is done using the machine. This cutting process should be done optimally. If not done optimally, it will make lots of waste. The waste could be caused by several factors, one of the factors is the size of the paper roll size which is not matching to the size of the paper sheet production.

Linear program can be used to optimize the paper cutting process. This thesis discusses about problem of optimation cutting paper with Mixed Integer Non-Linear Programming (MINLP). MINLP can be solved with converted MINLP become Mixed Integer Linear Programing (MILP). This conversion pro-cess is done by inputting the value of one of the decision variables. The deci-sion variable is the number of cutting patterns. Therefore, the number of cutting patterns should be known.

All these processes were done in MATLAB by creating a program and GUI MATLAB. The purpose of the GUI MATLAB was to help everyone to use the program they had created. There were also cases provided with eight types of production paper cases. The results obtained were how to cut each roll, the length of each type of production paper that has been cut and the minimum remaining paper.

Keywords: Paper Cutting, Paper Cutting Pattern, Linear Program, Mixed Integer Non Linear Programing (MINLP), Mixed Integer Linear Programing (MILP), MATLAB, and GUI MATLAB.


(9)

Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma: Nama : Andreas Irawan Susanto

NIM

: 133114020

Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul:

OPTIMASI

PEMOTONGAN ROL KERTAS DUA

DIMENSI

DENGAN

MENGGUNAKAN

PROGRAM

LINEAR

beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma untuk menyimpan, mengalihkan

ke dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data,

mendistribusikan secara terbatas, dan mempublikasikannya di internet atau media

lainnya untuk kepentingan akademis tanpa perlu minta izin dari saya ataupun memberikan royalti kepada saya selama tetap mencantumkan nama saya sebagai

penulis.

Demikian pernyataan ini saya buat dengan sebenarnya. Dibuat di Yogyakarta

Padatanggal 19 Juli 2017

Andreas Irawan Susanto

,


(10)

x

Puji dan syukur penulis haturkan kepada Tuhan Yang Maha Esa karena atas berkat dan kasih-Nya penulis dapat menyelesaikan tugas akhir ini dengan baik. Tugas akhir dibuat sebagai salah satu syarat untuk memperoleh gelar sarjana Matematika pada Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta. Penulis mendapat banyak dukungan dan bantuan dalam proses menyelesaikan tugas akhir ini. Oleh karena itu, penulis ingin menyampaikan terima kasih kepada:

1. Bapak YG. Hartono, S.Si., M.Sc., Ph.D., selaku Ketua Program Studi dan dosen pembimbing tugas akhir yang penuh sabar membimbing, meluangkan waktu, tenaga, dan pikiran serta memberikan masukan, arahan, dan nasihat kepada penulis.

2. Bapak Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D., selaku dekan Fakultas Sains dan Teknologi.

3. Ibu M. V. Any Herawati, S.Si., M.Si., selaku wakil kepala program studi Matematika dan Dosen Pembimbing Akademik yang selalu memberikan arahan dalam menjalani perkuliahan.

4. Romo Prof. Dr. Frans Susilo, S.J., Bapak Dr. rer. nat. Herry P. Suryawan, S.Si., M.Si., Bapak Ir. Ig. Aris Dwiatmoko, M.Sc., Bapak YG. Hartono, S.Si., M.Sc., Ph.D., Ibu M. V. Any Herawati, S.Si., M.Sc., dan Ibu Lusia Krismiyati Budiasih, S.Si., M.Si., selaku dosen program studi matematika yang telah membimbing, memberikan ilmu dan pengalaman selama masa perkuliahan.

5. Kedua orang tua saya yaitu Liem Kwan Seng dan Suwarni yang selalu mendoakan, mendukung, memberi semangat dan motivasi dalam me-nyelesaikan tugas akhir ini.

6. Adik saya yaitu Elvika Kumalasari Susanto yang selalu menemani dan menghibur dalam menyelesaikan tugas akhir ini.

7. Teman-teman Program Sudi Matematika Angkatan 2013: Bintang, Agung, Tia, Yuni, Ezra, Ditha, Sisca, Laras, Lia, Sari, Yola, Yui, Inge, Ambar,


(11)

8.

Semua pihak yang telah memberikan semangat, masukan, dan arahan

selama perkuliahan.

Penulis menyadari bahwa masih banyak terdapat kekurangan pada tugas akhir ini maka penulis sangat terbuka terhadap kritik dan saran dari pembaca

untuk penyempumaan tugas akhir ini selanjutnya. Semoga tugas akhir ini

memberikan manfaat bagi semua pihak, khususnya bagi penulis dan pembaca.

Yogyakarta, 19 Juli 2017

Andreas Irawan Susanto

t


(12)

xii

HALAMAN JUDUL ... ii

HALAMAN JUDUL DALAM BAHASA INGGRIS ... ii

HALAMAN PERSETUJUAN PEMBIMBING ... iii

HALAMAN PENGESAHAN ... iv

HALAMAN PERSEMBAHAN ... v

PERNYATAAN KEASLIAN KARYA ... vi

ABSTRAK ... vii

ABSTRACT ... viii

LEMBAR PERNYATAAN PERSETUJUAN ... ix

KATA PENGANTAR ... x

DAFTAR ISI ... xii

BAB I ... 1

A. Latar Belakang ... 1

B. Rumusan Masalah ... 3

C. Batasan Masalah ... 3

D. Metode Penulisan ... 3

E. Tujuan Penulisan ... 3

F. Manfaat Penulisan ... 3

G. Sistematika Penulisan ... 4

BAB II ... 5

A. Program Linear dan Program Linear Bulat ... 5

B. Metode Pencabangan dan Pembatasan (Branch and Bound Method) ... 8


(13)

xiii

BAB III ... 22

A. Masalah Sisa Pemotongan (Trims Loss Problem) ... 22

B. Mencari Banyaknya Pola Pemotongan ... 22

C. Model Matematika ... 54

BAB IV ... 66

BAB V ... 76

A. Kesimpulan ... 76

B. Saran ... 76

DAFTAR PUSTAKA ... 78


(14)

1

BAB I PENDAHULUAN

A. Latar Belakang

Dalam suatu proses produksi orang menginginkan suatu hal yang optimal, oleh karena itu orang ingin meminimalkan kerugian dalam proses produksi, khususnya pada proses pemotongan material. Sering kita jumpai sisa pemotongan yang tidak dapat digunakan lagi. Hal tersebut terjadi dikarenakan ukuran material utamanya tidak bersesuaian dengan yang diharapkan dalam proses. Masalah tersebut sering dikenal sebagai masalah sisa pemotongan (trim loss) yang berarti masalah yang timbul karena hasil pemotongan yang tidak optimal.

Masalah sisa pemotongan selain memboroskan bahan baku juga dapat membuang-buang waktu. Misalnya saja dalam memproduksi kertas, jika pemotongannya tidak optimal maka banyak bahan baku yang harus didaur ulang sehingga proses pemotongan kertas adalah hal yang penting dalam memproduksi kertas. Pemotongan kertas memiliki tiga tahap, yang pertama pemotongan dari rol besar ke rol yang lebih kecil, yang kedua pemotongan dari rol yang kecil menjadi lembaran kertas yang memiliki ukuran besar dan yang ketiga pemotongan dari lembaran kertas yang besar menjadi lembaran kertas yang lebih kecil lagi.

Dalam tugas akhir ini, akan dibahas mengenai bagaimana cara mengoptimalkan proses produksi kertas, khususnya pemotongan kertas pada tahap kedua yaitu pemotongan dari rol kecil ke lembaran kertas yang ukuran besar. Pada pemotongan kertas tahap kedua masalah sisa pemotongan juga sering terjadi.

Masalah tersebut adalah masalah meminimumkan sisa kertas dengan banyaknya permintaan yang beragam mengenai ukuran kertas yang disediakan suatu pabrik. Sisa kertas ini ada karena ukuran kertas yang diminta tidak sesuai dengan panjang dan lebar rol kertas yang ada. Pada tugas akhir ini pemotongan kertas menggunakan mesin pemotong kertas dengan memperhatikan ukuran pan-jang dan lebar kertas Mesin tersebut memiliki tujuh pisau yang terdiri dari dua pisau memotong secara horisontal dan lima pisau memotong secara vertikal.


(15)

Gambar 1.1 Operasi Mesin Pemotong

Pada dasarnya terdapat tiga faktor yang menyebabkan adanya masalah sisa pemotongan pada pemotongan kertas tahap kedua. Pertama dalam setiap proses produksi ukuran rol memiliki panjang dan lebar yang sama, akan tetapi terdapat permintaan yang beragam mengenai ukuran panjang dan lembaran kertas yang sudah disediakan suatu pabrik. Kedua adalah ketika kita mengubah pola pemotongan kertas sebab setiap kombinasi pola memiliki hasil sisa kertas yang berbeda. Ketiga mengenai pola pemotongan, dalam sekali pemotongan terkadang dapat dihasilkan dua jenis produk bahkan lebih sehingga dapat mengakibatkan adanya permintaan yang sudah terpenuhi dan adanya permintaaan yang belum terpenuhi bahkan ada produksi yang melebihi permintaan.

Permasalahan sisa pemotongan tersebut dapat dilihat sebagai masalah Program Linear. Masalah tersebut dapat juga dipandang sebagai permasalahan

integer linear programming (ILP) atau mixed integer linear programming

(MILP). Pada tugas akhir ini penyelesaian menggunakan program komputer yaitu Matlab. Pada program Matlab juga dibuat Graphical User Interface (GUI) untuk memudahkan dalam menjalankannya.

Rol Kertas

Pisau Horisontal

Pisau Horisontal


(16)

B. Rumusan Masalah

Masalah yang dirumuskan pada tugas akhir ini adalah

1. Bagaimana bentuk Program Linear dari data yang akan dirumuskan? 2. Bagaimana cara penyelesaian dari masalah Program Linear yang didapat? 3. Bagaimana membuat program pada Matlab?

C. Batasan Masalah

Batasan yang ada dalam tugas akhir ini adalah

1. Mesin yang digunakan hanya ada satu mesin pemotong kertas. 2. Setiap rol memiliki panjang yang sama.

3. Pada tugas akhir ini jenis kertas permintaan dibatasi maksimal delapan jenis kertas karena pertimbangan waktu komputasi.

D. Metode Penulisan

Metode yang digunakan penulis dalam penulisan tugas akhir ini adalah metode studi pustaka dengan membaca dan mempelajari buku-buku serta jurnal-jurnal yang berhubungan dengan Program Linear dan masalah sisa pemotongan.

E. Tujuan Penulisan

Tujuan dari penulisan tugas akhir ini adalah

1. Membuat model persamaan linear dari data yang didapat 2. Membuat progam masalah pemotongan kertas pada Matlab 3. Mengoptimalkan masalah pemotongan rol kertas

F. Manfaat Penulisan

Manfaat penulisan tugas akhir ini adalah untuk membantu menyelesaikan masalah sisa pemotongan yang sering terjadi pada industri pemotongan kertas dengan adanya permintaan yang banyak dari konsumen dan dengan adanya program komputer yang dibuat dapat memudahkan orang menyelesaikan masalah sisa pemotongan tersebut.


(17)

G. Sistematika Penulisan

BAB I PENDAHULUAN A. Latar Belakang B. Rumusan Masalah C. Batasan Masalah D. Tujuan Penulisan E. Manfaat Penulisan F. Metode Penulisan G. Sistematika Penulisan BAB II PROGRAM LINEAR

A. Program Linear dan Program Linear Bulat

B. Metode Pencabangan dan Pembatasan (Branch and Bound Method)

C. Program Linear Biner

D. Program Linear Campuran (Mixed Integer Linear Programing) BAB III MASALAH SISA PEMOTONGAN

A. Masalah Sisa Pemotongan (Trims Loss Problem) B. Mencari Banyaknya Pola Pemotongan

C. Model Matematika

BAB IV PENYELESAIAN MASALAH PEMOTONGAN ROL KERTAS DENGAN MENGGUNAKAN PROGRAM MATLAB

BAB V PENUTUP A. Kesimpulan B. Saran


(18)

5

BAB II

PROGRAM LINEAR

A. Program Linear dan Program Linear Bulat

Istilah Program Linear mulai dikenal pada tahun 1950-an, akan tetapi masalah Program Linear sudah mulai ada sejak tahun 1940-an di Departemen Pertahanan Inggris dan Amerika untuk menjawab masalah optimisasi perencanaan operasi perang melawan Jerman dalam Perang Dunia ke-II. Pada tahun 1947 teori dan teknik Simpleks dikembangkan oleh Dantzig dan para pakar lainnya. Sejak itu, para ahli dari berbagai bidang ilmu pengetahuan, terutama dalam bidang matematika dan ekonomi, telah mengembangkan teori dalam Program Linear dan penerapan aplikasi dari Program Linear. Masalah Program Linear adalah mengoptimalkan suatu fungsi tujuan dengan adanya batas kendala-kendala berupa persamaan atau pertidaksamaan. Pada zaman sekarang Program Linear digunakan di berbagai bidang seperti, industri, ekonomi, bisnis, dan lain-lain.

Selanjutnya akan dilihat beberapa asumsi yang terdapat pada masalah Program Linear sebagai berikut

1. Proporsionalitas

Setiap variabel yang terdapat pada fungsi tujuan atau fungsi kendala haruslah sebanding. Misalnya, untuk membuat sebuah kursi dibutuhkan waktu selama 4 jam, jadi untuk membuat 2 kursi dibutuhkan waktu selama 8 jam.

2. Aditivitas

Kontribusi dari setiap variabel dari fungsi tujuan atau fungsi kendala tidak ter-gantung dari nilai-nilai variabel lainnya. Contohnya untuk membeli 1 mang-kok bakso dibutuhkan 1000 dan untuk membeli 1 es jeruk 500 sehingga total-nya 1500. Sedangkan untuk memebeli 2 mangkok bakso dibutuhkan 2000 dan 1 es jeruk 500 sehingga totalnya 2000. Jadi tidak harus memebeli 2 mangkok bakso dan juga 2 es jeruk.


(19)

3. Divisibility

Variabel keputusan dapat berupa bilangan pecahan. Namun, dengan menggunakan teknik khusus yang disebut integer programing (Program Linear bulat) dapat menghasilkan variabel keputusan yang bernilai bulat. 4. Kepastian

Setiap parameter (koefisien fungsi tujuan, koefisien kendala, dan nilai di sisi kanan) diketahui dengan pasti dan tidak berubah selama periode analisis.

Secara umum masalah Program Linear dapat dirumuskan sebagai berikut: Maksimumkan atau Minimumkan

(1)

Kendala (2)

(3)

Bagian (1) biasa disebut sebagai fungsi tujuan yang akan dicari nilai optimal. Sedangkan bagian (2) adalah fungsi kendala yang harus di penuhi. Variabel disebut variabel keputusan dan nilainya harus memenuhi kendala. Himpunan yang memenuhi semua kendala di sebuah titik layak dan himpunan semua titik-titik layak tersebut disebut daerah layak. Solusi dari Program Linear haruslah titik di daerah layak.

Secara umum rumus tersebut dapat ditulis secara lebih ringkas menjadi

Maksimumkan atau Minimumkan (1)

Kendala (2)


(20)

(3) Bagian (3) menunjukkan bahwa setiap variabel keputusan haruslah bernilai tidak negatif. Konstanta disebut koefisien teknis, disebut koefisien ongkos, dan disebut suku tetap di ruas kanan.

Rumus Program Linear juga bisa ditulis dalam bentuk matrik sebagai berikut:

Minimumkan atau Maksimumkan

Kendala

dengan

[ ] [

] [

]

Menggunakan matrik untuk masalah Program Linear bertujuan agar dalam proses pembuatan program lebih mudah serta menghemat simbol.

Selanjutnya akan dilihat bagaimana jika hasil dari Program Linear harus bulat atau yang sering disebut Program Linear bulat. Misalnya saja pada masalah pemotongan kertas pasti banyak kertas yang dihasilkan haruslah utuh sehingga nilai desimal pada variabel keputusan harus dihindari. Untuk menghilangkan nilai desimal maka rumusan Program Linear dapat diubah menjadi seperti berikut: Minimum atau Maksimum

Kendala

dengan


(21)

[

] [

] [

]

Perbedaan rumus Program Linear bulat hanya terletak pada variabel keputusan sehingga kendalanya ditambah dengan setiap anggota haruslah bilangan bulat positif. Program Linear bulat ini dapat diselesaikan dengan berbagai cara salah satunya dengan metode pencabangan dan pembatasan. Metode pencabangan dan pembatasan akan dibahas pada subbab selanjutnya.

B. Metode Pencabangan dan Pembatasan (Branch and Bound Method)

Metode pencabangan dan pembatasan berkembang pada tahun 1960 dan dikembangkan oleh A. Land dan G. Doig untuk menyelesaikan program bilangan bulat dan program bilangan bulat campuran. Metode pencabangan dan pembatasan merupakan metode yang sering digunakan untuk menyelesaikan masalah Program Linear bulat. Pada Metode pencabangan dan pembatasan memiliki tiga hal penting yaitu:

1. Pencabangan (Branching)

Pencabangan dilakukan jika masih terdapat variabel keputusan yang harus bernilai bulat namun memiliki solusi yang tidak bulat. Pencabangan dilakukan dengan cara menambahkan kendala baru pada masalah awal. Kendala baru yang ditambahkan merupakan pembulatan ke atas dan ke bawah dari solusi yang masih berbentuk pecahan. Penambahan kendala ini bertujuan untuk membuat variabel keputusan yang belum bernilai bulat supaya bernilai bulat. Proses seperti ini dilakukan terus menerus sampai semua cabang menghasilkan solusi bulat.

2. Pembatasan (Bound)

Pada metode pencabangan dan pembatasan terdapat dua batas yaitu batas atas (upper bound) dan batas bawah (lower bound). Langkah ini bertujuan untuk membatasi solusi sehingga didapat solusi yang optimal. Pada masalah maksimum batas atas merupakan solusi dari masalah Program Linear bulat


(22)

dan pada masalah minimum batas bawah merupakan solusi dari masalah Program Linear bulat.

3. Penghentian Cabang (Fathoming)

Pencabangan pada metode pencabangan dan pembatasan akan berhenti jika

 Tidak memiliki daerah layak (infeasible).

 Semua variabel keputusan yang harus bernilai bulat sudah memenuhi syarat yaitu sudah menjadi bilangan bulat.

 Pada masalah maksimum, penghentian pencabangan pada suatu sub masalah dilakukan jika batas atas dari sub masalah tersebut tidak lebih besar atau sama dengan batas bawah.

 Pada masalah minimum penghentian pencabangan pada suatu sub masalah dilakukan jika batas bawah tidak lebih kecil atau sama dengan batas atas.

Kondisi optimal pada metode pencabangan dan pembatasan terjadi jika tidak ada lagi sub masalah yang perlu dicabangkan lagi.

Pencabangan dan pembatasan memiliki cara kerja sebagai berikut

1. Selesaikan Program Linear tanpa memperhatikan kendala bilangan bulatnya. Jika penyelesaian yang didapat merupakan bilangan bulat maka solusi optimal sudah didapat. Jika ada variabel keputusan yang belum bulat maka pencabangan dilakukan.

2. Tambahkan kendala pada variabel keputusan yang tidak menghasilkan bilangan bulat. Penambahan kendala hanya menambah satu demi satu kendala. Penambahan kendala ini berakibat terbentuknya dua sub masalah baru.

3. Menyelesaikan setiap Program Linear dengan batas baru tetapi fungsi tujuan sama.

4. Jika masih terdapat variabel keputusan yang belum bulat maka lakukan pencabangan kembali dan jika semua variabel keputusan sudah bulat maka pencabangan dihentikan sehingga solusi yang didapat menjadi kandidat solusi optimal.

Untuk melihat cara kerja pencabangan dan pembatasan diambil contoh sebagai berikut:


(23)

Contoh 2.1

Maksimumkan

Kendala

Pertama dipilih solusi awal secara sebarang yaitu sehingga diperoleh nilai � sebagai LP1, selanjutnya lihat bagan di bawah

Sub LP1, langkah 1. Dipilih batas atas dan batas bawah . Pada kondisi ini

disebut sebagai masalah P0 Maksimumkan

Kendala

Dengan penyelesaian , z=23.75 akan tetapi disini

Langkah 2. (Pencabangan). Pada kondisi ini variabel keputusan haruslah bulat maka pencabangan dilakukan. Pada kondisi ini kendalanya bertambah atau sebab nilai

Sub LP2, masalah LP2. Maksimumkan

Kendala


(24)

Langkah 3. (Penyelesaian). Penyelesaian untuk masalah LP2 adalah z=23

Langkah 4. Pada kondisi ini sudah terlihat bahwa variabel keputusan sudah bulat semuanya sehingga kita dapat menyimpan solusi ini sebagai kandidat solusi opti-mal.

Sub LP3, masalah LP3. Maksimumkan

Kendala

Langkah 3. (Penyelesaian). Penyelesaian untuk masalah LP3 adalah , z=23.33

Langkah 4. Pada kondisi ini terlihat bahwa variabel keputusan masih belum bulat sehingga harus dilakukan pencabangan kembali.

Langkah 2. (Pencabangan). Pada kondisi ini variabel keputusan haruslah bulat maka pencabangan dilakukan. Pada kondisi ini kendalanya bertambah atau

Sub LP4, masalah LP4. Maksimumkan

Kendala

Langkah 3. (Penyelesaian). Penyelesaian untuk masalah LP4 adalah , z=22.55

Langkah 4. Pada kondisi ini terlihat bahwa variabel keputusan masih belum bulat sehingga harus dilakukan pencabangan kembali.


(25)

Langkah 2. (Pencabangan). Pada kondisi ini variabel keputusan haruslah bulat maka pencabangan dilakukan. Pada kondisi ini kendalanya bertambah atau

Sub LP5, masalah LP5. Maksimumkan

Kendala

Langkah 3. (Penyelesaian). Penyelesaian untuk masalah LP5 tidak ada sebab pada kasus ini tidak terdapat daerah layak.

Langkah 4. Pada kondisi seperti ini pencabangan dihentikan sebab tidak terdapat solusi sama sekali.

Sub LP6, masalah LP6. Maksimumkan

Kendala

Langkah 3. (Penyelesaian). Penyelesaian untuk masalah LP6 adalah , � .

Langkah 4. Pada kondisi ini sudah terlihat bahwa variabel keputusan sudah bulat semuanya sehingga kita dapat menyimpan solusi ini sebagai kandidat solusi opti-mal.

Sub LP7, masalah LP7. Maksimumkan


(26)

Kendala

Langkah 3. (Penyelesaian). Penyelesaian untuk masalah LP7 tidak ada sebab pada kasus ini tidak terdapat daerah layak.

Langkah 4. Pada kondisi seperti ini pencabangan dihentikan sebab tidak terdapat solusi sama sekali.

Semua pencabangan sudah dihentikan sehingga tinggal dipilih solusi optimal dari kandidat solusi yang ada dan didapat dengan nilai z = 23.


(27)

Berikut adalah gambar bagan pencabangan yang dilakukan

LP1

, z=23.75

LP2 , z=23

LP3

, z=23.33

LP7

tidak ada solusi yang layak LP6

, z=20

LP5

tidak ada solusi yang layak LP4

, z=22.55


(28)

C. Program Linear Biner

Pada Program Linear biner setiap variabel keputusan hanya dapat mengambil nilai 0 atau 1. Pada dunia nyata masalah Program Linear biner seperti pilihan ya atau tidak, 0 untuk pilihan tidak dan 1 untuk pilihan ya. Program Linear biner ini dapat diselesaikan dengan metode pencabangan dan pembatasan.

Pada masalah Program Linear biner metode pencabangan dan pembatasan bekerja seperti menyelesaikan Program Linear bulat. Berikut adalah langkah menyelesaikan Program Linear biner:

1. Langkah pertama adalah melihat variabel keputusan pada fungsi tujuan. Jika masalah minimum maka variabel keputusan yang memiliki nilai kecil dilakukan pencabangan. Jika masalah maksimum maka variabel keputusan yang memiliki nilai besar dilakukan pencabangan.

2. Pencabangan ini akan menghasilkan dua sub masalah baru.

3. Menyelesaikan setiap Program Linear. Jika solusi belum berada di daerah layak maka lakukan pencabangan lagi.

Contoh 2.2

Maksimum

Kendala

Langkah pertama, mencari variabel keputusan yang memiliki koefisien paling besar pada fungsi tujuan. Terlihat bahwa memiliki nilai terbesar yaitu 6. Ambil nilai sebagai LP1 dengan nilai , dan solusi ini berada di daerah yang tidak layak sehingga dilakukan pencabangan kembali.

Langkah selanjutnya melihat kembali nilai terbesar kedua dari koefisien variabel keputusan pada fungsi tujuan. Terlihat bahwa memiliki nilai 5, sehingga pada LP1 dilakukan pencabangan dengan menambah kendala


(29)

dan . Pada LP2 yaitu pencabangan dengan menambah kendala diperoleh kandidat solusi optimal yaitu , dengan nilai � dan berada pada daerah layak. Pada LP3 yaitu pencabangan dengan menambah kendala tetap dihasilkan solusi yang sama sehingga pencabangan dihentikan.

Semua pencabangan telah dihentikan sehingga dapat dilihat solusi yang paling optimal dari kandidat solusi yang ada dan diperoleh solusi optimal adalah

, � .

Berikut adalah bagan pencabangan yang dilakukan

D. Program Linear Campuran (Mixed Integer Linear Programing)

MILP adalah Program Linear dengan beberapa variabel keputusannya haruslah bilangan bulat. Pada dunia nyata masalah MILP adalah masalah yang paling sering. Masalah MILP dapat diselesaikan dengan menggunakan metode pencabangan dan pembatasan. Metode pencabangan dan pembatasan merupakan metode yang efisien secara komputasi.

Selanjutnya akan dilihat algoritma pencabangan dan pembatasan untuk menyelesaikan MILP

LP1

, Tidak ada solusi layak

LP2

, �

LP3 , Tidak ada solusi layak


(30)

1. Inisialisasi

Mengatur batas atas dan batas bawah dari solusi optimal dan selanjutnya memilih penyelesaian MILP pada daerah layak.

2. Cabang (Brancing)

Menyelesaikan setiap Program Linear dengan batas baru tetapi fungsi tujuan sama. Misalkan variabel berada pada interval [a,b] dan merupakan batas yang harus bilangan bulat maka batas baru yang bisa dibentuk adalah .

3. Penyelesaian

Menyelesaikan masalah selanjutnya pada cabang yang lain. 4. Pembaharuan Batas

Jika nilai z yang kita peroleh pada cabang yang baru lebih optimal daripada sebelumnya maka cabang ini menjadi kandidat sebagai solusi optimal.

5. Pemotongan

Jika penyelesaian yang diperoleh berada di daerah layak bukan berarti pen-cabangan berhenti, mungkin bisa ada penpen-cabangan lebih lanjut. Jika pada per-soalan tidak terdapat penyelesaian pada daerah layakanya maka pencabangan dihentikan atau dipotong.

6. Optimal

Jika terdapat pencabangan yang belum terselesaikan kita lanjutkan pada langkah ke-3. Jika semua pencabangan telah dihentikan maka dari kandidat penyelesaian yang telah diperoleh dipilih kandidat penyelesaian yang paling optimal.

Metode pencabangan dan pembatasan akan menghasilkan solusi optimal jika:

1. Sub masalah berada di daerah yang tidak layak.

2. Penyelesaian sudah berada pada batas-batanya (memenuhi daerah layak) dan memenuhi kondisi bilangan bulat untuk variabel keputusan yang ditetapkan. 3. Batas bawah yang diperoleh lebih besar dari batas atas.

Berikut adalah contoh metode pencabangan dan pembatasan untuk menyelesaikan masalah MILP


(31)

Contoh 2.3

Minimum

Kendala

Contoh 2.3 adalah contoh masalah MILP sebab variabel keputusan pada dan haruslah bernilai bulat dan variabel keputusan dan tidak harus bernilai bulat. Langkah 1. (Inisialisasi). Dipilih batas atas dan batas bawah . Pada kondi-si ini disebut sebagai masalah P0

Minimum

Kendala

Dengan penyelesaian , akan tetapi disini

Langkah 2. (Pencabangan). Pada kondisi ini variabel keputusan haruslah bulat maka pencabangan dilakukan. Pada kondisi ini kendalanya bertambah atau

Sub LP1,masalah P1. Minimum

Kendala


(32)

Langkah 3. (Penyelesaian). Penyelesaian untuk masalah P1 adalah

Langkah 4. (Pembaharuan Batas). Pada kondisi ini sudah memenuhi kendala awal yaitu , . Nilai dari fungsi tujuan adalah 1.5 lebih kecil dari pada batas atas

yang dimiliki sehingga nilai batas atas diubah dari ∞ ke 1.5, dan nilai ini disimpan

sebagai kandidat optimal.

Langkah 5. (Pemotongan) Tidak ada pencabangan lebih jauh dari cabang ini se-hingga kita potong, sebab , sehingga dilanjutkan ke langkah 3.

Sub LP2, masalah P2. Minimum

Kendala

Langkah 3. (Penyelesaian). Penyelesaian untuk masalah P2 adalah

Langkah 4. (Pembaharuan Batas). Pada kondisi ini nilai dari bukan bilangan bulat. Fungsi tujuannya bernilai 0.5 berada diantara batas bawah 0 dan batas atas 1.5 maka batas bawah di perbaruhi dari 0 menjadi 0.5 (sehingga solusi optimal yang akan didapat harus berada pada interval 0.5 sampai 1.5). Selanjutnya pen-cabangan akan dilakukan pada variabel menjadi dua masalah sebagai berikut:

Sub LP3,masalah P3. Minimum

Kendala


(33)

Langkah 3. (Penyelesaian). Pada masalah P3 tidak terdapat daerah layak.

Langkah 4. (Pembaharuan Batas). Tidak ada yang dilakukan pada langkah ini se-hingga dilanjutkan pada langkah selanjutnya.

Langkah 5. (Cutting). Pada kondisi ini tidak terdapat penyelesaian optimal se-hingga dilanjutkan pada langkah selanjutnya.

Sub LP4,masalah P4. Minimum

Kendala

Langkah 3. (Penyelesaian). P4 memiliki daerah layak sehingga dapat dicari so-lusinya dan diperoleh

Langkah 4. (Pembaharuan Batas). Tidak ada yang dilakukan pada langkah ini se-hingga dilanjutkan pada langkah selanjutnya.

Langkah 5. (Pemotongan). Pada kondisi ini variabel tidak bilangan bulat dan nilai solusi optimalnya lebih optimal pada masalah sebelumnya maka dilanjutkan langkah selanjutnya.

Langkah 6. (Optimasi). Pada kondisi ini tidak terdapat pencabangan lebih lanjut sehingga solusi optimal diperoleh yaitu:


(34)

Untuk melihat proses pencabangan yang dilakukan, dapat dilihat pada gambar 2.3.

Masalah MILP dapat diselesaikan dengan metode pencabangan dan pembatasan akan tetapi bagaimana jika pada fungsi kendala terdapat fungsi yang tidak linear atau yang disebut dengan masalah MINLP. Masalah MINLP dapat diselesaikan sama seperti menyelesaikan masalah MILP ditambah dengan menyelesaikan kendala yang tidak linear.

P0

P1 P2

P3 P4

Gambar 2.3 Alur Percabangan Contoh 2.3


(35)

22

BAB III

MASALAH SISA PEMOTONGAN

A. Masalah Sisa Pemotongan (Trims Loss Problem)

Dalam dunia industri, khususnya industri kertas masalah meminimalkan sisa pemotongan kertas merupakan salah satu faktor terpenting. Terjadinya sisa pemotongan ini dapat disebabkan oleh beberapa hal, salah satu diantaranya adalah lebar dan panjang kertas permintaan tidak sesuai dengan rol kertas produksi. Meminimumkan sisa pemotongan juga tergantung pada pola pemotongan yang merupakan kombinasi dari lembaran kertas permintaan yang dipotong pada waktu yang sama.

Pada tugas akhir ini akan dibahas mengenai bagaimana meminimalkan sisa pemotongan dari rol kertas ke lembaran kertas. Masalah utama dari pemotongan dari rol kertas ke lembaran kertas adalah bagimana memenuhi banyaknya permintaan yang ada dengan meminimalkan sisa pemotongan kertas dengan berbagai ukuran kertas yang diminta. Proses pemotongan kertas dari rol kertas produksi ke lembaran kertas disebut masalah pemotongan dua dimensi. Hal tersebut dikarenakan dalam memotong rol kertas produksi harus memperhatikan panjang dan lebar rol kertas produksi serta ukuran kertas permintaan yang ada.

Pada proses produksi rol kertas produksi memiliki panjang yang berbeda-beda, akan tetapi pada tugas akhir ini panjang dan lebar rol kertas produksi diang-gap sama. Panjang dan lebar rol kertas produksi memiliki batas atas dan batas bawah pemotongan. Lebar rol kertas produksi digunakan untuk membuat pola pemotongan. Banyaknya pola pemotongan merupakan salah satu faktor dalam meminimalkan sisa pemotongan, oleh sebab itu pada subbab selanjutnya akan dibahas mengenai bagaimana cara mencari banyaknya pola pemotongan.

B. Mencari Banyaknya Pola Pemotongan

Pola pemotongan merupakan suatu pilihan dalam miminimalkan sisa pemotongan dan memenuhi jumlah permintaan. Pada masalah nyata yang seder-hana pola pemotongan dapat dicari secara manual yaitu dengan cara mencoba


(36)

semua kombinasi dari setiap jenis kertas yang ada dan harus memperhatikan jumlah lebar setiap jenis kertas yang dipotong tidak melebihi lebar dari rol kertas. Pada pemotongan rol kertas, lebar rol kertas dapat dibatasi dengan batas maksimum pemotongan rol kertas dan batas minimum lebar pemotongan rol kertas.

Contoh 3.1

Misalnya saja terdapat lebar lembaran kertas permintaan (pada tugas akhir ini disebut dengan bi) dengan ukuran 3 cm dan 5 cm. Itu berarti jenis kertas

pertama (b1) memiliki lebar 3 cm dan kertas jenis kedua (b2) memiliki lebar 5 cm.

Terdapat juga batas atas pemotongan dari lebar rol kertas produksi (pada tugas akhir disebut dengan ) dengan lebar 16 cm dan batas bawah pemotongan dari lebar rol kertas produksi (pada tugas akhir disebut dengan ) dengan lebar 14 cm. dan digunakan untuk membuat batas pemotongan lebar rol ker-tas. Pembuatan batas ini bertujuan supaya tidak banyak kertas yang terbuang. Pa-da contoh 3.1 mencari pola pemotongan dengan manual Pa-dan pola yang diperoleh dapat dilihat pada Tabel 3.1.

Tabel 3.1 Banyaknya pola pemotongan dengan nilai sisa

pemotongan Pola

ke

Lebar lembaran kertas permintaan

(bi)

Total lebar

Sisa pemotongan

3 cm (b1) 5 cm (b2)

1 2 2 16 cm 0 cm

2 5 0 15 cm 1 cm

3 0 3 15 cm 1 cm


(37)

Pola pemotongan ke-1 menghasilkan 2 kertas dengan lebar 3 cm dan menghasilkan 2 kertas dengan lebar 5 cm. Total lebar kertas yang dipotong adalah 16 cm dan tidak menghasilkan sisa pemotongan sebab lebar rol kertas (16 cm) sama dengan pola pemotongan (16 cm). Pola pemotongan ke-2 menghasilkan 5 kertas dengan lebar 3 cm dan tidak menghasilkan kertas dengan lebar 5 cm. Total lebar kertas yang dipotong adalah 16 cm dan menghasilkan sisa pemotongan sebanyak 1 cm sebab lebar rol kertas (16 cm) dikurangkan dengan lebar pola pemotongan (15 cm). Menggunakan cara yang sama diperoleh pola ke-3 dan pola ke-4.

Pada proses pemotongan rol kertas ke lembaran kertas banyaknya pola pemotongan yang terdapat tergantung pada mesin yang digunakan. Pada kasus ini, pola pemotongan kertas menggunakan mesin pemotong kertas yang dapat dilihat pada Gambar 3.1. Mesin pemotong kertas pada Gambar 3.1, terlihat bahwa banyaknya lembaran kertas yang dapat dihasilkan dalam sekali proses pemotongan hanya empat lembaran kertas. Sebab ujung kanan dan ujung kiri pada pisau vertikal digunakan untuk merapikan sisi kanan dan kiri dari rol kertas.

Gambar 3.1 Gambar Mesin Pemotong

Rol Kertas

Pisau Horisontal

Pisau Horisontal


(38)

Pada mesin pemotong kertas juga terlihat bahwa pisau vertikal hanya bisa memotong maksimal empat bagian ( ), sehingga tidak boleh melebihi empat, oleh sebab itu pola pemotongan kedua harus dihilangkan. Pola pemotongan kedua dihilangkan sebab pada pola pemotongan kedua menghasilkan 5 kertas dengan lebar 3 cm.

Tabel 3.2 Pola pemotongan dengan nilai

Pola ke

Lebar lembaran kertas permintaan (bi)

Total lebar

3 cm (b1) 5 cm (b2)

1 2 2 16 cm 4

2 5 0 15 cm 5

3 0 3 15 cm 3

4 3 1 14 cm 4

Pada dunia nyata jenis ukuran kertas permintaan beragam bisa lebih dari dua jenis kertas. Jika kita mencoba satu demi satu kemungkinan pasti memakan waktu yang lama. Pada tugas akhir ini masalah tersebut akan diselesaikan menggunakan algoritma pemecah eksplisit. Berikut ini adalah sebuah algoritma pemecahan eksplisit yang digunakan untuk menghasilkan semua pola pemotongan layak yang disebut . Jumlah setiap kolom dari unsur-unsur pada kurang dari atau sama dengan .

.

[


(39)

[

], [

],…, [

]

Dimana r adalah banyaknya jenis kertas (i=1,…,r) dan q adalah jumlah pola pemotongan (j=1,…,q).

Terdapat juga dan nilai setiap harus diantara dan ( ).

Dimana dan r adalah banyaknya jenis kertas (i=1,…,r) Berikut adalah langkah-langkah dari algoritma pemecah eksplisit untuk menentukan pola pemotongan yang layak.

Kelompok 0 Langkah 0.0. j = 1

Langkah 0.1.

Pada kelompok 0, langkah yang dilakukan adalah memasukan nilai awal dari j = 1 pada langkah 0.0 dan berarti nilai

terdapat pada langkah 0.1.

Kelompok 1 Langkah 1.0. j = j + 1

Langkah 1.1.

Pada kelompok 1 akan membuat nilai pada j bertambah 1 pada langkah 1.0 dan pada langkah 1.1 akan mengganti nilai dari menjadi .

Kelompok 2 Langkah 2.0. Langkah 2.1.

Pada langkah 2.2 sampai 2.4

dihi-tung untuk i=1,…,r


(40)

Langkah 2.3. Langkah 2.4.

{ ⌊ ⌋} Langkah 3.0. misalkan i = r

Pada kelompok 2, pada langkah 2.0 memberikan nilai awal untuk dan langkah 2.1 memberikan nilai awal untuk . Pada langkah 2.2 sampai langkah 2.4 nilai berjalan dari i=1 sampai i= r. Langkah 2.2 mencari nilai dari dengan cara nilai ditambah dengan nilai . Langkah 2.3 mencari nilai dari

dengan cara nilai ditambah dengan nilai . Langkah 2.4 akan menghasilkan nilai yang merupakan sisa kertas yang dapat dipotong oleh pisau vertikal. Langkah 3.0 bertujuan untuk mengganti nilai i dengan nilai r

(banyak jenis kertas).

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

Kelompok 3, pada langkah 4.0 merupakan langkah untuk melihat nilai dari setiap unsur dari apakah melebihi atau sama dengan yang kita dapatkan di langkah 2.4, jika iya berarti lanjut ke langkah 6.0 dan jika tidak lanjut ke langkah 4.0. langkah ini bertujuan untuk melihat apakah pisau vertikal pada mesin pemotong kertas tidak memotong lebih dari nilai yang sudah kita tentukan.

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

Kelompok 4, pada langkah 4.1 digunakan untuk mengganti nilai dengan . Langkah 4.2 digunakan untuk melihat apakah kertas yang sedang dipotong


(41)

sudah melebihi batas bawah lebar rol kertas yang harus dipotong atau belum. Jika sudah maka lanjut ke langkah 2.0.

Kelompok 5 Langkah 5.0. Didapat pola pemotongan baru Langkah 5.1. lanjutkan ke langkah 1.0

Kelompok 5, pada langkah 5.0 merupakan pola baru yang diperoleh. Langkah 5.1 merupakan perintah untuk memulai mencari pola pemotongan yang baru.

Kelompok 6 Langkah 6.0. Langkah 6.1.

Langkah 6.2. Jika lanjutkan ke langkah 4.0

Kelompok 6, pada langkah 6.0 digunakan untuk mengganti nilai dengan nilai 0 sebab akan dilihat berapa banyak kertas ke-i yang dapat dipotong pada saat itu. Langkah 6.1 digunakan untuk memperbarui nilai i. Langkah 6.2 digunakan untuk melihat nilai i yang sudah diperbaharui pada langkah sebelumnya. Jika nilai

i lebih dari 0 maka kembali pada langkah 4.0, dan jika nilai i kurang dari atau sama dengan 0 maka lanjut ke langkah selanjutnya.

Kelompok 7 Langkah 7.0.

Kelompok 7, pada langkah 7.0 merupakan langkah untuk melihat berapa banyak pola pemotongan yang dapat dilakukan. Jika sudah sampai pada langkah 7.0 maka algoritma pemecah eksplisit ini berhenti. Jika ingin melihat pola pemotongan yang diperoleh dapat dilihat pada variabel n.


(42)

Selanjutnya untuk mempermudahkan melihat pola dari langkah-langkah di atas, dibuat diagram sebagai berikut:

Gambar 3.2 Diagram Alur Pembuatan Pola Pemotongan

TIDAK Kelompok 1

START

STOP

Kelompok 3

Kelompok 4

Kelompok 6

Kelompok 0

Kelompok 5

Kelompok 7 IYA

TIDAK IYA

IYA

TIDAK

Kelompok 2


(43)

Contoh 3.2

Misalkan terdapat dua jenis pesanan kertas produk. Pada jenis pertama memiliki lebar 23 cm dan panjang 30 cm. Pada jenis kedua memiliki lebar 26 cm dan panjang 32 cm. Rol mempunyai lebar maksimum pemotongan ( ) adalah 96 cm dan lebar minimum pemotongan ( ) adalah 92 cm. Nilai yang dipilih adalah 4. Selanjutnya akan dicari banyaknya pola pemotongan yang mungkin dari kasus tersebut dengan algoritma diatas.

Kelompok 0 Langkah 0.0. j = 1

Langkah 0.1. [ ] Kelompok 1 Langkah 1.0.

Langkah 1.1.

[ ] Kelompok 2 Langkah 2.0.

Langkah 2.1.

Pada langkah 2.2 sampai 2.4

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.


(44)

Langkah 2.4.

{

{ ⌊ ⌋}} { { ⌊ ⌋}}

{

{ ⌊ ⌋}} { { ⌊ ⌋}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka tidak lanjut ke langkah 6.0

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0


(45)

[ ] maka lanjut ke langkah 2.0

Kelompok 2 Langkah 2.0. Langkah 2.1.

Pada langkah 2.2 sampai 2.4

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.

Langkah 2. 4.

{

{ ⌊ ⌋}} { {

}}

{


(46)

{ { }}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka tidak lanjut ke langkah 6.0

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

[ ] maka

lanjut ke langkah 2.0

Kelompok 2 Langkah 2.0. Langkah 2.1.

Pada langkah 2.2 sampai 2.4

dihitung untuk i=1 dan i=2

Langkah 2.2.


(47)

Langkah 2.3.

Langkah 2.4.

{

{ ⌊ ⌋}} { {

}}

{

{ ⌊ ⌋}} { {

}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka tidak lanjut ke langkah 6.0


(48)

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

[ ] maka

lanjut ke langkah 2.0

Kelompok 2 Langkah 2.0. Langkah 2.1.

Pada langkah 2.2 sampai 2.4

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.

Langkah 2.4.

{

{ ⌊ ⌋}} { {

}}


(49)

{

{ ⌊ ⌋}} { {

}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka lanjut ke langkah 6.0

Kelompok 6 Langkah 6.0.

Langkah 6.1.

Langkah 6.2. Jika lanjutkan ke langkah 4.0

maka lanjut ke langkah 4.0

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka tidak lanjut ke langkah 6.0


(50)

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

[ ] maka

lanjut ke langkah 2.0

Kelompok 2 Langkah 2.0. Langkah 2.1.

Pada langkah 2.2 sampai 2.4

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.

Langkah 2.4.

{

{ ⌊ ⌋}} { {

}}


(51)

{

{ ⌊ ⌋}} { {

}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka tidak lanjut ke langkah 6.0

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

[ ] maka

lanjut ke langkah 2.0

Kelompok 2 Langkah 2.0. Langkah 2.1.


(52)

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.

Langkah 2.4.

{

{ ⌊ ⌋}}

{ { }}

{

{ ⌊ ⌋}} { {

}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0


(53)

lanjut ke langkah 6.0

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

[ ] maka

lanjut ke langkah 2.0

Kelompok 2 Langkah 2.0. Langkah 2.1.

Pada langkah 2.2 sampai 2.4

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.

Langkah 2.4.

{


(54)

{ { }}

{

{ ⌊ ⌋}} { {

}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka tidak lanjut ke langkah 6.0

Kelompok 6 Langkah 6.0.

Langkah 6.1.

Langkah 6.2. Jika lanjutkan ke langkah 4.0

maka lanjut ke langkah 4.0 Kelompok 3 Langkah 4.0. Jika lanjutkan ke

langkah 6.0

maka lanjut ke langkah 6.0


(55)

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

[ ] maka

lanjut ke langkah 2.0

Kelompok 2 Langkah 2.0. Langkah 2.1.

Pada langkah 2.2 sampai 2.4

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.

Langkah 2.4.

{

{ ⌊ ⌋}} { {

}}


(56)

{

{ ⌊ ⌋}} { {

}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka tidak lanjut ke langkah 6.0

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

[ ] maka

lanjut ke langkah 2.0

Kelompok 2 Langkah 2.0. Langkah 2.1.


(57)

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.

Langkah 2.4.

{

{ ⌊ ⌋}}

{ { }}

{

{ ⌊ ⌋}} { {

}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0


(58)

ke langkah 6.0

Kelompok 6 Langkah 6.0.

Langkah 6.1.

Langkah 6.2. Jika lanjutkan ke langkah 4.0

maka lanjut ke langkah 4.0

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka lanjut ke langkah 6.0

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

[ ] maka

lanjut ke langkah 2.0

Kelompok 2 Langkah 2.0. Langkah 2.1.


(59)

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.

Langkah 2.4.

{

{ ⌊ ⌋}}

{ { }}

{

{ ⌊ ⌋}} { {

}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0


(60)

lanjut ke langkah 6.0

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

[ ] maka

tidak lanjut ke langkah 2.0

Kelompok 5 Langkah 5.0. Didapat pola pemotongan baru . [ ]

akan tetapi pola ini memiliki lebar diantara 92 cm dan 96 cm maka pola ini harus dieliminasi

Langkah 5.1. lanjutkan ke langkah 1.0

Kelompok 1 Langkah 1.0.

Langkah 1.1.

[ ] Kelompok 2 Langkah 2.0.


(61)

Pada langkah 2.2 sampai 2.4

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.

Langkah 2.4.

{

{ ⌊ ⌋}} { {

}}

{

{ ⌊ ⌋}} { {

}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0


(62)

maka lanjut ke langkah 6.0

Kelompok 6 Langkah 6.0.

Langkah 6.1.

Langkah 6.2. Jika lanjutkan ke langkah 4.0

maka lanjut ke langkah 4.0

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka tidak lanjut ke langkah 6.0

Kelompok 4 Langkah 4.1.

Langkah 4.2. Jika lanjutkan ke langkah 2.0

[ ] maka

tidak lanjut ke langkah 2.0

Kelompok 5 Langkah 5.0. Didapat pola pemotongan baru . [ ]

akan tetapi pola ini memiliki lebar diatara 92 cm dan 96 cm maka pola


(63)

ini harus dieliminasi

Langkah 5.1. lanjutkan ke langkah 1.0

Kelompok 1 Langkah 1.0.

Langkah 1.1.

[ ] Kelompok 2 Langkah 2.0.

Langkah 2.1.

Pada langkah 2.2 sampai 2.4

dihitung untuk i=1 dan i=2

Langkah 2.2.

Langkah 2.3.

Langkah 2. 4.

{

{ ⌊ ⌋}}

{ { }}


(64)

{

{ ⌊ ⌋}} { {

}}

Langkah 3.0. misalkan

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka lanjut ke langkah 6.0

Kelompok 6 Langkah 6.0.

Langkah 6.1.

Langkah 6.2. Jika lanjutkan ke langkah 4.0

maka lanjut ke langkah 4.0

Kelompok 3 Langkah 4.0. Jika lanjutkan ke langkah 6.0

maka lanjut ke langkah 6.0


(65)

Kelompok 6 Langkah 6.0.

Langkah 6.1.

Langkah 6.2. Jika lanjutkan ke langkah 4.0

maka tidak lanjut ke

langkah 4.0

Kelompok 7 Langkah 7.0.

Pola pemotongan yang didapat adalah sebagai berikut

Tabel 3.3. Banyaknya Pola Pemotongan dari algoritma

Pola ke

Lebar lembaran kertas permintaan (bi)

Total lebar 23 cm (b1) 26 cm (b2)

1 3 1 95 cm


(66)

Gambar 3.3 Contoh Pola Pemotongan 1

Gambar 3.4 Contoh Pola Pemotongan 2

1

23 cm cm

30 cm cm

2

26 cm cm

32 cm cm

1

23 cm cm

30 cm cm Rol Kertas

96 cm

1 1

1 1

Rol Kertas

96 cm


(67)

Pada Tabel 3.3 terlihat bahwa terdapat jumlah pola pemotongan sebanyak dua (J= 2) yang terdiri dari pola pertama yaitu lembaran kertas permintaan pertama (lebar 23 cm) dipotong sebanyak tiga kali dan lembaran kertas permintaan kedua (lebar 26 cm) dipotong sebanyak satu kali serta pola kedua yaitu lembaran kertas permintaan pertama (lebar 23 cm) dipotong sebanyak empat kali dan lembaran kertas permintaan kedua (lebar 26 cm) tidak dipotong.

C. Model Matematika

Setelah menemukan pola pemotongan yang layak maka langkah selanjutnya adalah membuat sebuah model matematika. Membuat model matematika merupakan langkah yang penting dalam menyelesaikan masalah matematika di dunia nyata. Khususnya pada masalah sisa pemotongan kertas dari rol kertas produksi ke lembaran kertas, langkah awalnya adalah dengan mendefinisikan parameter, langkah selanjutnya adalah membuat variabel keputusan atau variabel yang akan kita cari, dan dilanjutkan dengan membuat fungsi tujuan dengan kendala-kendala yang ada. Pada tugas akhir ini terdapat beberapa parameter, variabel keputusan, fungsi tujuan dan kendala seperti berikut:

Tabel 3.4. Parameter dari Model Matematika

Parameter Keterangan

Panjang rol kertas

Panjang minimum permintaan dari produk ke-i Panjang maksimum permintaan dari produk ke-i

Panjang minimum dari pola pemotongan Banyaknya rol kertas

Banyaknya pola pemotongan Banyaknya produk

Sisa panjang rol kertas ketika mengganti ke rol kertas berikutnya Lebar rol kertas


(68)

Lebar produk ke-i

Panjang produk ke-i

Tabel 3.5. Variabel Keputusan dari Model Matematika

Variabel Keputusan

Keterangan

Banyaknya kertas dari produk ke-i pada pola pemotongan ke-j Panjang pola pemotongan ke-j pada rol kertas ke-k Banyaknya pemotongan produk ke-i pada pola

pemotongan ke-j dalam rol kertas ke-k Total panjang pemotongan pada produk ke-i 1 jika pemotongan pola ke-j menggunakan rol kertas ke-k

dan 0 untuk selainnya

1 jika rol kertas ke-k digunakan dan 0 untuk selainya Jumlah dari produk ke-i yang di bawah batas atas Jumlah dari produk ke-i yang melebihi batas atas

Kendala (1) akan dicari fungsi tujuan yang merupakan minimum dari sisa pemotongan kertas, dengan cara menghitung total luas kertas yang digunakan (∑ ) dikurangi dengan total luas kertas produksi (∑ ) lalu ditambah dengan kerugian akibat produksi yang berlebih (∑ ). Jadi didapat fungsi tujuan sebagai berikut:

Minimum

∑ ∑ ∑ (1)

Kendala (2) akan dicari kendala-kendala yang mempengaruhi saat meminimalkan fungsi tujuan. Kendala pertama adalah total pola pemotongan panjang disetiap rol kertas produksi ( ) ditambah dengan sisa panjang rol ( ) kertas produksi tidak boleh melebihi panjang rol kertas produksi ( ).


(69)

Kendala (3) menunjukkan bahwa jika panjang pola pemotongan ke-j pada rol kertas ke-k ( ) digunakan maka nilai dari yj,k adalah1. Jika tidak digunakan

makan nilai dari yj,kadalah0.

(3)

Kendala (4) panjang pola pemotongan ke-j pada rol kertas ke-k ( ) harus melebihi panjang minimum dari pola pemotongan ( ).

(4)

Kendala (5) panjang total masing-masing produk ( ) harus sama dengan hasil kali dari banyaknya kertas dari produk ke-i pada pola pemotongan ke-j ( ), panjang produk ke-i ( ), dengan banyaknya pemotongan produk ke-i pada pola pemotongan ke-j dalam rol kertas ke-k ( ).

∑ ∑ (5)

Kendala (6), panjang total pola pemotongan masing-masing produk ( ) harus melebihi batas minimum permintaan dari masing-masing produk yang bersesuaian ( ).

(6)

Kendala (7), menujukkan bahwa dalam memproduksi kertas permintaan, konsumen bersedia menerima kelebihan kertas selama tidak melebihi batas atas permintaan konsumen. Jika memproduksi lebih dari batas atas permintaan maka dapat mengakibatkan kerugian.

(7)

Kendala (8), menunjukkan panjang kertas permintaan disetiap pola pemotongan ( ) tidak melebihi panjang pola pemotongan ( ).

(8)

Kendala (9), menunjukkan bahwa rol kertas produksi harus digunakan secara berurutan.

(9)

Dimana


(70)

Kendala (5) adalah kendala yang menyebabkan sistem persamaan ini menjadi non-linear, sebab variabel keputusan dan berada dalam satu operasi perkalian. Sehingga masalah yang didapat adalah masalah yang berbentuk MINLP. Untuk membuat masalah MINLP menjadi masalah MILP maka pada kendala (5) dapat dimemasukkan nilai dari variabel yang didapat pada Tabel 3.4. Setelah dimasukan nilai variabel pada kendala (5) maka masalah MINLP sudah menjadi masalah MILP.

Contoh 3.3

Misalkan panjang rol kertas (L) adalah 160 cm, lebar rol kertas (W) adalah 96 cm, banyaknya rol kertas yang ada (r) adalah 2 rol kertas, sisa panjang rol kertas ketika mengganti ke rol kertas berikutnya (S) adalah 30 cm, panjang minimum dari pola pemotongan ( ) adalah 130 cm dan berikut adalah Tabel spesifikasi jenis dan permintaan kertas.

Tabel 3.6. Ukuran lembaran kertas produksi dan batas permintaan

konsumen Produk

kertas ke

Spesifikasi (cm)

Lebar (bi) Panjang (li) Batas Bawah

Permintaan (lmin)

Batas Atas Permintaan (lmax)

1 23 30 800 900

2 26 32 32 92

Langkah selanjutnya adalah mengubah kendala dan memasukan nilai yang diketahui sesuai contoh 3.3 seperti berikut:

Kendala (1) atau fungsi tujuan adalah


(71)

Minimum ∑ Minimum Minimum

Kendala (2) dibagi menjadi 2 karena nilai dari variabel k adalah 2.

 Kendala (2) dengan nilai variabel

 Kendala (2) dengan nilai variabel

Kendala (3) dibagi menjadi 4 sebab nilai dari variabel k adalah 2 dan nilai dari variabel j adalah 2.

 Kendala (3) dengan nilai variabel dan nilai variabel

 Kendala (3) dengan nilai variabel dan nilai variabel

 Kendala (3) dengan nilai variabel dan nilai variabel

 Kendala (3) dengan nilai variabel dan nilai variabel

Kendala (4) dibagi menjadi 4 sebab nilai dari variabel k adalah 2 dan nilai dari variabel j adalah 2.


(72)

 Kendala (4) dengan nilai variabel dan nilai variabel

 Kendala (4) dengan nilai variabel dan nilai variabel

 Kendala (4) dengan nilai variabel dan nilai variabel

 Kendala (4) dengan nilai variabel dan nilai variabel

Kendala (5) dibagi menjadi 2 sebab nilai dari variabel i adalah 2.

∑ ∑

∑ ∑

 Kendala (5) dengan nilai variabel

 Kendala (5) dengan nilai variabel

∑ ∑

Kendala (6) dibagi menjadi 2 sebab nilai dari variabel i adalah 2

 Kendala (6) dengan nilai variabel

 Kendala (6) dengan nilai variabel


(73)

Kendala (7) dibagi menjadi 2 sebab nilai dari variabel i adalah 2

 Kendala (7) dengan nilai variabel

 Kendala (7) dengan nilai variabel

Kendala (8) dibagi menjadi 8 sebab nilai dari variabel i adalah 2, nilai dari varia-bel j adalah 2, dan nilai dari variabel k adalah 2.

 Kendala (8) dengan nilai variabel , nilai variabel , dan nilai variabel .

 Kendala (8) dengan nilai variabel , nilai variabel , dan nilai variabel .

 Kendala (8) dengan nilai variabel , nilai variabel , dan nilai variabel .

 Kendala (8) dengan nilai variabel , nilai variabel , dan nilai variabel .

 Kendala (8) dengan nilai variabel , nilai variabel , dan nilai variabel .


(74)

 Kendala (8) dengan nilai variabel , nilai variabel , dan nilai variabel .

 Kendala (8) dengan nilai variabel , nilai variabel , dan nilai variabel .

 Kendala (8) dengan nilai variabel , nilai variabel , dan nilai variabel .

Kendala (9)

Dengan menggunakan program Matlab diperoleh hasil sebagai berikut

Tabel 3.7. Hasil dari variabel

k=1 k=2

1 1

Pada Tabel 3.7 terlihat bahwa nilai adalah 1 dan nilai adalah 1, sehingga rol kertas mentah yang digunakan pada kasus ini sebanyak 2 rol.

Tabel 3.8. Hasil dari variabel

j=1 j=2


(75)

k=2 1 0

Pada Tabel 3.8 terlihat bahwa nilai adalah 1 berarti pada rol kertas ke-1 digunakan pola pemotongan ke-2 dan nilai adalah 1 berarti pada rol kertas ke-2 digunakan pola pemotongan ke-1.

Tabel 3.9. Hasil dari variabel

i=1 i=2

840 96

Pada Tabel 3.9 terlihat bahwa nilai adalah 840 berarti total panjang pemotongan pada produk ke 1 adalah 840 dan nilai adalah 96 berarti total panjang pemotongan pada produk ke-2 adalah 96.

Tabel 3.10. Hasil dari variabel

i=1 i=2

60 0

Pada Tabel 3.10 terlihat bahwa nilai adalah 60 berarti jumlah dari produk ke-1 yang di bawah batas atas adalah 60 dan nilai adalah 0 berarti jumlah dari produk ke-2 yang di bawah batas atas tidak ada.

Tabel 3.11. Hasil dari variabel

i=1 i=2


(76)

Pada Tabel 3.11 terlihat bahwa nilai adalah 0 berarti jumlah dari produk ke-1 yang melebihi batas atas tidak ada dan nilai adalah 4 berarti jumlah dari produk ke-2 yang melebihi batas atas adalah 4.

Tabel 3.12. Hasil dari variabel

j=1 j=2

k=1 0 130

k=2 130 0

Pada Tabel 3.12 terlihat bahwa nilai adalah 130 berarti panjang pola pemotongan ke-2 pada rol kertas ke-1 adalah 130 dan nilai adalah 130 berarti panjang pola pemotongan ke-1 pada rol kertas ke-2 adalah 130.

Tabel 3.13. Hasil dari variabel

i=1 i=2

j=1 0 0

j=2 0 4

Pada Tabel 3.13 terlihat bahwa nilai adalah 4 berarti banyaknya pemotongan produk ke-1 pada pola pemotongan ke-2 dalam rol kertas ke-1 adalah 4.

Tabel 3.14. Hasil dari variabel

i=1 i=2

j=1 4 3


(77)

Pada Tabel 3.14 terlihat bahwa nilai adalah 4 berarti banyaknya pemotongan produk ke-1 pada pola pemotongan ke-1 dalam rol kertas ke-2 adalah 4 dan nilai adalah 3 berarti banyaknya pemotongan produk ke-2 pada pola pemotongan ke-1 dalam rol kertas ke-2 adalah 3. Didapat juga nilai Z adalah 2576 yang berarti sisa pemotongan kertas adalah 2576 .

Untuk melihat apakah hasil program ini benar atau tidak maka digunakan program LiPS sebagai pembandingnya. Program LiPS adalah program yang digunakan untuk menyelesaikan masalah Program Linear. Berikut adalah hasil dari program LiPS yang dapat dilihat pada Tabel 3.15.


(78)

Tabel 15. Hasil pada program LiPS

Variabel Nilai

130

0

0

130

4

0

4

0

0

4

0

0

Pada hasil dari program LiPS terlihat bahwa solusi optimalnya ada dan nilainya adalah 2576. Terlihat bahwa nilai solusi minimal pada program MATLAB dan LiPS sama akan tetapi variabel keputusan yang di peroleh berbeda. Ini menunjukkan bahwa solusi pada contoh kasus ini tidak hanya terdapat satu penyelesaian saja. Solusi yang tidak tunggal ini sangat menguntungkan sebab kita dapat memilih mau menggunakan cara yang mana dengan hasil sisa pemotongan kertas yang sama.

Variabel Nilai

Z 9008

1

1

1

0

0

1

840

128

60

0

0


(79)

BAB IV

PENYELESAIAN MASALAH PEMOTONGAN ROL KERTAS DENGAN MENGGUNAKAN PROGRAM MATLAB

Pada bab ini akan dibahas mengenai penyelesaian masalah pemotongan rol kertas yang didapat dan cara menggunakan program MATLAB yang telah dibuat. Berikut adalah contoh kasus yang diselesaikan menggunakan program GUI MATLAB:

Terdapat rol kertas produksi (r) sebanyak 12 rol kertas, dengan ukuran lebar rol kertas adalah 96, lebar minimum pemotongan rol kertas adalah 89, panjang rol kertas produksi adalah 525.500 cm, panjang minimum dari pola pemotongan ( ) adalah 100.000 cm, sisa panjang rol kertas ketika harus mengganti ke rol kertas berikutnya (S) adalah 3.500 cm, dan berikut adalah tabel spesifikasi jenis dan permintaan kertas.

Tabel 4.1 Ukuran lembaran kertas produksi dan batas permintaan

konsumen Kertas

Produksi

Lebar Kertas Panjang Kertas

Batas Atas Permintaan

Batas Bawah Permintaan

1 28 36 3.374.486 3.213.796

2 33 22,5 1.506.947 1.435.188

3 26,5 39 2.355.103 2.242.955

4 36 44 1.985.027 1.890.501

5 22,5 35,25 1.436.623 1.368.213

6 29.5 38 561.341 534.620

7 28.5 39 2.093.864 1.994.156

8 24 35 1.243.232 1.184.030

Selanjutnya akan dilihat cara menggunakan aplikasi yang sudah dibuat oleh penulis. Aplikasi ini dibuat dengan Graphical User Interface (GUI) MATLAB. Selanjutnya akan dijelaskan mengenai cara menggunakan aplikasi yang telah dibuat.

Pertama buka aplikasi GUI MATLAB yang sudah dibuat sehingga terlihat tampilan seperti Gambar 4.1.


(80)

Gambar 4.1 Tampilan awal program

Selanjutnya dapat dimasukan nilai yang sudah diketahui seperti lebar kertas produksi ( ), panjang kertas produksi ( ), batas atas permintaan ( ), dan batas bawah permintaan ( ) yang terlihat pada Tabel tampilan awal. Pada luar Tabel juga ada yang harus dimasukan nilainya diantaranya lebar rol produksi ( ), lebar minimum pemotongan kertas ( ), banyak rol kertas produksi (k), panjang rol kertas ( ), panjang minimum pemotongan rol kertas ( ), sisa panjang rol kertas ketika mengganti ke rol kertas selanjutnya (S), dan banyaknya kertas permintaan. Aplikasi yang sudah terdapat masukannya dapat dilihat pada Gambar 4.2.


(81)

Gambar 4.2 Apikasi yang Sudah Terdapat Masukan Nilai

Langkah selanjutnya adalah mencari hasil dari nilai-nilai yang telah dimasukan dengan cara menekan tombol Cek Hasil. Hasil yang dapat dilihat pada tampilan awal ini adalah banyaknya rol kertas yang digunakan dan sisa pemotongan (dalam satuan luas). Hasil yang diperoleh dapat dilihat pada Gambar 4.3.


(82)

Selanjutnya dapat dilihat detail dari setiap pemotongan pada rol kertas dan kertas produksi atau menutup aplikasi ini. Cara melihat detail pemotongan atau menutup aplikasi adalah menggunakan tombol menu pada ujung kiri atas seperti pada Gambar 4.4.

Gambar 4.4 Isi dari Menu pada Tampilan Awal

Jika dipilih tutup pada menu maka aplikasi akan tertutup. Jika dipilih detail pemotong pada menu maka akan muncul tampilan detail pemotongan yang dapat dilihat pada Gambar 4.5.


(83)

Gambar 4.5 Tampilan Detail Pemotongan

Pada tampilan detail pemotongan dapat dilihat setiap detail perlakuan dari setiap rol kertas. Detail perlakuan dari setiap rol kertas diantaranya adalah panjang kertas rol yang dipotong, pola pemotongan yang digunakan, banyaknya kertas yang dipotong menggunakan pisau horisontal dan banyaknya kertas setiap produk pada setiap rol. Selain itu juga dapat detail dari setiap kertas produksi. Detail dari setiap kertas produksi diantaranya adalah Total panjang pemotongan produk, jumlah produk yang di bawah batas atas, dan jumlah produk yang melebihi batas atas. Pada tampilan detail pemotongan dapat dimasukan rol kertas dan kertas produk sesuai dengan detail yang ingin dilihat serti pada Gambar 4.6.


(1)

Lampiran 6: List Program Detail Pemotongan

function varargout = DetailGuiSkripsi(varargin)

% DETAILGUISKRIPSI MATLAB code for DetailGuiSkripsi.fig

% DETAILGUISKRIPSI, by itself, creates a new DETAILGUISKRIPSI or raises the existing

% singleton*. %

% H = DETAILGUISKRIPSI returns the handle to a new DETAIL-GUISKRIPSI or the handle to

% the existing singleton*. %

% DETAILGUISKRIPSI('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in DETAILGUISKRIPSI.M with the giv-en input argumgiv-ents.

%

% DETAILGUISKRIPSI('Property','Value',...) creates a new DE-TAILGUISKRIPSI or raises the

% existing singleton*. Starting from the left, property val-ue pairs are

% applied to the GUI before DetailGuiSkripsi_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to DetailGuiSkripsi_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)". %

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help DetailGuiS-kripsi

% Last Modified by GUIDE v2.5 19-Apr-2017 23:02:55

% Begin initialization code - DO NOT EDIT gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @DetailGuiSkripsi_OpeningFcn, ...

'gui_OutputFcn', @DetailGuiSkripsi_OutputFcn, ...

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end


(2)

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

% End initialization code - DO NOT EDIT

% --- Executes just before DetailGuiSkripsi is made visible.

function DetailGuiSkripsi_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn. % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) % varargin command line arguments to DetailGuiSkripsi (see VARARGIN)

% Choose default command line output for DetailGuiSkripsi handles.output = hObject;

% Update handles structure guidata(hObject, handles);

% UIWAIT makes DetailGuiSkripsi wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = DetailGuiSkripsi_OutputFcn(hObject, event-data, handles)

% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure

varargout{1} = handles.output;

function RolK_Callback(hObject, eventdata, handles) % hObject handle to RolK (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of RolK as text % str2double(get(hObject,'String')) returns contents of RolK as a double


(3)

% --- Executes during object creation, after setting all proper-ties.

function RolK_CreateFcn(hObject, eventdata, handles) % hObject handle to RolK (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all Cre-ateFcns called

input=str2num(get(hObject,'String'));

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

function KertasP_Callback(hObject, eventdata, handles) % hObject handle to KertasP (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of KertasP as text % str2double(get(hObject,'String')) returns contents of KertasP as a double

% --- Executes during object creation, after setting all proper-ties.

function KertasP_CreateFcn(hObject, eventdata, handles) % hObject handle to KertasP (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all Cre-ateFcns called

input=str2num(get(hObject,'String'));

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

% --- Executes on selection change in popupmenu1.

function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB


(4)

% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array

% contents{get(hObject,'Value')} returns selected item from popupmenu1

switch get (handles.popupmenu1,'Value') case 1

case 2 close; GUISkripsi clear all case 3

close; otherwise end

% --- Executes during object creation, after setting all proper-ties.

function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all Cre-ateFcns called

% Hint: popupmenu controls usually have a white background on Win-dows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

% --- Executes on button press in CekHasil1.

function CekHasil1_Callback(hObject, eventdata, handles) % hObject handle to CekHasil1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) global xS k a j A1 %digunakan untuk menyimpan variabel secara keseluruhan

%untuk memisah nilai xS ke setiap variabel keputusan xYk=xS(1:k,1)';

xyjk=xS(k+1:k+j*k,1)'; xai=xS(k+j*k+1:k+j*k+a,1)'; xsp=xS(k+j*k+a+1:k+j*k+2*a,1)'; xsn=xS(k+j*k+2*a+1:k+j*k+3*a,1)'; xpjk=xS(k+j*k+3*a+1:k+2*j*k+3*a,1)';

xxijk=xS(k+2*j*k+3*a+1:k+2*j*k+3*a+j*k*a,1)'; %untuk mengambil nilai dari rol keertas

RolKk=get(handles.RolK,'String'); Rol=str2num(RolKk);


(5)

set(handles.RolK1,'String',RolS) set(handles.RolK2,'String',RolS) set(handles.RolK3,'String',RolS)

%untuk memasukan nilai pada kaliamat ke 1 for c=1:k

Xpjk(c,1:j)=xpjk(1,(c-1)*j+1:j*c); end

PolaDG1=find(Xpjk(Rol,:)); PolaDGS1=num2str(PolaDG1);

set(handles.PolaK1,'String',PolaDGS1) HSL1=Xpjk(Rol,PolaDG1);

HSLS1=num2str(HSL1);

set(handles.Hasil1,'String',HSLS1)

%untuk memasukan nilai pada kaliamat ke 2 for c=1:k

Xyjk(c,1:j)=xyjk(1,(c-1)*j+1:j*c); end

PolaDG2=find(Xyjk(Rol,:)); PolaDGS2=num2str(PolaDG2);

set(handles.PolaK2,'String',PolaDGS2) %untuk memasukan nilai pada kaliamat ke 3 set(handles.PolaK3,'String',PolaDGS2) %untuk memasukan nilai pada table PisauV=A1(PolaDG2,:);

for c=1:k

Xxijk1(c,1:j*a)=xxijk(1,(c-1)*j*a+1:j*c*a); end

for z=1:j

Xxijk(z,1:a)=Xxijk1(Rol,(z-1)*a+1:a*z); end

PisauH=Xxijk(PolaDG2,:); TKertas=PisauV.*PisauH;

MTKertas=[PisauV;PisauH;TKertas]; set(handles.TableH,'Data',MTKertas)

%untuk memasukannya ke kolom yang ditentukan Kertas=get(handles.KertasP,'String');

KertasC=str2num(Kertas); KertasS=num2str(Kertas);

%untuk memasukan nilai pada kaliamat ke 1 set(handles.ProdukK1,'String',KertasS); set(handles.ProdukK2,'String',KertasS); set(handles.ProdukK3,'String',KertasS); %untuk memasukan nilai pada kaliamat ke 4 HSL2=xai(KertasC);

HSLS2=num2str(HSL2);

set(handles.Hasil2,'String',HSLS2)

%untuk memasukan nilai pada kaliamat ke 5 HSL3=xsp(KertasC);

HSLS3=num2str(HSL3);

set(handles.Hasil3,'String',HSLS3)

%untuk memasukan nilai pada kaliamat ke 6 HSL4=xsn(KertasC);

HSLS4=num2str(HSL4);


(6)

% --- Executes when entered data in editable cell(s) in TableH. function TableH_CellEditCallback(hObject, eventdata, handles) % hObject handle to TableH (see GCBO)

% eventdata structure with the following fields (see MATLAB.UI.CONTROL.TABLE)

% Indices: row and column indices of the cell(s) edited % PreviousData: previous data for the cell(s) edited % EditData: string(s) entered by the user

% NewData: EditData or its converted form set on the Data prop-erty. Empty if Data was not changed

% Error: error string when failed to convert EditData to appro-priate value for Data