IMPLEMENTASI SISTEM MULTIAGENT DENGAN
CASE-BASED REASONING DAN REINFORCEMENT LEARNING
UNTUK PENYELESAIAN JOB SHOP SCHEDULING PROBLEM
Oleh :Entot Suhartono STIE Bank BPD Jateng
Abstrak
Job shop scheduling adalah model permasalahan penjadwalan
pekerjaan manufaktur yang bertujuan memperoleh total waktu pengerjaan (makespan) minimum. Permasalahan ini bersifat
NP-hard sehingga untuk tingkat kesulitan yang semakin tinggi, sangat
sulit untuk menemukan solusi optimal dari sebuah kasus job shop
scheduling. Solusi dari permasalahan job shop scheduling ini dapat
ditemukan dengan menggunakan sebuah penjadwal (scheduler) dengan kemampuan komputasi tertentu. Perkembangan sistem komputasi dewasa ini bergerak ke arah komputasi terdistribusi sehingga sistem penjadwalan berkembang mengikutinya. Dalam penelitian ini, penulis membangun sistem multiagent untuk mengimplementasikan penjadwalan terdistribusi pada permasalahan
job shop scheduling. Sistem multiagent ini memiliki kemampuan
penalaran dan pembelajaran untuk dapat menentukan solusi terbaik untuk permasalahan yang berbeda secara otomatis. Sistem ini menggunakan case-based reasoning sebagai penalarannya dan
reinforcement learning sebagai pembelajarannya.
Setelah membangun dan menguji sistem multiagent dengan case-based reasoning dan reinforcement learning ini, penulis menyimpulkan bahwa sistem multiagent dapat menyelesaikan permasalahan job shop scheduling dan dapat belajar untuk menghasilkan solusi yang optimal untuk setiap kasus.
Keyword : Multiagent, Case-Based Reasoning, Reinforcement
Learning, Jobshop Scheduling
Pendahuluan
Job shop scheduling adalah model permasalahan yang bertujuan
menghasilkan penjadwalan penggunaan sejumlah mesin dengan kemampuan proses tertentu untuk menyelesaikan pekerjaan yang terdiri dari sejumlah operasi (dengan waktu pemrosesan yang bervariasi untuk tiap operasi). Job-shop
Scheduling Problem (JSP) merupakan suatu permasalahan untuk menentukan
urutan operasi yang dilakukan dalam mesin yang ada dengan tujuan meminimumkan waktu proses total yang dibutuhkan. Tujuan utama dari algoritma yang digunakan pada jobshop scheduling ini adalah menghasilkan
penjadwalan kerja yang meminimasi waktu yang dibutuhkan untuk menyelesaikan semua job yang ada dengan memanfaatkan sumber daya (mesin) yang tersedia (Peter Brucker, 2006).
Solusi alternatif untuk meningkatkan kemampuan sistem pemrosesan tanpa perlu sering melakukan penggantian adalah dengan menggabungkan lebih dari satu unit pemrosesan. Konsep ini umumnya dikenal dengan sistem terdistribusi (distributed system). Jadi peningkatan kemampuan pemrosesan dilakukan dengan menambah jumlah unit pemrosesan dan menghubungkan unit-unit pemrosesan yang ada sebagai subsistem pemrosesan. Kelebihan utama dari solusi ini adalah skalabilitas dan adaptabilitas sistem yang tinggi. Hal ini disebabkan pendistribusian beban penjadwalan pada tiap-tiap mesin yang ada. Karena kelebihannya ini, sistem ini banyak diimplementasikan dan terus dikembangkan. Solusi yang diusulkan untuk membangun penjadwal (scheduler) untuk jobshop
scheduling ini adalah sistem multiagent. Sistem multiagent adalah penerapan
konsep sistem terdistribusi dengan agen-agen sebagai subsistemnya (Gerhard Weiss, 1999). Agar memperoleh perilaku sistem yang optimal, tiap agen menyimpan pengalaman yang diperolehnya, melakukan penalaran untuk menggunakan pengalaman yang disimpannya dan melakukan pembelajaran untuk mencari jadwal pemrosesan optimal bagi dirinya sendiri dengan juga mempertimbangkan mengenai pengaruhnya pada sistem secara keseluruhan.
Rumusan masalah yang dibahas dalam penelitian ini adalah bagaimana menangani permasalahan jobshop scheduling dalam lingkungan terdistribusi dengan memanfaatkan sistem multiagen yang dilengkapi kemampuan penalaran dengan case-based reasoning dan kemampuan belajar dengan reinforcement
learning. Tujuan dari pembahasan yang dilakukan di dalam penelitian ini adalah
membangun sistem multiagen yang dapat melakukan penalaran (menggunakan
case-based reasoning) dan pembelajaran (menggunakan reinforcement learning)
untuk menghasilkan perilaku penjadwalan optimal dalam model permasalahan
job shop scheduling.
Tahapan yang dilalui dalam pelaksanaan penelitian ini adalah (1) memahami konsep jobshop scheduling; (2) memahami konsep sistem multiagent,
case-based reasoning dan reinforcement learning; (3) analisis dan implementasi
sistem multiagent dengan melakukan eksplorasi pada framework yang dibutuhkan, serta membuat aplikasi/software yang memodelkan implementasi sistem multiagent pada model masalah job shop scheduling; (4) evaluasi hasil implementasi, yaitu melakukan evaluasi dengan membandingkan hasil penjadwalan dari solusi yang tidak memanfaatkan penalaran dan pembelajaran. Landasan Teori
Jobshop
Definisi formal job shop scheduling (JS)adalah sebagai berikut:
Job set J = { j1, j2, …, jn}
Operations O = { o1, o2, …, on} O1 = { o11, o12, …, o1m}
Tiap operation punya processing time { 11, 12, …, 1m}
Untuk tiap O terdefinisi A, yaitu relasi biner urutan antar operasi. Jika (v, w) A maka v harus dikerjakan sebelum W.
Tujuan utama dari algoritma yang digunakan pada JS ini adalah menghasilkan jadwal (schedule) yang meminimasi waktu (makespan) yang dibutuhkan untuk menyelesaikan semua job yang ada dengan memanfaatkan machine yang tersedia (Peter Brucker, 2006).
Sistem Multi Agen
Caglayan (1997) mendefinisikan agent adalah suatu entitas perangkat lunak komputer yang memungkinkan user (pengguna) untuk mendelegasikan tugas kepadanya secara mandiri (autonomously). Kemudian Brenner (1998) menambahkan bahwa agent harus bisa berjalan dalam kerangka lingkungan jaringan. Dalam perkembangan aplikasi dan penelitian tentang agent, bagaimanapun juga dalam suatu komunitas sebuah sistem tidak dapat dihindari akan dibutuhkannya lebih dari satu agent, seiring dengan semakin kompleksnya tugas yang dikerjakan oleh sistem tersebut. Diharapkan bahwa meskipun berbeda vendor dan pembuat, antara satu agent dan agent lain bisa tetap berkomunikasi dan berkoordinasi berhubungan dengan suatu pekerjaan. Paradigma pengembangan sistem dimana dalam suatu komunitas sistem terdapat beberapa agent, yang saling berinteraksi, bernegosiasi dan berkoordinasi satu sama lain dalam menjalankan pekerjaan, disebut dengan multi agent system (MAS). (Romi S. W., 2003).
Case-Based Reasoning
Secara singkat Case-Based reasoning (CBR) didefinisikan sebagai sebuah metodologi untuk penyelesaian masalah dengan memanfaatkan pengalaman sebelumnya [Mulyana and Hartati, 2009]. CBR merupakan sebuah paradigma utama dalam penalaran otomatis (automated reasoning) dan mesin pembelajaran (machine learning). Di dalam CBR, seseorang yang melakukan penalaran dapat menyelesaikan masalah baru dengan memperhatikan kesamaannya dengan satu atau beberapa penyelesaian dari permasalahan sebelumnya.
Struktur sistem CBR dapat digambarkan sebagai kotak hitam seperti pada Gambar: 1, yang mencakup mekanisme penalaran dan aspek eksternal, meliputi :
Spesifikasi masukan atau kasus dari suatu permasalahan Solusi yang diharapkan sebagi luaran
Kasus-kasus sebelumnya yang tersimpan sebagai referensi pada mekanisme penalaran.
Gambar 1 : Arsitektur sebuah sistem CBR [Main dkk, 2001]
Secara singkat, tahap-tahap penyelesaian masalah berbasis CBR adalah sebagai berikut : [Mantaras dkk, 2006]
Pengambilan kembali kasus-kasus yang sesuai dari memori (hal ini membutuhkan pemberian indeks terhadap kasus-kasus dengan menyesuaikan fitur-fiturnya).
Pemilihan sekelompok kasus-kasus yang terbaik. Memilih atau menentukan penyelesaian.
Evaluasi terhadap penyelesaian (hal ini dimaksudkan untuk meyakinkan agar tidak mengulang penyelesaian yang salah)
Penyimpanan penyelesaian kasus terbaru dalam penyimpan kasus/memori. Sesuai dengan tahap-tahap tersebut, Aamodt dan Plaza [Aamodt dan Plaza, 1994] menjelaskan sebuah CBR sebagai sebuah siklus yang disingkat 4 R yaitu,
Retrieve, Reuse, Revise dan Retain seperti pada Gambar-2 berikut ini :
Gambar 2 : Siklus CBR [Aamodt dan Plaza, 1994]
Tahapan proses dalam CBR Pada gambar diatas dijelaskan bahwa dalam proses PBK dibutuhkan empat (4) tahap, yaitu:
RETRIEVE adalah menemukan kembali kasus yang sama atau yang paling mirip dengan kasus baru
REUSE adalah menggunakan kembali informasi dan pengetahuan dari basis kasus untuk memecahkan masalah kasus baru (proses ini disebut “tansfer solusi”),
REVISE adalah merevisi atau memperbaiki solusi yang diusulkan.
RETAIN adalah menyimpan pengalaman untuk memecahkan masalah yang akan datang kedalam basis kasus.
Reinforcement Learning
Reinforcement Learning (RL) adalah salah satu tehnik atau algoritma
pembelajaran yang berinteraksi dengan lingkungan. Agen yang menggunakan
Reinforcement Learning belajar dari konsekuensi (berupa reward) tindakan
(action) yang diambilnya pada suatu kondisi tertentu pada masa lampau dan eksplorasi aksi baru. Dengan kata lain, agen tersebut melakukan pembelajaran yang bersifat trial and error (Scholarpedia, 70).
Reinforcement Learning merupakan salah satu paradigma baru dalam learning theory. Reinforcement Learning dibangun dari porses pemetaan
(mapping) dari situasi yang ada di dalam lingkungan (states) ke bentuk aksi perilaku (behavior) agar dapat memaksimalkan reward. Agen yang bertindak sebagai learner tidak perlu diberitahukan behavior apakah yang akan sepatutnua dilakukan, atau dengan kata lain biarlah sang learner belajar sendiri dari pengalamannya. Ketika ia melakukan sesuatu yang benar berdasarkan rule yang telah ditentukan, maka ia akan mendapat reward, dan sebaliknya (A. Ridho, 2006). Tujuan akhir dari proses yang dilakukan agen dalam Reinforcement
Learning adalah mempelajari control policy atau aturan yang memberikan
kinerja atau performansi global yang optimal (memaksimalkan reward). Analisis
Representasi job shop problem
Penelitian ini mengacu pada definisi permasalahan job shop scheduling pada Operational Research (OR) Library (http://people.brunel.ac.uk/~mastjjb/ jeb/orlib/files/jobshop1.txt):
Jumlah_job jumlah_mesin
Job[0] <no_mesin1 waktu_operasi1> <no_mesin2 waktu_operasi2>... Job[1] <no_mesin1 waktu_operasi1> <no_mesin2 waktu_operasi2>... ...
Job[jumlah_job] <no_mesin1 waktu_operasi1> <no_mesin2 waktu_operasi2>...
jumlah_job adalah jumlah job yang harus diselesaikan. jumlah_mesin adalah jumlah mesin yang tersedia untuk menyelesaikan seluruh job yang ada. Tiap job memiliki dua atribut, yaitu:
a. no_mesin adalah mesin yang harus dilalui oleh job tersebut untuk dapat dinyatakan selesai.
b. no_mesin adalah waktu operasi pada setiap mesin ke-no_mesin
jumlah_mesin dan definisi tiap job harus konsisten. Jika di dalam urutan_mesin terdapat instan mesin yang indeks-nya berada di luar batas jumlah_mesin, maka masalah job shop scheduling tersebut tidak dapat dislesaikan.
Untuk melakukan simulasi penyelesaian tiap job yang ada, maka dibuat sebuah struktur data untuk memuat informasi setiap job Job: <urutan_mesin, urutan_waktu_operasi, penghitung>. Mengacu pada contoh representasi permasa-lahan job shop scheduling di atas. Maka struktur data dari job pertama adalah Job[0] < {9 8 0 1 6 5 7 4 2 3}, {83 61 83 65 64 85 78 85 55 77}, > 0 Penghitung adalah nilai yang akan terus dimutakhirkan sesuai dengan lama proses yang telah dialami job tersebut (jadi diinisialisasi dengan 0).
Representasi Agent
Pendekatan sistem multiagen untuk menyelesaikan permasalahan job shop
scheduling ini dilakukan dengan membuat agen, yaitu machine agent, untuk tiap
mesin yang bertugas untuk mengambil keputusan (job atau operasi yang dipilih) pada tiap kondisi dan melakukan pembelajaran dari tiap keputusan yang diambil. Tugas dari machine agent hanyalah untuk mengambil keputusan dan melakukan pembelajaran, karena itu diperlukan sebuah agen lagi, yaitu control
agent, yang berltugas mengatur seluruh proses pembuatan jadwal. Control agent
bertugas untuk memulai dan menghentikan proses simulasi, melakukan simulasi pemberian daftar job ke setiap machine agent, melakukan pemutakhiran status tiap job dan status tiap machine agent saat simulasi dan mencatat semua aksi yang diambil seluruh machine agent disetiap waktu dalam sebuah jadwal.
Representasi Pengetahuan Agent
Representasi pengetahuan yang dimiliki oleh machine agent berupa sejumlah kasus Casebase = <state, solution>. Diagram ini representasi pengetahuan agen adalah sebagai berikut:
Gambar 3 : Diagram representasi pengetahuan agen
Bagian state yang merupakan indentifier dari tiap kasus direpresentasikan oleh sistem yang digambarkan oleh status job dan mesin. Menurut (Riedmiller, 1999) keadaan sistem dapat dibedakan menjadi dua, yaitu:
1. Keadaan sistem statik, yaitu spesifikasi awal dari sistem tersebut. Contoh: jumlah job, jumlah mesin, estimasi maskepan (dengan perhitungan)
2. Keadaan sistem dinamis, yaitu keadaan sistem yang berbeda dari waktu ke waktu. Keadaan sistem dinamis, menggambarkan progress sistem tersebut saat beroperasi.
a. Kondisi job : due date setiap job, processing time job, slack time dari job.
b. Konsekuensi aksi : slack time rata-rata akibat penerapan aksi. c. Hubungan antara job/operasi : urutan operasi yang belum dilalui tiap
job.
Pembelajaran Agen
Pembelajaran dilakukan dengan reinforcement learning (metode
Q-learning) dengan tujuan untuk menemukan policy, yaitu aksi (dispatching rule)
yang paling tepat untuk tiap kondisi sistem secara global.
Pada sistem multiagen, di mana terdapat banyak agen yang bekerja secara konkuren, maka aksi yang dipelajari oleh sistem sebenarnya adalah vektor dari aksi-aksi elementer tiap agen. Setiap agen memberikan kontribusi aksi untuk menghasilkan vektor aksi gabungan (join action vector). Jadi tujuan bersama dari tiap agen (tujuan dari pembelajaran sistem) adalah mencari joint policy yang merupakan pemetaan kondisi-aksi untuk setiap agen yang menghasilkan reward yang optimal (Gabel, 2006).
Pada model permaslahan job shop scheduling ini, tujuan utama yang ingin dicapai adalah menghasilkan rangkaian cara pemilihan job yang tepat untuk tiap
achine agent sehingga dapat dihasilkan jadwal kerja yang optimal. Jadwal kerja
yang optimal dicapai dengan menghasilkan keterlambatan penyelesaian (tardiness) yang minimal untuk seluruh job.
Implementasi penalaran case-based reasoning dan pembelajaran
Reinforcement Learning, akan terbentuk suatu basis pengetahuan yang terdiri
dari kumpulan case yang saling terhubung pada tiap agen. Bentuk basis pengetahuan yang terbentuk dapat diilustrasikan seperti pada Gambar 4 Ilustrasi basis pengetahuan yang terbentuk.
Gambar 4: Ilustrasi basis pengetahuan yang terbentuk
Algoritma Program
Tiap agen (machine agent) mewakili tiap mesin yang bertugas untuk mengambil keputusan. Setiap mesin diberi nama/kode berupa : [0 …jumlah_mesin]. Sedangkan seluruh simulasi proses pembuatan jadwal
dilakukan pada satu agen yaitu control agent. Adapun urutan kerja agen adalah sebagai berikut:
1. Control agent akan mengirimkan daftar job kepada setiap machine agent. 2. Machine agent akan memutuskan job yang dipilih berdasarkan
pengetahuan yang dimilikinya dan mengirimkan keputusannya kepada
control agent.
3. Control agent memutakhirkan jadwal dan status job dan machine agent
dan kemudian kembali mengirimkan job kepada tiap machine agent. 4. Jika semua job sudah selesai diproses maka control agent akan
menghentikan prosesnya (shutdown dirinya) dan semua machine agent. Setiap machine agent melakukan pembelajaran mesin dengan Reinforcement
Learning. Tujuan pembelajaran ini adalah mencari policy atau aturan yang
meminimumkan wakut total yang dibutuhkan untuk menyelesaikan seluruh job (meminimumlan waktu jadwal selesai). Algoritma program utam (main program) dijelaskan pada flowchart program pada Gambar 5, sedangkan pseudoces program dapat dilihat pada algoritma 1.
1. CB : list of cassebase <state,solution>; Ct : global time;
Jumlah_mesin : jumlah machine agent; S : kondisi (state)
S‟ : kondisi suksesor V : casebase
2. Repeat a. S := S‟;
b. For machine agents (i…jumlah_mesin) do
i. If CB = 0 or tidak ada kasus yang cukup dekat then Tambah case base dengan kondisi S dan solusi kosong;
Reinisialisasi 2 kases terdekat dengan S
ii. Cari V:= casebase terdekat (nearest neighbour) dari kondisi S dan CB;
iii. Pilih aksi a[i]:= yang terbaik atau random; c. Terapkan joint-actions a:= {a[0], a[1],..,a[i]}; d. Berikan global reward ke semua agen; e. S‟:= kondisi suksesor akibat a;
f. For machine agents (i..jumlah_mesin) do
i. V‟:= casebase terdekat (nearest neighbour)dari kondisi S‟ pada CB;
ii. Tentukan := 1/1 + V‟.solution.E[i].nilai_update; iii. Tentukan V.solution.E[i].nilai_Q :=
(1-)V.solution.E[i].nilai_Q + (r+V‟.solution.E[0].nilai_Q; iv. V.solution.E[i].nilai_update ++;
v. urutkan E menaik berdasarkan nilai_Q; g. Until (semua job selesai dikerjakan)
Algoritma 1 : Algoritma global program Start
Deskripsi masalah job shop
Control agent (CA) : Validasi masalah dan spesifikasi sistem Machine agent (MA):
Load Knowledge
Machine agent Case base
Kirim daftar job ke machine agent (MA) yang bersangkutan
CA memeriksa apakah semua dafta job sudah
terkirim? tidak
CA: mengirim kondisi (state) sistem ke MA
ya
MA memeriksa apakah daftar job kosong?
MA melakukan learning untuk memilih job dari daftar dan mengirimkan pilihan ke CA
tidak
CA : terima job pilihan dari semua machine
agent
CA: apakah semua job pilihan telah
diterima?
CA : terapkan vektor aksi (kumpulan job pilihan).
Generate reward dan kirimkan ke semua MA
tidak
ya
CA : update jadwal dan kondisi sistem
CA : apakah semua job sudah selesai
dikerjakan?
tidak
ya
CA : Simpan case base. Cetak hasil jadwal
Machine agent Case Base Schedule
END ya
Gambar 5: Flowchart program secara global
cb adalah kumpulan case base dari tiap machine agent (tiap machine agent memiliki cb sendiri). Ct adalah global time, yang menjadi acuan waktu yang sama bagi seluruh elemen sistem. Sedangkan jumlah_mesin adalah jumlah mesin yang didefinisikan pada permasalahan job shop tersebut siklus CBR pada sistem ini adalah sebagai berikut:
1. Retain
Untuk semua machine agent , ditambahkan case base dari kondisi (state) yang baru s jika CB machine agent kosong atau c tidak memiliki
neighbour yang cukup dekat (dibatasi dengan nilai treshold yang
baru dengan state s ditambahkan, maka dua case terdekat dengan case baru harus direinisialisasi karea setelah case baru ditambahkan, transisi dari kedua case tersebut akan berubah.
2. Retrieval dan Reuse
Ambil V yaitu case base yang palinh dekat dengan kondisi s. Pilih aksi sebagai solusi elementer dari V. Aksi bisa dipilih secara acak (eksplorasi) atau dipilih aksi terbaik (eksploitasi, menggunakan aksi yang memiliki nilai Q terendah). Kedua kemungkinan pemilih aksi ini ditentukan dengan nilai probabilitas eksplorasi yang juga ditentukan oleh user.
3. Revise
Aksi yang diperoleh dari setiap machine agent , yang memiliki daftar pekerjaan pada saat itu, digabungkan menjadi vektor aksi yang kemudian diterapkan pada sistem. Setelah menerima immediate reward dari hasil penerapan aksi tersebut, nilai immediate reward dikirim ke semua agen yng berkontribusi di dalam vektor aksi yang telah diterapkan. Setelah itu, kondisi (state) suksesor S‟ adalah kondisi sistem akibat dari penerapan vektor aksi pada sistem.
Siklus dimulai dari retain karena pada awal sistem ini digunakan untuk memilih aksi, machine agent harus memiliki basis pengetahuan dulu (minimal satu case). Jika machine agent belum memiliki case sama di dalam basis pengetahuannya, maka machine agent tidak bisa memutuskan aksi yang akan digunakan.
Perancangan Kelas
Perancangan kelas program dapat dilihat pada Gambar 6. Kelas jsspui merupakan kelas yang hanya bertugas menghidupkan seluruh agen yang dibutuhkan sesuai dengan definisi permasakahan job shop scheduling yang diberikan oleh user. Kelas machineAgentBehaviour merupakan bagian dari kelas
machineAgent sedangkan kelas controlAgentBehaviour merupakan bagian dari
kelas controlAgent. Kelas dapat menggunakan atribut dan metode yang ada pada kelas machineAgent dan controlAgentBehaviour dpt menggunakan atribut dan metode yang ada pada kelas controlAgent.
Implementasi
Lingkungan implementasi yang digunakan pada penelitian adalah bahasa pemrograman Java dengan framework JADE. Bahasa pemrograman Java digunakan karena merupakan bahasa yang dapat menghasilkan program multiplatform. Selain itu, bahasa pemrograman Java juga menyediakan framework khusus untuk mengembangkan sistem multigane, yaitu JADE (Java
Agent Development). Java SDK (SE Development Kit) yang digunakan adalah
versi 1.7 dan IDE yang digunakan untuk membuat program adalah NetBeans 7.0 yang dijalankan pada sistem operasi Windows 7.
Sintaks untuk menjalankan program job shop scheduling adalah sebagai berikut:
java jsspui [path_dari_file_job_shop_input] [learning_exploration_rate][test_value]
Contoh:
1. C:\My Documents\NetBeansProjects\JSSP\build\classes>java jsspui D:\test1.text
2. C:\My Documents\NetBeansProjects\JSSP\build\classes>java jsspui D:\test1.text 5
3. C:\My Documents\NetBeansProjects\JSSP\build\classes>java jsspui D:\test1.text 5 1
Keterangan :
1. learning_exploration_rate
Bernilai {0 … 10} 0 = tidak melakukan eksplorasi; 10 = terus melakukan eksplorasi:
2. test_value
Nilai untuk mengeksekusi test agnet yang hanya menggunakan jenis DPR.0 = EDD agent, 1 = MS agent, 2 = SPT agent
3. Program harus dijalankan di folder di mana seluruh kelask JSSP berada Spesisifikasi file input yang digunakan untuk program yang dibuat penelitian ini adalah sebagai berikut :
# 10 5 //[jumlah_job] [jumlah_mesin] # 1 72 0 87 4 95 2 66 3 60 # 4 3 3 35 0 48 2 39 1 54 # 1 46 3 20 2 21 0 97 4 55 # 0 59 3 19 4 46 1 34 2 37 # 4 23 2 73 3 25 1 24 0 28 # 3 28 0 45 4 5 1 78 2 83 # 0 53 3 71 1 37 4 29 2 12 # 4 12 2 87 3 33 1 55 0 38 # 2 49 3 83 1 40 0 48 4 7 # 2 65 3 17 0 90 4 27 1 23
//[mesin1] [optime1] [mesin2] [optime2] … [mesinN] [optimeN]
Data yang diinput sesuai dengan spesifikasi file diketik dengan menggunakan program text editor Notepad++ seperti yang terlihat pada ilustrasi berikut ini (Gambar 7):
Gambar 7: Contoh file input
Sepesifikasi file output, program akan menghasilkan 2 jenis output, yaitu:
1. Schedule.txt : dibagi menjadi dua bagian yaitu spesifikasi job yang diberikan dan hasil penjadwalan (Gambar 8).
1 0 2 1 4 7 3
- Baris pertama adalah id dari job
- Baris kedua adalah urutan mesin (rute) yang harus dilalui job
- Baris ketiga adalah waktu operasi job ditiap mesin. Pada contoh di atas: waktu operasi pada mesin 4 adalah 88, mesin 8 adalah 68 dan seterusnya.
Total time = 34
Machine[0] 0 0 0 0 – 1 1 1 1 1 - - - 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 - - - Machine[1] - - - - – - - - 1 1 1 1 1 1 0 0 0 2 2 2 2 2 2 2 - - - Machine[2] 1 1 1 1 1 0 0 0 0 0 0 0 2 2 2 2 2 -- Baris pertama adalah maskepan
- Baris kedua dan seterusnya adalah tabel (baris dan kolom) jadwal pengerjaan yang dihasilkan sistem. Bagian baris (machine[1], machine[2],
machine[1]) adalah mesin yang bekerja pada sistem. Sedangkan bagian
kolom adalah waktu (t). Lambang „-„ berarti pada saat itu mesing sedang
idle. Sedangkan lambang berupa angka tertentu adalah id dari job yang
sedang diproses pada mesin tersebut.
Gambar 8: Contoh file output program schedule.txt
2. Case [n].txt : representasi pengetahuan dari tiap machine agent. Contoh file output case base dapat dilihat pada Gambar 9, adapun penjelasan dari bagian-bagian dalam file tersebut adalah:
10 11 15 0 0 0 2 0.6041666666666666 1 3 0.4166666666666667 2 0 0.0
- Baris pertama merupakan state dari case yaitu case[i].state - Baris kedua merupakan evaluation value dari tiap case[i].solution - Baris ketiga dan seterusnya adalah
experience[i] = <kode_aksi jumlah_update nilai_q> atau case[i].solution.E[j] = <a, n, Q>. Tuple E = <a, n, Q> selalu terurut menaik berdasarkan Q
Pengujian
Berdasarkan tujuan, pengujian program dilakukan menjadi dua, yaitu: a. Validitas hasil pendjawalan oleh sistem multiagent dengan Case-Based
Reasoning dan Reinforcement Learning : menguji apakah sistem multiagent dapat menghasilkan jadwal yang valid atau dapat
dilaksanakan.
b. Optimalisasi hasil penjadwalan: menguji optimalitas hasil penjadwalan berdasarkan maskepan dengan membandingkan sistem multiagent lain yang tidak menggunakan learning dan reasoning.
Pengujian dilakukan dengan mencoba kasus job shop scheduling yang dimasukkan dalam file-file input untuk program JSSP.
Tahapan pengujian yang dilakukan untuk kedua jenis pengujian yang akan dilakukan adalah sebagai berikut:
a. Validasi hasil penjadwalan oleh sistem multiagent
- Menentukan dua kasus penjadwalan job shop sederhana (3 job 3 mesin dan 6 job 6 mesin)
- Melakukan simulasi job shop scheduling menggunakan program yang sudah dibuat untuk memperoleh jadwal (urutan pengerjaan)
- Melakukan analisis pada hasil keluaran program (jadwal) b. Optimalitas hasil penjadwalan
- Memilih tiga sistem multiagent lain (yang tidak menggunakan
reasoning dan learning) sebagai pembanding
- Memilih 10 jenis kasus penjadwalan (6 job 6 mesin, 10 job 10 mesin, 15 job 5 mesin, 15 job 15 mesin, 20 job 5 mesin, 20 job 10 mesin, 20
job 15 mesin, 20 job 20 mesin, 30 job 10 mesin, 50 job 10 mesin).
Untuk setiap jenis digunakan tiga kasus yang berbeda sehingga total kasus yang diuji 30 buah kasus.
- Melakukan simulasi berulang untuk setiap kasus dan mencatat
makespan paling baik (minimum) yang dapat dihasilkan oleh sistem.
Sistem multiagent tanpa reasoning dan learning menghasilkan
makespan yang sama setiap iterasi (perulangan). Makespan yang
dihasilkan sistem multiagent dengan reasoning dan learning akan terus berubah seiring dengan pembelajaran yang dilakukan.
- Melakukan anilisis terhadap rata-rata makespan yang dihasilkan setiap sistem untuk setiap jenis kasus (berdasarkan 10 jenis kasus yang diuji)
Validasi Hasil pendjadwalan oleh Sistem Multiagent
Hasil pengujian dari program JSSP diawali dengan validasi hasil penjadwalan oleh sistem multiagent adalah sebagai berikut (lihat hasil penjadwalan kasus 1 pada tabel 1):
Kasus I : 3 job 3 mesin (3x3.txt) # JSS # 3 3 # 0 4 2 7 1 3 # 2 5 0 5 1 6 # 2 5 1 6 0 9
Hasil penjadwalan kasus 1 menunjukkan bahwa program dapat menghasilkan penjadwalan yang valid, dimana:
- Setiap t, hanya ada sebuah job yang diproses di sebuah mesin. Untuk setiap t, tidak ada mesin yang mengerjakan job yang sama.
- Job0 : operasi1 dikerjakan pada t=0 s.d t=3, operasi2 dikerjakan pada t=10 s.d
t=16 dan operasi3 dikerjakan pada t=22 s.d t=24
Job1 : operasi1 dikerjakan pada t=0 s.d t=4, operasi2 dikerjakan pada t=5 s.d
t=9 dan operasi3 dikerjakan pada t=10 s.d t=15
Job2 : operasi1 dikerjakan pada t=5 s.d t=9, operasi2 dikerjakan pada t=16 s.d
t=21 dan operasi3 dikerjakan pada t=22 s.d t=30
- Semua operasi pada setiap job telah dikerjakan Kasus II : 6 job 6 mesin (6x6.txt)
# JSS # 6 6 # 2 1 0 3 1 6 3 7 5 3 4 6 # 1 8 2 5 4 10 5 10 0 10 3 4 # 2 5 3 4 5 8 0 9 1 1 4 7 # 1 5 0 5 2 5 3 3 4 8 5 9 # 2 9 1 3 4 5 5 4 0 3 3 1 # 1 3 3 3 5 9 0 10 4 4 2 1
Hasil penjadwalan kasus 2(1) (tabel 2) dan kasus 2(2) (tabel 3) menunjukkan bahwa program dapat menghasilkan penjadwalan yang valid, dimana:
- Setiap t, hanya ada sebuah job yang diproses di sebuah mesin. Untuk setiap t, tidak ada mesin yang mengerjakan job yang sama.
- Job0 : operasi1 dikerjakan pada t=0 s.d t=3, operasi2 dikerjakan pada t=10 s.d
t=16 dan operasi3 dikerjakan pada t=22 s.d t=24
Job1 : operasi1 dikerjakan pada t=0 s.d t=4, operasi2 dikerjakan pada t=5 s.d
t=9 dan operasi3 dikerjakan pada t=10 s.d t=15
Job2 : operasi1 dikerjakan pada t=5 s.d t=9, operasi2 dikerjakan pada t=16 s.d
t=21 dan operasi3 dikerjakan pada t=22 s.d t=30
Tabel 1
Hasil penjadwalan kasus 1
Total time = 34 Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Machine[0] 0 0 0 0 – 1 1 1 1 1 – – – – – – – – – – – – 2 2 2 2 2 2 2 2 2 – Machine[1] – – – – – – – – – – 1 1 1 1 1 1 2 2 2 2 2 2 0 0 0 – – – – – – – Machine[2] 1 1 1 1 1 2 2 2 2 2 0 0 0 0 0 0 0 – – – – – – – – – – – – – – – Tabel 2
Hasil penjadwalan kasus 2(1)
Total time = 70 Time 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 Machine[0] - - - 3 3 3 3 3 0 0 0 5 5 5 5 5 5 5 5 5 5 - 2 2 2 2 2 2 2 2 2 Machine[1] 5 5 5 3 3 3 3 3 1 1 1 1 1 1 1 1 4 4 4 0 0 0 0 0 0 - - - - Machine[2] 4 4 4 4 4 4 4 4 4 0 2 2 2 2 2 3 3 3 3 3 1 1 1 1 1 - - - - Machine[3] - - - 5 5 5 - - - - - - - 2 2 2 2 - 3 3 3 - - 0 0 0 0 0 0 0 - - - - Machine[4] - - - - - - 4 4 4 4 3 3 3 3 3 3 3 3 3 5 5 5 5 Machine[5] - - - 5 5 5 5 5 5 5 5 5 - - - - 2 2 2 2 2 2 2 2 4 4 4 4 - 3 3 3 3 Tabel 3
Hasil penjadwalan kasus 2(2)
Total time = 70 Time 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 Machine[0] 4 4 4 - - - 1 1 1 1 1 1 1 1 1 1 - - - - - Machine[1] 2 - - - - Machine[2] 5 - - - - Machine[3] - - - 4 - - - - Machine[4] 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 2 2 2 2 2 2 2 - - - - Machine[5] 3 3 3 3 3 0 0 0 - - 1 1 1 1 1 1 1 1 1 1 - - - -
Optimalitas Hasil Penjadwalan
Rata-rata makespan untuk setiap kasus dapat dilihat pada Tabel 4 Rata-rata
makespan. Hasil pengujian tersebut dapat dilihat bahwa sistem multiagent dapat
menghasilkan rata-rata makespan yang lebih kecil dibandingkan dengan ketiga sistem yang lainnya.
Tabel 4: Rata-rata makespan
6x6 10x10 15x15 15x5 20x5 20x10 20x15 20x20 30x10 50x10 EDD 76.3 1304.7 2040.3 110.67 1371 1792.3 1675.7 2122.7 2241 2848.3
MS 73.3 1355.7 2108.3 1169.3 1420.7 1875.3 1586.3 2125.3 2340.7 4077.3
SPT 81.67 1208 1834 1007 1314.3 1673 1553.3 2000.3 2062 3624
Multi 69.67 1110.7 1726 967 1258 1587.3 1350.7 1792.3 2010 3518.7
Pada Tabel 4: Rata-rata makespan, dapat dilihat bahwa seiring dengan meningkatnya kompleksitas kasus (meningkatnya rata-rata makespan) selisih
makespan daris sistem multiagent dan sistem yang lainnya juga semakin besar.
Berdasarkan Tabel 4: Rata-rata makespan dapat dilihat bahwa pada kasus dengan mesin terbanyak, sistem multiagent yang menggunakan Case-Based Reasoning
dan Reinforcement Learning menunjukkan hasil yang lebih signifikan dibandingkan dengan sistem multiagent tanpa reasoning dan learning.
Kesimpulan
Berdasarkan hasil analisis dan pengujian yang telah dilakukan, maka dapat dbuat kesimpulan adalah sebagai berikut:
1) Sistem multiagent dapat digunakan untuk menyelesaikan permasalahan job shop Scheduling;
2) Penalaran menggunakan case-based reasoning dan pembelajaran
meng-gunakan reinforcement learning dapat mengekstraksi aturan (policy) penggunaan dispatch rules untuk tiap kasus job shop scheduling;
3) Sistem multiagent dengan kemampuan penalaran (reasoning) dan dengan kemampuan belajar (learning) memberikan hasil penjadwalan yang lebih baik dibanding dengan sistem multiagent lain yang hanya menggunakan satu dispatch rules (tanpa kemampuan reasoning dan learning);
4) Sistem multiagent memberikan hasil yang lebih signifikan untuk kasus yang lebih kompleks (terdiri dari banyak job dan banyak mesin).
Daftar Pustaka
Aamodt, Agnar, and Enric Plaza. AICom - Artificial Intelligence
Communications, IOS Press, Vol. 7: 1, pp. 39-59. 1994
Monfroy, Eric, 2001, Constraint Programming: Introduction, Universite de Nantes.
Gabel, Thomas & Martin Riedmiller. Multi-agent Case-Based. 2006.
Champandard, A.J., 2002, Reinforcement Learning: Plain and Simple, http://reinforcement learning.aidepot.com/Main.html,
Sutton, R. S. and A. G. Barto, 1998, Reinforcement Learning : An ntroduction, London. MIT Press.
M, Pinedo, Introduction to Scheduling – Algorithms, 1994.
Johan K. W., Adrianto H. dan Marsolim, Perancangan Dan Implementasi Papan
Jadwal Perkuliahan Berdasarkan Sistem Penjadwalan Otomatis, Jurnal
Teknik Elektro - TESLA Vol. 8 No. 2, 75 – 95 (Oktober 2006)
Mauridhi Hery P; Agus Kurniawan, Supervised Neural Networks dan
Aplikasinya, Graha Ilmu, Yogyakarta, 2006.
Horng, Horg-Chyi. Comparing Steady-state Performance of Dispatching
Rule-pairs in Open Shops. International Journal of Applied Science and Engineering. 2006.
Lesser and Victor R, Multiagent Systems: An Emerging Subdiscipline of AI. Vidal, Jose. Fundamentals of Multiagent Systems. 2007
Gerhard Weiss, Multiagent Systems: A Modern Approach to Distributed Modern
Bayegan, Elisabeth, and Nytrø,Oystein, and Grimsmo, Anders, “Ontologies for
Knowledge Representation in a Computer-Based Patient Record”, Journal
from Department of Computer and Information Science Departmen. 2007. Sri Mulyana dan Sri Hartati, Tinjauan Singkat Perkembangan Case–Based
Reasoning, ISSN: 1979-2328, Seminar Nasional Informatika UPN
Yogyakarta, 2009,
Main, J.; Dillon, T.S.; Shiu, S., A Tutorial on Case-Based Reasoning : Soft
Computing in Case-Based Reasoning (Eds), Sprenger-Verlag, London, pp.
1-28. 2001.
Mitchell, Tom M. Machine Learning. McGraw-Hill. 1997.
Scholarpedia. http://www.scholarpedia.org/article/Reinforcement_learning.
2007.
Riedmiller, Simone & Martin Riedmiller. A Neural Reinforcement Learning
Approach to Learn Local Dispatching Policies in Production Scheduling.