Top Banner
OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI 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 2017 PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
114

OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

Aug 23, 2019

Download

Documents

lenhan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

i

OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI

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

2017

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 2: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

ii

OPTIMIZING CUTTING PAPER ROLLS TWO

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

2017

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 3: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

SKRIPSI

OPTIMASI PEMOTONGAN ROL KERTAS I}UA DIMENSI

DENGAN MENGGUNAKAN PRoGRAM ImnIn

Dsusun oleh:

14'"t

ll

IErt,f5**,qt\t{J:: I rj!,j ' , i'":'s*. le

' i-'i rf \{;"=- *+{* i*:i t* ;-1 fuq-' 3 {*{u+-*} -YG. Hartono, S.Si., 19 Juli 2017

111

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 4: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

SKRIPSI

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

lsbfr'9. rt

tsn'tr

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 5: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

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)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 6: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

PERIYYATAAN KEASLIAN KARYA

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

VI

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 7: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

vii

ABSTRAK

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 8: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

viii

ABSTRACT

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 9: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

LEMBAR PERNYATAAN PERSETUJUAN

PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS

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

,

lx

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 10: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

x

KATA PENGANTAR

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,

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 11: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

Melisa, Sorta, Indra, Rey, Dion, Kristo, Natali, dan Wahyu yang selalu

mendukung, menghibur dan memberi semangat.

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

xl

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 12: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

xii

DAFTAR ISI

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

C. Program Linear Biner ................................................................................ 15

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 13: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

xiii

D. Program Linear Campuran (Mixed Integer Linear Programing) .............. 16

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

LAMPIRAN ......................................................................................................... 79

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 14: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 15: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

2

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

lima Pisau

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 16: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

3

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 17: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

4

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

DAFTAR PUSTAKA

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 18: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 19: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

6

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)

∑ ( )( )

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 20: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

7

