OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN … · 2017. 8. 8. · satu di antaranya adalah...
Transcript of OPTIMASI PEMOTONGAN ROL KERTAS DUA DIMENSI DENGAN … · 2017. 8. 8. · satu di antaranya adalah...
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
77
diharapkan untuk penelitian selanjutnya dapat membuat program yang lebih
mudah diproses sehingga program tidak berjalan cukup lama.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
% 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
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
% 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
% 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
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
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
% 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
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
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
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
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
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
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
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
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
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
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
% --- 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
% 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
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
% --- 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