PENJADWALAN MESIN MENGGUNAKAN
ALGORITMA POUR
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Disusun Oleh :
Benediktus Yoga Adipradana 065314066
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
ii
JOBS SCHEDULING ALGORITHM POUR
A THESIS
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Teknik Degree
In Informatics Engineering Department
By:
Benediktus Yoga Adipradana
NIM : 065314066
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
v
HALAMAN MOTTO
“TETAP SEMANGAT KEHIDUPAN KERAS”
“TETAPLAH BERGERAK MAJU, SEKALIPUN
LAMBAT. KARENA DALAM KEADAAN TETAP
BERGERAK ANDA
MENCIPTAKAN KEMAJUAN”
vi
PERNYATAAN KEASLIAN KARYA
Saya menyatakan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat
karya orang lain kecuali telah disebutkan dalam kutipan atau daftar pustaka,
sebagaimana layaknya karya ilmiah.
Yogyakarta, Juli 2013
Penulis,
vii
PERNYATAAN PERSETUJUAN
PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : Benediktus Yoga Adipradana
NIM : 065314166
Demi pengembangan ilmu pengetahuan,saya memberikan kepada perpustakaan
Universitas Sanata Dharma karya ilmiah saya yang berjudul :
PENJADWALAN MESIN DENGAN ALGORITMA POUR
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan
kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan
dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data,
mendistribusikannya secara terbatas dan mempublikasikannya di internet atau media
lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun
memberikan royalty kepada saya selama tetap mencantumkan nama saya sebagai
penulis. Demikian pernyataan ini yang saya buat dengan sebenarnya.
Dibuat di Yogyakarta,
Pada tanggal : Juli 2013
Yang menyatakan
viii ABSTRAK
Peneliti ini mengenai bagaimana menyelesaikan penjadwalan mesin dengan
mesin berjumlah 5 dan job berjumlah 4 menggunakan metode pour pada bahasa
pemrograman java. Dengan tujuan untuk mengurangi waktu tunggu sehingga waktu total
maksimal dapat berkurang dan produktifitas dapat meningkat, mengurangi keterlambatan
pada pekerjaan, dan mengurangi antrian yang ada. Hasil penelitian berupa sebuah sistem
yang dapat menghitung penjadwalan mesin menggunakan metode pour. Dengan hasil
uji coba pada permasalahan penjadwalan mesin dengan jumlah job 4 dan jumlah
mesin 5 program ini dapat menampilkan penjadwalan mesin menggunakan
ix ABSTRACT
The researchers on how to resolve the scheduling engine to engine and amounted
to 5 job consists of 4 using the method pour the java programming language. With
the aim of reducing waiting time so that the maximum total time can be reduced
and productivity can be increased, reducing the delay in the work, and reduce
queues exist. The results form a system that can calculate the scheduling engine
pour method. With the results of tests on the machine scheduling problems with
job number 4 and number 5 machine scheduling program can display engine uses
x
KATA PENGANTAR
Puji syukur kepada Tuhan Yang Maha Esa karena atas segala berkat dan rahmat-Nya penulis dapat menyelesaikan skripsi dengan judul “Penjadwalan Mesin Menggunakan Algoritma Pour”.
Penulisan skripsi ini diajukan untuk memenuhi salah satu syarat memperoleh
gelar Sarjana Teknik Program Studi Teknik informatika Universitas Sanata Dharma
Yogyakarta.
Dengan terselesaikannya penulisan skripsi ini, penulis mengucapkan terima kasih
kepada pihak-pihak yang telah membantu memberikan dukungan baik berupa masukan
ataupun berupa saran. Ucapan terima kasih ditujukan kepada :
1. Yesus Kristus terimakasih atas berkat rahmat dan karunia yang melimpah.
2. Santo Benediktus terimakasih telah mejadi Santo pelindungku.
3. Papa M.T. Pangarso dan Mama A.M. Wahyu Sri Wulandari yang tak
henti-hetinya memberikan semangat, doa dan dana yang mengalir setiap waktu.
4. Bapak Alb. Agung Hadhiatma, S.T., M.T. selaku dosen pembimbing yang telah
memberikan dukungan, bantuan dan dorongan kepada penulis selama mengikuti
proses perkuliahan sampai dengan penyelesaian skripsi ini.
5. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc. selaku Dekan Fakultas
Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.
6. Ibu Ridowati Gunawan, S.Kom., M.T. selaku Ketua Jurusan Teknik Informatika
Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.
7. Adiku Ronaldo Adi Wiratama tersayang atas doa dan dukungannya.
8. Dwi Elok Permataningtyas terimakasih atas dukungan, doa, dan semangatnya
selama ini tetap semangat.
9. Dra. YFM. Gien Agustinawansari, Ak, M.M. terimakasih bude untuk doa semangat
dan bantuanya sehingga saya dapat menyelesaikan studi.
10. Eyang putri dan kakung terimakasih tidak henti hentinya mendoakan cucumu ini
sehingga dapat menyelesaikan tugas akhir dengan baik.
xi
12. Johanes De Deo terimakasih buat bantuanya bro.
13. Seluruh warga kos Damai made “brekele”, theo “edo”, florry “gendut”, igi “bravo”, tian “nyawa”,krisna, Mas agung “mas kos”, terimakasih buat dukungan kalian semua saudaraku..
14. Semua teman-teman seperjuangan di Jogja Mas wawan, yoga “suwex”, manto “juling”, kitti, warih, kang edi, thomas “gudik” makasih buat semangat kalian dan kebersamaan kalian.
15. Om Slamet, Om Santoso, Om Jantul, Om Gondrong terimakasih sudah menemani
disaat susah senang ^_^
16. Defense of the ancients....
Dalam penulisan skripsi ini, pastilah masih banyak kekurangan dan hal yang
perlu diperbaiki. Oleh karena itu saran dan kritik dari pembaca yang sekiranya dapat
membangun sangat penulis harapkan.
Akhir kata, semoga penulisan skripsi ini berguna untuk menambah wawasan
ataupun menjadi referensi bagi para pembaca sekalian khususnya pada mahasiswa Teknik
Informatika.
Yogyakarta, juni 2013
xii
DAFTAR ISI
HALAM JUDUL... i
HALAMAN JUDUL (INGGRIS)... ii
HALAMAN PERSETUJUAN PEMBIMBING... iii
HALAMAN PENGESAHAN... iv
HALAMAN MOTTO... v
PERNYATAAN KEASLIAN KARYA... vi
PERNYATAAN PERSETUJUAN... vii
ABSTRAK... viii
ABSTRACT... ix
KATA PENGANTAR... x
DAFTAR ISI... xi
DAFTAR GAMBAR... xv
BAB I PENDAHULUAN... 1
1.1 Latar Belakang Masalah... 1
1.2 Rumusan Masalah... 2
1.3 Tujuan Penelitian... 2
1.4 Pembatasan Masalah... 3
1.5 Metodologi Penelitian... 3
1.6 Sistematika Penulisan... 4
BAB II LANDASAN TEORI... 6
2.1 Perencanaan dan Pengendalian Produksi... 6
xiii
2.2.1 Tujuan Penjadwalan... 8
2.2.2 Klasifikasi Penjadwalan... 10
2.2.2.1 Berdasarkan Jumlah Mesin... 11
2.2.2.2 Pola Aliran Proses... 11
2.2.2.3 Pola Kedatangan Pekerjaan... 14
2.2.2.4 Sifat Informasi... 15
2.2.3 Input Sistem Penjadwalan... 15
2.2.4 Output Sistem Penjadwalan... 16
2.2.5 Istilah-istilah dalam Penjadwalan... 18
2.2.6 Tipe Ruang Lingkup Penjadwalan... 19
2.3 Aturan Prioritas... 21
2.4 Sistem Pengendalian Situasi Produksi... 22
2.5 Pengertian Metode Pour... 24
2.6 Pengertian Java... 25
BAB III ANALISA DAN PERANCANGAN SISTEM... 26
3.1 Analisis Sistem... 26
3.1.1 Kebutuhan Hardware... 26
3.1.2 Kebutuhan Software... 26
3.2 Perancangan Sistem... 26
3.3 Perancangan Perangkat Lunak... 28
3.4 Kasus Pengerjaan Algoritma Pour... 30
BAB IV IMPLEMENTASI SISTEM DAN ANALISIS SISTEM... 43
xiv
DAFTAR PUSTAKA... 61
xv
DAFTAR GAMBAR
Gambar 2.1 Jalur Pure Flow Shop... 12
Gambar 2.2 Jalur General Flow Shop... 12
Gambar 2.3 Jalur Job Shop... 13
Gambar 2.4
Elemen input-output, prioritas dan ukuran kinerja dari system
penjadwalan... 17
1
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Perkembangan teknologi komputer sampai dengan saat ini telah mencapai
perkembangan yang sangat pesat. Bentuk perkembangan dari teknologi komputer
adalah berkembangnya aplikasi berbasis komputer yang menggabungkan antara
komputer sebagai perangkat keras dan bahasa pemrograman sebagai desain sistem
yang berfungsi untuk pengambil keputusan. Terutama pada sebuah proses
penjadwalan produksi.
Penjadwalan produksi merupakan komponen yang sangat penting dalam
proses produksi, karena dengan penjadwalan produksi yang optimal diharapkan dapat
memperlancar proses produksi. Dalam sebuah lantai produksi, penjadwalan produksi
selalu menjadi permasalahan yang mendasar karena penjadwalan merupakan langkah
utama sebelum memulai sebuah produksi. Jika penjadwalan produksi hanya dilalukan
secara manual tanpa ada sistematis yang baik maka proses produksi tidak akan
berjalan dengan lancar sesuai yang diharapakan. Maka dibutuhkan sebuah
penjadwalan yang baik agar waktu dan biaya pengerjaan yang dikeluarkan ditekan
seminimal mungkin tetapi hasil yang di dapatkan maksimal. Penjadwalan yang baik
akan memberikan dampak positif, yaitu rendahnya biaya operasi dan waktu
Banyak terdapat metode yang dapat digunakan dalam penjadwalan, salah satu
metode yang dapat digunakan dalam penjadwalan adalah metode pour. Digunakan
pour dengan tujuan meminimkan maskepan yaitu berdasarkan pendekatan kombinasi.
Hal ini dengan caara menggantikan job dengan job lainya dalam urutan sampai
ditemukan kombinasi urutan yang dapat memenuhi kriteria tujuan.
1.2. Rumusan Masalah
Sesuai dengan masalah yang dijelaskan dalam latar belakang permasalahan
diatas, perumusan masalah yang akan diteliti adalah bagaimana menyelesaikan
penjadwalan mesin dengan mesin berjumlah 5 dan job berjumlah 4 menggunakan
metode pour pada bahasa pemrograman java.
1.3. Tujuan Penelitian
Adapun maksud dari penelitian ini antara lain:
a. Mengurangi waktu tunggu sehingga total waktu dapat berkurang. Dan
produktifitas dapat meningkat.
b. Mengurangi beberapa kelambatan pada pekerjaan yang mempunyai batas
waktu penyelesaian sehingga akan meminimisasi biaya kelambatan.
1.4. Pembatasan Masalah
Adapun batasan masalah yang diambil dalam memecahkan masalah agar
pembatasan yang dilakukan dapat lebih terarah dalam penelitian ini. Penjadwalan
yang dilakukan adalah penjadwalan mesin pada proses pembuatan produk yang
mengunakan metode pour, dan bilangan variabel yang digunakan adalah bilangan
bulat.
1.5. Metodologi Penelitian
Metodologi yang digunakan dalam pembuatan tugas akhir ini adalah sebagai
berikut :
a. Studi pustaka
Pada tahan ini dilakukan mencari literatur serta mempelajari tentang
pengenalan penjadwalan mesin pada Flow shop scheduling menggunakan
algoritma Pour, pengenalan java programing pada netbeans 7.2.1.
b. Analisis Sistem
Di tahap ini yang dilakukan adalah menganalisa jalannya aplikasi
penjadwalan mesin.
c. Pengujian
Pada tahan ini dilakuan uji coba program dan menganalisa hasil program
yang meliputi tingkat keakuratan dan keberhasilan.
Pada tahan ini menyimpulakn hasil analisa program dengan tingkat
keakuratan dan keberhasilann.
1.6. Sistematika penulisan
Adapun sistematika penulisan dalam penyusunan laporan Tugas Akhir adalah
sebagai berikut:
Bab 1 Pendahuluan
1.1Latar Belakang Masalah
Berisikan mengenai latar belakang masalah yang akan diteliti.
1.2Identifikasi Masalah
Berisikan mengenai masalah yang timbul serta pengidentifikasian masalah.
1.3Tujuan Penelitian
Berisikan tentang tujuan dilaksanakan penelitian Tugas Akhir.
1.4Pembatasan Masalah
Berisikan tentang pembatasan dari penelitian.
1.5Metodologi Penelitian
Berisikan metodologi yang digunakan.
1.6Sistematika Penulisan
Berisikan tentang urutan penulisan laporan penelitiian yang tersusun dan
Bab 2 Tinjauan Pustaka
Bab ini mencakup tentang teori-teori yang berhubungan dengan judul
penelitian yang dibuat oleh penulis.
Bab 3 Analisis Perancangan Sistem
Bab ini berisikan tentang model atau cara pemecahan masalah serta
langkah-langkah pemecahan masalah yang digambarkan dalam flow chart pemecahan
masalah.
Bab 4 Implementasi Sistem dan Analisis Sistem
Bab ini dikemukakan proses implementasi sesuai dengan rancangan sistem
yang dibuat
Bab 5 Kesimpulan
Berisikan kesimpulan yang terdapat dari pembahasan bab-bab sebelumnya
6
BAB II
LANDASAN TEORI
2.1. Perencanaan dan Pengendalian Produksi
Perencanaan dan pengendalian produksi adalah suatu proses perencanaan
dan pengorganisasian pekerjaan, bahan baku, mesin dan peralatan serta modal
yang diperlukan untuk memproduksi barang pada suatu periode tertentu sesuai
dengan yang diramalkan dan kemampuan dari perusahaan.
Proses perencanaan dan pengendalian prosuksi dapat membantu
perusahaan dalam mengoptimalkan sumber daya yang dimiliki untuk mencapai
tujuan yang diinginkan. Proses perencanaan dan pengendalian produksi tersebut
tersiri dari tahap-tahap yang telah tersusun secara sistematis dan saling terkait satu
sama lain.
Perencaan produksi merupakan suatu fungsi manajemen, dimana dalam
perencanaan ditentukan usaha dan tindakan yang perlu diambil oleh pihak
perusahaan, serta mempertimbangkan masalah yang akan timbul pada masa yang
akan datang berdasarkan penyesuaian permintaan (demand) yang berasal dari
permasalahan dengan keseluruhan kemampuan yang ada.
Tahap-tahap perencanaan dan pengendalian produksi antara lain
peramalan, perencanaan kebutuhan material, perencanaan kebutuhan kapasitas
2.2. Pengertian Penjadwalan
Penjadwalan diartikan sebagai rencana pengaturan kerja serta
pengalokasian sumber, baik waktu maupun fasilitas untuk setiap operasi yang
harus diselesaikan (Vollman; 1998). Menurut Kenneth R. Baker penjawalan
adalah sebagai proses pengalokasian sumber-sumber untuk memilih sekumpulan
tugas dalam jangka waktu tertentu. Fungsinya adalah sebagai alat untuk
pengembalian keputusan yaitu untuk menetapkan suatu jadwal (Baker; 1974).
Menurut Bedworth (2002, p72), terdapat dua target yang ingin dicapai melalui
penjadwalan mesin, yaitu jumlah output yang dihasilkan (throughtput), serta batas
waktu penyelesaian yang telah ditetapkan (due date). Kedua target ini dinyatakan
melalui kriteria penjadwalan (misalnya minimasi maskepan, misimasi mean flow
time, minimasi mean lateness, minimasi maksimum tardiness, minimasi mean
tardiness, minimasi number of tardy).
Dari sekian banyak definisi penjadwalan yang telah ada pada saat ini,
intinya adalah:
Penjadwalan berfungsi sebagai alat pengambilan keputusan.
Penjadwalan merupakan teori berisi prinsip-prinsip dasar, model, teknik
dan kesimplan logis dalam pengambilan keputusan.
Untuk menyelesaikan masalah penjadwalan yang dihadapi, dapat
digunakan beberapa pendekatan. Pendekatan tersebut dibagi menjadi dua yaitu:
Pendekatan yang lebih modern mencakup gabungan antara metode
penelitian operasional, intelegensia tiruan, simulasi kejadian dan ide-ide
Pendekatan tradisional meliputi metode-metode penelitian operasional.
2.2.1. Tujuan Penjadwalan
Tujuan penjadwalan yang ingin dicapai dengan dilaksanakannya
penjadwalan produksi adalah:
1. Meningkatkan produktivitas mesin, yaitu dengan
mengurangi waktu mesin menganggur.
2. Mengurangi persediaan barang setengah jadi degnan jalan
mengurangi jumlah rata-rata tugas yang menunggu dalam
antrian suatu mesin karena mesin tersebut sibuk.
3. Meminimasi biaya produksi.
4. Membantu dalam pengambilan keputusan sehingga
penambahan biaya yang mahal dapat dihindarkan.
5. Mengurangi keterlambatan karena batas waktu yang telah
dilampaui, dengan cara :
a. Mengurangi maksimum keterlambatan.
b. Mengurangi jumlah pekerjaan yang terlambat.
Pada saat merencanakan suatu penjadwalan produksi, yang harus
diperhatikan adalah ketersediaan sumber daya yang dimiliki, baik berupa
tenaga kerja, peralatan (processor) ataupun bahan baku. Karena sumber
daya yang dimiliki dapat berubah-ubah maka penjadwalan merupakan
Adapun tipe keputusan yang akan diperoleh dari pelaksanaan
penjadwalan tersebut berupa:
Pengurutan pekerjaan (sequencing)
Penugasan (dispatching)
Pengurutab operasi suatu job (routing)
Penentuan waktu mulai dan selesai pekerjaan (timing)
Persoalan penjadwalan timbul apabila, beberapa pekerjaan akan
dikerjakan bersamaan, sedangkan sumber daya seperti peralatan jumlahnya
terbatas. Untuk mencapai hasil yang optimal dengan keterbatasan sumber
daya yang dimiliki, maka diperlukan adanya penjadwalan sumber-sumber
tersebut secara efisien.
Penjadwalan memiliki beberapa elemen-elemen penting yang harus
diperhatikan sepert job, operasi, mesin serta hubungan yang terjadi
diantaranya:
1. Job
Job dapat diartikan sebagai suatu pekerjaan yang harus
diselesaikan untuk mendapatkan suatu produk. Job biasanya terdiri
dari beberapa operasi yang harus dikerjakan (minimal 1 operasi).
Manajemn melalui perencanaan yang telah dibuat atau berdasarkan
pesanan dari pelanggan memberikan job kepada bagian shop florr
untuk dikerjakan. Informasi yang dipunyai oleh suatu job
dilakukan didalamnya, saat harus diselesaikan dan saat job mulai
2. Operasi
Operasi adalah himpunan bagian dari job, untuk menyelesaikan
suatu job, operasi-operasi dalam job diurutkan dalam suatu urutan
pengerjaan tertentu. Urutan tersebut ditentukan pada saat
perencanaan proses. Suatu operasi baru dapat dikerjakan apabila
operasi atau proses yang mendahului sudah dikerjakan terlebih
dahulu. Setiap operasi mempunyai waktu proses, waktu proses
adalah waktu pengerjaan yang diperlukan untuk melakukan operasi
tersebut. Waktu proses operasi untuk job biasanya telah diketahui
sebelumnya dan mempunyai nilai terentu.
3. Mesin
Mesin adalah sumber daya yang diperlukan untuk mengerjakan
proses penyelesaian suatu job. Setiap mesin hanya dapat
memproses satu tugas pada saat tertentu.
2.2.2. Klasifikasi Penjadwalan
Permasalahan penjadwalan dapat diklasifikasikan berdasarkan
factor-faktor:
1. Mesin:
Mesin tunggal
Dua mesin
2. Aliran proses:
Job shop
Flow shop
3. Pola kedatangan:
Statis
Dinamis
4. Elemen penjadwalan:
Deterministic
Stokastik
2.2.2.1. Berdasarkan Jumlah Mesin
Dibedakan menjadi dua bagian yaitu:
1. Penjadwalan pada mesin tunggal
2. Penjadwalan pada mesin ganda
2.2.2.2. Pola Aliran Proses
Pola aliran proses produksi dapat dibedakan atas:
1. Flow Shop
flow shop dibedakan menjadi dua yaitu
1. Pure Flow Shop
Pure flow shop yaitu flow shop yang memiliki jalur yang sama
untuk semua tugas. Lintasan prosesnya dapat dilihat lebih jelas
Gambar 2.1 Jalur Pure Flow Shop
2. General Flow Shop
General flow shop yaitu flow shop yang memiliki pola aliran
berbeda. Ini disebabkan adanya variasi dalam pekerjaan tugas,
sehingga tugas yang datang tidak harus dikerjakan pada semua
mesin. Jadi mungkin suatu proses dilewati. Lintasan proses dapat
dilihat pada Gambar 2.2 dibawah ini.
M1
M1
M1
J2
Gambar 2.2 Jalur General Flow Shop
2. Job shop
Pada pola aliran prose job shop, masing-masing job memiliki urutan
operasi yan gunik. Setiap job bergerak dari satu mesin kerja menuju mesin
kerja lainya dengan pola yang random. Lintasan prosesnya dapat dilihat
pada Gambar 2.3 dibawah ini.
M1 M1 m1
M1
M1
M1
J1
J2
Gambar 2.3 Jalur Job shop
Proses job shop mempunyai karakteristik dari pengurutan peralatan
yang sama berdasarkan fungsi. Sebagaimana aliran job dari stasiun kerja
ke stasiun kerja lain, atau dari satu departmen ke department lainnya.
Menurut Fogarty (2003, p97), karakteristik proses job shop adalah
sebagai berikut:
1. Peralatan penanganan material dan peralatan produksi multi-guna
dapat diatur dan dimodifikasi untuk menanganai berbagai produk
yang berbeda.
2. Produk-produk yang berbeda diproses dalam lot-lot atau batch.
3. Pemrosesan orde-order membutuhkan pengendalian dan
perencanaan yang terperinci sehubungan dengan variasi pola-pola
aliran dan pemisahan stasiun-stasiun kerja.
4. Pengendalian membutuhkan informasi tentang job dan shop floor
yang terperinci meliputi urutan proses, prioritas order, waktu yang
dibutuhkan oleh setiap job, dan kapasitas yang dibutuhkan dari
stasiun kerja kritis pada perioda.
5. Beban-beban stasiun kerja secara menyolok; masing-masing
6. Ketersediaan sumber-sumber, meliputi material, personal, dan
peralatan, harus dikoordinasikan dengan perencanaan order.
7. Sejumlah material work in process cenderung meningkat. Hal ini
dalam aliran proses menyebabkan antrian-antrian dan work in
process yang panjang.
8. Menggunakan teknik-teknik penjadwalan tradisional, total waktu
dari awal operasi pertama sampai selesai operasi terahir, relatif
panjang dibandingkan dengan total waktu operasi
9. Para pekerja langsung biasanya memiliki skill yang lebih tinggi
dan lebih terlatih daripada pekerja untuk operasi flow process.
Dua permasalahan utama yang harus diselesaikan dengan
mengguanakan penjadwalan:
1. Penentuan mesin yang akan digunakan (pengalokasian mesin)
untuk menyelesaikan suatu proses produksi.
2. Penjadwalan penentuan waktu pemakaian mesin tersebut
(pengurutan).
2.2.2.3. Pola Kedatangan Pekerjaan (Job)
Pola kedatangan pekerjaan dapat debedakan atas:
1. Pola kedatangan statis, yaitu pola dimana pekerjaan datang secara
2. Pola kedatangan dinamis, yaitu pola kedatangn dimana pekerjaan
datang secara acak atau kedatangan pekerjaan tidak menentu.
2.2.2.4. Sifat Informasi
Dibagi menjadi dua bagian yaiyu:
1. Informasi bersifat deterministic, yaitu suatu informasi yang
didalamnya terdapat kepastian tentang pekerjaan dan mesin,
misalnya mengenai waktu kedatangan pekerjaan dan waktu proses.
2. Informasi bersifat stokastok, yaitu model didalamnya terdapat
kepastian mengenai pekerjaan dan mesin.
Informasi-informasi yang berhubungan dengan karakteristik job,
yaitu saat kedatangan, batas waktu penyelesaian, perbedaan kepentingan
diantara job yang dijadwalkan, banyak operasi dan waktu proses tiap
operasi.disamping itu terdapat pula informasi yang menyangkut
karakteristik mesin seperti jumlah mesin, kapasitas, fleksibilitas serta
efesiensi pengguanaan yang berbeda untuk job yang berbeda.
2.2.3. Input Sistem penjadwalan
Dalam melakukan aktifitas penjadwalan diperlukan input berupa kebutuhan kapasitas dari order-order yang akan dijadwalkan baik itu jenis
serta jumlah sumber daya yang akan digunakan. Informasi ini dapat
Lembar kerja operasi (OPC) yang berisi keterampilan dan
peralatan yang dibutuhkan, serta waktu standar pengerjaan.
Bill of Material (BOM) yang berisi kebutuhan-kebutuhan akan
komponen, sub komponen dan bahan pendukung.
Catatan terbaru mengenai status tenaga kerja, peralatan yang
tersedia akan berpengaruh pada kualitas keputusan
penjadwalan yang diambil.
2.2.4. Output Sistem Penjadwalan
Untuk memastikan bahwa suatu aliran kerja yang lancer melalui
tahapan produksi, maka system penjadwalan harus dibentuk
aktifitas-aktifitas output sebagai berikut:
1. Pembebanan (loading)
Pembebanan melibatkan penyesuaian kebutuhan kapasitas untuk
order-order yang diterima atau diperkirakan dengan kapasitas yang
tersedia. Pembebanan dilakukan dengan menugaskan order-order
pada fasilitas, operator-operator dan peralatan tertentu.
2. Pengurutan (sequencing)
Pengurutan ini merupakan penugasan tentang order-oeder dimana
yang dipprioritaskan untuk diproses dahulu bila suatu fasilitan harus
memproses banyak job.
3. Prioritas job (dispatching)
Prioritas job merupakan prioritas kerja tentang job-job mana yang
4. Pengendalian kinerja penjadwalan, dilakukan dengan:
Meninjau kembali status order-order pada saat melalui system
tertentu.
Mengatur kembali urutan-urutan, misalnya expediting,
order-order yang jauh dibelakang atau mempunyai prioritas utama.
5. Up-dating jadwal, dilakukan sebagai refleksi kondisi operasi yang
terjadi dengan merevisi prioritas-prioritas.
Elemen-elem input-output, prioritas dan ukuran kinerja dari system
penjadwalan akan tampak seperti gambar 3.4 dibawah ini.
Pembatasan:
Ketersediaan kapasitas jangka pendek Keterbatasan persediaan pengaman Kebutuhan perawatan
Pembatasan urutan-urutan
Variabel keputusan: Ukuran workforce harian Tanggal produksi harian Penugasan pesanan Prioritas
input
Kebutuhan kapasitas dari: 1. Pesan yang diterima 2. permintaan jangka pendek
Ketrampilan Peralatan Bahan baku Dll. Jadwal terperinci Pembenahan pesanan Urut-urutan pesanan Expediting pesanan Updating dan kontrol
output
Ukuran kinerja
Minimasi Biaya tetap penjadwalan
= Biaya menganggur karena rendahnya utilitas kapasitas + Biaya karena pengiriman yang terlambat
+ Biaya karena penyesuaian
[image:32.595.97.553.162.647.2]jadwal
2.2.5. Istilah-istilah dalam Penjadwalan
Dalam melakukan sebuah penjadwalan, terdapat beberapa istilah
yang digunakan diantaranya adalah:
Processing time (ti) : waktu yang diiperlukan untuk menyelesaikan
satu operasi termasuk persiapan dan pengaturan proses.
Due date (di) : batas waktu yang perbolehkan untuk
menyelesaikan suatu pekerjaan.
Completion time (ci) : rentang waktu mulai dari awal (t=0) sampai
pekerjaan selesai dikerjakan.
Lateness (Li) : perbedaan antara Completion time dengan Due
date, sehingga bisa positif (+) atau negative (-).
Li = ci– di < 0
Keterngan : positif yaitu saat penyelesaian memenuhi batas =
tardy job.
Tardiness (Ti) : keterlambatan penyelesaian suatu pekerjaan dari
due date.
Slack time (Si) : waktu sisa yang tersedia bagi suatu pekerjaan (
waktu proses – due date).
Si = di - ti
Flow time (Fi) : waktu antara dimana pekerjaan 1 telah siap untuk
dikerjakan sampai pekerjaan selesai.
Waiting time (Wi) : waktu tunggu pekerjaan 1 dari saat pekerjaan siap
Maskepan (Ms) : jangka penyelesaian suatu penjadwalan
(penjumlahan seluruh waktu proses).
Ms = Cmax
Ready time (Ri) : menunjukkan saat pekerjaan ke-I dapat dikerjakan
(siap dijadwalkan).
2.2.6. Tipe Lingkungan Penjadwalan
Lingkungan penjadwalan dalam suatu system produksi dapat
dibedakan beberapa macam yang masing-masing mempunyai
karakteristik yang berbeda.
Tipe-tipe lingkungan penjadwalan dalam system produksi, antara lain:
1. Classic Job Shop
Karakteristik system produksi ini adalah produksi diskrit, alirannya
kompleks, job unik dan part-part tidak multi purpose (kegunaan).
2. Open Job Shop
Sistem produksi ini hamper sama dengan job shop, tetapi
perbedaannya pada job yang berulang dan part yang multi purpose.
Selain sistem produksi ini job-job yang dikerjakan sering kali
mempunyai alternative routing.
3. Batch Shop
Proses produksinya bisa diskrit atau kontinyu, aliran kurang komplek,
banyak job berulang, part multi purpose, pengelompokkan dan
4. Flow Shop
Proses produksinya bisa diskrit atau kontinyu, aliran linear, job
mempunyai kemiringan yang tinggi, pengelompokan dan penentuan
ukuran lot menjadi suatu yang penting.
5. Batch/Flow Shop
Mirip dengan flow shop, dengan perbedaan mempunyai proses batch
yang kontinyu.
6. Manufacturing Cell
Proses produksinya diskrit, mempunyai tipe open shop atau batch
shop yang terotomatis.
7. Assembly Shop
Versi perakitan (Assembly Version) dari open job shop atau batch
shop.
8. Assembly Line
Volume produksinya tinggi dan variasinya rendah.
9. Transfer Line
Sistem ini bercirikan volume produk sangat tinggi dan bervariasi
rendah, fasilitas produksi yang linear dengan operasi yang
terotomatis.
10. Flexible Transfer Line
Versi yang lebih modern dari sel dan lini transfer dimaksudkan untuk
2.3. Aturan Prioritas
Aturan prioritas digunakan untuk memenuhi job mana yang akan
dikerjakan terlebih dahulu ( Baker; 1947) mengklasifikasikan aturan-aturan
prioritas ke dalam 2 tipe, yaitu:
1. Aturan Prioritas Lokal
Pada aturan prioritas ini penugasan didasarkan pada informasi yang
berkaitan dengan job yang berada pada antrian suatu mesin secara
individual. Aturan yang termasuk pada tipe ini adalah:
Short Processing Time (SPT)
Prioritas tertinggi diberikan pada job yang memiliki waktu proses
terpendek. Aturan ini cenderung mengurangi work in process,
mean flow serta mean lateness.
Least Work Remaining (LWRK)
Prioritas tertinggi diberikan pada job yang memiliki sisa waktu
yang terpendek.
Fisrt Come First Served (FCFS)
Most Work Remaining (MWKR)
Prioritas tertinggi diberikan pada job yang memiliki waktu proses
terbanyak.
Most Operation Remaining (MOPNR)
Prioritas tertinggi diberikan pada job yang memiliki waktu proses
2. Aturan Prioritas Global
Aturan prioritas blobal memanfaatkan informasi atau status dari
mesin-mesin yang lainnya. Aturan tergolong tipe ini adalah:
Anticipates Work In Next Queue (AWINQ)
Prioritas tertinggi diberikan kepada operasi yang berbeda pada
stasiun dengan antrian terpendek.
First Of First On (FOFO)
Prioritas tertinggi diberikan kepada operasi yang selesai paling
awal.
2.4. Sistem Pengendalian Situasi Produksi
Sistem pengendalian produksi amat bergantung pada situasi yang
dihadapi. Terdapat berbagai klasifikasi situasi produksi, namun secara umum
memiliki anggapan sebagai berikut:
Tujuan pengklasifikasian adalah untuk memisahkan antara berbagai
situasi kontrol produksi yang berbeda.
Perbedaan dalam sistem control dapat dijelaskan oleh karakteristik
situasi produksi dalam hubungannya dengan lingkungan.
Pemisahan didasarkan pada sifat order pelanggan dan aturan yang
dimainkan dalam proses produksi.
Perbedaan yang mendasar antara situasi-situasi produksi pada perusahaan
adalah saat meneriman order pelanggan relatif terhadapproduksi produk akhir.
menunggu konsumen lebih kecil dari lead time, maka organisasi tersebut harus
memelihara persediaan produk jadi. Jika konsumen mentolelir menunggu bebrapa
hari, organisasi akan lebih memilih strategi merakit untuk dipesan atau
memproduksi untuk dipesan.
Secara umum pembagian klasifikasi situasi produksi menurutt Fogarty
(1991)
adalah sebagai berikut:
a. Make to stok
Mengubah komponen tingkat rendah dan bahan mentah keseluruhan
menjadi produk akhir untuk mengantisipasi order pelanggan.
b. Assemle to order
Mengubah komponen tingkat rendah dan bahan mentah menjadi level
manufaktur tertentu dan membentuk order pelanggan bila menerima
pesanan.
c. Make to order
Sangat sedikit atau sama sekali tidak memiliki material tingkat rendah
hingga pesanan pelanggan diterima.
d. Engineer to order
Sangat sedikit mengetahui tentang apa yang akan diproduksi hingga
pesanan diterima dan membuat spesifikasi engineering-nya.
Dalam situasi produksi terakhir, pesanan pelanggan memainkan peranan
penting dalam sistem produksi dan sistem kontrol produksi: seluruh aktivitas
2.5.
Pengertian Metode Pour
Hamid Davoud Pour (2001) mengembangkan algoritma seruistik baru
dalam menyelesaikan penjadwalan flowshop dengan tujuan meminimalkan
maskepan yaitu berdasarkan pendekatankombinasi. Hal ini dilakukan dengan cara
mengganti setiap job lainya dalam urutan sampai ditemukan kombinasi urutan
yang dapat memenuhi criteria tujuan.
Dalam metode ini diasumsikan bahwa semua job diproses secara terpisah
dan independent untuk setiapmesinya. Berikut adalah notasi yang digunakan:
a. Pij = waktu proses dari job i pada mesin j.
b. Cij = rentang waktu antara saat job i pada mesin j dimulai (t=0) sampai
job itu selesai.
c. Ci = sum of completion time untuk job i pada semua mesin.
d. Fmax = rentang waktu antara saat pekerjaan tersedia atau dapat
dimulai sampai pekerjaan itu selesai (maskepan).
2.6.
Pengertian Java
Java menurut definisi dari Sun adalah mana untuk sekumpulan teknologi
untuk membuat dan menjalankan perangkat lunak pada komputer stand alone
ataupun pada lingkungan jaringan. Java 2 adalah generasi kedua dari java
platform. Kata berdiri di atas sebuah mesin interpreter yang diberi mana Java
Virtual Machine (JVM). JVM inilah yang akan membaca bytecode dalam
berisi bahasa mesin. Oleh karena itu, bahasa java disebut sebagai bahasa
pemrograman yang portable karena dapat dijalankan pada berbagai sistem operasi,
asalkan pada sistem operasi tersebut terdapat JVM.
Agar sebuah program Java dapat dijalankan, maka file dengan ekstensi
.java harus dikompilasi menjadi file bytecode. Untuk menjalankan bytecode
tersebut dibutuhkan JRE (Java Runtime Environment) yang memungkinkan
pemakai untuk menjalankan program Java, hanya menjalankan, tidak untuk
membuat kode baru lagi. JRE berisi JVM dan library Java yang digunakan.
Java memiliki beberapa versi library atau teknologi yang disebut juga
sebagai edisi dari bahasa pemrograman Java. Tiga edisi utama dari library tersebut
adalah Micro, Standard, dan Enterprise. J2ME (Java2 Micro Edition) merupakan
edisi library yang dirancang untuk digunakan pada device tertententu seperti
pagers dan mobile phone. J2SE (Java2 Standard Edition) merupakan edisi library
yang dirancang untuk membuat aplikasi desktop atau applet pada web browser.
J2EE (Java2 Enterprise Edition) merupakan edisi librari Java yang dirancang
untuk membuat sebuah aplikasi enterprise yang memerlukan antarmuka dengan
sumber data (data source) atau dapat pula dikatakan bahwa J2EE adalah kelompok
26
BAB III
ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Sistem
Sistem yang akan dibangun adalah program penjadwalan mesin mengunakan metode flow
shop scheduling mengunakan algoritma pour, dengan menghitung tingakat efektifas kerja pada
tiap mesin. Sehingga dapat menghasilkan urutan pengerjaan job dengan waktu yang paling
singkat dan efektif.
3.1.1. Kebutuhan Hardware
a) Intel(R) Core(TM) i3 CPU M 330 @ 2.31GHz (4 CPUs), ~2.1GHz
b) RAM 3072Mb
c) Harddisk 80Gb
d) Mouse, Keyboard, Monitor
3.1.2. Kebutuhan Software
a) Windows XP/ 7 / 8
b) Neatbeans IDE 7.2.1
3.2. Perancangan Sistem
Perancangan program menggunakan metode pour pada NeatBeans, pada saat program
selesai berjalan maka akan tertampil seluruh hasil perhitungan pengerjaan tiap mesin dan urutan
permasalahan pada penjadwalan mesin. Data yang ditampilkan dari hasil pengerjaan program
diasumsikan tidak ada mesin yang rusak saat digunakan.
Langkah-langkah pengerjaan Algoritma Heuristik Pour:
1. Memilih job 1 sebagai urutan pertama sementara dalam urutan pengerjaan sehingga
waktu proses job 1 pada semua mesin dianggap 0.
2. Menempatkan job-job lain (sebagai job yang sudah dipilih sebagai urutan pertama,
yaitu job 1) pada urutan berikutnya.
3. Memilih wajtu proses terkecil untuk masing-masing mesin.
4. Melakukan penambahan waktu proses (completion time) pada setiap Pij dengan
aturan increasing processing time, yaitu dengan menambahkan waktu proses secara
kumulatif dari yang terkecil menuju yang terbesar pada tiap Pij.
5. Menghitung sum of completion time (∑Ci) untuk setiap job yang ada.
6. Mengurutkan ∑Ci dengan aturan increasing order (yaitu pengurutan yang mulai dari
yang terkecil hingga yang terbesar) untuk diletakkan pada urutan setelah job yang
sudah dipilih untuk urutan pertama sementara.
7. Setelah didapatkan urutan sementara dimana job 1 sebagai urutan pertama, maka
menghitung Fmax-nya dari urutan sementara tersebut.
8. Melakukan ulang langkah 1-7 untuk setiap job yang ada yang akan ditempatkan
sebagai urutan pertama dari urutan pengerjaan job sampai didapatkan nilai Fmax
paling minimal.
9. Melakukan ulang langkah 1-8 untuk job yang akan menepati posisi berikutknya yaiut
posisi kedua, ketigan dan seterusnya setelah terpilih job untuk posisi pertama dengan
3.3. Perancangan Perangkat Lunak
Pada perancangan perangkat lunak ini penulis membuat program untuk menghitung
waktu efektif penjadwalan produksi. Program ini menggunakan bahasa java. Program ini
berjalan dengan input berupa jumlah job, jumlah mesin, jumlah waktu pengerjaan tiap mesin,
waktu pemrosesan pada setiap mesin.
Gambar 3.2 Diagram Alur Pengolahan Data
Data waktu proses tiap jobs pada tiap mesin
Pilih job 1 sebagai urutan pertama
Pilih waktu proses terkecil tiap mesin
Lakukan penambahan proses pada tiap Pij dengan aturan increasing
processing time
Hitung nilai Fmax
Ulangi langkah pengerjaan sampai tiap job menampati urutan pertama
Dipilih urutan pengerjaan dengan nilai Fmax paling minimal Hitung ∑Ci
Urutkan ∑Ci tiap job dengan aturan increasing order
Urutan pengerjaan sementara
Jadwal urutan pengerjaan job pada mesin
selesai
3.4. Kasus Pengerjaan Algoritma Pour
Contoh kasus Algoritma Pour
M1 M2 M3 M4 M5
J1 5 9 8 10 1
J2 7 3 10 1 8
J3 9 4 5 8 6
J4 4 8 7 7 2
I. Menentukan Urutan Pertama
A. Job 1 (J1) ditempatkan sebagai urutan pertama
1. Job 1 dipilih untuk menduduki urutan pertama sehingga waktu proses job 1 pada
semua mesin dianggap 0. Tempatkan job selain job 1 sebagai urutan pertama pada
urutan berikutnya.
M1 M2 M3 M4 M5
J1 5 9 8 10 1
J2 7 3 10 1 8
J3 9 4 5 8 6
J4 4 8 7 7 2
2. Memilih waktu proses terkecil untuk masing-masing mesin, yaitu :
M1 = 4 M2 = 3 M3 = 5 M4 = 1 M5 = 2
3. Lakukan penambahan waktu proses (completion time/makespan) pada setiap Pij
4. Hitunglah sum of completion time (∑Ci) untuk setiap job yang ada.
5. Mengurutkan ∑Ci dengan aturan increasing order dimana job 1 sebagai posisi
pertama dan diperoleh urutan sebagai berikut :
J1 – J4 – J2 – J3.
6. Hitung nilai Fmax
M1 M2 M3 M4 M5
J1 5 14 21 31 32
J4 9 22 29 38 34
J2 16 25 39 40 42
J3 25 30 44 52 58
Dari tabel diatas, diperoleh nilai Fmax = 58 menit
B. Job 2 (J2) sebagai urutan pertama
1. Job 2 dipilih untuk menduduki urutan pertama sehingga waktu proses job 2 pada
semua mesin dianggap 0. Tempatkan job selain job 2 sebagai urutan pertama pada
urutan berikutnya.
M1 M2 M3 M4 M5 ∑Ci
J1 - - - -
J2 11 3 22 1 8 49
J3 20 7 5 16 6 54
M1 M2 M3 M4 M5
J2 - - - - -
J1 5 9 8 10 1
J3 9 4 5 8 6
J4 4 8 7 7 2
2. Memilih waktu proses terkecil untuk masing-masing mesin, yaitu :
M1 = 4 M2 = 4 M3 = 5 M4 = 7 M5 = 1
3. Lakukan penambahan waktu proses (completion time/makespan) pada setiap Pij
dengan aturan increassing processing time.
M1 M2 M3 M4 M5
J2 - - - - -
J1 9 21 20 25 1
J3 18 4 5 15 6
J4 4 12 12 7 3
4. Hitunglah sum of completion time (∑Ci) untuk setiap job yang ada.
M1 M2 M3 M4 M5 ∑Ci
J2 - - - -
J1 9 21 20 25 1 69
J3 18 4 5 15 6 52
5. Mengurutkan ∑Ci dengan aturan increassing order dimana job 2 sebagai posisi
pertama dan diperoleh urutan sebagai berikut :
J2 – J4 – J3 – J1
6. Hitung nilai Fmax
M1 M2 M3 M4 M5
J2 7 10 20 21 29
J1 11 19 29 35 40
J3 20 24 34 44 50
J4 25 34 41 54 55
Dari tabel diatas, diperoleh nilai Fmax = 56 menit
C. Job 3 (J3) dipilih sebagai urutan pertama
1. Job 3 dipilih untuk menduduki urutan pertama sehingga waktu proses job 3 pada
semua mesin dianggap 0. Tempatkan job selain job 3 sebagai urutan pertama pada
urutan berikutnya.
M1 M2 M3 M4 M5
J3 - - - - -
J1 5 9 8 10 1
J2 7 3 10 1 8
2. Memilih waktu proses terkecil untuk masing – masing mesin, yaitu :
M1 = 4 M2 = 3 M3 = 8 M4 = 1 M5 = 1
3. Lakukan penambahan waktu proses (completion time/makespan) pada setiap Pij
dengan aturan increassing processing time.
M1 M2 M3 M4 M5
J3 - - - - -
J1 9 20 7 18 1
J2 16 3 25 1 11
J3 4 11 15 8 3
4. Hitunglah sum of completion time (∑Ci) untuk setiap job yang ada.
M1 M2 M3 M4 M5 ∑Ci
J3 - - - - 0
J1 9 20 7 18 1 55
J2 16 3 25 1 11 56
J3 4 11 15 8 3 41
5. Mengurutkan ∑Ci dengan aturan increassing order dimana job 3 sebagai posisi
pertama dan diperoleh urutan sebagai berikut :
6. Hitung nilai Fmax
M1 M2 M3 M4 M5
J3 9 14 19 27 33
J1 11 22 30 37 39
J2 16 31 38 48 49
J4 25 36 43 56 62
Dari tabel diatas, diperoleh nilai Fmax = 62 menit
D. Job 4 (J4) ditempatkan sebagai urutan pertama
1. Job 4 dipilih untuk menduduki urutan pertama sehingga waktu proses job 4 pada
semua mesin dianggap 0. Tempatkan job selain job 4 sebagai urutan pertama pada
urutan berikutnya.
M1 M2 M3 M4 M5
J4 - - - - -
J1 5 9 7 10 1
J2 7 3 10 1 8
J3 9 5 5 8 6
2. Memilih waktu proses terkecil untuk masing – masin mesin, yaitu :
M1 = 5 M2 = 3 M3 = 5 M4 = 1 M5 = 1
3. Lakukan penambahan waktu proses (completion time/makespan) pada setiap Pij
M1 M2 M3 M4 M5
J4 - - - - -
J1 5 17 12 19 1
J2 12 3 22 1 15
J3 21 8 5 9 7
4. Hitunglah sum of completion time (∑Ci) untuk setiap job yang ada.
M1 M2 M3 M4 M5 ∑Ci
J4 - - - -
J1 5 17 12 19 1 54
J2 12 3 22 1 15 53
J3 21 8 5 9 7 50
5. Mengurutkan ∑Ci dengan aturan increasing order dimana job 4 sebagai posisi
pertama dan diperoleh urutan sebagai berikut :
J4 – J3 – J1 – J2.
6. Hitung nilai Fmax
M1 M2 M3 M4 M5
J4 4 12 20 27 29
J3 13 18 25 35 38
J1 18 27 34 45 46
Dari tabel diatas, diperoleh nilai Fmax = 54 menit
Berdasarkan perhitungan langkah I diatas, diperoleh urutan pertama adalah job 4 (J4)
dengan nilai makespan terkecil yaitu Fmax = 54 menit.
II. Menentukan Urutan Kedua
A.Job 1 (J1) ditempatkan sebagai urutan kedua
1. Job 1 dipilih untuk menduduki urutan kedua sehingga waktu proses job 1 pada semua
mesin dianggap 0. Tempatkan job selain job 1 pada urutan berikutnya.
M1 M2 M3 M4 M5
J1 - - - - -
J2 7 3 10 1 8
J3 9 4 5 8 6
2. Memilih waktu proses terkecil untuk masing – masing mesin, yaitu :
M1 = 9 M2 = 3 M3 = 5 M4 = 1 M5 = 6
3. Lakukan penambahan waktu proses (completion time/makespan) pada setiap Pij
dengan aturan increasing processing time.
M1 M2 M3 M4 M5
J1 - - - - -
J2 7 3 15 1 14
4. Hitunglah sum of completion time (∑Ci) untuk setiap job yang ada.
M1 M2 M3 M4 M5 ∑Ci
J1 - - - -
J2 7 3 15 1 14 40
J3 16 7 5 9 6 43
5. Mengurutkan ∑Ci dengan aturan increasing order dimana job 1 sebagai posisi kedua
dan diperoleh urutan sebagai berikut :
J1 – J2 – J3
6. Hitung nilai Fmax
M1 M2 M3 M4 M5
J1 5 14 21 31 32
J2 12 21 22 32 40
J3 21 26 31 40 46
Dari tabel diatas, diperoleh nilai Fmax = 46 menit
B.Job 2 (J2) sebagai urutan kedua
1. Job 2 dipilih untuk menduduki urutan kedua sehingga waktu proses job 2 pada semua
mesin dianggap 0. Tempatkan job selain job 2 pada urutan berikutnya.
M1 M2 M3 M4 M5
J2 - - - - -
J1 5 9 8 10 1
2. Memilih waktu proses terkecil untuk masing – masing mesin, yaitu :
M1 = 5 M2 = 4 M3 = 5 M4 = 8 M5 = 1
3. Lakukan penambahan waktu proses (completion time/makespan) pada setiap Pij
dengan aturan increasing processing time.
M1 M2 M3 M4 M5
J2 - - - - -
J1 5 13 13 18 1
J3 14 4 5 8 7
4. Hitunglah sum of completion time (∑Ci) untuk setiap job yang ada.
M1 M2 M3 M4 M5 ∑Ci
J2 - - - -
J1 5 13 13 18 1 49
J3 14 4 5 8 7 38
5. Mengurutkan ∑Ci dengan aturan increasing order dimana job 2 sebagai posisi kedua
dan diperoleh urutan sebagai berikut :
6. Hitung nilai Fmax
M1 M2 M3 M4 M5
J2 7 10 20 21 29
J3 16 21 26 34 40
J1 21 30 37 47 48
Dari tabel diatas, diperoleh nilai Fmax = 48 menit
C. Job 3 (J3) dipilih sebagai urutan kedua
1. Job 3dipilih untuk menduduki urutan kedua sehingga waktu proses job 3 pada semua
mesin dianggap 0. Tempatkan job selain job 3 pada urutan berikutnya.
M1 M2 M3 M4 M5
J3 - - - - -
J1 5 9 8 10 1
J2 7 3 10 1 8
2. Memilih waktu proses terkecil untuk masing – masing mesin, yaitu :
M1 = 5 M2 = 3 M3 = 8 M4 = 1 M5 = 1
3. Lakukan penambahan waktu proses (completion time/makespan) pada setiap Pij
dengan aturan increasing processing time.
M1 M2 M3 M4 M5
J3 - - - - -
J1 5 12 8 11 1
4. Hitunglah sum of completion time (∑Ci) untuk setiap job yang ada.
M1 M2 M3 M4 M5 ∑Ci
J3 - - - -
J1 5 12 8 11 1 36
J2 12 3 18 1 9 42
5. Mengurutkan ∑Ci dengan aturan increasing order dimana job 3 sebagai posisi
pertama dan diperoleh urutan sebagai berikut :
J3 – J1 – J2
6. Hitung nilai Fmax
M1 M2 M3 M4 M5
J3 9 14 19 27 33
J1 14 23 30 40 41
J2 21 26 40 41 49
Dari tabel diatas, diperoleh nilai Fmax = 49 menit
Berdasarkan perhitungan untuk menentukan urutan kedua, maka diperoleh job 3 (J3)
sebagai urutan kedua dalam pembuatan produk tersebut dengan nilai Fmax terkecil yaitu 49
menit.
III. Menentukan urutan ketiga dan keempat
Pada langkah terahir cukup dilakukan perhitungan Fmax saja karena hanya
membandingkan 2 Job saja.
M1 M2 M3 M4 M5
J1 5 14 21 31 32
J2 12 17 31 32 40
Dari table diatas, diperoleh nilai Fmax = 40 menit
Alternatif II: Job 2 sebagai urutan ketiga dan job 1 sebagai urutan keempat.
M1 M2 M3 M4 M5
J2 7 10 20 21 29
J1 12 21 28 38 39
Dari table diatas, diperoleh nilai Fmax = 39 menit
Berdeasarkan perhitungan diatas, maka diperoleh Job 1 sebagai urutan ketiga dengan
nilai Fmax terkecil yaitu menit, sedangkan untuk job 2 dipilih sebagai urutan terakhir.
Maka, urutan pengerjaan yang optimum dengan menggunakan algoritma Pour adalah
J4-J3-J1-J2
Dengan besar nilai Fmax adalah 53 menit.
M1 M2 M3 M4 M5
J4 4 12 19 26 28
J3 13 17 24 34 40
J1 20 23 34 35 48
43
BAB IV
IMPLEMENTASI SISTEM DAN ANALISIS SISTEM
Class Penjadwalan
package penjadwalan;
public class Penjadwalan {
public static void main(String[] args) {
int rows = 4;
int cols = 5;
int fmax1 =0;
int[][] matrix = {
{ 5, 9, 7, 10, 1 },
{ 8, 3, 12, 1, 8 },
{ 9, 4, 5, 8, 6 },
{ 4, 8, 8, 7, 2 }
};
penghitungan1 matrik= new penghitungan1(matrix,rows,cols,fmax1);
matrik.matrix1();
}
}
Class penjadwalan digunakan sebagai main class yang berisi nilai job pada
setiap mesin, dan bertujuan untuk menghubungkan nilai setiap job dengan class
Class perhitungan1
Pada class perhitungan1 adalah sub class dari main class penjadwalan, di class
perhitungan1 terdapat void job1m1, job1m2, job1m3, job1m4, job1m5, matrixCi1,
job2m1, job2m2, job2m3, job2m4, job2m5, matrixCi2, job3m1, job3m2, job3m3,
job3m4, job3m5, matrixCi3, job4m1, job4m2, job4m3, job4m4, job4m5, matrixCi4,
fmax, job10m1, job10m2, job10m3, job10m4, job10m5, matrixCi5, job20m1,
job20m2, job20m3, job20m4, job20m5, matrixCi6, job30m1, job30m2, job30m3,
job30m4, job30m5, matrixCi7, fmax_1, fmax_2, fmax_3, perbandingan_2,
perbandingan_akhir, dan jadwal.
Void job1m1, job1m2, job1m3, job1m4, job1m5, job2m1, job2m2, job2m3,
job2m4, job2m5, job3m1, job3m2, job3m3, job3m4, job3m5, job4m1, job4m2,
job4m3, job4m4, job4m5, job10m1, job10m2, job10m3, job10m4, job10m5,
job20m1, job20m2, job20m3, job20m4, job20m5, job30m1, job30m2, job30m3,
job30m4, job30m5.
memiliki fungsi yang sama, yaitu:
a) Membuat semua nilai job yang telah ditentukan pada mesin 1 sampai
mesin 5 menjadi 0.
int[][] matrix0= {{0,0,0,0,0},
{matrix[1][0],matrix[1][1],matrix[1][2],matrix[1][3],matrix[1][4]},
{matrix[2][0],matrix[2][1],matrix[2][2],matrix[2][3],matrix[2][4]},
{matrix[3][0],matrix[3][1],matrix[3][2],matrix[3][3],matrix[3][4]}
b) Mencari nilai terkecil dari job yang ada, menjumlahkan nilai job dari
yang terkecil sampai yang terbesar pada setiap mesin yang disebut
sebagai nilai increasing dan mengembalikan posisi awal tiap job yang
telah dijumlahkan dari terkecil sampai terbesar pada setiap mesin.
for (i = 0; i < rows; i++) {
if (array1[i] < min) {
min = array1[i];
baris1 = i;
}
int temp;
for (i = 1; i < array1.length; i++) {
for (int j = array1.length - 1; j >= i; j--) {
if (array1[j] < array1[j - 1]) {
temp = array1[j];
array1[j] = array1[j - 1];
array1[j - 1] = temp; }}
int []a={b,b,b,b};
for (i = 0; i < array1.length; i++) {
if (+array1[i] > +min) {
b = (+array1[i]) + (+b);
}
a[i]=b;
}
int x;
for(i =0;i<=3;i++){
x=matrix0[i][0];
if(x<arrayt[3]){
if(x<arrayt[2]){
if(x<arrayt[1]){
d1=a[0];
}
else {
d1=a[1];
}
}
else{
d1=a[2];
}
}
else{
d1=a[3];
}
e1[i]=d1;
}
System.out.println("nilai incressing "+e1[0]+" "+e1[1]+" "+e1[2]+" "+e1[3]);
Void matrixCi1, matrixCi3, matrixCi2, matrixCi4, matrixCi5, matrixCi6,
matrixCi7 memiliki fungsi yang sama yaitu:
a) Menjumlahkan nilai increasing dari setiab job yang telah dihitung
pada void job sebelumnya
int matrtrixci11 = e1[1]+e2[1]+e3[1]+e4[1]+e5[1];
int matrtrixci12 = e1[2]+e2[2]+e3[2]+e4[2]+e5[2];
int matrtrixci13 = e1[3]+e2[3]+e3[3]+e4[3]+e5[3];
System.out.println("hasil penjumalahan Ci0 "+matrtrixci10);
System.out.println("hasil penjumalahan Ci1 "+matrtrixci11);
System.out.println("hasil penjumalahan Ci2 "+matrtrixci12);
System.out.println("hasil penjumalahan Ci3 "+matrtrixci13);
b) Menghitung nilai minimum dari dari nilai increasing (Ci)
int[] array1 = {matrtrixci10, matrtrixci11, matrtrixci12, matrtrixci13};
int min = 100;
int baris1;
int [][]matrix0 = matrix;
int matha1[] = { matrix0[0][0], matrix0[0][1],
matrix0[0][2],matrix0[0][3],matrix0[0][4] };
int matha2[] = {matrix0[1][0], matrix0[1][1], matrix0[1][2],matrix0[1][3],
matrix0[1][4] };
int matha3[] ={ matrix0[2][0], matrix0[2][1], matrix0[2][2],matrix0[2][3],
matrix0[2][4] };
int matha4[] = {matrix0[3][0], matrix0[3][1], matrix0[3][2],matrix0[3][3],
matrix0[3][4] };
for (i = 0; i < rows; i++) {
if (array1[i] < min) {
min = array1[i];
baris1 = i;
}
for (i = 1; i < array1.length; i++) {
for (int j = array1.length - 1; j >= i; j--) {
if (array1[j] < array1[j - 1]) {
temp = array1[j];
array1[j] = array1[j - 1];
array1[j - 1] = temp;
}
}
}
System.out.println();
c) Menampilkan urutan job dari nilai Ci terkecil hingga terbesar yang
diberi nama sum of completion time.
for(i =0;i<4;i++){
if(array1[i]!=matrtrixci10){
if(array1[i]!=matrtrixci11){
if(array1[i]!=matrtrixci12){
e1[i]=4;
}
else{
e1[i]=3;
}
}
else{
e1[i]=2;
}
else{
e1[i]=1;
}
System.out.println("urutan sum of completion time job"+e1[i]);
}
d) Menghitung nilai Fmax dari job yang telah ditentukan urutanya
int [][]matatot={{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
};
for(i =0;i<4;i++){
if(e1[i]!=3){
if(e1[i]!=2){
if(e1[i]!=1){
matatot[i][0] =matha4[0];
matatot[i][1] =matha4[1];
matatot[i][2] =matha4[2];
matatot[i][3] =matha4[3];
matatot[i][4] =matha4[4];
}
else{
matatot[i][0] =matha1[0];
matatot[i][1] =matha1[1];
matatot[i][3] =matha1[3];
matatot[i][4] =matha1[4];
}
}
else{
matatot[i][0] =matha2[0];
matatot[i][1] =matha2[1];
matatot[i][2] =matha2[2];
matatot[i][3] =matha2[3];
matatot[i][4] =matha2[4];
}
}
else{
matatot[i][0] =matha3[0];
matatot[i][1] =matha3[1];
matatot[i][2] =matha3[2];
matatot[i][3] =matha3[3];
matatot[i][4] =matha3[4];
}
}
System.out.println();
System.out.println();
int k,m=0,q=0 ;
int [][] matrikFmax={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};
System.out.print("matrixfmax");
System.out.println();
for (i=0;i<4;i++){
m=matatot[i][0]+m;
for(int j=0;j<5;j++){
k=matatot[i][j]+k;
matrikFmax[i][j]=k;
for(int y=1;y<4;y++){
for(int z=1;z<5;z++){
if(matrikFmax[y][z-1]<matrikFmax[y-1][z]){
matrikFmax[y][z]=matatot[y][z]+matrikFmax[y-1][z];
} }}
k=matrikFmax[i][j];
System.out.print(matrikFmax[i][j]+" ");
}
System.out.println();
}
fmax1=matrikFmax[3][4];
System.out.println("nilai fmax job1=0 adalah "+fmax1);
System.out.println();
}
}
Void fmax, fmax_1, fmax_2, fmax_3 dan perbandinga_2 memiliki fungsi yang sama
sebagai berikut:
a) Menapilkan dan menghitung nilai Fmax terkecil dari job yang telah
int[] arraymax1 = {fmax1,fmax2, fmax3, fmax4 };
int min=100;
for (i = 0; i < arraymax1.length ; i++) {
if (arraymax1[i] < min) {
min = arraymax1[i];
}
int temp;
for (i = 1; i < arraymax1.length; i++) {
for (int j = arraymax1.length - 1; j >= i; j--) {
if (arraymax1[j] < arraymax1[j - 1]) {
temp = arraymax1[j];
arraymax1[j] = arraymax1[j - 1];
arraymax1[j - 1] = temp;
} } }
}
b) Menampilkan job baru dari job yang telah dihilangkan karena
memiliki nilai Fmax terkecil.
System.out.println( " fmax terkecil adalah "+arraymax1[0]);
fmax_a=arraymax1[0];
int [] matri1=
{matrix[0][0],matrix[0][1],matrix[0][2],matrix[0][3],matrix[0][4]};
int [] matri2=
{matrix[1][0],matrix[1][1],matrix[1][2],matrix[1][3],matrix[1][4]};
int [] matri3=
int [] matri4=
{matrix[3][0],matrix[3][1],matrix[3][2],matrix[3][3],matrix[3][4]};
for (i=0;i<3;i++){
for (int j= 0; j < 5; j++) {
if (arraymax1[0]!=fmax1){
if (arraymax1[0]!=fmax2){
if(arraymax1[0]!=fmax3){
hasil[0][0]=matri1[0];hasil[0][1]=matri1[1];hasil[0][2]=matri1[2];hasil[0][3]=matri1[
3];hasil[0][4]=matri1[4];
hasil[1][0]=matri2[0];hasil[1][1]=matri2[1];hasil[1][2]=matri2[2];hasil[1][3]=matri2[
3];hasil[1][4]=matri2[4];
hasil[2][0]=matri3[0];hasil[2][1]=matri3[1];hasil[2][2]=matri3[2];hasil[2][3]=matri3[
3];hasil[2][4]=matri3[4]; }
else{
hasil[0][0]=matri1[0];hasil[0][1]=matri1[1];hasil[0][2]=matri1[2];hasil[0][3]=matri1[
3];hasil[0][4]=matri1[4];
hasil[1][0]=matri2[0];hasil[1][1]=matri2[1];hasil[1][2]=matri2[2];hasil[1][3]=matri2[
3];hasil[1][4]=matri2[4];
hasil[3][0]=matri4[0];hasil[3][1]=matri4[1];hasil[3][2]=matri4[2];hasil[3][3]=matri4[
3];hasil[3][4]=matri4[4];
}}
else{
hasil[0][0]=matri1[0];hasil[0][1]=matri1[1];hasil[0][2]=matri1[2];hasil[0][3]=matri1[
3];hasil[0][4]=matri1[4];
hasil[2][0]=matri3[0];hasil[2][1]=matri3[1];hasil[2][2]=matri3[2];hasil[2][3]=matri3[
3];hasil[2][4]=matri3[4];
hasil[3][0]=matri4[0];hasil[3][1]=matri4[1];hasil[3][2]=matri4[2];hasil[3][3]=matri4[
}
}
else{
hasil[1][0]=matri2[0];hasil[1][1]=matri2[1];hasil[1][2]=matri2[2];hasil[1][3]=matri2[
3];hasil[1][4]=matri2[4];
hasil[2][0]=matri3[0];hasil[2][1]=matri3[1];hasil[2][2]=matri3[2];hasil[2][3]=matri3[
3];hasil[2][4]=matri3[4];
hasil[3][0]=matri4[0];hasil[3][1]=matri4[1];hasil[3][2]=matri4[2];hasil[3][3]=matri4[
3];hasil[3][4]=matri4[4];
}
}
}
System.out.println();
System.out.println("urutan job baru ");
for (i = 0; i < hasil.length; i++) {
for (int j= 0; j < 5; j++) {
System.out.print(hasil[i][j] + " ");
}
System.out.println();
}}
Void perbandingan_akhir memiliki fungsi sebagai berikut:
a) Menampilkan fmax dari ke-empat job yang telah dihitung dalam
System.out.println(fmax_a+" "+fmax_b+" "+fmax_c+" "+fmax_d);
b) Mencari urutan job berdasarkan urutan fmax.
int []array1={fmax_a,fmax_b,fmax_c,fmax_d};
int array2[]={fmax1,fmax2,fmax3,fmax4};
int array3[]={fmax5,fmax6,fmax7};
for(int z= 0;z<4;z++){
if(array1[z]!= fmax_a){
if(array1[z]!= fmax_b){
if(array1[z]!= fmax_c){
for(int j=0;j<5;j++){
akhir[z][j]=hasil1[1][j];
}}
else{
for(int j=0;j<5;j++){
akhir[z][j]=hasil1[0][j];
} } }
else{
for (i=0;i<3;i++){
for(int j=0;j<5;j++){
if(fmax_b!=array3[i]){ }
else{
akhir[z][j]=hasil[i][j];
}}}}}
else{
for (i=0;i<4;i++){
for(int j=0;j<5;j++){
else{
akhir[z][j]=matrix[i][j];
}}}}}
System.out.println();
c) Menampilkan urutan job berdasarkan urutan fmax.
for (i = 0; i < akhir.length; i++) {
for (int j= 0; j < 5; j++) {
System.out.print(akhir[i][j] + " ");}
System.out.println(); }
System.out.println(); }
Void jadwal memiliki fungsi:
a) Memanggil hasil pengurutan job berdasarkan Fmax
b) Menghitung waktu berdasarkan hasil perhitungan yang telah dilakukan
pada langkah sebelumnya.
c) Menampilkan waktu pengerjaan pada setiap mesin yang paling effisien
berdasarkan urutan job.
void jadwal(){
for (i = 0; i < akhir.length; i++) {
System.out.print(akhir[i][j] + " ");
}