(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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 21: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

8

[

] [

] [

]

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 22: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

9

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:

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 23: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

10

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

* +

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 24: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

11

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 25: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

12

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 26: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

13

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 27: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

14

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

𝑥 𝑥

𝑥 𝑥

𝑥

Gambar 2.1 Alur Percabangan Contoh 2.1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 28: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

15

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 29: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

16

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

𝑥 𝑥

Gambar 2.2 Alur Percabangan Contoh 2.2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 30: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

17

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 pencabangan 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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 31: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

18

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 32: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

19

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 33: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

20

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:

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 34: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

21

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

𝑥

𝑥 𝑥

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 35: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 36: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

23

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 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

4 3 1 14 cm 2 cm

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 37: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

24

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

Lima Pisau Vertikal

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 38: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

25

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 .

.

[

]

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 39: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

26

[

], [

],…, [

]

( )

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

Langkah 2.2.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 40: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

27

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 41: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

28

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 42: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

29

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 43: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

30

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 44: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

31

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 45: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

32

, - [ ] 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.

{

{ ⌊

⌋}}

{ { ⌊

⌋}}

* +

{

{ ⌊

⌋}}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 46: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

33

{ { ⌊

⌋}}

* +

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 47: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

34

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 48: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

35

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.

{

{ ⌊

⌋}}

{ { ⌊

⌋}}

* +

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 49: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

36

{

{ ⌊

⌋}}

{ { ⌊

⌋}}

* +

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 50: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

37

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.

{

{ ⌊

⌋}}

{ { ⌊

⌋}}

* +

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 51: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

38

{

{ ⌊

⌋}}

{ { ⌊

⌋}}

* +

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 52: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

39

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

maka tidak

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 53: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

40

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.

{

{ ⌊

⌋}}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 54: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

41

{ { ⌊

⌋}}

* +

{

{ ⌊

⌋}}

{ { ⌊

⌋}}

* +

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 55: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

42

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.

{

{ ⌊

⌋}}

{ { ⌊

⌋}}

* +

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 56: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

43

{

{ ⌊

⌋}}

{ { ⌊

⌋}}

* +

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 57: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

44

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

maka lanjut

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 58: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

45

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.

Pada langkah 2.2 sampai 2.4

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 59: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

46

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

maka tidak

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 60: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

47

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.

Langkah 2.1.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 61: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

48

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 62: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

49

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 63: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

50

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.

{

{ ⌊

⌋}}

{ { ⌊

⌋}}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 64: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

51

* +

{

{ ⌊

⌋}}

{ { ⌊

⌋}}

* +

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 65: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

52

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

2 4 0 92 cm

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 66: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

53

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

1 1 1 2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 67: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

54

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 68: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

55

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 ( ).

∑ ( ) (2)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 69: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

56

Kendala (3) menunjukkan bahwa jika panjang pola pemotongan ke-j pada

rol kertas ke-k ( ) digunakan maka nilai dari yj,k adalah 1. Jika tidak digunakan

makan nilai dari yj,k adalah 0.

(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

* +

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 70: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

57

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

Minimum ∑ ∑

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 71: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

58

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 72: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

59

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 73: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

60

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 .

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 74: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

61

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

k=1 0 1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 75: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

62

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

0 4

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 76: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

63

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

j=2 0 0

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 77: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

64

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 78: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

65

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

36

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 79: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

66

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 80: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

67

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 81: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

68

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.

Gambar 4.3 Hasil pada Tampilan Awal

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 82: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

69

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 83: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

70

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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 84: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

71

Gambar 4.6 Memasukan Nilai pada Tampilan Detail

Pada Gambar 4.6 terlihat bahwa yang ingin dilihat adalah rol kertas ke-1

dan kertas produksi ke-1. Untuk melihat hasilnya dapat menekan tombol Cek

Hasil pada ujung kanan bawah. Hasilnya dapat dilihat pada Gambar 4.7.

Gambar 4.7 Hasil Detail Pemotongan

Pada gambar 4.7 terlihat bahwa panjang pemotongan rol kertas ke-1 adalah

522000 (satuan panjang) dan menggunakan pola pemotongan ke-6. Pola

pemotongan ke-6 adalah memotong jenis kertas ke-4 sebanyak 2 dan jenis kertas

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 85: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

72

ke-5 sebanyak 1. Pada Gambar 4.7 juga terlihat Tabel yang terdapat nilai e+04 itu

berarti . Jika telah selesai melihat detail dari setiap rol kertas dan kertas

produksi maka dapat kembali ke tampilan awal atau menutup aplikasi dengan

menggunakan menu. Tombol menu terdapat pada ujung kiri atas. Tekan tombol

menu lalu memilih halaman awal untuk kembali ke tampilan awal dan memilih

tutup untuk menutup aplikasi seperti pada Gambar 4.8.

Gambar 4.8 Menu Pada Tampilan Detail

Berikut adalah data hasil perhitungan dari program yang telah dibuat pada

MATLAB menurut kasus di atas. Pada Tabel 4.2 menunjukan seriap pola pemo-

tongan yang digunakan untuk kasus ini. Total dari pola pemotonganya yang dapat

dilakukan ada sebanyak 22 pola.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 86: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

73

Tabel 4.2 Pola Pemotongan yang Digunakan

Pola

ke-j

Kertas Permintaan

1 2 3 4 5 6 7 8

j=1 - - - - - - - 4

j=7 - - - 1 - - 2 -

j=11 - - 1 - 3 - - -

j=12 - - 2 1 - - - -

j=14 - 1 - - - 2 - -

j=19 1 - - - 3 - - -

j=22 2 1 - - - - - -

Pada Tabel 4.3 menunjukan solusi panjang optimal dari setiap lembar

kertas produksi.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 87: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

74

Tabel 4.3 Panjang Pemotongan Setiap Jenis Kertas

Produk

ke-i

Batas

Atas

Permintaan

Solusi

Panjang

Optimal

Batas

Bawah

Permintaan

i=1 3.374.486 3.369.816 3.213.796

i=2 1.506.947 1.506.960 1.435.188

i=3 2.355.103 2.255.058 2.242.955

i=4 1.985.027 2.050.928 1.890.501

i=5 1.436.623 1.436.719 1.368.213

i=6 561.341 561.336 534.620

i=7 2.093.864 2.087.904 1.994.156

i=8 1.243.232 1.243.340 1.184.030

Pada Tabel 4.4 menunjukan panjang pola pemotongan dari setiap rol

kertas. Sebagai contoh pada baris pertama j=7, berarti pola pemotongan ke-7

digunakan untul memotong rol kertas ke-1 sepanjang 521.976 cm

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 88: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

75

Tabel 4.4 Panjang Pola Pemotongan

Pola

ke-j

Rol Kertas Produksi

1 2 3 4 5

j=7 521.976 - - - -

j=1 - 33.460 - - -

j=12 - 485.012 - 521.976 -

j=22 - - 522.000 - 522.000

Total 521.976 518.472 522.00 521.976 522.000

Pola

ke-j

Rol Kertas Produksi

6 7 8 9 10

j=7 521.976 - - - -

j=1 - 277.375 - - -

j=11 - 241.110 - - -

j=22 - - 522.000 - -

j=14 - - - 280.668 -

j=19 - - - 237.816 -

Total 521.976 518.485 522.000 518.484 0

Pada kasus ini diperoleh sisa minimum kertas sebanyak 40.501.630,5

itu berarti sebanyak 8.92%.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 89: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

76

BAB V

PENUTUP

A. Kesimpulan

Masalah pengoptimalan sisa pemotongan kertas adalah masalah yang

penting dalam dunia produksi kertas. Apabila perusahaan kertas dapat

mengoptimalkan sisa pemotongan kertas maka perusahaan kertas dapat

meminimalkan biaya produksi. Masalah ini memiliki banyak kendala dan banyak

variabel keputusan sehingga susah diselesaikan secara manual. Pada tugas akhir

ini masalah yang terbentuk adalah masalah MINLP (Mixed Integer Non Linear

Programing) sehingga masalah tersebut harus diubah terlebih dahulu menjadi

masalah MILP (Mixed Integer Linear Programing). Cara mengubahnya adalah

dengan mendata semua kemungkinan pola pemotongan yang dapat dipotong oleh

pisau vertikal. Hasil yang diperoleh dimasukan pada kendala yang ada, sehingga

kendala tersebut bertambah, tetapi masalah pemotongannya sudah berubah

menjadi masalah MILP.

Pada tugas akhir ini penyelesaian masalah MILP menggunakan program

MATLAB dengan perintah inlinprog. Perintah ini sudah disediakan oleh

MATLAB akan tetapi banyaknya pola pemotongan dan kendala harus dibuat

sesuai dengan masalah yang ada. Selain itu untuk memudahkan menjalankan

program ini dibuat aplikasi dengan GUI MATLAB. Pada GUI ditampilkan

beberapa informasi dan perintah dalam bentuk grafis. Dengan adanya GUI

pengguna akan mudah mepahaminya.

B. Saran

Pada tugas ahir ini penulis menyadari bahwa masih banyak kekurangan di

dalam tulisanya. Oleh sebab itu, penulis mengharapkan kelak ada yang

melanjutkan penelitian ini. Pada tugas akhir ini hanya terbatas oleh maksimal

delapan kertas permintaan. Jika ditambah lebih dari delapan kertas permintaan

maka proses pengerjaannya membutuhhkan waktu yang cukup lama. Sehingga

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 90: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

77

diharapkan untuk penelitian selanjutnya dapat membuat program yang lebih

mudah diproses sehingga program tidak berjalan cukup lama.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 91: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

DAFTAR PUSTAKA

Castillo, Enrique, et al. (2002). Building and Solving Mathematical Programming

Models in Engineering and Science. Canada: John Wiley & Sons Inc.

Chvatal, Vasek. (1983). Linear Progamming. New York: W. H. Freeman and

Company.

Hillier, Frederick and Gerald J. Lieberman (2001). Introduction to Operations Re-

search. 7th ed. New York: The McGraw-Hill Companies Inc.

Matousek, Jiri & Bernd Gartner. (2007). Understanding and Using Linear

Programming. Berlin: Springer-Venrlag.

Peumsin, Sukonthip, et al. (2012). Solving 2- Dimensional Multiple Length

Cutting Stock Problem With MILP. GSTF Journal of Mathematics,

Statistics and Operations Research (JMSOR). 1(1): 86 - 91.

Taha, Hamdy A. (2007). Operations Research: An Introduction. 8th Edition. New

Jersey: Prentice-Hall, inc.

Tharmmaphornphilas, Wipawee, et al. (2013). A MILP Model to Select Cutting

Machines and Cutting Patterns to Minimize Paper Loss. Proceedings of

International MultiConference of Engineers and Computer Scientists. 2:1 -

6.

Westerlund, Tapio, et al. (1996). Solving a two-dimensional trim-loss problem

with MILP. GSTF European Journal of Operational Research. 104 (1998):

572 - 581.

Winston, Wayne L (1994). Operations Research: Applications and Algorithms.

3rd edition.South Melbourne: Wadsworth Inc.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 92: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

LAMPIRAN

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 93: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

Lampiran 1: List Program Menu Awal

function varargout = GUISkripsi(varargin) % GUISKRIPSI MATLAB code for GUISkripsi.fig % GUISKRIPSI, by itself, creates a new GUISKRIPSI or raises

the existing % singleton*. % % H = GUISKRIPSI returns the handle to a new GUISKRIPSI or

the handle to % the existing singleton*. % % GUISKRIPSI('CALLBACK',hObject,eventData,handles,...) calls

the local % function named CALLBACK in GUISKRIPSI.M with the given in-

put arguments. % % GUISKRIPSI('Property','Value',...) creates a new GUISKRIPSI

or raises the % existing singleton*. Starting from the left, property val-

ue pairs are % applied to the GUI before GUISkripsi_OpeningFcn gets

called. An % unrecognized property name or invalid value makes property

application % stop. All inputs are passed to GUISkripsi_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 GUISkripsi

% Last Modified by GUIDE v2.5 01-May-2017 16:21:41

% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @GUISkripsi_OpeningFcn, ... 'gui_OutputFcn', @GUISkripsi_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 94: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

% End initialization code - DO NOT EDIT

% --- Executes just before GUISkripsi is made visible. function GUISkripsi_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 GUISkripsi (see VARARGIN)

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

% Update handles structure guidata(hObject, handles);

% UIWAIT makes GUISkripsi wait for user response (see UIRESUME) % uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = GUISkripsi_OutputFcn(hObject, eventdata, han-

dles) % 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;

% --- Executes on button press in CekHasil. function CekHasil_Callback(hObject, eventdata, handles) % hObject handle to CekHasil (see GCBO) % eventdata reserved - to be defined in a future version of

MATLAB % handles structure with handles and user data (see GUIDATA) %ABB=[23 26;30 32;900 92;800 32]; %AB=set(handles.Tabel1,'Data',ABB); global xS k %digunakan untuk menyimpan variabel secara keseluruhan %untuk mengambil nilai dari Banyaknya kertas Permintaan Bm=get(handles.edit7,'String'); Bm11=str2num(Bm); AAA1=get(handles.Tabel1,'Data'); %Untuk mengambil nilai pada Tabel %untuk mengambil nilai dari Lebar Kertas Permintaan b1b=AAA1(1,1:Bm11); for ab1=1:Bm11 b(ab1)=cell2mat(b1b(ab1)); end %untuk mengambil nilai dari Lebar rol kertas Bma=get(handles.Bmaxx1,'String');

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 95: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

Bmax=str2num(Bma); %untuk mengambil nilai dari Lebar Minimum Pemotongan Kertas Bmi=get(handles.Bminn1,'String'); Bmin=str2num(Bmi); proses1 %untuk mengambil nilai dari Panjang Lembaran Kertas Permintaan

(wi) l11=AAA1(2,:); for ab1=1:Bm11 l(ab1)=cell2mat(l11(ab1)); end %untuk mengambil nilai dari Batas Atas Permintaan lmax11=AAA1(3,1:Bm11); for ab1=1:Bm11 lmax(ab1)=cell2mat(lmax11(ab1)); end %untuk mengambil nilai dari Batas Bawah Permintaan lmin11=AAA1(4,1:Bm11); for ab1=1:Bm11 lmin(ab1)=cell2mat(lmin11(ab1)); end %untuk mengambil nilai dari banyknya rol kertas produksi (r) k22=get(handles.kk1,'String'); k=str2num(k22); %untuk mengambil nilai dari Panjang Rol Kertas L2=get(handles.LL1,'String'); L=str2num(L2); %untuk mengambil nilai dari Panjang Minimum Pemotongan Pmin2=get(handles.Pminn1,'String'); Pmin=str2num(Pmin2); %untuk mengambil nilai dari sisa panjang rol kertas ketika meng-

ganti ke rol kertas berikutnya (S) S2=get(handles.SS1,'String'); S=str2num(S2); proses2 %Jika program linear tidak ada hasil if length(xS)==0 TidakAdaHasil end %untuk memasukan Banyak rol yang digunakan dan sisa pemotongan total1=sum(f.*xS); ccc1=num2str(total1); set(handles.Zmin,'String',ccc1) xYk=xS(1:k,1)'; total2=sum(xYk); ccc2=num2str(total2); set(handles.Ykk1,'String',ccc2)

function Bmaxx1_Callback(hObject, eventdata, handles) % hObject handle to Bmaxx1 (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 Bmaxx1 as text

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 96: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

% str2double(get(hObject,'String')) returns contents of

Bmaxx1 as a double

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

ties. function Bmaxx1_CreateFcn(hObject, eventdata, handles) % hObject handle to Bmaxx1 (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 Bminn1_Callback(hObject, eventdata, handles) % hObject handle to Bminn1 (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 Bminn1 as text % str2double(get(hObject,'String')) returns contents of

Bminn1 as a double

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

ties. function Bminn1_CreateFcn(hObject, eventdata, handles) % hObject handle to Bminn1 (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 kk1_Callback(hObject, eventdata, handles) % hObject handle to kk1 (see GCBO)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 97: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

% 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 kk1 as text % str2double(get(hObject,'String')) returns contents of kk1

as a double

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

ties. function kk1_CreateFcn(hObject, eventdata, handles) % hObject handle to kk1 (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 LL1_Callback(hObject, eventdata, handles) % hObject handle to LL1 (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 LL1 as text % str2double(get(hObject,'String')) returns contents of LL1

as a double

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

ties. function LL1_CreateFcn(hObject, eventdata, handles) % hObject handle to LL1 (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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 98: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

function Pminn1_Callback(hObject, eventdata, handles) % hObject handle to Pminn1 (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 Pminn1 as text % str2double(get(hObject,'String')) returns contents of

Pminn1 as a double

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

ties. function Pminn1_CreateFcn(hObject, eventdata, handles) % hObject handle to Pminn1 (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 SS1_Callback(hObject, eventdata, handles) % hObject handle to SS1 (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 SS1 as text % str2double(get(hObject,'String')) returns contents of SS1

as a double

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

ties. function SS1_CreateFcn(hObject, eventdata, handles) % hObject handle to SS1 (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.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 99: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

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

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

% --- Executes when entered data in editable cell(s) in Tabel1. function Tabel1_CellEditCallback(hObject, eventdata, handles) % hObject handle to Tabel1 (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 % handles structure with handles and user data (see GUIDATA) AAA1=get(hObject,'Data');

% --- Executes on selection change in popupmenu3. function popupmenu3_Callback(hObject, eventdata, handles) % hObject handle to popupmenu3 (see GCBO) % eventdata reserved - to be defined in a future version of

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

% Hints: contents = cellstr(get(hObject,'String')) returns

popupmenu3 contents as cell array % contents{get(hObject,'Value')} returns selected item from

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

case 2 close DetailGuiSkripsi case 3 close; otherwise end

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

ties. function popupmenu3_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu3 (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'));

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 100: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

% 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

function edit7_Callback(hObject, eventdata, handles) % hObject handle to edit7 (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 edit7 as text % str2double(get(hObject,'String')) returns contents of ed-

it7 as a double

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

ties. function edit7_CreateFcn(hObject, eventdata, handles) % hObject handle to edit7 (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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 101: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

Lampiran 2: List Program Proses 1 (Mencari Pola Pemotongan)

global a j A1 %digunakan untuk menyimpan variabel secara kese-

luruhan i=1; a=length(b); Nmax=4; nmax(i)= 4; n=zeros(1,a); N=zeros(1,a+1); B=zeros(1,a+1); %kelompok 0 j=1; while i>0 %kelompom 1 iya maka jalan, tidak maka berhenti j=j+1; n(j,:)=n(j-1,:); if b*n(j,:)'>=Bmin % Kelompok 2 N(1)=0; B(1)=0; for i=1:a N(i+1)=N(i)+n(j,i); B(i+1)=B(i)+b(i)*n(j,i); nmax(i)=min(Nmax-N(i),floor(max(0,(Bmax-B(i))/b(i)))); end i=a;

while n(j,i)< nmax(i)%kelompok 3 untuk yang tidak n(j,i)=n(j,i)+1; if b*n(j,:)'< Bmin %kelompok 4 untuk jawaban tidak %kelompok 3 N(1)=0; B(1)=0; for i=1:a N(i+1)=N(i)+n(j,i); B(i+1)=B(i)+b(i)*n(j,i); nmax(i)=min(Nmax-N(i),floor(max(0,(Bmax-

B(i))/b(i)))); end i=a; elseif b*n(j,:)'>= Bmin %kelompok 4 untuk jawaban tidak %kelompok 1 j=j+1; n(j,:)=n(j-1,:); %kelompok 2 N(1)=0; B(1)=0; for i=1:a N(i+1)=N(i)+n(j,i); B(i+1)=B(i)+b(i)*n(j,i); nmax(i)=min(Nmax-N(i),floor(max(0,(Bmax-

B(i))/b(i)))); end i=a; end aaaa= n(j,i);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 102: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

bbbb=nmax(i); end %atas pasti salah ( 5 yes) while n(j,i)>= nmax(i)%kelompok 3 untuk jawaban iya if n(j,i)>= nmax(i) %kelompok 6 n(j,i)=0; i=i-1; if i<=0 %kelompok 6 untuk jawaban tidak break end end end if i<=0 %untuk menghentikan jika i<=0 break end %kelompok 4 n(j,i)=n(j,i)+1; end

while b*n(j,:)'< Bmin %kelompok 4 untuk jawaban iya %kelompok 2 N(1)=0; B(1)=0; for i=1:a N(i+1)=N(i)+n(j,i); B(i+1)=B(i)+b(i)*n(j,i); nmax(i)=min(Nmax-N(i),floor(max(0,(Bmax-B(i))/b(i)))); end i=a; while n(j,i)< nmax(i)%kelompok 3 untuk jawaban tidak %kelompok 4 n(j,i)=n(j,i)+1; if b*n(j,:)'< Bmin %kelompok 4 untuk jawaban iya %kelopok 2 N(1)=0; B(1)=0; for i=1:a N(i+1)=N(i)+n(j,i); B(i+1)=B(i)+b(i)*n(j,i); nmax(i)=min(Nmax-N(i),floor(max(0,(Bmax-

B(i))/b(i)))); end i=a; elseif b*n(j,:)'>= Bmin %kelompok 4 untuk jawaban tidak %kelompok 1 j=j+1; n(j,:)=n(j-1,:); %kelompok 2 N(1)=0; B(1)=0; for i=1:a N(i+1)=N(i)+n(j,i); B(i+1)=B(i)+b(i)*n(j,i);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 103: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

nmax(i)=min(Nmax-N(i),floor(max(0,(Bmax-

B(i))/b(i)))); end i=a; end end while n(j,i)>= nmax(i)%kelompok 3 untuk jawaban iya if n(j,i)>= nmax(i) %kelompok 6 n(j,i)=0; i=i-1; if i<=0 %untuk menghentikan break end end end if i<=0 %untuk menghentikan break end n(j,i)=n(j,i)+1; end end %karena hasil dari program diatas ada yang pola yang menggunakan

lbh dari 2 kertas diperlukan langkah di bawah untuk menghapusnya for c=1:j d(c)=b*n(c,:)'; end g=1; for c=1:j d(c)=b*n(c,:)'; if Bmin<= d(c)& d(c)<=Bmax A11(g,1:a)=n(c,:); B1(g)=c; C(g)=b*n(c,:)'; g=g+1; else end end for c=1:length(B1) D(c,1:a)=n(B1(c),:); end v=1;d=1; for c=1:g-1 ff=find(A11(c,:)>0); if length(ff)==1 A1(v,1:a)=A11(c,1:a); v=v+1; elseif length(ff)==2 A1(v,1:a)=A11(c,1:a); v=v+1; else A12(d,1:a)=A11(c,1:a); d=d+1; end end g1=length(A1(:,1));

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 104: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

Lampiran 4: List Program Proses 2 (Membuat Kendala dan Me-

nyelesaikan)

global j xS %digunakan untuk menyimpan variabel secara keseluruhan j=g1; %Banyaknya pola pemotongan (J) Wmax=Bmax;%menyamakan simbol w=b;%menyamakan simbol %membuat tempat untuk variabel berikut p=ones(j,k);%pjk x=ones(j,k);%xj i nya belum ada ai=ones(1,a);%ai y=ones(j,k);%yjk Y=ones(1,k);%Yk sp=ones(1,a);%si+ sn=ones(1,a);%si- F1=Y*0;F2=zeros(1,j*k);F3=ai*0;F4=sn*0;F5=sp*0;F6=zeros(1,j*k);F7=

zeros(1,j*k*a); %membuat fungsi tujuan F=[Y*Wmax*L,F2,-(ai.*w),F4,sp.*w,F6,F7]; f =F'; intcon = length(F); %membuat kendala 2 for c=1:k ap(c,(c-1)*j+1:c*j)=p(:,c)'; ay(c,(c-1)*j+1:c*j)=y(:,c)'; aY=eye(k); end for c=1:k k1(c,1:intcon)=[-L*aY(c,:),S*ay(c,:),F3,F4,F5,ap(c,:),F7]; end %membuat kendala 3 g=0; for c=1:k for d=1:j g=g+1; ap=F6;ay=F2; ap(1,(c-1)*j+d)=1; ay(1,(c-1)*j+d)=1; k2(g,1:intcon)=[F1,-L*ay,F3,F4,F5,ap,F7]; end end

%membuat kendala 4 g=0; for c=1:k for d=1:j g=g+1; ap=F6;ay=F2; ap(1,(c-1)*j+d)=1; ay(1,(c-1)*j+d)=1; k3(g,1:intcon)=[F1,Pmin*ay,F3,F4,F5,-ap,F7]; end end

%membuat kendala 6 for c=1:a aai=F3; aai(c)=1;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 105: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

k4(c,1:intcon)=[F1,F2,-aai,F4,F5,F6,F7]; end g=0; I=eye(a*j*k);

%memebuat kendala 8 for c=1:k for d=1:j ap=F6;ax=F7; ap(1,(c-1)*j+d)=1; for z=1:a g=g+1; k5(g,1:intcon)=[F1,F2,F3,F4,F5,-ap,l(z)*I(g,:)]; end end end %membuat kendala 9 for c=1:k-1 aY=F1; aY(1,c)=-1; aY(1,c+1)=1; k6(c,1:intcon)=[aY,F2,F3,F4,F5,F6,F7]; end %membuat kendala yang memiliki persamaan <= A = [k1;k2;k3;k4;k5;k6]; [a1,b1]=size(k1);[a2,b2]=size(k2);[a3,b3]=size(k3);[a4,b4]=size(k4

);[a5,b5]=size(k5);[a6,b6]=size(k6); b = [zeros(a1,1);zeros(a2,1);zeros(a3,1);-

lmin';zeros(a5,1);zeros(a6,1)]; aai=eye(a); xx=eye(a); ax=zeros(a,a*j*k); A1k=ax'; for d=1:j*k ax(1:a,1+(d-1)*a:d*a)=xx; end aA1=ax; for c=1:k A1k(j*(c-1)+1:j*c,:)=A1; end for c=1:a h=0; NL=find(ax(c,:)); for z=1:length(NL) h=h+1; aA1(c,NL(z))=aA1(c,NL(z))*A1k(h,c); end end %memebuat kendala 5 for z=1:a k7(z,1:intcon)=[F1,F2,-

aai(z,:),F4,F5,F6,l(z)*ax(z,:).*aA1(z,:)]; end %membuat kendala 7 asp=eye(a);asn=eye(a); for z=1:a k8(z,1:intcon)=[F1,F2,aai(z,:),asp(z,:),-asn(z,:),F6,F7];

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 106: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

end %membuat kendala yang memiliki persamaan = Aeq = [k7;k8]; [a7,b7]=size(k7);[a8,b8]=size(k8); beq = [zeros(a7,1);lmax']; lb = [F1';F2';F3';F4';F5';F6';F7']; ub =

[(F1+1)';(F2+1)';(F3+1)'*inf;(F4+1)'*inf;(F5+1)'*inf;(F6+1)'*inf;(

F7+1)'*inf]; %menentukan variabel keputusan yang hasilnya harus bulat ccc=[1:k+j*k,k+2*j*k+3*a+1:k+2*j*k+3*a+j*k*a]; %menyelesaikan persamaan yang telah dibuat xS = intlinprog(f,ccc,A,b,Aeq,beq,lb,ub);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 107: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

Lampiran 5: List Program Keluaran Saat Tidak Ada Hasil

function varargout = TidakAdaHasil(varargin) % TIDAKADAHASIL MATLAB code for TidakAdaHasil.fig % TIDAKADAHASIL, by itself, creates a new TIDAKADAHASIL or

raises the existing % singleton*. % % H = TIDAKADAHASIL returns the handle to a new TIDAKADAHASIL

or the handle to % the existing singleton*. % % TIDAKADAHASIL('CALLBACK',hObject,eventData,handles,...)

calls the local % function named CALLBACK in TIDAKADAHASIL.M with the given

input arguments. % % TIDAKADAHASIL('Property','Value',...) creates a new TID-

AKADAHASIL or raises the % existing singleton*. Starting from the left, property val-

ue pairs are % applied to the GUI before TidakAdaHasil_OpeningFcn gets

called. An % unrecognized property name or invalid value makes property

application % stop. All inputs are passed to TidakAdaHasil_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 TidakAdaHasil

% Last Modified by GUIDE v2.5 08-May-2017 13:46:33

% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @TidakAdaHasil_OpeningFcn,

... 'gui_OutputFcn', @TidakAdaHasil_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 108: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT

% --- Executes just before TidakAdaHasil is made visible. function TidakAdaHasil_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 TidakAdaHasil (see

VARARGIN)

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

% Update handles structure guidata(hObject, handles);

% UIWAIT makes TidakAdaHasil wait for user response (see UIRESUME) % uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = TidakAdaHasil_OutputFcn(hObject, eventdata,

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;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 109: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

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 arguments. % % 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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 110: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 111: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

% --- 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 % handles structure with handles and user data (see GUIDATA)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 112: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

% 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); %untuk memasukannya ke kolom yang ditentukan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 113: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

RolS=num2str(Rol); 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); set(handles.Hasil4,'String',HSLS4)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 114: OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN ... · program dan GUI MATLAB. Tujuan dibuat GUI MATLAB adalah Tujuan dibuat GUI MATLAB adalah mempermudah setiap orang menggunakan

% --- 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 % handles structure with handles and user data (see GUIDATA)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI