MEMBANGUN MODEL PETRI NET LAMPU LALULINTAS DAN SIMULASINYA

Ukuran: px
Mulai penontonan dengan halaman:

Download "MEMBANGUN MODEL PETRI NET LAMPU LALULINTAS DAN SIMULASINYA"

Transkripsi

1 TESIS SM2310 MEMBANGUN MODEL PETRI NET LAMPU LALULINTAS DAN SIMULASINYA DIEKY ADZKIYA NRP DOSEN PEMBIMBING Dr. Subiono M.S PROGRAM MAGISTER JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 2008

2

3 TESIS SM2310 MEMBANGUN MODEL PETRI NET LAMPU LALULINTAS DAN SIMULASINYA DIEKY ADZKIYA NRP DOSEN PEMBIMBING Dr. Subiono M.S PROGRAM MAGISTER JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 2008

4

5 MEMBANGUN MODEL PETRI NET LAMPU LALULINTAS DAN SIMULASINYA Tesis disusun untuk memenuhi salah satu syarat memperoleh gelar Magister Sains (M.Si) di Institut Teknologi Sepuluh Nopember Disetujui oleh: oleh : Dieky Adzkiya Nrp Tanggal Ujian : 31 Juli 2008 Periode Wisuda : September Dr. Subiono M.S (Pembimbing) NIP: Drs. Hariyanto M.Si (Penguji) NIP: Drs. Sulistiyo MT (Penguji) NIP: Drs. I Gusti Ngurah Rai Usadha M.Si (Penguji) NIP: Direktur Program Pascasarjana Prof. Dr. Ir. Suparno MSIE NIP i

6 ii

7 MEMBANGUN MODEL PETRI NET LAMPU LALULINTAS DAN SIMULASINYA Nama Mahasiswa : Dieky Adzkiya NRP : Pembimbing : Dr. Subiono M.S ABSTRAK Petri net dapat digunakan untuk memodelkan sistem event diskrit. Salah satu contoh sistem event diskrit adalah dinamika lampu lalulintas yang menyala. Dalam penelitian ini dibangun Petri net lampu lalulintas yang mencantumkan waktu tunggu di persimpangan dengan jumlah jalur sebarang dalam bentuk algoritma. Petri net yang dibangun kemudian dianalisis dan direduksi. Analisis Petri net meliputi keterbatasan (boundedness), konservasi (conservation) dan coverability keadaan. Reduksi bertujuan mengurangi dimensi ruang keadaan. Jumlah place dan transisi Petri net lampu lalulintas di persimpangan masing-masing sebanyak 5l dan 4l dengan l menyatakan jumlah jalur di persimpangan. Sifat Petri net adalah terbatas (bounded), tidak konservatif dan banyak keadaan yang coverable berhingga. Reduksi keadaan menyebabkan jumlah place Petri net menjadi l + 4 tetapi tidak mengubah sifatnya. Distribusi normal dan uniform digunakan untuk mendekati jumlah kedatangan pengguna di persimpangan. Jumlah kedatangan yang dibangkitkan dengan distribusi normal dibulatkan ke bilangan bulat terdekat. Pendekatan ini digunakan untuk mensimulasikan jumlah pengguna di persimpangan. Dari hasil simulasi dapat dihitung mean dan maksimum jumlah pengguna di setiap jalur. Kedua hasil tersebut dapat digunakan untuk menentukan kestabilan sistem. Jika mean dan maksimum jumlah pengguna konvergen maka sistem stabil tetapi jika keduanya tidak konvergen maka sistem tidak stabil. Kata kunci: Petri net, reduksi, simulasi jumlah pengguna, kestabilan iii

8 iv

9 MODELING TRAFFIC LIGHTS USING PETRI NET AND ITS SIMULATION By : Dieky Adzkiya Student Identity Number : Supervisor : Dr. Subiono M.S ABSTRACT We use Petri net to model discrete event systems. An example of these systems is traffic lights dynamics. In this research we design algorithms to build Petri net for traffic lights with waiting times in an intersection. Then we analyze the Petri net and reduce its state. The analysis consists of boundedness, conservation and state coverability. We reduce state of the Petri net to minimize its state space dimension. Petri net for traffic lights in intersection has 5l place and 4l transition with l represents number of lanes in intersection. Properties of the Petri net are bounded, not conservative and finite coverable state. Number of place in Petri net become l + 4 after we reduce its state. Properties of the Petri net don t changed. We approximate number of vehicle s arrival using normal and uniform distribution. Number of vehicle s arrival generated from normal distribution is rounded to closest integer. We use these approximation to simulate number of vehicle in intersection. We calculate number of vehicle s mean and maximum in each lanes to check stability of the system. If number of vehicle s mean and maximum is converge then the system is stable but if these don t converge then the system is not stable. Key words: Petri net, reduce, number of vehicle s simulation, stability v

10 vi

11 KATA PENGANTAR Segala puji bagi Allah SWT yang telah memberikan karunia- Nya berupa kekuatan iman serta kesehatan sehingga penulis dapat menyelesaikan tesis dengan judul Membangun Model Petri net Lampu Lalulintas dan Simulasinya sesuai dengan keinginan dan tepat waktu. Keinginan penulis adalah membuat laporan dengan L A TEX dan memanfaatkan perangkat lunak yang gratis. Dalam mengerjakan penelitian ini, penulis tidak lepas dari bantuan beberapa pihak diantaranya: 1. Prof. Dr. Ir. Suparno MSIE selaku Direktur Program Pascasarjana ITS. 2. Dr. M. Isa Irawan MT selaku Koordinator Program Studi Pascasarjana Matematika ITS. 3. Dr. Subiono M.S selaku dosen pembimbing telah mengarahkan dan memotivasi penulis untuk segera menyelesaikan studi. 4. Dosen penguji atas saran dan informasi yang telah diberikan. 5. Drs. Sadjidon M.Si selaku dosen wali penulis. 6. Seluruh dosen Jurusan Matematika FMIPA ITS yang telah mendidik penulis baik di dalam kuliah maupun di luar kuliah. 7. Kedua Orang Tua dan seluruh keluarga atas perhatian, doa dan segala dukungannya selama ini. Baity Jannaty dan Via Salavia yang telah memberikan suntikan semangat kepada penulis. 8. Mas Hanif, mas Ibad, Lubab, Afif, Arif, pak Zaenal dan Rudi yang telah mengobati kegundahan hati penulis selama ini. 9. Budi, Zaenal dan Erdy yang telah menemani dan membantu penulis dalam suka maupun duka. 10. Mas Ghozali yang selalu menjadi teman dalam mencurahkan segala isi hati penulis. 11. Serta semua pihak yang tidak dapat disebutkan satu per satu. vii

12 Semoga Allah SWT membalas segala budi baik yang telah diberikan kepada penulis dengan limpahan rahmat dan hidayah. Dalam menyusun laporan ini, penulis berusaha memberikan keterangan yang lengkap dan contoh yang sederhana agar materi yang disajikan mudah dipahami. Akhirnya penulis menyadari bahwa tesis ini masih banyak terdapat kekurangan yang semuanya disebabkan oleh kelemahan dan keterbatasan penulis. Saran dan kritik demi perbaikan di masa datang akan sangat penulis hargai. Surabaya, Agustus 2008 Penulis viii

13 DAFTAR ISI LEMBAR PENGESAHAN i ABSTRAK iii ABSTRACT v KATA PENGANTAR vii DAFTAR ISI viii DAFTAR GAMBAR xii DAFTAR TABEL xv DAFTAR ALGORITMA xxi BAB 1 PENDAHULUAN Latar Belakang Rumusan Masalah Batasan Masalah Tujuan dan Manfaat BAB 2 KAJIAN PUSTAKA DAN TEORI DASAR Notasi dan Definisi Tanda Petri net dan Ruang Keadaan Dinamika Petri net Representasi Petri net Menggunakan Matriks Analisis Model Sistem Event Diskrit Tak Berwaktu Liveness dan Deadlocks Coverability Tree Definisi Coverability Tree Menentukan parent bertingkat Menguji hubungan dominasi Mencari Keberadaan Node Duplicate Membangun Coverability Tree Keterbatasan (boundedness) Konservasi (conservation) Coverability Keadaan BAB 3 METODA PENELITIAN Tahap-tahap Penelitian Diagram Alir Penelitian BAB 4 PETRI NET DAN SIMULASI PENGGUNA Pendahuluan ix

14 4.2 Petri net Lampu Lalulintas Sederhana Matriks Incidence Coverability Tree Konservasi Petri net Lampu Lalulintas Dengan Waktu Tunggu Matriks Incidence Coverability Tree Konservasi Petri net Lampu Lalulintas Tanpa Waktu Idle Matriks Incidence Coverability Tree Konservasi Petri net Lampu Lalulintas di Persimpangan Matriks Incidence Coverability Tree Konservasi Reduksi Keadaan Petri net Lampu Lalulintas Matriks Incidence Coverability Tree Konservasi Simulasi Jumlah Pengguna di Persimpangan Kedatangan Berdistribusi Normal Kedatangan Berdistribusi Uniform BAB 5 IMPLEMENTASI DAN EVALUASI Pengujian Sifat Pure pada Petri net Menentukan Transisi Enabled Pemfirean Transisi Pengujian Dominasi Membangun Coverability Tree Menentukan Batas Atas Place di Petri net Menentukan Place yang terbatas (bounded) Keterbatasan (boundedness) pada Petri net Pengujian Konservasi (Conservation) Pengujian Cover Dua Keadaan Pengujian Coverable Keadaan Setelah Pemfirean Transisi yang Enabled Penentuan Urutan Pemfirean Transisi x

15 5.14 Petri net Lampu Lalulintas Lampu Lalulintas Sederhana Lampu Lalulintas dengan Waktu Tunggu Lampu Lalulintas Tanpa Waktu Idle Lampu Lalulintas di Persimpangan Lampu Lalulintas Tereduksi Simulasi Jumlah Pengguna di Persimpangan Identifikasi Petri net yang dibuat dengan PIPE Simulasi Petri net berbasis GUI Simulasi Petri net yang dibuat dari PIPE Representasi Grafik dari Coverability Tree Simulasi Jumlah Pengguna Berbasis GUI Simulasi Lampu Lalulintas di Persimpangan Simulasi Lampu Lalulintas Berbasis GUI Evaluasi Hasil Simulasi Kedatangan Berdistribusi Normal Mean Keberangkatan Ketika Lampu Hijau Menyala Jumlah Jalur di Persimpangan Mean Keberangkatan Ketika Lampu Hijau Menyala Mean Kedatangan Lama Lampu Kuning Menyala Lama Lampu Hijau Menyala Keadaan Awal Kedatangan Berdistribusi Uniform Mean Keberangkatan Ketika Lampu Hijau Menyala Jumlah Jalur di Persimpangan Mean Keberangkatan Ketika Lampu Hijau Menyala Maksimum Kedatangan Lama Lampu Kuning Menyala Lama Lampu Hijau Menyala Keadaan Awal BAB 6 PENUTUP Kesimpulan xi

16 6.2 Saran LAMPIRAN A SOURCE CODE A.1 File ispure.sci A.2 File findenabled.sci A.3 File isdominate.sci A.4 File buildtree.sci A.5 File findbound.sci A.6 File boundedplace.sci A.7 File ispetrinetbounded.sci A.8 File isconservation.sci A.9 File iscovers.sci A.10 File iscoverable.sci A.11 File findchild.sci A.12 File firingorder.sci A.13 File firingorderbig.sci A.14 File tlintersection.sci A.15 File tlreduced.sci A.16 File intersection.sci A.17 File intersectionext.sci A.18 File readpipe.sci A.19 File petrinetsimulation.sci A.20 File pipesimulation.sci A.21 File treeposition.sci A.22 File covtree.sci A.23 File covpipe.sci A.24 File intersectiongui.sci A.25 File intersectionguiext.sci A.26 File lightsgui.sci A.27 File lightsguiext.sci A.28 File lightsimulation.sci A.29 File lightsimulationext.sci A.30 File buildmacros.sce A.31 File loadmacros.sce A.32 File builder.sce A.33 File loader.sce LAMPIRAN B HASIL SIMULASI DAFTAR PUSTAKA xii

17 DAFTAR GAMBAR 2.1 Petri net Sederhana Petri net dengan Transisi yang Tidak Mempunyai Place Input Contoh Transisi yang Tidak Enabled Contoh Transisi yang Enabled Keadaan Awal Petri net Sebelum Transisi t 1 Difire Sesudah Transisi t 1 Difire Keadaan Awal Petri net Bertanda Keadaan Petri net Setelah Transisi t 1 Difire Keadaan Petri net Setelah Transisi t 1 Difire Kemudian t Keadaan Petri net Setelah Transisi t 1 Difire Kemudian t Transisi dengan Liveness Berbeda-beda Keadaan Awal Petri net Coverability Tree untuk Petri net di Gambar Keadaan Awal Petri net Sebagian Coverability Tree Petri net di Gambar Representasi Hingga Coverability Tree di Gambar Input Algoritma 2.10 adalah idparent = 0 dan idtran = Input Algoritma 2.10 adalah idparent = 1 dan idtran = Input Algoritma 2.10 adalah idparent = 2 dan idtran = Input Algoritma 2.10 adalah idparent = 3 dan idtran = Input Algoritma 2.10 adalah idparent = 4 dan idtran = Algoritma dijalankan dengan Menggunakan Input idparent = 4 dan idtran = Input Algoritma 2.10 adalah idparent = 2 dan idtran = Petri net Antrian Sederhana Coverability Tree untuk Petri net Antrian Sederhana Diagram Alir Penelitian Petri net Antrian Sederhana Petri net Sederhana untuk Satu Lampu Lalulintas Coverability Tree untuk Petri net di Gambar Petri net yang Mengandung Informasi Lama Lampu Lalulintas Menyala Coverability Tree untuk Petri net di Gambar xiii

18 4.6 Keadaan Petri net yang Menyatakan Semua Lampu Lalulintas Padam Petri net Lampu Lalulintas Tanpa Waktu Idle Coverability Tree untuk Petri net di Gambar Model Persimpangan Sederhana Modifikasi Model Petri net Sebelumnya Hubungan Place Merah dengan Transisi pada Jalur yang Lain Modifikasi Petri net untuk Menyatakan Perubahan Jalur Petri net untuk Dua Lampu Lalulintas Coverability Tree untuk Petri net di Gambar Hasil Reduksi Keadaan pada Petri net Lampu Lalulintas di Persimpangan dengan Dua Jalur Coverability Tree untuk Petri net di Gambar Grafik Perubahan Jumlah Pengguna Terhadap Waktu di Persimpangan dengan Dua Jalur Grafik Perubahan Jumlah Pengguna Terhadap Waktu di Persimpangan Dengan Dua Jalur Bobot Arc dari Transisi ke Place yaitu Elemen Tidak Nol pada Matriks Forward Incidence Bobot Arc dari Place ke Transisi yaitu Elemen Tidak Nol pada Matriks Backward Incidence Jumlah Token Awal pada Setiap Place di Petri net Nama Transisi yang Enabled Urutan Transisi yang Difire Sebelumnya Petri net Mengalami Deadlock Memilih File xml yang Dibuat dengan PIPE Coverability Tree Petri net Antrian Sederhana Menginputkan Jumlah Jalur dan Waktu Simulasi Menginputkan Data Kondisi Awal, Mean Kedatangan dan Varian Kedatangan pada Masing-Masing Jalur Simulasi Jumlah Pengguna dengan Kedatangan Berdistribusi Normal Simulasi Lampu Lalulintas di Persimpangan dengan Kedatangan Berdistribusi Normal Simulasi Lampu Lalulintas di Persimpangan dengan Kedatangan Berdistribusi Uniform Menginputkan Jumlah Lampu Lalulintas yang Ditampilkan xiv

19 5.15 Memilih Lampu Lalulintas yang Ditampilkan Perbandingan Jumlah Pengguna Simulasi yang Pertama dan Kedua Simulasi Jumlah Pengguna dengan Kedatangan Berdistribusi Normal xv

20 xvi

21 DAFTAR TABEL 5.1 Mean Jumlah Pengguna pada Simulasi Pertama dengan Kedatangan Berdistribusi Normal Maksimum Jumlah Pengguna pada Simulasi Pertama dengan Kedatangan Berdistribusi Normal Mean Jumlah Pengguna pada Simulasi Kedua dengan Kedatangan Berdistribusi Normal Maksimum Jumlah Pengguna pada Simulasi Kedua dengan Kedatangan Berdistribusi Normal Mean Jumlah Pengguna pada Simulasi Ketiga dengan Kedatangan Berdistribusi Normal Maksimum Jumlah Pengguna pada Simulasi Ketiga dengan Kedatangan Berdistribusi Normal Mean Jumlah Pengguna pada Simulasi Keempat dengan Kedatangan Berdistribusi Normal Maksimum Jumlah Pengguna pada Simulasi Keempat dengan Kedatangan Berdistribusi Normal Mean Jumlah Pengguna pada Simulasi Kelima dengan Kedatangan Berdistribusi Normal Maksimum Jumlah Pengguna pada Simulasi Kelima dengan Kedatangan Berdistribusi Normal Mean Jumlah Pengguna pada Simulasi Keenam dengan Kedatangan Berdistribusi Normal Maksimum Jumlah Pengguna pada Simulasi Keenam dengan Kedatangan Berdistribusi Normal Mean Jumlah Pengguna pada Simulasi Ketujuh dengan Kedatangan Berdistribusi Normal Maksimum Jumlah Pengguna pada Simulasi Ketujuh dengan Kedatangan Berdistribusi Normal Mean Jumlah Pengguna pada Simulasi Kedelapan dengan Kedatangan Berdistribusi Normal Maksimum Jumlah Pengguna pada Simulasi Kedelapan dengan Kedatangan Berdistribusi Normal Mean Jumlah Pengguna pada Simulasi Pertama dengan Kedatangan Berdistribusi Uniform xvii

22 5.18 Maksimum Jumlah Pengguna pada Simulasi Pertama dengan Kedatangan Berdistribusi Uniform Mean Jumlah Pengguna pada Simulasi Kedua dengan Kedatangan Berdistribusi Uniform Maksimum Jumlah Pengguna pada Simulasi Kedua dengan Kedatangan Berdistribusi Uniform Mean Jumlah Pengguna pada Simulasi Ketiga dengan Kedatangan Berdistribusi Uniform Maksimum Jumlah Pengguna pada Simulasi Ketiga dengan Kedatangan Berdistribusi Uniform Mean Jumlah Pengguna pada Simulasi Keempat dengan Kedatangan Berdistribusi Uniform Maksimum Jumlah Pengguna pada Simulasi Keempat dengan Kedatangan Berdistribusi Uniform Mean Jumlah Pengguna pada Simulasi Kelima dengan Kedatangan Berdistribusi Uniform Maksimum Jumlah Pengguna pada Simulasi Kelima dengan Kedatangan Berdistribusi Uniform Mean Jumlah Pengguna pada Simulasi Keenam dengan Kedatangan Berdistribusi Uniform Maksimum Jumlah Pengguna pada Simulasi Keenam dengan Kedatangan Berdistribusi Uniform Mean Jumlah Pengguna pada Simulasi Ketujuh dengan Kedatangan Berdistribusi Uniform Maksimum Jumlah Pengguna pada Simulasi Ketujuh dengan Kedatangan Berdistribusi Uniform Mean Jumlah Pengguna pada Simulasi Kedelapan dengan Kedatangan Berdistribusi Uniform Maksimum Jumlah Pengguna pada Simulasi Kedelapan dengan Kedatangan Berdistribusi Uniform B.1 Mean Simulasi Pertama di Jalur 1 Berdistribusi Normal B.2 Mean Simulasi Pertama di Jalur 2 Berdistribusi Normal B.3 Maksimum Simulasi Pertama di Jalur 1 Berdistribusi Normal. 315 B.4 Maksimum Simulasi Pertama di Jalur 2 Berdistribusi Normal. 316 B.5 Waktu Komputasi Simulasi Pertama Berdistribusi Normal B.6 Mean Simulasi Kedua di Jalur 1 Berdistribusi Normal B.7 Mean Simulasi Kedua di Jalur 2 Berdistribusi Normal xviii

23 B.8 Maksimum Simulasi Kedua di Jalur 1 Berdistribusi Normal B.9 Maksimum Simulasi Kedua di Jalur 2 Berdistribusi Normal B.10 Waktu Komputasi Simulasi Kedua Berdistribusi Normal B.11 Mean Simulasi Ketiga di Jalur 1 Berdistribusi Normal B.12 Mean Simulasi Ketiga di Jalur 2 Berdistribusi Normal B.13 Mean Simulasi Ketiga di Jalur 3 Berdistribusi Normal B.14 Maksimum Simulasi Ketiga di Jalur 1 Berdistribusi Normal B.15 Maksimum Simulasi Ketiga di Jalur 2 Berdistribusi Normal B.16 Maksimum Simulasi Ketiga di Jalur 3 Berdistribusi Normal B.17 Waktu Komputasi Simulasi Ketiga Berdistribusi Normal B.18 Mean Simulasi Keempat di Jalur 1 Berdistribusi Normal B.19 Mean Simulasi Keempat di Jalur 2 Berdistribusi Normal B.20 Mean Simulasi Keempat di Jalur 3 Berdistribusi Normal B.21 Maksimum Simulasi Keempat di Jalur 1 Berdistribusi Normal 330 B.22 Maksimum Simulasi Keempat di Jalur 2 Berdistribusi Normal 331 B.23 Maksimum Simulasi Keempat di Jalur 3 Berdistribusi Normal 332 B.24 Waktu Komputasi Simulasi Keempat Berdistribusi Normal B.25 Mean Simulasi Kelima di Jalur 1 Berdistribusi Normal B.26 Mean Simulasi Kelima di Jalur 2 Berdistribusi Normal B.27 Maksimum Simulasi Kelima di Jalur 1 Berdistribusi Normal. 335 B.28 Maksimum Simulasi Kelima di Jalur 2 Berdistribusi Normal. 336 B.29 Waktu Komputasi Simulasi Kelima Berdistribusi Normal B.30 Mean Simulasi Keenam di Jalur 1 Berdistribusi Normal B.31 Mean Simulasi Keenam di Jalur 2 Berdistribusi Normal B.32 Maksimum Simulasi Keenam di Jalur 1 Berdistribusi Normal. 339 B.33 Maksimum Simulasi Keenam di Jalur 2 Berdistribusi Normal. 340 B.34 Waktu Komputasi Simulasi Keenam Berdistribusi Normal B.35 Mean Simulasi Ketujuh di Jalur 1 Berdistribusi Normal B.36 Mean Simulasi Ketujuh di Jalur 2 Berdistribusi Normal B.37 Maksimum Simulasi Ketujuh di Jalur 1 Berdistribusi Normal. 343 B.38 Maksimum Simulasi Ketujuh di Jalur 2 Berdistribusi Normal. 344 B.39 Waktu Komputasi Simulasi Ketujuh Berdistribusi Normal B.40 Mean Simulasi Kedelapan di Jalur 1 Berdistribusi Normal B.41 Mean Simulasi Kedelapan di Jalur 2 Berdistribusi Normal B.42 Maksimum Simulasi Kedelapan di Jalur 1 Berdistribusi Normal 347 B.43 Maksimum Simulasi Kedelapan di Jalur 2 Berdistribusi Normal 348 B.44 Waktu Komputasi Simulasi Kedelapan Berdistribusi Normal. 348 xix

24 B.45 Mean Simulasi Pertama di Jalur 1 Berdistribusi Uniform B.46 Mean Simulasi Pertama di Jalur 2 Berdistribusi Uniform B.47 Maksimum Simulasi Pertama di Jalur 1 Berdistribusi Uniform 351 B.48 Maksimum Simulasi Pertama di Jalur 2 Berdistribusi Uniform 352 B.49 Waktu Komputasi Simulasi Pertama Berdistribusi Uniform B.50 Mean Simulasi Kedua di Jalur 1 Berdistribusi Uniform B.51 Mean Simulasi Kedua di Jalur 2 Berdistribusi Uniform B.52 Maksimum Simulasi Kedua di Jalur 1 Berdistribusi Uniform. 355 B.53 Maksimum Simulasi Kedua di Jalur 2 Berdistribusi Uniform. 356 B.54 Waktu Komputasi Simulasi Kedua Berdistribusi Uniform B.55 Mean Simulasi Ketiga di Jalur 1 Berdistribusi Uniform B.56 Mean Simulasi Ketiga di Jalur 2 Berdistribusi Uniform B.57 Mean Simulasi Ketiga di Jalur 3 Berdistribusi Uniform B.58 Maksimum Simulasi Ketiga di Jalur 1 Berdistribusi Uniform. 360 B.59 Maksimum Simulasi Ketiga di Jalur 2 Berdistribusi Uniform. 361 B.60 Maksimum Simulasi Ketiga di Jalur 3 Berdistribusi Uniform. 362 B.61 Waktu Komputasi Simulasi Ketiga Berdistribusi Uniform B.62 Mean Simulasi Keempat di Jalur 1 Berdistribusi Uniform B.63 Mean Simulasi Keempat di Jalur 2 Berdistribusi Uniform B.64 Mean Simulasi Keempat di Jalur 3 Berdistribusi Uniform B.65 Maksimum Simulasi Keempat di Jalur 1 Berdistribusi Uniform 366 B.66 Maksimum Simulasi Keempat di Jalur 2 Berdistribusi Uniform 367 B.67 Maksimum Simulasi Keempat di Jalur 3 Berdistribusi Uniform 368 B.68 Waktu Komputasi Simulasi Keempat Berdistribusi Uniform. 368 B.69 Mean Simulasi Kelima di Jalur 1 Berdistribusi Uniform B.70 Mean Simulasi Kelima di Jalur 2 Berdistribusi Uniform B.71 Maksimum Simulasi Kelima di Jalur 1 Berdistribusi Uniform. 371 B.72 Maksimum Simulasi Kelima di Jalur 2 Berdistribusi Uniform. 372 B.73 Waktu Komputasi Simulasi Kelima Berdistribusi Uniform B.74 Mean Simulasi Keenam di Jalur 1 Berdistribusi Uniform B.75 Mean Simulasi Keenam di Jalur 2 Berdistribusi Uniform B.76 Maksimum Simulasi Keenam di Jalur 1 Berdistribusi Uniform 375 B.77 Maksimum Simulasi Keenam di Jalur 2 Berdistribusi Uniform 376 B.78 Waktu Komputasi Simulasi Keenam Berdistribusi Uniform B.79 Mean Simulasi Ketujuh di Jalur 1 Berdistribusi Uniform B.80 Mean Simulasi Ketujuh di Jalur 2 Berdistribusi Uniform B.81 Maksimum Simulasi Ketujuh di Jalur 1 Berdistribusi Uniform 379 xx

25 B.82 Maksimum Simulasi Ketujuh di Jalur 2 Berdistribusi Uniform 380 B.83 Waktu Komputasi Simulasi Ketujuh Berdistribusi Uniform B.84 Mean Simulasi Kedelapan di Jalur 1 Berdistribusi Uniform B.85 Mean Simulasi Kedelapan di Jalur 2 Berdistribusi Uniform B.86 Maksimum Simulasi Kedelapan di Jalur 1 Berdistribusi Uniform 383 B.87 Maksimum Simulasi Kedelapan di Jalur 2 Berdistribusi Uniform 384 B.88 Waktu Komputasi Simulasi Kedelapan Berdistribusi Uniform. 384 xxi

26 xxii

27 DAFTAR ALGORITMA 2.1 Mencari Transisi Enabled Alternatif Penentuan Transisi Enabled Pemfirean Transisi Himpunan Parent Bertingkat Modifikasi Parent Bertingkat Pengujian Dominasi Pengujian Sederetan Dominasi Perbandingan Keadaan Pencarian Node Membangun Coverability Tree Menentukan Batas Atas Setiap Place di Petri net Pengujian Cover Pengujian Coverable Petri net Lampu Lalulintas Sederhana Petri net Lampu Lalulintas Dengan Waktu Tunggu Petri net Lampu Lalulintas Tanpa Waktu Idle Petri net Lampu Lalulintas di Persimpangan Forward Incidence Petri net Lampu Lalulintas di Persimpangan Backward incidence Petri net Lampu Lalulintas di Persimpangan Petri net Lampu Lalulintas Tereduksi Forward Incidence Petri net Lampu Lalulintas Tereduksi Backward Incidence Petri net Lampu Lalulintas Tereduksi Tahap Inisialisasi Simulasi Jumlah Pengguna Perpindahan Jalur Simulasi Jumlah Pengguna Simulasi Jumlah Pengguna di Persimpangan Modifikasi Tahap Inisialisasi Simulasi Jumlah Pengguna Modifikasi Perpindahan Jalur Simulasi Jumlah Pengguna Modifikasi Simulasi Jumlah Pengguna di Persimpangan xxiii

28 xxiv

29 BAB 1 PENDAHULUAN Pada bab ini dibahas latar belakang penelitian yang membahas hasil penelitian dan uraian kegiatan yang telah dilakukan. Berdasarkan uraian tersebut, dirumuskan masalah yang diteliti beserta batasan-batasan yang digunakan. Selanjutnya dituliskan tujuan yang ingin dicapai dan manfaat yang ingin diperoleh dari penelitian ini. 1.1 Latar Belakang Dengan perkembangan jaman yang semakin pesat, banyak teknologi yang menjadikan hidup lebih mudah. Salah satu contohnya adalah adanya waktu tunggu di persimpangan jalan. Sebelum adanya hal itu, para pengguna jalan tidak mengetahui kapan lampu akan berganti menjadi hijau atau merah. Selain itu pengguna diharuskan menunggu untuk waktu yang cukup lama meskipun kondisi jalan saat itu tidak begitu ramai. Hal ini disebabkan penentuan lama lampu lalulintas menyala yang tidak sesuai sehingga berakibat penumpukan pengguna pada suatu jalur. Jenis persimpangan yang dikaji disini menggunakan urutan jalur pelayanan tetap. Tujuannya adalah tidak membingungkan pengguna dengan urutan yang selalu berubah-ubah. Batasan penelitian ini adalah pada setiap saat hanya terdapat satu lampu lalulintas hijau yang menyala. Penelitian sebelumnya (De Schutter dkk, 1998) telah mengindentifikasi permasalahan ini sebagai kontrol optimum untuk meminimumkan jumlah pengguna yang menunggu atau waktu tunggu. Pada masing-masing lampu lalulintas di setiap jalur terdapat interval lama nyala yang diperbolehkan. Penyelesaian dapat diperoleh menggunakan Extended Linear Complementarity Problem (ELCP). Banyak operasi pada metode ini cukup besar sehingga simulasi tidak dapat dilakukan untuk waktu yang lama. Permasalahan serupa juga dibahas oleh (Hanzalek dkk, 2006) dengan membandingkan Linear Quadratic Regulator (LQR) dan Nonlinear Model Predictive Controller (NMPC). Perbedaan dengan (De Schutter dkk, 1998) pada batasan lama lampu lalulintas menyala. Waktu untuk melayani semua jalur pada satu periode sudah ditetapkan. Dengan memodelkan permasalahan ini menjadi sistem dengan waktu diskrit maka kontrol optimum dapat digunakan untuk meminimumkan rata-rata waktu tunggu. 1

30 Perubahan lampu lalulintas yang menyala adalah event dan lampu lalulintas yang menyala pada masing-masing jalur adalah keadaan. Jelas bahwa jumlah semua keadaan yang mungkin adalah berhingga. Berdasarkan keterangan sebelumnya maka permasalahan ini termasuk sistem event diskrit. Salah satu kegunaan Petri net adalah memodelkan sistem event diskrit seperti pada (Cassandras, 1993). Dalam penelitian ini akan dibangun model Petri net untuk lampu lalulintas yang menyala di persimpangan dengan jumlah jalur sebarang. Metode membangun Petri net disajikan dalam bentuk algoritma. Pembahasan dimulai dengan membangun Petri net untuk mensimulasikan lampu lalulintas yang sederhana. Pada tiap permasalahan disertakan algoritma untuk membangun Petri netnya. Representasi Petri net dalam bentuk matriks incidence merupakan kajian berikutnya. Setelah itu dibahas bagaimana membangun coverability tree dari Petri net. Coverability tree digunakan untuk menganalisis sifat-sifat Petri net. Aspek yang dianalisis meliputi keterbatasan (boundedness), konservasi (conservation) dan coverability keadaan. Pada bagian berikutnya dibahas implementasi dari algoritma yang telah dibahas menggunakan Scilab. Implementasi secara garis besar mencakup simulasi Petri net, analisis Petri net dan membangun Petri net lampu lalulintas. Petri net dibuat terlebih dahulu sebelum melakukan analisis. Pendefinisian Petri net menggunakan Scilab sulit dilakukan karena harus dibuat dalam representasi matriks. Pembuatan Petri net lebih mudah menggunakan Platform Independent Petri net Editor (PIPE) karena menggunakan representasi grafik. Pada penelitian ini dibuat fungsi untuk membaca Petri net yang dibangun menggunakan PIPE agar Petri net tersebut dapat disimulasikan dan dianalisis dengan program yang dibuat menggunakan Scilab. Jika jumlah place dan transisi di Petri net besar maka representasi dalam bentuk grafik menjadi rumit. Pada kasus ini digunakan representasi matriks dari Petri net yang dapat dibuat dengan Scilab. Simulasi perubahan jumlah pengguna pada setiap jalur di persimpangan diimplementasikan menggunakan Scilab. Ada dua pendekatan yang digunakan dalam simulasi ini yaitu kedatangan berdistribusi normal dan kedatangan berdistribusi uniform diskrit (Allen, 2003). Hasil yang diperoleh dari simulasi berupa mean jumlah pengguna dan maksimum jumlah pengguna. Kedua informasi tersebut dapat digunakan untuk menentukan kestabilan sistem. Lama setiap lampu lalulintas menyala dapat diketahui dengan simulasi lampu lalulintas pada beberapa jalur di persimpangan. 2

31 1.2 Rumusan Masalah Permasalahan yang dibahas dalam penelitian ini adalah. 1. Berapa jumlah place pada model Petri net lampu lalulintas di persimpangan dengan jumlah jalur sebarang. 2. Berapa jumlah place pada Petri net lampu lalulintas di persimpangan setelah direduksi. 3. Bagaimana mensimulasikan perubahan jumlah pengguna pada masingmasing jalur tiap waktu. 4. Bagaimana menentukan kestabilan dari model. 1.3 Batasan Masalah Ruang lingkup permasalahan dibatasi sebagai berikut. 1. Lama lampu lalulintas menyala merupakan bilangan bulat positif. 2. Urutan jalur yang dilayani sudah ditetapkan sebelumnya. 3. Pengguna yang dibahas adalah pengguna yang tidak dapat melewati persimpangan ketika lampu lalulintas merah menyala. 1.4 Tujuan dan Manfaat Tujuan yang ingin dicapai dan manfaat yang diperoleh dari penelitian ini sebagai berikut. 1. Memberikan kepastian waktu tunggu kepada pengguna. 2. Mengurangi waktu tunggu di persimpangan. 3. Mengurangi tingkat kecelakaan lalulintas di persimpangan. 4. Mengurangi tingkat kemacetan karena penumpukan kendaraan di persimpangan. 5. Memperlancar arus kendaraan saat melewati persimpangan. 3

32 4

33 BAB 2 KAJIAN PUSTAKA DAN TEORI DASAR Pada bab ini dikaji hal-hal yang berkaitan dengan pemodelan sistem event diskrit menggunakan Petri net. Pembahasan diawali dengan notasi dan definisi yang digunakan. Konsep Petri net bertanda dan ruang keadaan menjadi topik berikutnya. Selanjutnya dibahas salah satu bagian penting yaitu dinamika Petri net. Bagian terakhir adalah analisis Petri net. Analisis Petri net terdiri dari keterbatasan (boundedness), konservasi (conservation) dan coverability keadaan. Ketiga analisis tersebut diperoleh dengan menggunakan coverability tree yang dibangun dari Petri net. 2.1 Notasi dan Definisi Petri net dikembangkan pertama kali oleh C.A. Petri pada awal an. Petri net merupakan salah satu alat untuk memodelkan sistem event diskrit selain menggunakan automata yang telah dikenal sebelumnya. Setiap automata dapat diubah menjadi Petri net. Pada Petri net event berkaitan dengan transisi. Agar suatu event dapat terjadi, beberapa keadaan harus dipenuhi terlebih dahulu. Informasi mengenai event dan keadaan ini masingmasing dinyatakan dengan transisi dan place. Place dapat berfungsi sebagai input atau output suatu transisi. Place sebagai input menyatakan keadaan yang harus dipenuhi agar transisi dapat terjadi. Setelah transisi terjadi maka keadaan akan berubah. Place yang menyatakan keadaan tersebut adalah output dari transisi. Definisi 2.1 (Cassandras, 1993). Petri net adalah 4-tuple (P, T, A, w) dengan P : himpunan berhingga place, P = {p 1, p 2,...,p n }, T : himpunan berhingga transisi, T = {t 1, t 2,...,t m }, A : himpunan arc, A (P T) (T P), w : fungsi bobot, w : A {1, 2, 3,... }. Berdasarkan Definisi 2.1 maka himpunan place dan transisi tidak harus berupa himpunan berhingga melainkan bisa berupa himpunan takhingga 5

34 terhitung (countable sets). Pada hampir semua kasus yang rumit dapat dimodelkan dengan Petri net yang mempunyai place dan transisi berhingga. Petri net dapat digambarkan sebagai graph berarah. Node dari graph berupa place yang diambil dari himpunan place P atau transisi yang diambil dari himpunan transisi T. Pada Petri net graph diperbolehkan menggunakan beberapa arc untuk menghubungkan dua node atau ekivalen dengan memberikan bobot ke setiap arc yang menyatakan jumlah arc. Struktur ini dikenal dengan struktur multigraph. Dalam membahas representasi Petri net secara grafik akan digunakan notasi I(t j ) dan O(t j ) yang masing-masing menyatakan himpunan place input dan output ke transisi t j. Secara matematis definisi tersebut dapat ditulis menjadi persamaan berikut (Cassandras, 1993). I(t j ) = {p i : (p i, t j ) A} O(t j ) = {p i : (t j, p i ) A} (2.1) Notasi yang sama dapat digunakan untuk mendeskripsikan input dan output transisi untuk place p i sebagai berikut. I(p i ) = {t j : (t j, p i ) A} O(p i ) = {t j : (p i, t j ) A} (2.2) Grafik Petri net terdiri dari dua macam node yaitu lingkaran dan garis. Lingkaran menyatakan place sedangkan garis menyatakan transisi. Arc disimbolkan dengan panah yang menghubungkan place dan transisi. Arc yang menghubungkan place p i ke transisi t j berarti p i I(t j ). Jika bobot arc dari place p i ke transisi t j adalah k ditulis w(p i, t j ) = k maka terdapat k arc dari place p i ke transisi t j atau sebuah arc dengan bobot k. p 1 t 1 p 2 Gambar 2.1 Petri net Sederhana Contoh 2.1. Perhatikan Petri net pada Gambar 2.1. Terdapat dua place pada Petri net tersebut yaitu p 1 dan p 2 ditulis P = {p 1, p 2 }. Untuk menyatakan bahwa terdapat sebuah transisi yaitu t 1 maka ditulis T = {t 1 }. Arc dinyatakan dengan pasangan berurutan. Elemen pertama menyatakan asal dan elemen 6

35 kedua menyatakan tujuan misalnya arc dari place p 1 ke transisi t 1 ditulis (p 1, t 1 ) dan (t 1, p 2 ) menyatakan arc dari transisi t 1 ke place p 2. Secara lengkap ditulis A = {(p 1, t 1 ), (t 1, p 2 )}. Bobot arc dari place p 1 ke transisi t 1 adalah dua yaitu w(p 1, t 1 ) = 2 dan bobot dari transisi t 1 ke place p 2 adalah satu yaitu w(t 1, p 2 ) = 1. Pada contoh ini I(t 1 ) = {p 1 } dan O(t 1 ) = {p 2 }. Terlihat pada Contoh 2.1 bahwa bobot arc dari place p 1 ke transisi t 1 adalah 2 dan digambarkan dengan dua buah arc. Bobot arc dari transisi t 1 ke place p 2 adalah satu. Transisi tidak harus mempunyai place input dan place output seperti transisi t 1 pada Gambar 2.1. Kadang transisi tidak mempunyai place input. Ini berarti event yang dinyatakan oleh transisi tersebut tidak membutuhkan kondisi untuk dapat terjadi. Transisi t 2 pada Petri net Contoh 2.2 tidak mempunyai place input. 2 p 1 t 1 p 2 t 2 Gambar 2.2 Petri net dengan Transisi yang Tidak Mempunyai Place Input Berikut merupakan penjelasan dari Petri net pada Gambar 2.2 beserta cara identifikasi dan penulisan place, transisi, arc dan bobotnya. Contoh 2.2. Petri net pada Gambar 2.2 mempunyai dua place dan dua transisi yang masing-masing dapat ditulis P = {p 1, p 2 } dan T = {t 1, t 2 }. Arc dinyatakan dengan pasangan berurutan misalnya arc dari place p 1 ke transisi t 1 dinotasikan dengan (p 1, t 1 ). Jumlah arc pada Petri net tersebut sebanyak 4 yang ditulis A = {(p 1, t 1 ), (t 1, p 2 ), (p 2, t 1 ), (t 2, p 2 )}. Berikut merupakan bobot pada masing-masing arc w(p 1, t 1 ) = 2, w(t 1, p 2 ) = w(p 2, t 1 ) = w(t 2, p 2 ) = 1 (2.3) Terlihat dari Gambar 2.2 bahwa I(t 1 ) = P, yang menyatakan bahwa semua place pada Petri net merupakan input dari transisi t 1. Jelas bahwa himpunan O(t 1 ) = {p 2 } = O(t 2 ) dan I(t 2 ) = karena tidak ada place yang menjadi input dari transisi t 2. 7

36 Kadang berguna untuk membedakan antara Petri net yang pure dan impure. Petri net disebut pure jika tidak ada place yang menjadi input dan output untuk suatu transisi. Jika terdapat place yang menjadi input dan output untuk transisi tertentu maka Petri net dikatakan impure. Definisi 2.2 (Cassandras, 1993). Petri net dikatakan pure jika tidak mempunyai place yang menjadi input sekaligus output untuk suatu transisi. Secara formal ditulis p i P, t j T {(p i, t j ), (t j, p i )} A (2.4) Jelas bahwa Petri net pada Gambar 2.1 adalah pure karena tidak ada place yang menjadi input sekaligus output untuk suatu transisi sedangkan Petri net pada Gambar 2.2 adalah impure, karena p 2 adalah place input dan output untuk transisi t Tanda Petri net dan Ruang Keadaan Transisi pada Petri net menyatakan event pada sistem event diskrit dan place merepresentasikan kondisi agar event dapat terjadi. Diperlukan mekanisme untuk mengindikasikan apakah kondisi telah terpenuhi. Token adalah sesuatu yang diletakkan di place yang menyatakan terpenuhi tidaknya suatu kondisi. Secara grafik token digambarkan dengan dot dan diletakkan di dalam place. Jika jumlah token besar maka dituliskan dengan angka. Definisi 2.3 (Cassandras, 1993). Penanda (marking) x pada Petri net adalah fungsi x : P {0, 1, 2,... } Penanda dinyatakan dengan vektor yang berisi bilangan bulat taknegatif yang menyatakan jumlah token yaitu x = [x(p 1 ), x(p 2 ),...,x(p n )] T. Jumlah elemen x sama dengan banyak place di Petri net. Elemen ke-i pada vektor ini merupakan jumlah token pada place p i, x(p i ) {0, 1, 2,... }. Definisi 2.4 (Cassandras, 1993). Petri net bertanda (marked) adalah 5-tuple (P, T, A, w,x 0 ) dimana (P, T, A, w) adalah Petri net dan x 0 adalah penanda awal 8

37 Selanjutnya Petri net bertanda cukup disebut Petri net. Seperti pemodelan sistem pada umumnya, maka harus didefinisikan keadaan (state) pada Petri net. Keadaan pada Petri net adalah penanda Petri net. Definisi 2.5 (Cassandras, 1993). Keadaan (state) Petri net bertanda adalah x = [x(p 1 ), x(p 2 ),..., x(p n )] T Perhatikan bahwa jumlah token pada place adalah sebarang bilangan bulat taknegatif, tidak harus terbatas (bounded). Secara umum jumlah penanda yang mungkin adalah takhingga. Ruang keadaan (state space) X pada Petri net bertanda dengan n place didefinisikan oleh semua vektor berdimensi n dengan elemen bilangan bulat taknegatif, sehingga X = {0, 1, 2,... } n. Untuk selanjutnya digunakan istilah keadaan dan penanda bergantian. Jika semua keadaan yang diperlukan sudah terpenuhi maka transisi dapat terjadi. Dalam hal ini keadaan merupakan place input dari transisi. Bobot arc dari place input ke transisi menunjukkan jumlah token minimum di place agar transisi enabled. Jika semua place input mempunyai token lebih dari atau sama dengan jumlah token minimum yang dibutuhkan maka transisi enabled. Definisi 2.6 (Cassandras, 1993). Transisi t j T pada Petri net bertanda enabled jika x(p i ) w(p i, t j ), p i I(t j ) (2.5) Gambar 2.3 merupakan contoh transisi yang tidak enabled. Jelas bahwa I(t 1 ) = {p 1 }, x(p 1 ) = 1 dan w(p 1, t 1 ) = 2 seperti yang terlihat pada Gambar 2.3 Transisi t 1 tidak enabled karena 1 = x(p 1 ) < w(p 1, t 1 ) = 2. 2 p 1 t 1 p 2 Gambar 2.3 Contoh Transisi yang Tidak Enabled Transisi t 1 enabled jika jumlah token pada place p 1 lebih dari atau sama dengan 2. Terlihat pada Petri net Gambar 2.4 bahwa x(p 1 ) = 2 sehingga transisi t 1 pada Petri net tersebut enabled. Dari sini dapat disimpulkan agar 9

38 transisi t j enabled maka jumlah token pada place p i paling sedikit sebesar bobot arc yang menghubungkan p i ke t j. Kenyataan ini sesuai dengan definisi transisi enabled yang telah dituliskan sebelumnya. 2 p 1 t 1 p 2 Gambar 2.4 Contoh Transisi yang Enabled Berdasarkan keterangan sebelumnya didesain algoritma untuk menentukan transisi yang enabled pada Petri net. Definisi 2.6 digunakan untuk mencari transisi yang enabled. Seperti terlihat pada Algoritma 2.1 langkah pertama yang dilakukan adalah menginisialisasi variabel En dengan himpunan kosong. Setelah itu pengujian dilakukan untuk setiap transisi di Petri net. Ingat bahwa jumlah transisi di Petri net adalah T. Variabel i menyatakan place dan diinisialisasi dengan nilai 1 karena indeks terkecil dari place adalah 1. Pertidaksamaan x(p i ) w(p i, tuji) diuji untuk 1 i P pada perulangan while. Jika saat keluar dari perulangan ini i P maka x(p i ) < w(p i, tuji) sehingga place p i tidak memenuhi pertidaksamaan. Jika i > P saat keluar dari perulangan maka semua place memenuhi pertidaksamaan tersebut sehingga transisi tuji enabled dan transisi tersebut merupakan elemen dari En yaitu himpunan transisi enabled. Algoritma 2.1 Mencari Transisi Enabled Input: P = {p 1, p 2,...,p n }, T, w,x Output: En /* himpunan transisi enabled */ 1 En /* inisialisasi */ 2 for all tuji T do 3 i 1 4 while x(p i ) w(p i, tuji) and i P do 5 i i end while 7 if i > P then 8 En En {tuji} 9 end if 10 end for Pengujian algoritma dapat dilakukan dengan mengimplementasikan algoritma tersebut dan dilihat waktu komputasinya. Metode pengujian ini tidak efektif karena memerlukan usaha yang besar dan hasil yang diperoleh 10

39 belum tentu benar. Pengujian algoritma yang efektif dilakukan dengan menghitung kompleksitasnya. Kompleksitas algoritma terdiri dari banyak kerja yang dilakukan dan banyak memori yang dipakai. Banyak kerja yang dilakukan suatu algoritma dapat dinyatakan dalam notasi big-oh. Notasi big-oh adalah O. Big-Oh merupakan himpunan fungsi yang didominasi oleh fungsi tertentu. Dalam ilmu komputasi untuk menyatakan bahwa fungsi T(n) anggota dari O(f(n)) tidak dituliskan T(n) O(f(n)) melainkan T(n) = O(f(n)). Berikut merupakan definisi big-oh. Definisi 2.7 (Shaffer, 1998). Diberikan T(n) fungsi tak negatif. Fungsi T(n) adalah anggota himpunan O(f(n)) jika terdapat dua bilangan c dan n 0 sedemikian hingga T(n) c f(n) untuk semua n > n 0. Selanjutnya dibahas bagaimana menggunakan Definisi 2.7 untuk menentukan apakah suatu fungsi mendominasi fungsi yang lain. Disini definisi tersebut digunakan untuk menentukan apakah fungsi n mendominasi 3n + 9 sehingga T(n) = 3n + 9 dan f(n) = n. Misal dipilih c = 4 sehingga akan ditentukan n 0 agar pertidaksamaan 3n + 9 4n dipenuhi untuk setiap n > n 0. Jelas bahwa pertidaksamaan sebelumnya dipenuhi untuk n = 9, 10, 11,... sehingga diperoleh n 0 = 8. Jadi fungsi f(n) = n mendominasi T(n) = 3n + 9 yang ditulis 3n + 9 = O(n). Definisi 2.7 tidak dipenuhi jika untuk setiap c yang mungkin, tidak ada n 0 yang menyebabkan pertidaksamaan dipenuhi. Hal ini dapat diilustrasikan dengan memilih T(n) = n 2 dan f(n) = 3n. Misal dipilih c = 1 maka pertidaksamaan n 2 3n dipenuhi untuk 1 n 3. Secara umum berapapun nilai c yang dipilih maka tidak pertidaksamaan n 2 3cn tidak berlaku untuk n > 3c sehingga dapat disimpulkan fungsi 3n tidak mendominasi n 2. Dalam menghitung banyak kerja yang dilakukan algoritma, harus ditentukan jenis operasi yang dihitung. Operasi yang dihitung adalah operasi utama atau operasi dengan kompleksitas yang besar yaitu operasi yang terdiri dari banyak operasi dasar. Pada umumnya banyak kerja yang dilakukan algoritma tergantung input yang diberikan sehingga terdapat lebih dari satu kemungkinan banyak kerja yang dilakukan. Banyak kerja yang dihitung disini adalah banyak kerja dalam kemungkinan terburuk (worst case). Jenis operasi yang dihitung pada Algoritma 2.1 adalah operasi utama yaitu perbandingan. Langkah berikutnya yang dilakukan adalah menentukan 11

40 input yang menyebabkan banyak kerja Algoritma 2.1 paling besar. Jelas bahwa operasi x(p i ) w(p i, tuji) dilakukan untuk setiap transisi di Petri net yang terlihat pada baris 2. Dalam kemungkinan terburuk, operasi dilakukan sebanyak jumlah place di Petri net yaitu ketika suatu transisi enabled. Berdasarkan keterangan sebelumnya dapat disimpulkan bahwa input yang menyebabkan banyak kerja Algoritma 2.1 paling besar adalah keadaan Petri net dengan semua transisi enabled. Pada kemungkinan terburuk (worst case), banyak kerja algoritma mencari transisi enabled sebanyak P T yang dapat dituliskan W( P, T ) = P T = O( P T ). Faktor yang harus dipertimbangkan dalam kompleksitas algoritma selain banyak kerja yang dilakukan adalah banyak memori (memory) yang dipakai algoritma seperti telah dijelaskan sebelumnya. Banyak memori yang dipakai algoritma merupakan banyak memori yang dipakai variabel tambahan. Variabel tambahan adalah semua variabel dalam algoritma selain variabel input dan output. Jika banyak memori yang dipakai variabel tambahan tetap untuk semua kemungkinan input maka algoritma bekerja di tempat (work in place). Jika banyak memori yang dipakai variabel tambahan tergantung input yang diberikan maka algoritma tidak bekerja di tempat. Algoritma yang baik adalah algoritma yang bekerja di tempat (work in place). Banyak memori yang dipakai Algoritma 2.1 tergantung variabel tambahan sehingga variabel tambahan ditentukan terlebih dahulu. Variabel tambahan pada algoritma menentukan transisi enabled adalah i dan t. Jelas bahwa apapun input yang diberikan banyak memori yang dipakai untuk menyimpan kedua variabel tersebut tetap sehingga Algoritma 2.1 bekerja di tempat. Agar Algoritma 2.1 lebih mudah dipahami maka selanjutnya dibahas proses yang dilakukan oleh algoritma tersebut pada Petri net tertentu. Petri net berikut digunakan sebagai contoh (Cassandras, 1993). p 4 p 1 t 2 t 1 p 2 p 3 t 3 Gambar 2.5 Keadaan Awal Petri net Terdapat 4 place dan 3 transisi pada Petri net di Gambar 2.5 sehingga P = 4 dan T = 3. Himpunan place P mempunyai anggota p 1, p 2, p 3 dan p 4 yang ditulis P = {p 1, p 2, p 3, p 4 }. Himpunan transisi T mempunyai 3 12

41 anggota yaitu t 1, t 2 dan t 3 yang ditulis T = {t 1, t 2, t 3 }. Pada contoh berikut Algoritma 2.1 digunakan untuk menentukan transisi yang enabled saat keadaan awal x 0 = [1, 0, 0, 0] T. Contoh 2.3. Variabel En diinisialisasi pada baris 1. Jumlah transisi pada Petri net sebanyak 3 sehingga T = 3 dan iterasi dilakukan 3 kali. Saat iterasi pertama, variabel i diinisialisasi 1 pada baris 3. Terlihat bahwa x(p 1 ) = 1 = w(p 1, t 1 ) dan 1 = i P = 4 sehingga pernyataan pada baris 4 bernilai benar dan variabel i bernilai 2. Place p 2 tidak mempunyai token dan tidak ada arc dari p 2 ke t 1 menyebabkan x(p 2 ) = 0 = w(p 2, t 1 ) dan 2 = i P = 4 sehingga pernyataan pada while bernilai benar dan variabel i ditambah satu menjadi 3. Perhatikan bahwa jika tidak ada arc dari place p ke t maka w(p, t) = 0 dan ingat jumlah token pada place bilangan bulat tak negatif yaitu x(p) 0 sehingga berapapun nilai x(p) pernyataan x(p) w(p, t) selalu benar. Dengan menggunakan kesimpulan sebelumnya maka untuk i = 3, 4 pernyataan x(p i ) w(p i, t 1 ) dan i P bernilai benar yang menyebabkan nilai variabel i berubah menjadi 5. Jelas bahwa 5 = i P = 4 sehingga pernyataan pada baris 4 bernilai salah dan dilanjutkan ke baris 7. Pernyataan 5 = i > P = 4 bernilai benar sehingga variabel En = {t 1 } setelah menjalankan baris 8. Hal ini menyatakan transisi t 1 enabled. Selanjutnya diproses transisi kedua. Sama dengan sebelumnya yaitu variabel i diisi nilai 1 kemudian menuju ke perulangan while. Tidak ada arc dari p 1 ke t 2 menyebabkan x(p 1 ) w(p 1, t 2 ) dan 1 = i P = 4 bernilai benar dan pernyataan pada baris 5 dikerjakan sehingga nilai variabel i menjadi 2. Terlihat pada Gambar 2.5 bahwa 0 = x(p 2 ) w(p 2, t 2 ) = 1 sehingga pernyataan di while bernilai salah. Kenyataan 2 = i P = 4 menyebabkan kondisi pada baris 7 tidak terpenuhi. Hal ini menunjukkan bahwa transisi t 2 tidak enabled. Transisi yang diproses berikutnya adalah transisi ketiga. Nilai variabel i diinisialisasi 1. Jelas bahwa tidak ada arc dari place p 1 ke t 3 sehingga pernyataan di while bernilai benar dan nilai variabel i berubah menjadi 2. Kenyataan bahwa 0 = x(p 2 ) w(p 2, t 3 ) = 1 mengakibatkan pernyataan pada baris 4 bernilai salah. Variabel En tetap yaitu En = {t 1 } karena 2 = i P = 4. Jadi outputnya adalah En = {t 1 } yang menyatakan bahwa pada keadaan awal terdapat satu transisi yang enabled yaitu t 1. 13

42 Algoritma 2.1 menentukan suatu transisi enabled dengan menguji keberlakuan pertidaksamaan (2.5) untuk semua place di Petri net. Berdasarkan Definisi 2.6 dan keterangan pada contoh sebelumnya diperoleh kesimpulan bahwa penentuan transisi yang enabled dilakukan dengan menguji keberlakuan pertidaksamaan (2.5) untuk setiap place input dari transisi tersebut. Untuk place yang lain pertidaksamaan (2.5) pasti dipenuhi. Diharapkan dengan menggunakan pendekatan ini, banyak kerja yang dilakukan untuk menentukan transisi yang enabled lebih sedikit dibandingkan sebelumnya. Berikut merupakan perubahan pada algoritma sebelumnya agar penentuan transisi enabled dilakukan dengan menguji keberlakuan pertidaksamaan (2.5) untuk setiap place input dari transisi. Algoritma 2.2 Alternatif Penentuan Transisi Enabled Input: T, w,x Output: En /* himpunan transisi enabled */ 1 En /* inisialisasi */ 2 for all tuji T do 3 isenabled true; Masukan I(tuji) 4 for all pm Masukan do 5 if x(pm) < w(pm, tuji) then 6 isenabled false; break 7 end if 8 end for 9 if isenabled then 10 En En {tuji} 11 end if 12 end for Tahap inisialisasi dari Algoritma 2.1 tidak perlu diubah. Perulangan pada baris 2 juga tidak diubah karena perulangan ini bertujuan untuk menguji semua transisi pada Petri net. Variabel i pada Algoritma 2.1 yang berfungsi sebagai indeks place diganti dengan variabel isenabled yang bertipe boolean. Variabel ini bernilai true jika transisi yang diuji enabled dan bernilai false jika transisi yang diuji tidak enabled. Pengujian dilakukan untuk setiap place input dari transisi yang diuji seperti ditunjukkan pada baris 2 di Algoritma 2.2. Jika terdapat place input yang tidak memenuhi pertidaksamaan (2.5), yaitu berlaku x(pm) < w(pm, t) untuk pm I(t) maka variabel isenabled diganti false dan segera keluar dari perulangan untuk place input pada baris 4 dengan perintah break. Diharapkan banyak kerja yang dilakukan Algoritma 2.2 lebih kecil dibandingkan Algoritma

43 Selanjutnya menentukan kompleksitas Algoritma 2.2 yaitu menghitung banyak kerja yang dilakukan dan memori yang dipakai oleh algoritma tersebut. Sebelum menghitung banyak kerja yang dilakukan algoritma, jenis operasi yang dihitung harus ditentukan terlebih dahulu. Jenis operasi yang dihitung sama dengan algoritma sebelumnya yaitu operasi perbandingan. Operasi perbandingan yang dimaksud berada pada baris 5. Berikutnya ditentukan input yang menyebabkan kemungkinan terburuk terjadi. Untuk menguji suatu transisi tuji T maka kemungkinan terburuk (worst case) kerja yang dilakukan sebanyak jumlah place input dari transisi tuji yaitu I(tuji). Hal ini terjadi jika transisi tuji enabled. Algoritma 2.2 menguji semua transisi sehingga input yang menyebabkan banyak kerja yang dilakukan paling besar sama dengan sebelumnya yaitu keadaan Petri net dengan semua transisi enabled. Dengan input ini algoritma tersebut melakukan kerja sebanyak t T I(t) yang ditulis W( A, T) = t T I(t) = O( A ). Jelas bahwa banyak kerja yang dilakukan oleh Algoritma 2.2 lebih kecil atau sama dengan Algoritma 2.1 yaitu t T I(t) P T karena himpunan place input setiap transisi merupakan himpunan bagian dari himpunan place di Petri net yang ditulis I(t) P, t T. Persamaan t T I(t) = P T berlaku jika dan hanya jika himpunan place input dari setiap transisi sama dengan himpunan place yaitu I(t) = P, t T. Untuk menghitung banyak memori yang dipakai Algoritma 2.2, harus ditentukan variabel tambahan dari algoritma tersebut. Ada 3 variabel tambahan dalam Algoritma 2.2 yaitu Masukan, isenabled dan pinput. Variabel isenabled dan pinput memakai memori tetap sedangkan Masukan tergantung jumlah anggota himpunan place input setiap transisi di Petri net. Jadi algoritma ini tidak bekerja di tempat (work in place). Berikut dibahas urutan proses yang dilakukan oleh Algoritma 2.2. Contoh yang digunakan sama dengan sebelumnya yaitu Petri net dengan keadaan awal x 0 = [1, 0, 0, 0] T pada Gambar 2.5. Contoh 2.4. Pada baris 1, variabel En diinisialisasi dengan himpunan kosong. Proses dilanjutkan dengan menguji setiap transisi pada Petri net yang dimulai dengan transisi t 1. Variabel isenabled diinisialisasi dengan true pada baris 3. Jelas bahwa I(t 1 ) = {p 1 } dan x(p 1 ) = 1 = w(p 1, t 1 ) sehingga kondisi pada baris 5 tidak terpenuhi dan menuju ke baris 9. Nilai variabel isenabled tidak berubah yaitu bernilai true sehingga kondisi pada baris 9 terpenuhi dan nilai variabel En berubah menjadi {t 1 }. 15

44 Proses dilanjutkan dengan menguji transisi t 2. Place input dari transisi t 2 adalah p 2 yang ditulis I(t 2 ) = {p 2 }. Kondisi pada baris 5 terpenuhi karena 0 = x(p 2 ) < w(p i, t j ) = 1 sehingga variabel isenabled berubah menjadi false dan keluar dari perulangan ini menuju ke baris 9. Kondisi pada baris ini tidak terpenuhi karena variabel isenabled bernilai false sehingga variabel En tidak berubah. Pengujian terakhir adalah transisi t 3. Place input dari transisi ini adalah p 2 dan p 3 yang ditulis I(t 3 ) = {p 2, p 3 }. Kondisi pada baris 5 dipenuhi untuk place p 2 dan p 3 sehingga place manapun yang dijalankan lebih dahulu kondisi dipenuhi yang menyebabkan variabel isenabled berubah menjadi false dan keluar dari perulangan forall. Hal ini disebabkan 0 = x(p i ) < w(p i, t 3 ) = 1 untuk i = 2, 3. Kondisi pada baris 9 tidak dipenuhi karena variabel isenabled bernilai false. Output dari Algoritma 2.2 sama dengan output Algoritma 2.1 yaitu {t 1 }. Berdasarkan pembahasan sebelumnya maka banyak kerja yang dilakukan oleh Algoritma 2.2 kurang dari atau sama dengan Algoritma 2.1. Jika dilihat dari segi kebutuhan memori maka Algoritma 2.1 membutuhkan memori lebih kecil dibandingkan Algoritma 2.2. Jadi kedua algoritma masing-masing mempunyai kelebihan dan kelemahan. Pemilihan algoritma tergantung kerumitan permasalahan yang ingin diselesaikan. Pada bagian berikutnya dibahas bagaimana mekanisme perubahan keadaan pada Petri net. Mekanisme ini berperan penting dalam proses pemodelan Petri net dan simulasinya. 2.3 Dinamika Petri net Jika Petri net digunakan untuk memodelkan sistem dinamik event diskrit, seharusnya Petri net dilengkapi dengan mekanisme yang mirip dengan transisi keadaan (state transition) pada automata. Mekanisme ini berupa menjalankan token melewati jaringan (net) ketika transisi menjadi enabled dan proses ini mengubah keadaan Petri net. Hanya transisi enabled yang dapat difire. Transisi difire saat event yang dinyatakan oleh transisi terjadi. Berikut ini adalah proses yang terjadi pada pemfirean transisi. Semua token di place input dikurangi/diambil sebanyak bobot arc yang menghubungkannya. Berdasarkan Definisi 2.6 maka 16

45 jumlah token di place input setelah dikurangi adalah bilangan bulat taknegatif. Token di place output ditambah sebanyak bobot arc yang menghubungkannya. Definisi 2.8 (Cassandras, 1993). Fungsi perubahan keadaan pada Petri net bertanda (P, T, A, w,x 0 ) yaitu f : {0, 1, 2,... } n T {0, 1, 2,... } n terdefinisi untuk transisi t j T jika dan hanya jika x(p i ) w(p i, t j ), p i I(t j ) (2.6) Jika f(x, t j ) terdefinisi maka ditulis x = f(x, t j ), dimana x (p i ) = x(p i ) w(p i, t j ) + w(t j, p i ), i = 1, 2,..., n (2.7) Kondisi (2.6) menjamin fungsi perubahan keadaan hanya didefinisikan untuk transisi yang enabled. Fungsi perubahan keadaan didasarkan pada struktur Petri net. Keadaan berikutnya yang didefinisikan pada (2.7) secara eksplisit tergantung dari fungsi bobot pada setiap input dan output pada transisi. Berdasarkan (2.7), jika p i adalah place input untuk transisi t j, maka token pada place p i berkurang sebanyak bobot arc dari p i ke t j. Sebaliknya jika p i adalah place output dari transisi t j maka token pada place p i bertambah sebesar bobot arc dari t j ke p i. Mungkin p i adalah place input dan output dari transisi t j sehingga menurut (2.7) token pada place p i berkurang sebanyak w(p i, t j ) dan bertambah sebanyak w(t j, p i ). Perhatikan bahwa jumlah token pada Petri net bertanda tidak tetap. Jelas dari (2.7) bahwa mungkin w(t j, p i ) > w(p i, t j ) sehingga token yang ditambahkan pada place p i lebih banyak daripada yang diambil ketika transisi t j difire. Secara umum token pada Petri net mungkin habis setelah beberapa kali pemfirean atau jumlahnya bertambah menuju takhingga. 2 p 1 t 1 p 2 Gambar 2.6 Sebelum Transisi t 1 Difire Berikut dibahas proses pemfirean Petri net pada Gambar 2.6 dan keadaan Petri net setelah terjadi pemfirean transisi. 17

46 Contoh 2.5. Inisialisasi jumlah token pada p 1 dan p 2 masing-masing adalah 2 dan 1 sehingga penanda awal Petri net adalah x 0 = [x(p 1 ), x(p 2 )] T = [2, 1] T. Arc dari p 1 ke t 1 mempunyai bobot 2 ditulis w(p 1, t 1 ) = 2. Jelas bahwa x(p 1 ) = 2 w(p 1, t 1 ) sehingga transisi t 1 enabled dan dapat difire. Untuk memfire transisi t 1 dibutuhkan dua token dari place p 1 sehingga token di place tersebut habis dan sebuah token ditambahkan di place p 2. Penanda Petri net berubah menjadi x = [0, 2] T setelah transisi t 1 difire dan bisa ditulis x = f(x 0, t 1 ). Transisi t 1 tidak enabled karena tidak ada token pada place p 1. Pada keadaan ini tidak ada transisi yang enabled karena Petri net pada Gambar 2.6 mempunyai sebuah transisi yaitu t 1. Keadaan dimana tidak ada transisi yang enabled seperti yang terlihat pada Gambar 2.7 disebut keadaan terminal dan Petri net mengalami deadlock. Petri net yang baik seharusnya menghindari terjadinya deadlock. Pembahasan mengenai deadlock secara lebih terperinci dapat dilihat pada bagian analisis Petri net tak berwaktu. Selanjutnya didesain algoritma pemfirean transisi pada Petri net. 2 p 1 t 1 p 2 Gambar 2.7 Sesudah Transisi t 1 Difire Algoritma pemfirean transisi juga dapat disusun dengan menggunakan persamaan (2.7) pada Definisi 2.8. Persamaan (2.7) dijalankan untuk setiap place yang menjadi input atau output dari transisi yang difire. Jumlah token pada place yang lain tidak mengalami perubahan. Proses ini dapat dijelaskan sebagai berikut. Misal tf adalah transisi yang difire dan place pnt bukan place input atau output dari transisi tf yang ditulis pnt / I(tf) O(tf). Jumlah token pada place pnt tidak mengalami perubahan setelah transisi tf difire. Hal ini disebabkan w(pnt, tf) = 0 = w(tf, pnt) sehingga x (pnt) = x(pnt). Dengan menggunakan pendekatan tersebut maka place yang dipengaruhi oleh pemfirean transisi adalah gabungan dari himpunan place input dan himpunan place output transisi yang difire. Pada Algoritma 2.3, himpunan place yang dipengaruhi oleh pemfirean transisi tf dinyatakan dengan Terhubung. 18

47 Berikut merupakan algoritma pemfirean transisi menggunakan pendekatan yang dibahas sebelumnya. Algoritma 2.3 Pemfirean Transisi Input: x, tf T Output: x = f(x) /* keadaan setelah transisi tf difire */ 1 x x; Terhubung I(tf) O(tf) /* inisialisasi */ 2 for all pt Terhubung do 3 x (pt) x(pt) w(pt, tf) + w(tf, pt) 4 end for Selanjutnya dibahas kompleksitas algoritma pemfirean transisi yang terdiri dari banyak kerja yang dilakukan dan banyak memori yang dipakai algoritma tersebut. Jenis operasi yang dihitung adalah penjumlahan dan operasi lain yang selevel misalnya pengurangan. Terlihat pada Algoritma 2.3 bahwa kedua operasi tersebut dilakukan pada baris 3. Perintah pada baris ini dijalankan sebanyak jumlah anggota dari himpunan I(tf) O(tf) dengan tf adalah transisi yang difire. Jelas bahwa gabungan himpunan place input dan himpunan place output dari transisi tf adalah himpunan bagian dari himpunan place P yang ditulis I(tf) O(tf) P sehingga jumlah anggota himpunan tersebut kurang dari atau sama dengan jumlah anggota himpunan place yaitu I(tf) O(tf) P. Dengan menggunakan notasi big-oh, banyak kerja yang dilakukan Algoritma 2.3 dapat ditulis W(tf, P ) = I(tf) O(tf) = O( P ) dengan P menyatakan banyak place di Petri net. Pada algoritma ini variabel tambahan yang digunakan adalah T erhubung dan pt. Banyak memori yang dipakai untuk T erhubung tergantung jumlah place yang terhubung dengan tf sehingga Algoritma 2.3 tidak bekerja di tempat (work in place). Telah dibahas pada Contoh 2.3 bahwa transisi yang enabled adalah t 1. Pada contoh berikut Algoritma 2.3 digunakan untuk mengetahui keadaan setelah transisi t 1 difire. Contoh 2.6. Input Algoritma 2.3 adalah Petri net pada Gambar 2.5 dengan keadaan x = [1, 0, 0, 0] T dan transisi t 1 T. Variabel x diinisialisasi dengan x pada baris 1 sehingga x = [1, 0, 0, 0] T. Terlihat dari Gambar 2.5 bahwa place input dari t 1 adalah p 1 dan place outputnya adalah p 2 dan p 3 yang masing-masing ditulis I(t 1 ) = {p 1 } dan O(t 1 ) = {p 2, p 3 }. Pernyataan pada baris 3 dijalankan yaitu x (p 1 ) = x(p 1 ) w(p 1, t 1 ) + w(t 1, p 1 ) = = 0 dengan variabel pt = p 1 sehingga variabel x menjadi [0, 0, 0, 0] T. Selanjutnya pernyataan dijalankan dua kali masing-masing dengan pt = p 2 dan pt = p 3. 19

48 Untuk pt = p 2 diperoleh x (p 2 ) = x(p 2 ) w(p 2, t 1 ) + w(t 1, p 2 ) = = 1. Dengan cara yang sama diperoleh x (p 3 ) = x(p 3 ) w(p 3, t 1 ) + w(t 1, p 3 ) untuk p i = p 3 sehingga x (p 3 ) = = 1. Jadi keadaan Petri net setelah transisi t 1 difire adalah x = [0, 1, 1, 0] T. Token pada place dan bobot arc ditulis secara ringkas agar penulisan lebih sederhana. Dalam hal ini digunakan notasi vektor. Untuk menyatakan [x(p 1 ), x(p 2 ),..., x(p n )] T ditulis x ( [p 1, p 2,...,p n ] T) dan untuk menyatakan [w(p 1, t j ), w(p 2, t j ),...,w(p n, t j )] T dapat ditulis w ( [p 1, p 2,..., p n ] T, t j ) dengan 1 j m. Pengertian ini dituliskan dalam definisi berikut. Definisi 2.9. Diberikan (P, T, A, w) Petri net. Jika {p 1, p 2,...,p n1} P dan t T maka berlaku x ( [p 1, p 2,...,p n1 ]T) def = [x(p 1 ), x(p 2 ),...,x(p n1 )]T w ( [p 1, p 2,...,p n ]T, t ) (2.8) def = [w(p 1, t), w(p 2, t),...,w(p n, t)]t Untuk memperjelas penggunaan Definisi 2.9, berikut dibahas penggunaan notasi vektor pada permasalahan pemfirean transisi. Tujuan penggunaan notasi vektor adalah mempersingkat penulisan. t 1 t 2 p 1 p 2 p 3 t 3 p 4 Gambar 2.8 Keadaan Awal Petri net Bertanda Pada contoh berikut dibahas pemfirean Petri net pada Gambar 2.8. Disini terdapat dua hal yang penting yaitu proses pemfirean dan penggunaan notasi pada Definisi 2.9. Contoh 2.7. Gambar 2.8 merupakan keadaan awal Petri net sebagai contoh ilustrasi pemfirean transisi dan perubahan keadaan. Place input dari transisi t 1 adalah p 1 sedangkan place outputnya adalah p 2 dan p 3 yang dapat dinotasikan I(t 1 ) = {p 1 } dan O(t 1 ) = {p 2, p 3 }. Place input dari transisi t 2 adalah p 2 20

49 dan p 3 sedangkan p 2 dan p 4 merupakan place outputnya yang dapat ditulis I(t 2 ) = {p 2, p 3 } dan O(t 2 ) = {p 2, p 4 }. Transisi t 3 mempunyai place input p 1, p 3 dan p 4 tetapi tidak mempunyai place output, yaitu I(t 3 ) = {p 1, p 3, p 4 } dan O(t 3 ) =. Keadaan awal Petri net adalah x 0 = [x(p 1 ), x(p 2 ), x(p 3 ), x(p 4 )] T yaitu x 0 = [2, 0, 0, 1] T. Terlihat pada Gambar 2.8 bahwa satu-satunya transisi yang enabled adalah t 1, karena transisi tersebut hanya membutuhkan sebuah token dari place p 1 dan token pada place p 1 berjumlah dua, yaitu x(p 1 ) = 2. Jelas bahwa 2 = x(p 1 ) w(p 1, t 1 ) = 1 sehingga transisi t 1 memenuhi persamaan (2.6). Transisi t 2 tidak enabled karena tidak ada token pada place p 2 dan p 3 yang dapat ditulis 0 = x ( [p 2, p 3 ] T) < w ( ) [p 2, p 3 ] T, t 2 = 1. Notasi 0 dan 1 menyatakan vektor yang semua elemennya masing-masing 0 dan 1. Jumlah elemen pada vektor tergantung kondisi, pada pertidaksamaan tersebut vektor terdiri dari dua elemen. Transisi t 3 tidak enabled karena [2, 0, 1] T = x ( [p 1, p 3, p 4 ] T) w ( ) [p 1, p 3, p 4 ] T, t 3 = 1. Ketika transisi t 1 difire maka sebuah token diambil dari place p 1 dan sebuah token ditambahkan ke place p 2 dan p 3 seperti pada Gambar 2.9. Persamaan (2.7) juga dapat digunakan untuk mengetahui keadaan berikutnya. t 1 p 1 p 2 p 3 t 2 t 3 p 4 Gambar 2.9 Keadaan Petri net Setelah Transisi t 1 Difire Keadaan Petri net menjadi x 1 = 1 seperti terlihat pada Gambar 2.9. Transisi t 1 enabled karena ada satu token di p 1, ditulis x(p 1 ) = 1 = w(p 1, t 1 ). Kondisi x ( [p 2, p 3 ] T) = 1 = w ( ) [p 2, p 3 ] T, t 2 menyebabkan transisi t2 enabled. Pemfirean dapat dilakukan pada transisi t 3 karena terdapat token pada place p 1, p 3 dan p 4, yaitu x ( [p 1, p 3, p 4 ] T) = 1 = w ( ) [p 1, p 3, p 4 ] T, t 3. Jadi pada keadaan ini semua transisi enabled karena semua place sudah terisi token. Selanjutnya misal transisi t 2 difire. Pada setiap place input dari transisi t 2, token dikurangi satu. Dalam hal ini pada place p 2 dan p 3 sehingga kedua place tersebut tidak mempunyai token. Place output dari transisi t 2 adalah p 2 dan p 4. Sebuah token ditambahkan ke place p 2 sehingga place p 2 21

50 kembali mempunyai sebuah token. Ingat bahwa place p 2 adalah place input sekaligus place output dari transisi t 2 yang ditulis p 2 I(t 2 ) O(t 2 ). Selain place p 2, place output dari transisi t 2 adalah place p 4 sehingga pada place tersebut ditambahkan sebuah token. Jumlah token yang berada pada place p 4 bertambah menjadi dua. Keadaan Petri net menjadi x 2 = [1, 1, 0, 2] T yang ditunjukkan oleh Petri net pada Gambar Transisi t 1 tetap enabled karena place p 1 mempunyai sebuah token dan arc yang menghubungkan place p 1 ke transisi t 1 mempunyai bobot satu yang dapat ditulis x(p 1 ) = 1 = w(p 1, t 1 ). Tidak adanya token pada place p 3 menyebabkan transisi t 2 dan t 3 tidak enabled. Hal ini dapat ditulis sebagai [1, 0] T = x ( [p 2, p 3 ] T) w ( [p 2, p 3 ] T, t 2 ) = 1 dan.[1, 0, 2] T = x ( [p 1, p 3, p 4 ] T) w ( [p 1, p 3, p 4 ] T, t 3 ) = 1. Jadi pada keadaan ini satu-satunya transisi yang enabled adalah t 1. t 1 t 2 p 2 p 1 p 3 t 3 p 4 Gambar 2.10 Keadaan Petri net Setelah Transisi t 1 Difire Kemudian t 2 Mari kembali ke keadaan x 1 yaitu Petri net pada Gambar 2.9 dimana semua transisi enabled. Jika sebelumnya transisi yang difire adalah t 1 maka sekarang transisi t 3 difire. Token pada setiap place input dari transisi t 3 dikurangi satu yaitu pada place p 1, p 3 dan p 4. Perhatikan bahwa tidak ada place output dari transisi t 3. Keadaan ini juga dinotasikan dengan x 2 karena pemfirean sudah dilakukan dua kali sejak keadaan x 0. t 1 t 2 p 2 p 3 p 4 p 1 t 3 Gambar 2.11 Keadaan Petri net Setelah Transisi t 1 Difire Kemudian t 3 Keadaan Petri net pada Gambar 2.11 menjadi x 2 = [0, 1, 0, 0] T. Transisi t 1 tidak enabled karena 0 = x(p 1 ) < w(p 1, t 1 ) = 1 yaitu tidak ada token 22

51 pada place p 1. Kondisi [1, 0] T = x ( [p 2, p 3 ] T) w ( ) [p 2, p 3 ] T, t 2 = 1 menyebabkan transisi t 2 tidak enabled. Transisi t 3 juga tidak enabled karena 0 = x ( [p 1, p 3, p 4 ] T) < w ( ) [p 1, p 3, p 4 ] T, t 3 = 1, yaitu semua place input dari t 3 tidak mempunyai token. Jadi semua transisi tidak enabled dengan keadaan x 2 = [0, 1, 0, 0] T. Keadaan dimana Petri net mengalami deadlock disebut keadaan terminal dari Petri net. Urutan pemfirean transisi tidak diberikan pada Petri net. Seperti contoh sebelumnya, pada keadaan x 1 ketiga transisi dapat difire. Tidak adanya data mengenai transisi mana yang difire bukan hal yang mengejutkan karena model sistem event diskrit yang dibahas adalah tanpa waktu (untimed). Pada model Petri net ini tidak ada informasi terjadinya event (transisi). Dengan tidak adanya mekanisme untuk menentukan transisi berikutnya maka harus diteliti setiap kemungkinan urutan pemfirean secara terpisah. Dengan menggunakan definisi yang telah dibahas pada bagian ini, sulit untuk mengimplementasikan Petri net ke dalam program. Pada pembahasan berikutnya dikaji representasi Petri net dalam matriks yang bertujuan memudahkan implementasi Petri net ke program. Representasi dengan matriks dapat digunakan untuk mendesain Petri net dengan jumlah place dan transisi yang besar. Hal ini sulit dilakukan secara visual. 2.4 Representasi Petri net Menggunakan Matriks Pada bagian ini dikaji representasi Petri net dalam notasi matriks. Seperti yang telah dikutip pada bagian sebelumnya, hal ini bertujuan untuk memudahkan dalam implementasi. Petri net dapat direpresentasikan dalam dua matriks yang disebut backward incidence dan forward incidence. Kedua matriks ini masing-masing berukuran n m dengan n adalah jumlah place dan m adalah jumlah transisi. Elemen matriks ini adalah bilangan bulat taknegatif. Matriks backward incidence dan forward incidence masing-masing serupa dengan definisi place input dan output pada persamaan (2.1). Elemen pada matriks backward incidence merupakan bobot arc yang menghubungkan place ke transisi. Jika tidak ada arc yang menghubungkan place ke transisi maka bobot arc diisi nol. Jelas bahwa place ini adalah place input dari transisi. Definisi serupa juga digunakan untuk matriks forward incidence. Bedanya 23

52 elemen pada matriks ini merupakan bobot arc yang menghubungkan transisi ke place sehingga merupakan place output dari transisi. Definisi Matriks backward (forward) incidence yang merepresentasikan Petri net adalah matriks berukuran n m dengan elemen baris ke-i kolom ke-j adalah A b (i, j) def = w(p i, t j ) (A f (i, j) def = w(t j, p i )). Salah satu kegunaan matriks backward incidence adalah menentukan transisi yang enabled. Perhatikan kembali persamaan (2.5), persamaan itu berlaku hanya untuk place input. Jika p i bukan merupakan place input dari transisi t j yaitu p i / I(t j ) maka bobot arc dari place p i ke transisi t j adalah nol karena tidak ada arc yang menghubungkannya, ditulis w(p i, t j ) = 0. Persamaan (2.5) pasti benar karena x(p i ) 0. Jadi persamaan (2.5) berlaku untuk semua place sehingga dapat ditulis dalam notasi vektor berikut. x([p 1,...,p n ] T ) w([p 1,...,p n ] T, t j ) = A b (:, j) (2.9) = A b e j dengan A b (:, j) menyatakan kolom ke-j dari matriks A b dan e j merupakan kolom ke-j matriks identitas berorder m. Terlihat pada persamaan (2.9) transisi t j enabled jika vektor keadaan lebih besar atau sama dengan kolom ke-j dari matriks backward incidence yaitu x A b (:, j). Dengan kata lain penentuan transisi yang enabled dapat dilakukan dengan mencari kolom dari matriks backward incidence yang kurang dari atau sama dengan vektor keadaan. Persamaan (2.9) dapat ditulis lebih ringkas menjadi x A b e j (2.10) Perhatikan persamaan (2.7) yang mendeskripsikan bagaimana tanda pada place berubah ketika suatu transisi difire. Selanjutnya akan diturunkan bentuk persamaan vektor dari (2.7) untuk memperoleh keadaan Petri net berikutnya yang dinotasikan x = x ( [p 1, p 2,..., p n ] T) jika keadaan saat ini adalah x = x ( [p 1, p 2,...,p n ] T) dan kenyataan bahwa suatu transisi t j T telah difire dengan 1 j m. Perhatikan bahwa persamaan (2.7) berlaku untuk semua place di Petri net. Dengan menggunakan notasi vektor yang telah didefinisikan 24

53 sebelumnya maka persamaan (2.7) dapat ditulis kembali menjadi persamaan yang lebih ringkas dan sederhana. x ( [p 1,...,p n ] T) = x ( [p 1,...,p n ] T) w ( [p 1,...,p n ] T, t j ) +w ( tj, [p 1,...,p n ] T) (2.11) Berdasarkan Definisi 2.10 maka w ( [p 1,...,p n ] T, t j ) merupakan kolom ke-j matriks backward incidence yang dinotasikan A b (:, j). Notasi A f (:, j) menyatakan kolom ke-j matriks forward incidence yaitu w ( t j, [p 1,...,p n ] T) pada persamaan (2.11). Dengan menggunakan notasi A f dan A b maka persamaan (2.11) dapat ditulis menjadi x ( [p 1,..., p n ] T) = x ( [p 1,...,p n ] T) A b (:, j) + A f (:, j) = x ( [p 1,...,p n ] T) A b e j + A f e j = x ( [p 1,...,p n ] T) + ( A b + A f ) e j (2.12) = x ( [p 1,...,p n ] T) + A e j dengan e j adalah kolom ke-j dari matriks identitas berorder m dan A = A f A b. Matriks A disebut matriks combined incidence atau matriks incidence. Elemen matriks ini adalah bilangan bulat yang merupakan selisih bobot arc place input dan output yaitu A(i, j) = w(t j, p i ) w(p i, t j ). Terlihat dari persamaan (2.12) bahwa nilai j menentukan indeks transisi yang difire. Dengan menggunakan notasi vektor maka persamaan (2.12) dapat dinyatakan sebagai x = x + A u (2.13) dengan u menyatakan vektor kolom yang mempunyai elemen sebanyak m yaitu diperoleh dari kolom matriks identitas. Contoh 2.8. Petri net yang dibahas disini adalah Petri net pada Gambar 2.6 di Contoh 2.5. Terdapat dua place dan sebuah transisi sehingga n = 2 dan m = 1. Matriks backward incidence dan forward incidence berukuran 2 1 yaitu A b = [2, 0] T dan A f = [0, 1] T. Keadaan awal Petri net dapat ditulis x 0 = [2, 1] T. Berdasarkan persamaan (2.10) maka transisi t 1 enabled karena x 0 A b sehingga transisi t 1 dapat difire. Sebelum memfire transisi t 1 dihitung matriks incidence terlebih dahulu supaya dapat menggunakan persamaan (2.13) untuk menentukan keadaan berikutnya. Matriks incidence merupakan selisih antara forward incidence dan backward incidence yaitu A = A f A b = [0, 1] T [2, 0] T = [ 2, 1] T. Dengan 25

54 menggunakan persamaan (2.13) diperoleh x 1 = [2, 1] T + [ 2, 1] T 1 = [0, 2] T yang sama dengan keadaan Petri net setelah transisi t 1 difire seperti pada Gambar 2.7. Setelah mengetahui proses pencarian transisi yang enabled dan proses pemfirean transisi yang enabled pada Contoh 2.5, berikutnya dikaji Petri net pada Contoh 2.7. Contoh 2.9. Terdapat empat place dan tiga transisi pada Petri net ini sehingga n = 4 dan m = 3. Matriks backward incidence dan forward incidence masing-masing berukuran 4 3 sebagai berikut A b = , A f = (2.14) Keadaan awal Petri net adalah x 0 = [2, 0, 0, 1] T. Transisi t 1 enabled karena x 0 A b (:, 1) sedangkan transisi t 2 dan t 3 tidak enabled karena x 0 A b (:, j) untuk j = 2, 3. Selanjutnya dihitung matriks incidence yang dapat digunakan untuk menentukan keadaan berikutnya A = A f A b = = (2.15) Untuk menentukan keadaan berikutnya, gunakan persamaan (2.13). Transisi yang difire adalah t 1 karena transisi tersebut enabled x 1 = x 0 + A e 1 = = = 1 1 (2.16) Dari persamaan (2.16) diperoleh x 1 = [1, 1, 1, 1] T sama seperti Petri net pada Gambar 2.9. Tidak sulit untuk melihat bahwa x 1 A b (:, j) dengan 1 j 3 sehingga semua transisi enabled. Transisi yang difire berikutnya adalah t 2 26

55 agar urutan transisi yang difire sama dengan Contoh 2.7. Cara yang sama digunakan untuk memperoleh keadaan setelah transisi t 2 difire x 2 = x 1 + A e 2 = = = 1 0 (2.17) Keadaan berikutnya adalah x 2 = [1, 1, 0, 2] T yang sama dengan keadaan Petri net pada Gambar Pada keadaan ini satu-satunya transisi yang enabled adalah t 1 karena x 2 A b (:, 1) dan x 2 A b (:, j) untuk j = 2, 3. Telah diketahui bahwa pada keadaan x 1, semua transisi enabled. Jika sebelumnya transisi yang difire adalah t 2 maka sekarang dipilih transisi yang lain untuk difire yaitu t x 2 = x 1 + A e 2 = = = 1 0 (2.18) Perhatikan bahwa persamaan (2.18) menyatakan keadaan Petri net pada Gambar Pada keadaan ini tidak ada transisi yang enabled karena x 2 A b (:, j) untuk 1 j 3 sehingga Petri net mengalami deadlock. Permasalahan yang akan dikaji berikutnya adalah analisis sistem event diskrit. Aspek yang dianalisis pada sistem event diskrit meliputi keterbatasan (boundedness), liveness, deadlock dan lain-lain. Analisis sistem dapat digunakan untuk menentukan performa sistem event diskrit dan menentukan kestabilan sistem. 2.5 Analisis Model Sistem Event Diskrit Tak Berwaktu Analisis model sistem event diskrit tak berwaktu terdiri dari pengkajian logika dan perilaku kualitatifnya. Saat mendesain sistem event diskrit diberikan spesifikasi yang harus dipenuhi. Spesifikasi berupa menghindari keadaan yang tidak diinginkan atau mencapai keadaan yang diinginkan dalam waktu tertentu. Setelah sistem event diskrit sudah didesain maka sistem harus diverifikasi apakah sudah memenuhi spesifikasi yang diberikan. 27

56 Langkah pertama adalah mengkategorikan beberapa permasalahan yang berhubungan dengan analisis sistem event diskrit. Permasalahan ini berhubungan dengan sistem tanpa memperhatikan representasi yang digunakan misalnya Petri net atau automata. Agar terminologi dan notasi yang digunakan konsisten maka dipilih salah satu representasi sebagai acuan. Pada penelitian ini Petri net digunakan sebagai acuan karena sifatnya yang umum sehingga memudahkan dalam menunjukkan keterbatasan teknik yang dikaji. Sebelum mengkaji permasalahan yang berhubungan dengan analisis sistem event diskrit, terlebih dahulu dibahas teknik analisis yang digunakan. Teknik analisis yang digunakan adalah coverability tree. Beberapa permasalahan dapat dianalisis menggunakan teknik ini meskipun teknik ini juga mempunyai kelemahan Liveness dan Deadlocks Pada kajian sebelumnya sering dijumpai istilah deadlock yang secara mudah berarti keadaan dimana tidak ada transisi yang enabled. Deadlock dapat disebabkan persaingan memperoleh resource. Ketika semua pihak tidak memperoleh resource yang dibutuhkan maka terjadi deadlock. Resource dalam Petri net biasanya dinyatakan dengan token dan pihak yang bersaing memperoleh token adalah transisi. Dengan menggunakan keterangan sebelumnya maka dapat disimpulkan bahwa deadlock terjadi ketika transisi tertentu atau himpunan transisi pada Petri net tidak dapat difire. Transisi yang tidak berhubungan dengan deadlock disebut live. Perhatikan bahwa transisi yang live tidak harus enabled. Istilah liveness dapat diartikan dengan transisi yang mungkin enabled. Idealnya setiap transisi pada Petri net dapat difire setelah beberapa pemfirean. Hal ini menjamin deadlock tidak terjadi. Definisi 2.11 (Cassandras, 1993). Petri net dengan keadaan awal x 0 disebut live jika terdapat beberapa sample path sedemikian hingga selalu ada transisi yang dapat difire untuk setiap keadaan yang dapat dicapai dari x 0. Pengujian liveness dengan menggunakan Definisi 2.11 merupakan pekerjaan yang tidak mudah. Pada beberapa sistem, pengujian liveness tidak bisa dilakukan. Cara mengatasi permasalahan ini yaitu menggunakan klasifikasi liveness. 28

57 Diberikan keadaan awal x 0, berikut merupakan klasifikasi dari liveness suatu transisi di Petri net (Cassandras, 1993). Dead atau L0-live, jika transisi tidak pernah dapat difire dengan keadaan awal ini. L1-live, jika terdapat beberapa urutan pemfirean dari x 0 sedemikian hingga transisi ini dapat difire paling tidak sekali. L2-live, jika transisi dapat difire paling tidak sebanyak k kali dengan k adalah bilangan integer positif. L3-live, jika terdapat takhingga urutan pemfirean dengan pemfirean transisi ini sebanyak takhingga. Live atau L4-live, jika transisi ini L1-live untuk setiap kemungkinan keadaan yang dapat dicapai dari x 0. t 3 t 2 p 1 p 2 t 1 Gambar 2.12 Transisi dengan Liveness Berbeda-beda Pemahaman klasifikasi liveness akan menjadi lebih mudah jika diberikan contoh. Berikut merupakan contoh yang menjelaskan tingkat liveness setiap transisi pada Petri net di Gambar Transisi pada Petri net tersebut akan diklasifikasikan. Contoh Transisi t 2 termasuk dead. Hal ini disebabkan transisi t 2 dapat difire jika terdapat token pada p 1 dan p 2 yang tidak pernah terjadi (jika t 1 difire maka p 2 menerima sebuah token sedangkan p 1 kehilangan tokennya). Transisi t 1 adalah L1-live karena transisi tersebut hanya dapat difire sekali. Jika transisi t 1 difire maka semua transisi menjadi dead pada keadaan tersebut. Transisi t 3 merupakan L3-live karena transisi tersebut dapat difire sebanyak takhingga tetapi transisi itu tidak L4-live karena dapat menjadi dead pada keadaan setelah pemfirean t 1. 29

58 Setelah mengetahui definisi deadlock dan liveness maka pada bagian berikutnya dikaji coverability tree. Seperti yang telah dijelaskan sebelumnya teknik ini dapat digunakan untuk menganalisis performa model dan menentukan kestabilannya Coverability Tree Coverability tree merupakan teknik yang digunakan untuk menyelesaikan beberapa aspek analisis pada sistem event diskrit. Aspek analisis yang dapat diselesaikan dengan menggunakan coverability tree antara lain keterbatasan (boundedness), konservasi (conservation) dan coverability keadaan. Ketiga aspek tersebut dibahas setelah membahas coverability tree. Setiap node pada coverability tree menyatakan keadaan Petri net. Coverability tree dapat dibangun dari Petri net dengan keadaan awal. Keadaan awal Petri net didefinisikan sebagai node root. Anak dari node root merupakan keadaan yang dapat dicapai dari keadaan awal dengan memfire sebuah transisi. Keadaan-keadaan ini dihubungkan ke node root dengan edge. Setiap edge pada coverability tree mempunyai bobot sebuah transisi yaitu transisi yang difire untuk mencapai keadaan tersebut. p 2 p 3 p 1 t 1 t 2 Gambar 2.13 Keadaan Awal Petri net Perhatikan Petri net pada Gambar Terdapat tiga place pada Petri net tersebut yaitu p 1, p 2 dan p 3 sehingga himpunan place P ditulis P = {p 1, p 2, p 3 }. Terlihat dari Gambar 2.13 bahwa Petri net mempunyai 2 transisi yaitu t 1 dan t 2 sehingga himpunan transisi T ditulis T = {t 1, t 2 }. Keadaan awal Petri net adalah x 0 = [1, 1, 0] T. Contoh berikut menjelaskan proses membangun coverability tree dari Petri net di Gambar Contoh Tulis keadaan ini pada coverability tree sebagai root. Satusatunya transisi yang enabled pada keadaan ini adalah t 1. Setelah transisi t 1 difire keadaan Petri net berubah menjadi x 1 = [0, 0, 1] T. Tambahkan pada coverability tree keadaan x 1 sebagai anak dari keadaan awal dan hubungkan dengan anak panah dari x 0 ke x 1. Pada anak panah dituliskan transisi yang 30

59 difire, dalam hal ini adalah t 1. Jelas bahwa pada keadaan x 1 hanya transisi t 2 yang dapat difire. Keadaan menjadi x 2 = [1, 1, 0] T setelah t 2 difire yaitu sama dengan keadaan awal Petri net. Sama dengan sebelumnya, tambahkan keadaan x 2 pada coverability tree sebagai anak dari x 1 dan cantumkan pada anak panah transisi yang difire yaitu t 2. Hasil akhir coverability tree dapat dilihat pada Gambar Coverability tree pada Gambar 2.14 mempunyai 3 node. Banyak keadaan yang berbeda dari coverability tree ada 2 yaitu [1, 1, 0] T dan [0, 0, 1] T. Coverability tree dapat dilihat sebagai diagram perubahan keadaan Petri net yang dapat dijelaskan sebagai berikut. Pemfirean transisi t 1 pada keadaan [1, 1, 0] T menyebabkan keadaan berubah menjadi [0, 0, 1] T. Keadaan [0, 0, 1] T berubah menjadi [1, 1, 0] T setelah transisi t 2 difire. Pada umumnya untuk menggambarkan tree, root terletak di bagian atas dan anak dari node berada di bagian bawah. Mengingat node pada coverability tree merupakan vektor kolom maka posisi root berada di kiri dan anak berada di bagian kanan agar daerah yang dibutuhkan untuk menggambar coverability tree lebih kecil. Semua coverability tree yang dibahas disini menggunakan urutan ini t 1 0 t Gambar 2.14 Coverability Tree untuk Petri net di Gambar 2.13 Pada Contoh 2.11, coverability tree yang dibangun termasuk sederhana karena semua place pada Petri net terbatas (bounded) sehingga banyak keadaan yang dapat dicapai dari keadaan awal adalah berhingga. Coverability tree ini juga disebut reachability tree karena memuat semua keadaan yang mungkin terjadi. Banyak node dan edge pada coverability tree tidak berhingga jika Petri net tidak terbatas (unbounded) yaitu terdapat place yang tidak terbatas. Dengan menggunakan metode membangun coverability tree yang dibahas pada (Cassandras, 1993) dapat dicari representasi hingga dari coverability tree meskipun dengan resiko kehilangan beberapa informasi. 31

60 Selanjutnya dibahas metode membangun coverability tree jika tidak semua place di Petri net terbatas (bounded). p 4 p 1 t 2 t 1 p 2 p 3 t 3 Gambar 2.15 Keadaan Awal Petri net Perhatikan Petri net pada Gambar Terdapat 4 place pada Petri net yaitu p 1, p 2, p 3 dan p 4 sehingga himpunan place P dapat ditulis dengan ekspresi P = {p 1, p 2, p 3, p 4 } t t t t t 3 t Gambar 2.16 Sebagian Coverability Tree Petri net di Gambar 2.15 Proses membuat coverability tree untuk Petri net pada Gambar 2.15 dengan keadaan awal x 0 = [1, 0, 0, 0] T diilustrasikan pada contoh berikut. Contoh Tuliskan keadaan awal Petri net pada coverability tree sebagai root. Jelas bahwa pada keadaan ini hanya transisi t 1 yang enabled. Setelah transisi t 1 difire keadaan Petri net menjadi x 1 = [0, 1, 1, 0] T dan terdapat dua transisi yang dapat difire yaitu t 2 dan t 3. Hal ini dapat digambarkan pada coverability tree dengan menuliskan x 1,2 = [1, 0, 1, 0] T dan x 1,3 = [0, 0, 1, 1] T sebagai anak dari keadaan x 1. Tidak ada transisi yang enabled pada keadaan x 1,3 sehingga keadaan ini tidak mempunyai anak sedangkan keadaan x 1,2 mempunyai sebuah anak yaitu keadaan x 1,2,1 = [0, 1, 2, 0] T yang merupakan keadaan setelah transisi t 1 difire. Pada keadaan x 1,2,1 transisi t 2 dan t 3 32

61 enabled dan jika difire diperoleh keadaan masing-masing x 1,2,1,2 = [1, 0, 2, 0] T dan x 1,2,1,3 = [0, 0, 2, 1] T. Terlihat bahwa jumlah node dan arc coverability tree untuk Petri net pada Gambar 2.15 sebanyak takhingga. Coverability tree untuk Petri net pada Gambar 2.15 dapat dilihat pada Gambar Proses ini sudah cukup untuk mendapatkan pola tree ini. Setiap anak pada bagian atas adalah keadaan terminal dengan sebuah tambahan token pada p 3. Anak yang diperoleh pada bagian bawah mengulang bagian sebelumnya dengan sebuah tambahan token pada p 3. Proses membangun coverability tree tidak pernah selesai karena terdapat takhingga node di coverability tree. Ini adalah contoh coverability tree takhingga yang disebabkan place p 3 tak terbatas (unbounded). Berikut notasi yang digunakan pada (Cassandras, 1993) untuk menjelaskan langkah-langkah yang dilakukan untuk membangun coverability tree dengan jumlah node berhingga. 1. Node root. Ini adalah node pertama dari tree dan merupakan keadaan awal yang diberikan seperti [1, 1, 0] T pada Contoh 2.11 dan [1, 0, 0, 0] T pada Contoh Node terminal. Ini adalah node yang menyatakan keadaan deadlock yaitu tidak ada transisi yang enabled. Sebagai contoh adalah keadaan [0, 0, 1, 1] T dan [0, 0, 2, 1] T pada Gambar Node duplicate. Ini adalah node yang sama dengan node yang sudah ada di tree. Misalnya pada Gambar 2.13, node [1, 1, 0] T yang diperoleh dari pemfirean transisi t 1 t 2 adalah node duplicate dari node root. 4. Hubungan dominasi node. Misalkan notasi x = [x(p 1 ),...,x(p n )] T dan notasi y = [y(p 1 ),..., y(p n )] T menyatakan dua keadaan, yaitu node pada coverability tree. Node x mendominasi y yang dinotasikan x > d y jika kedua kondisi berikut dipenuhi. (a) x(p i ) y(p i ) untuk semua i = 1,..., n (b) x(p i ) > y(p i ) untuk satu atau lebih i = 1,..., n Sebagai contoh pada tree di Gambar 2.16 yaitu keadaan [1, 0, 2, 0] T mendominasi [1, 0, 1, 0] T sehingga dapat ditulis [1, 0, 2, 0] T > d [1, 0, 1, 0] T. Keadaan [1, 0, 2, 0] T tidak mendominasi [0, 1, 1, 0] T. 33

62 5. Simbol ω. Ini menyatakan takhingga yang merepresentasikan penanda place yang unbounded. Simbol ini digunakan ketika terdapat relasi dominasi pada node di coverability tree. Jika x > d y maka nilai x(p i ) diganti ω untuk semua i yang memenuhi x(p i ) > y(p i ). Perhatikan bahwa menambah (mengurangi) token ke (dari) place dengan penanda ω tidak berpengaruh, yaitu ω ±k = ω untuk setiap k = 0, 1, 2,.... Pada Gambar 2.16 berlaku [1, 0, 1, 0] T > d [1, 0, 0, 0] T. Jelas bahwa elemen ketiga dari [1, 0, 1, 0] T lebih besar daripada [1, 0, 0, 0] T sehingga keadaan [1, 0, 1, 0] T berubah menjadi [1, 0, ω, 0] T. Dengan menggunakan notasi dan definisi pada pembahasan sebelumnya maka urutan langkah untuk membangun coverability tree dengan jumlah node berhingga dapat dituliskan sebagai berikut (Cassandras, 1993). Diberikan Petri net (P, T, A, w,x 0 ). 1. Inisialisasi x = x 0 (keadaan awal). 2. Untuk setiap node x, evaluasi nilai fungsi transisi f(x, t j ) untuk semua t j T seperti di bawah ini. (a) Jika f(x, t j ) tidak terdefinisi untuk semua t j T (tidak ada transisi yang enabled pada keadaan x) maka x adalah node terminal. (b) Jika f(x, t j ) terdefinisi untuk satu atau lebih t j T, maka hitung keadaan x sebagai node baru dengan persamaan x = f(x, t j ). Jika terdapat node y pada path dari node root x 0 (termasuk) ke x sedemikian hingga x > d y maka x (p i ) = ω untuk semua p i yang memenuhi x (p i ) > y(p i ). 3. Jika semua node baru merupakan node terminal atau duplicate maka berhenti. Selanjutnya dibahas contoh yang sederhana agar metode membangun coverability tree dengan node berhingga lebih mudah dipahami. Pada contoh ini diilustrasikan proses yang dilakukan dalam membangun coverability tree yang mempunyai node berhingga dengan menggunakan metode yang telah dituliskan. Perhatikan lagi Petri net pada Gambar Langkah pertama yang dilakukan adalah mendefinisikan keadaan awal Petri net sebagai node root. Ingat bahwa keadaan awal Petri net adalah x 0 = [1, 0, 0, 0] T sehingga keadaan tersebut didefinisikan sebagai node root pada coverability tree. 34

63 Node root berada di sebelah kiri pada coverability tree seperti terlihat pada Gambar Proses yang dilakukan berikutnya dibahas pada contoh berikut. Contoh Pada keadaan awal t 1 enabled jadi x = f(x 0, t 1 ) = [0, 1, 1, 0] T. Jika selanjutnya transisi yang difire adalah t 3 maka diperoleh node terminal [0, 0, 1, 1] T. Keadaan [1, 0, 1, 0] T didapatkan jika transisi yang difire bukan t 3 melainkan t 2. Perhatikan bahwa [1, 0, 1, 0] T > d [1, 0, 0, 0] T sehingga berdasarkan langkah 2b keadaan [1, 0, 1, 0] T diganti [1, 0, ω, 0] T. Ketika transisi t 1 kemudian difire maka diperoleh node baru [0, 1, ω, 0] T yang mendominasi [0, 1, 1, 0] T pada path dari root ke [0, 1, ω, 0] T. Simbol ω telah digunakan pada place p 3 sehingga keadaan ini tidak berubah. Keadaan [0, 0, ω, 1] T yang merupakan node terminal diperoleh dengan memfire transisi t 3. Jika transisi t 2 yang difire maka diperoleh node duplicate [1, 0, ω, 0] T. Coverability tree yang lengkap dapat dilihat pada Gambar Terlihat pada Gambar 2.17 bahwa metode tersebut menghasilkan coverability tree dengan jumlah node yang berhingga yaitu sebanyak 7 buah. Notasi ω pada coverability tree menunjukkan node berjumlah takhingga t t t t 1 ω ω 0 t 3 t ω ω 0 Gambar 2.17 Representasi Hingga Coverability Tree di Gambar 2.16 Metode membangun coverability tree akan diubah menjadi algoritma agar dapat diimplementasikan ke bahasa pemrograman. Selanjutnya dibahas desain algoritma membangun coverability tree. Algoritma belum bisa dibuat 35

64 karena belum ada definisi yang jelas mengenai coverability tree. Untuk itu pada bagian berikut didefinisikan coverability tree. Selain itu juga dijelaskan beberapa istilah yang digunakan pada coverability tree seperti node, parent, anak (child) beserta sifat-sifatnya Definisi Coverability Tree Petri net identik dengan coverability tree pada beberapa hal. Node pada Petri net dapat berupa place atau transisi sedangkan node pada coverability tree berupa keadaan (state). Selain pada node perbedaan juga ada pada arc dan bobotnya. Arc Petri net menghubungkan place dengan transisi atau sebaliknya sedangkan arc coverability tree menghubungkan keadaan dan keadaan. Bobot arc Petri net merupakan bilangan bulat tak negatif sedangkan pada coverability tree bobot arc merupakan transisi. Coverability tree dari Petri net (P, T, A, w) dapat dinyatakan dengan 3-tuple yaitu (S, E, v) yang masing-masing menyatakan himpunan keadaan, himpunan edge dan fungsi bobot. Anggota dari himpunan keadaan merupakan n-tuple dengan n adalah jumlah place pada Petri net. Selain berupa bilangan bulat tak negatif, keadaan pada coverability tree juga bisa berupa ω. Untuk membedakan dengan Petri net maka pada coverability tree digunakan istilah edge. Definisi Coverability tree untuk Petri net (P, T, A, w,x 0 ) dinyatakan dengan 4-tuple (S, E, T, v) dimana S : himpunan berhingga keadaan (state), S {ω, 0, 1,... } n, E : himpunan berhingga edge, E S S, T : himpunan berhingga transisi, T = {t 1, t 2,...,t m }, v : fungsi bobot, v : E T. Perhatikan himpunan keadaan pada coverability tree bisa memuat simbol ω. Himpunan transisi pada coverability tree sama dengan himpunan transisi pada Petri net sehingga digunakan simbol yang sama yaitu T. Bobot pada coverability tree adalah transisi yang terletak pada edge. Berikutnya dibahas contoh mengidentifikasi coverability tree dengan menggunakan Definisi Coverability tree yang digunakan sebagai contoh adalah coverability tree pada Gambar

65 Contoh Himpunan S = { [1, 0, 0, 0] T, [0, 1, 1, 0] T, [0, 0, 1, 1] T, [1, 0, ω, 0] T, [0, 1, ω, 0] T, [0, 0, ω, 1] T} adalah himpunan keadaan yang mempunyai 6 elemen sehingga himpunan ini berhingga (finite). Himpunan edge terdiri dari 6 elemen yaitu ( [1, 0, 0, 0] T, [0, 1, 1, 0] T),..., ( [0, 1, ω, 0] T, [1, 0, ω, 0] T). Himpunan T pada coverability tree sama dengan himpunan T pada Petri net. Pada contoh ini T = {t 1, t 2, t 3 }. Fungsi bobotnya dapat ditulis dalam persamaan v ( [1, 0, 0, 0] T, [0, 1, 1, 0] T) = t 1,...,v ( [0, 1, ω, 0] T, [1, 0, ω, 0] T) = t 2. Selanjutnya didesain algoritma untuk membangun coverability tree dari Petri net. Sebelum mengkaji hal tersebut dibahas beberapa istilah yang digunakan pada coverability tree. Istilah ini secara umum juga berlaku pada tree. Beberapa istilah yang sering digunakan misalnya root, anak (child), parent dan sebagainya. Root pada tree merupakan node yang tidak mempunyai parent atau node yang bukan anak dari node yang lain. Pada coverability tree node root menyatakan keadaan awal Petri net. Istilah parent berhubungan dengan istilah anak. Jika node n 1 merupakan parent dari n 2 maka node n 2 merupakan anak dari n 1. Ingat bahwa keadaan pada coverability tree mungkin mempunyai lebih dari satu parent. Hal ini terjadi jika node tersebut merupakan node duplicate. Parent pada coverability tree dapat dilihat sebagai pemetaan dari himpunan keadaan ke himpunan kuasa (power sets) dari himpunan keadaan. Himpunan kuasa dari himpunan keadaan dinotasikan 2 S. Definisi Parent pada coverability tree (S, E, T, v) adalah pemetaan dari himpunan keadaan S ke himpunan kuasa dari S yang ditulis parent : S 2 S. Berikut merupakan contoh penggunaan fungsi parent pada coverability tree. Coverability tree yang digunakan berada pada Gambar Contoh Keadaan [1, 0, 0, 0] T didefinisikan sebagai node root sehingga parent ( [1, 0, 0, 0] T) =. Parent dari keadaan [0, 0, 1, 1] T adalah [0, 1, 1, 0] T ditulis parent ( [0, 0, 1, 1] T) = { [0, 1, 1, 0] T}. Node [1, 0, ω, 0] T adalah node duplicate yang mempunyai dua parent yaitu keadaan [0, 1, ω, 0] T dan [0, 1, 1, 0] T. Hal ini dapat dituliskan parent ( [1, 0, ω, 0] T) = { [0, 1, ω, 0] T, [0, 1, 1, 0] T}. 37

66 Fungsi parent yang didefinisikan sebelumnya dapat diperluas menjadi pencarian parent dari himpunan keadaan. Untuk membedakan dengan fungsi sebelumnya maka fungsi ini disebut parents. Beda dengan fungsi parent terletak pada domain fungsinya. Domain fungsi parents adalah himpunan kuasa dari himpunan keadaan. Parent dari himpunan keadaan adalah gabungan (union) dari parent setiap elemen himpunan tersebut. Misalkan X = {x 1,x 2,...,x n } adalah himpunan keadaan maka parents(x) def = parent(x 1 ) parent(x 2 ) parent(x n ) = x X parent(x) (2.19) Selanjutnya dibahas contoh menentukan parent dari himpunan keadaan dengan fungsi parents. Perhatikan kembali Contoh Contoh Pada contoh itu diperoleh parent ( [0, 0, 1, 1] T) = { [0, 1, 1, 0] T} dan parent ( [1, 0, ω, 0] T) = { [0, 1, ω, 0] T, [0, 1, 1, 0] T}. Parent dari himpunan X = { [0, 0, 1, 1] T, [1, 0, ω, 0] T} dapat ditentukan dengan cara berikut. parents(x) = parent ( [0, 0, 1, 1] T) parent ( [1, 0, ω, 0] T) = { [0, 1, 1, 0] T} { [0, 1, ω, 0] T, [0, 1, 1, 0] T} = { [0, 1, ω, 0] T, [0, 1, 1, 0] T} (2.20) Terlihat pada persamaan (2.20) bahwa parent dari X sama dengan parent dari [1, 0, ω, 0] T. Hal ini disebabkan parent ( [0, 0, 1, 1] T) parent ( [1, 0, ω, 0] T). Setelah mendefinisikan coverability tree beserta beberapa hal yang berkaitan selanjutnya didesain algoritma membangun coverability tree dari Petri net berdasarkan metode yang telah dibahas pada bagian sebelumnya. Dalam menyusun algoritma, metode akan dibagi menjadi beberapa bagian agar lebih sederhana sehingga lebih mudah dipahami. Berikut merupakan bagian-bagian dari metode membangun coverability tree. Menentukan parent bertingkat. Menguji hubungan dominasi. Mencari keberadaan node duplicate. 38

67 Selanjutnya dibahas penyusunan algoritma untuk menentukan parent bertingkat. Hasil dari algoritma ini akan dipakai sebagai input pada algoritma pengujian hubungan dominasi Menentukan parent bertingkat Pada metode untuk membangun coverability tree terdapat langkah mencari node yang didominasi yang berada diantara node ini dengan node root. Untuk itu sebelum mendesain algoritma untuk menentukan node yang didominasi, harus didesain terlebih dahulu prosedur untuk membentuk himpunan node dari node ini hingga node root. Prosedur ini membutuhkan definisi fungsi parent dan perluasannya yang telah dibahas pada bagian sebelumnya. Idenya dengan mengumpulkan node yang menjadi parent dari node ini. Ditambah dengan node yang menjadi parents dari himpunan parent node ini. Proses ini diulang terus-menerus hingga semua node yang menjadi parent bertingkat sudah dihimpun. Metode seperti ini dapat mengakibatkan perulangan takhingga (infinite loop) yaitu jika terdapat node yang sama node ini dan berada pada jalur diantara node ini dengan node root. Untuk mengatasi hal ini, node yang sudah pernah diproses (mencari parent) harus disimpan. Node yang diproses berikutnya haruslah node yang baru. Algoritma 2.4 Himpunan Parent Bertingkat Input: x Output: Prt /* himpunan parent bertingkat */ 1 Prt {x}; Temp parent(x) /* inisialisasi */ 2 while Temp do 3 Temp Temp Prt 4 Prt Prt Temp; Temp parents(temp) 5 end while 6 Prt Prt {x} Himpunan Temp berisi node yang akan diproses dan himpunan Prt berisi node yang telah diproses. Perintah Temp Temp Prt bertujuan menghindari terjadinya perulangan tak hingga. Selanjutnya ditentukan kompleksitas Algoritma 2.4 dengan menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai algoritma tersebut. Sebelum menghitung banyak kerja yang dilakukan harus ditentukan jenis operasi yang dihitung terlebih dahulu. Jenis operasi yang dihitung pada algoritma ini adalah mencari parent dari satu atau lebih keadaan karena operasi ini terdiri dari banyak operasi 39

68 dasar. Pada Algoritma 2.4, operasi ini dinyatakan dengan pemanggilan fungsi parent atau parents. Langkah yang dilakukan berikutnya adalah menentukan input yang menyebabkan banyak kerja yang dilakukan Algoritma 2.4 paling besar yaitu pada saat kemungkinan terburuk (worst case). Terdapat beberapa kondisi yang harus dipenuhi agar banyak kerja algoritma tersebut paling besar. Kondisi pertama adalah input coverability tree yang tidak memuat node duplicate sehingga pada setiap saat diperoleh satu keadaan baru yaitu variabel T emp mempunyai 1 anggota. Kondisi kedua adalah setiap node maksimum mempunyai 1 anak. Jelas bahwa terdapat 1 node yang tidak mempunyai anak. Kondisi terakhir adalah node yang tidak mempunyai anak digunakan sebagai input untuk Algoritma 2.4. Jika ketiga kondisi dipenuhi maka banyak kerja yang dilakukan algoritma sama dengan jumlah anggota himpunan keadaan yaitu S yang ditulis W( S ) = S = O( S ). Variabel tambahan pada Algoritma 2.4 adalah T emp. Memori yang dipakai oleh variabel ini tergantung jumlah anggotanya. Jumlah anggota himpunan Temp bermacam-macam yaitu 1 Temp r sehingga banyak memori yang dipakai juga berubah-ubah tergantung input yang diberikan. Jadi Algoritma 2.4 tidak bekerja di tempat (work in place). Untuk memperjelas proses yang dilakukan oleh Algoritma 2.4, contoh berikut membahas bagaimana menentukan parent bertingkat. Contoh Perhatikan coverability tree pada Gambar Himpunan parent bertingkat dari node [0, 0, 1, 1] T dapat dicari dengan Algoritma 2.4. Pada baris 1, variabel Prt diinisialisasi { [0, 0, 1, 1] T} dan Temp adalah parent dari node [0, 0, 1, 1] T yaitu { [0, 1, 1, 0] T}. Kondisi pada baris 2 dipenuhi karena Temp = { [0, 1, 1, 0] T}. Proses dilanjutkan ke baris 3. Kenyataan Temp Prt = menyebabkan nilai variabel Temp tidak berubah setelah menjalankan baris 3. Baris 4 mengubah Prt menjadi { [0, 0, 1, 1] T, [0, 1, 1, 0] T} dan variabel Temp menjadi parent dari [0, 1, 1, 0] T yaitu { [1, 0, 0, 0] T} sehingga pernyataan pada baris 2 bernilai benar. Dengan menggunakan alasan yang sama dengan sebelumnya maka variabel T emp tidak berubah setelah menjalankan baris 3. Variabel Prt menjadi { [0, 0, 1, 1] T, [0, 1, 1, 0] T, [1, 0, 0, 0] T} dan variabel Temp bernilai karena node [1, 0, 0, 0] T adalah node root dan tidak termasuk node duplicate. Hal ini menyebabkan pernyataan pada baris 2 tidak dipenuhi dan menuju ke baris 6. Nilai variabel P rt pada saat ini adalah { [0, 1, 1, 0] T, [1, 0, 0, 0] T} yang merupakan output dari Algoritma

69 Kebetulan pada Contoh 2.17 semua node yang diproses tidak termasuk node duplicate sehingga hasil yang diperoleh sesuai. Jika terdapat node duplicate saat proses pembentukan himpunan parent maka hasil yang diperoleh oleh Algoritma 2.4 tidak selalu benar seperti diperlihatkan oleh contoh berikut. Contoh Coverability tree yang digunakan pada contoh ini sama dengan coverability tree yang digunakan pada Contoh Disini node yang digunakan sebagai input Algoritma 2.4 termasuk node duplicate yaitu [1, 0, ω, 0] T. Pada saat inisialisasi variabel Prt bernilai { [1, 0, ω, 0] T} dan Temp bernilai { [0, 1, ω, 0] T, [0, 1, 1, 0] T} yang merupakan parent dari [1, 0, ω, 0] T. Jelas bahwa T emp sehingga kondisi pada baris 2 dipenuhi. Dengan alasan yang sama dengan contoh sebelumnya maka variabel Temp tidak berubah. Variabel Prt menjadi { [1, 0, ω, 0] T, [0, 1, ω, 0] T, [0, 1, 1, 0] T}. Nilai variabel Temp menjadi { [1, 0, 0, 0] T, [1, 0, ω, 0] T} sesudah menjalankan semua perintah pada baris 4 sehingga kondisi pada baris 2 terpenuhi. Sesudah menjalankan baris 3 nilai variabel Temp menjadi { [1, 0, 0, 0] T}. Pada baris 4, variabel Prt bernilai { [1, 0, ω, 0] T, [0, 1, ω, 0] T, [0, 1, 1, 0] T, [1, 0, 0, 0] T} dan variabel Temp bernilai. Fakta ini menyebabkan kondisi pada baris 2 tidak dipenuhi dan dilanjutkan ke baris 6. Variabel Prt menjadi { [0, 1, ω, 0] T, [0, 1, 1, 0] T, [1, 0, 0, 0] T} yang menjadi output Algoritma 2.4. Terlihat pada Contoh 2.18 bahwa Algoritma 2.4 menghasilkan himpunan parent bertingkat yang sama untuk keadaan yang sama meskipun node berbeda. Pada metode untuk membangun coverability tree yang dicari adalah jalur dari suatu node ke root. Jalur ini bersifat unik (unique) artinya untuk setiap node yang berbeda jalur yang dihasilkan juga berbeda meskipun keadaannya sama. Hal ini berawal dari Definisi 2.12 tentang coverability tree. Keadaan pada coverability tree didefinisikan sebagai himpunan. Salah satu sifat himpunan adalah setiap elemennya berbeda sehingga tidak dapat mengakomodasi adanya node duplicate. Fakta ini menyebabkan elemen himpunan keadaan tidak menyatakan node pada coverability tree atau dengan kata lain jumlah elemen himpunan keadaan tidak selalu sama dengan jumlah node pada coverability tree. Selanjutnya didefinisikan suatu list yang menyatakan node-node pada coverability tree. Elemen yang disimpan pada list tidak harus berbeda. Notasi 41

70 yang digunakan untuk menuliskan variabel list sama dengan vektor karena pada dasarnya list serupa dengan vektor baris. Selain himpunan keadaan, fungsi bobot juga harus didefinisikan kembali. Pendefinisian ulang dilakukan karena fungsi bobot sulit dituliskan dalam bentuk algoritma. Berdasarkan Definisi 2.12, setiap edge mempunyai bobot sebuah transisi. Transisi yang berfungsi sebagai bobot ini digabungkan ke pasangan berurutan yang menyatakan edge sehingga setiap edge dinyatakan sebagai 3-tuple. Elemen pertama dan kedua sama dengan Definisi 2.12 dan elemen ketiga merupakan transisi yang menjadi bobot edge. Berdasarkan pembahasan sebelumnya maka coverability tree dapat ditulis menjadi definisi berikut. Definisi Coverability tree untuk Petri net (P, T, A, w,x 0 ) dinyatakan dengan 3-tuple (S, Ev, T) dimana S : list node, S = [S i ] dengan S i {ω, 0, 1,... } P untuk 1 i r, Ev : himpunan berhingga edge beserta bobotnya, Ev {1,..., r} 2 T, T : himpunan berhingga transisi, T = {t 1, t 2,...,t m }, Berikut dibahas proses mengidentifikasi masing-masing tuple pada Definisi Perhatikan coverability tree pada Gambar Contoh Pada coverability tree tersebut terdapat 7 node sehingga list S = [S 1, S 2,...,S 7 ]. Masing-masing elemen dari list S adalah S 1 = [1, 0, 0, 0] T, S 2 = [0, 1, 1, 0] T, S 3 = [1, 0, ω, 0] T, S 4 = [0, 1, ω, 0] T, S 5 = [1, 0, ω, 0] T, S 6 = [0, 0, ω, 1] T dan S 7 = [0, 0, 1, 1] T. Edge pada coverability tree di Gambar 2.17 yaitu (1, 2, t 1 ), (2, 3, t 2 ), (3, 4, t 1 ), (4, 5, t 2 ), (1, 2, t 1 ), (4, 6, t 3 ), (2, 7, t 3 ). Himpunan transisi T sama dengan pada Definisi 2.12 yaitu T = {t 1, t 2, t 3 }. Definisi parent tergantung coverability tree sehingga jika definisi coverability tree diubah, definisi parent harus disesuaikan. Penyesuaian ini harus dilakukan karena terdapat perbedaan antara coverability tree di Definisi 2.12 dan 2.14 yaitu Definisi 2.12 menghimpun keadaan sedangkan Definisi 2.14 menghimpun node. Oleh karena itu pada Definisi 2.12, fungsi parent menentukan parent dari keadaan sedangkan di Definisi 2.14, fungsi parent menentukan parent dari node. Node root tidak mempunyai parent. Untuk itu didefinisikan parent dari node root adalah 0 (nol). 42

71 Definisi Parent pada coverability tree (S, Ev, T) adalah pemetaan dari {1, 2,..., r} ke {0, 1,..., r} dengan r adalah jumlah elemen dari list S. Satusatunya node yang tidak mempunyai parent adalah node root sehingga jika S i adalah node root dengan 1 i r maka satu-satunya yang dipetakan ke 0 adalah i. Perhatikan lagi Contoh 2.19 yang membahas coverability tree pada Gambar Pada contoh tersebut dibahas bagaimana menentukan himpunan edge beserta bobot transisinya yang dinotasikan Ev di Definisi Contoh berikut mengkaji bagaimana menggunakan definisi sebelumnya untuk menuliskan fungsi parent pada himpunan Ev. Contoh Jelas bahwa S 1 adalah node root sehingga parent memetakan 1 ke 0 yang dapat ditulis parent(1) = 0. Untuk node yang lain masing-masing dapat dituliskan sebagai berikut parent(2) = 1, parent(3) = 2, parent(4) = 3, parent(5) = 4, parent(2) = 1, parent(6) = 4, parent(7) = 2. Setelah mendefinisikan pemetaan parent yang sesuai untuk coverability tree pada Definisi 2.14 maka selanjutnya didesain algoritma menentukan node-node yang menjadi parent bertingkat dari node tertentu. Algoritma ini menggunakan pemetaan parent yang telah didefinisikan sebelumnya. Nodenode ini dapat ditentukan dengan mencari parent dari node tertentu. Proses ini diulang hingga mencapai node root. Algoritma 2.5 Modifikasi Parent Bertingkat Input: idnode Output: Prt /* list parent bertingkat */ 1 idparent parent(idnode); Prt [ ] /* inisialisasi */ 2 while idparent 0 do 3 Prt [Prt, idparent] 4 idparent parent(idparent) 5 end while Input Algoritma 2.5 adalah idnode. Variabel ini adalah indeks dari node yang digunakan sebagai input sehingga 1 idnode S. Jika yang diinputkan adalah indeks dari node root maka algoritma tersebut menghasilkan 43

72 [ ] yang berarti node root tidak mempunyai parent. Hasil ini sesuai dengan Definisi Pada baris 1 variabel idparent diinisialisasi dengan parent dari idnode dan Prt dengan list kosong yang dinotasikan [ ]. Kondisi pada baris 2 bernilai benar selama belum mencapai node root dengan kata lain perulangan tersebut dilakukan hingga mencapai node root. Ada dua hal yang dilakukan di dalam perulangan yaitu menyimpan idparent yang baru ke list Prt pada baris 3 dan mengupdate variabel idparent pada baris 4. Selanjutnya ditentukan kompleksitas algoritma modifikasi parent bertingkat. Pertama dihitung banyak kerja yang dilakukan oleh algoritma tersebut. Jenis operasi yang dihitung mirip dengan sebelumnya yaitu penentuan parent dari sebuah node. Terdapat 2 kondisi yang menyebabkan banyak kerja Algoritma 2.5 paling besar yaitu setiap node maksimum mempunyai 1 anak dan node yang dipilih sebagai input adalah node yang tidak mempunyai anak. Jelas bahwa terdapat 1 node yang tidak mempunyai anak pada coverability tree. Jika kedua kondisi tersebut dipenuhi maka banyak kerja yang dilakukan oleh Algoritma 2.5 sebanyak jumlah node di coverability tree yaitu S ditulis W( S ) = S = O( S ). Variabel idparent merupakan satu-satunya variabel tambahan pada Algoritma 2.5. Nilai yang disimpan variabel menyatakan indeks node pada coverability tree sehingga variabel ini bertipe integer. Jelas bahwa banyak memori yang dipakai variabel tambahan tetap yaitu tidak tergantung input yang diberikan sehingga Algoritma 2.5 bekerja di tempat (work in place). Jadi algoritma ini lebih baik dibandingkan Algoritma 2.4 dalam hal kebutuhan memori. Contoh berikut mengilustrasikan proses yang dilakukan oleh Algoritma 2.5 untuk menentukan parent bertingkat suatu node di coverability tree. Perhatikan coverability tree pada Gambar Contoh Input Algoritma 2.5 sama dengan input pada Contoh Untuk yang pertama, pilih [1, 0, ω, 0] T sebelah kiri yang dinotasikan S 3 sebagai input sehingga variabel idnode bernilai 3. Pada tahap inisialisasi, variabel idparent bernilai 2 dan Prt bernilai [ ]. Kondisi pada baris 2 dipenuhi sehingga perulangan dilakukan. Variabel Prt dan idparent masing-masing diupdate menjadi [2] dan 1. Nilai variabel idparent menjadi 1 dan kondisi while masih dipenuhi. Variabel Prt berubah menjadi [2, 1] setelah melaksanakan perintah pada baris 3 dan variabel idparent menjadi 0 setelah melakukan perintah pada baris 4. Kondisi pada baris 2 tidak terpenuhi karena variabel idparent bernilai 0. Output dari algoritma ini untuk input 3 adalah [2, 1]. 44

73 Dengan menggunakan cara yang serupa dengan sebelumnya, maka output dari algoritma tersebut dapat dicari jika inputnya adalah 5. Jelas bahwa keadaan yang dinyatakan oleh keduanya adalah sama yaitu S 3 = S 5. Output dari Algoritma 2.5 adalah [4, 3, 2, 1]. Dari Contoh 2.21, dapat disimpulkan meskipun keadaan sama, tidak menjamin Algoritma 2.5 menghasilkan output yang sama. Setelah penentuan parent bertingkat telah selesai dikaji dilanjutkan dengan menguji hubungan dominasi antar node pada coverability tree Menguji hubungan dominasi Pada bagian ini dibahas desain algoritma untuk menentukan apakah suatu keadaan mendominasi keadaan yang lain. Pertama akan ditentukan input dan output dari algoritma ini. Input algoritma ini berupa dua buah keadaan misalnya max dan min. Outputnya adalah himpunan indeks dengan keadaan max lebih dari keadaan min jika terdapat hubungan dominasi dan himpunan kosong jika tidak terdapat hubungan dominasi. Hubungan dominasi yang diuji dalam algoritma ini berlaku satu arah, yaitu apakah keadaan max mendominasi keadaan min. Untuk arah sebaliknya tidak diuji. Algoritma 2.6 Pengujian Dominasi Input: max, min dengan max = min Output: Dom /* himpunan indeks dengan elemen yang lebih besar */ 1 Dom ; i 1 /* inisialisasi */ 2 while max i min i and i max do 3 if max i > min i then 4 Dom Dom {i} 5 end if 6 i i end while 8 if i max then 9 Dom 10 end if Proses ini dilakukan dengan membandingkan setiap elemen keadaan max dan keadaan min. Jika terdapat elemen di keadaan max yang lebih kecil dari elemen di keadaan min maka tidak ada hubungan dominasi. Jika semua elemen di keadaan max sama dengan keadaan min juga tidak ada hubungan 45

74 dominasi. Jika terdapat beberapa elemen di keadaan max yang lebih besar dari keadaan min dan elemen di keadaan max yang lain sama dengan keadaan min maka terdapat hubungan dominasi dan indeks dengan elemen keadaan max lebih besar dari keadaan min merupakan output algoritma ini. Selanjutnya ditentukan kompleksitas algoritma pengujian dominasi yang terdiri dari menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai oleh algoritma ini. Sebelum menghitung banyak kerja, jenis operasi yang dihitung harus ditentukan terlebih dahulu. Jenis operasi yang dihitung adalah perbandingan karena operasi itu menjadi bagian utama algoritma ini. Operasi perbandingan yang dihitung berada pada baris 2 dan 3 pada Algoritma 2.6. Kemungkinan terburuk (worst case) terjadi jika keadaan max mendominasi min. Kerja yang dilakukan oleh Algoritma 2.6 pada kondisi itu sebanyak jumlah place pada Petri net yaitu max. Jadi pada kemungkinan terburuk (worst case), banyak kerja yang dilakukan adalah W( max ) = max = O( max ). Banyak memori yang dipakai oleh Algoritma 2.6 tergantung variabel tambahan pada algoritma tersebut. Satu-satunya variabel tambahan adalah i yang bertipe integer. Jelas bahwa banyak memori yang dipakai oleh variabel i tetap sehingga algoritma ini bekerja di tempat (work in place). Proses yang dilakukan oleh Algoritma 2.6 dapat dilihat pada contoh berikut. Pada contoh ini digunakan coverability tree pada Gambar Algoritma 2.6 digunakan untuk menentukan apakah keadaan [1, 0, 2, 0] T mendominasi keadaan [1, 0, 1, 0] T. Contoh Input Algoritma 2.6 adalah variabel max = [1, 0, 2, 0] T dan min = [1, 0, 1, 0] T. Baris 1 menginisialisasi Dom dengan himpunan kosong. Variabel i diinisialisasi dengan 1 di baris 1. Jelas bahwa max 1 = 1 = min 1 dan 1 = i max = 4 sehingga pernyataan pada baris 2 bernilai benar. Variabel Dom tetap bernilai karena max 1 min 1. Setelah itu dilanjutkan ke baris 6 sehingga nilai variabel i menjadi 2. Proses pada iterasi kedua serupa dengan iterasi pertama. Pada iterasi ketiga, yaitu saat i = 3 kondisi max 3 > min 3 dipenuhi sehingga variabel Dom menjadi {3} setelah melaksanakan baris 4. Proses pada iterasi keempat sama dengan iterasi pertama dan kedua. Output dari Algoritma 2.6 adalah Dom = {3} yang menyatakan bahwa max = [1, 0, 2, 0] T mendominasi min = [1, 0, 1, 0] T karena pada elemen ketiga max lebih dari min ditulis max 3 > min 3. 46

75 Untuk lebih memperjelas proses yang dilakukan oleh Algoritma 2.6 maka berikut diberikan contoh dua keadaan yang tidak mempunyai hubungan dominasi. Algoritma 2.6 digunakan untuk menentukan eksistensi hubungan dominasi antara keadaan [0, 0, 1, 1] T dan keadaan [0, 1, 1, 0] T pada coverability tree di Gambar Contoh Input Algoritma 2.6 adalah dua buah keadaan yaitu keadaan max = [0, 0, 1, 1] T dan min = [0, 1, 1, 0] T. Variabel Dom dan i masing-masing diinisialisasi dengan dan 1. Pernyataan max 1 min 1 bernilai benar karena max 1 = 0 = min 1. Jelas bahwa i max karena i = 1 dan max = 4 sehingga proses dilanjutkan ke baris 3. Kondisi pada baris 3 tidak dipenuhi sehingga nilai variabel i ditambah satu menjadi 2. Kenyataan bahwa max 2 = 0 dan min 2 = 1 menyebabkan pernyataan max 2 min 2 bernilai salah dan kondisi pada baris 2 tidak dipenuhi. Selanjutnya menuju ke baris 8. Kondisi pada baris 8 dipenuhi karena i = 2 dan max = 4 sehingga diisikan pada variabel Dom. Akhirnya Algoritma 2.6 menghasilkan. Algoritma 2.5 dapat diperluas agar dapat digunakan untuk membangun coverability tree. Algoritma yang diperluas digunakan untuk menentukan hubungan dominasi antara node tertentu dengan sederetan node. Sederetan node ini merupakan deretan node yang menjadi parent bertingkat pada metode membangun coverability tree. Algoritma 2.5 digunakan untuk mengetahui adanya hubungan dominasi antara node tertentu dengan setiap node pada deretan node. Jika terdapat hubungan dominasi maka Algoritma 2.5 menghasilkan himpunan indeks yang didominasi dan jika tidak maka menghasilkan himpunan kosong. Gabungan (union) dari semua himpunan indeks yang didominasi merupakan output yang dihasilkan oleh algoritma yang diperluas yaitu Algoritma 2.7. Algoritma 2.7 Pengujian Sederetan Dominasi Input: max, Prt Output: Ind /* gabungan himpunan indeks yang didominasi */ 1 Ind /* inisialisasi */ 2 for all pm Prt do 3 Ind Ind Algoritma 2.6 (max, pm) 4 end for Selanjutnya ditentukan kompleksitas algoritma pengujian sederetan dominasi dengan menghitung banyak kerja yang dilakukan dan banyak memori 47

76 yang dipakai oleh algoritma tersebut. Sebelum menghitung banyak kerja yang dilakukan, jenis operasi yang dihitung harus ditentukan terlebih dahulu. Jenis operasi yang dihitung sama dengan Algoritma 2.6 yaitu perbandingan karena algoritma ini merupakan perluasan dari Algoritma 2.6. Input yang menyebabkan banyak kerja algoritma ini paling besar yaitu semua keadaan di Prt didominasi oleh max. Pada kondisi ini, kerja yang dilakukan oleh Algoritma 2.7 sebanyak Prt max. Jadi saat kemungkinan terburuk terjadi algoritma ini melakukan kerja W( Prt, max ) = Prt max = O( Prt max ). Banyak memori yang dipakai tergantung variabel tambahan yang digunakan pada Algoritma 2.7. Variabel px merupakan satu-satunya variabel tambahan pada algoritma tersebut. Banyak memori yang dipakai oleh variabel px tidak tergantung input yang diberikan sehingga Algoritma 2.7 bekerja di tempat (work in place). Perhatikan node [1, 0, 1, 0] T pada coverability tree di Gambar Contoh berikut mengilustrasikan Algoritma 2.7 dengan max = [1, 0, 1, 0] T dan Prt = [ [0, 1, 1, 0] T, [1, 0, 0, 0] T] merupakan input. Contoh Baris 1 menginisialisasi variabel Ind dengan himpunan kosong kemudian menuju ke perulangan. Algoritma 2.6 dijalankan dengan input pm = [0, 1, 1, 0] T dan max = [1, 0, 1, 0] T yang menghasilkan sebagai output karena [1, 0, 1, 0] T tidak mendominasi [0, 1, 1, 0] T. Nilai variabel Ind tetap kemudian dilanjutkan ke baris 2 untuk keadaan berikutnya. Algoritma 2.6 dijalankan lagi dengan max = [1, 0, 1, 0] T dan pm = [1, 0, 0, 0] T yang menghasilkan {3} karena x mendominasi pm dan x 3 > pm 3. Nilai variabel Ind menjadi {3} yang menjadi output algoritma ini sehingga pada coverability tree di Gambar 2.17, indeks ketiga dari node ini diubah menjadi ω. Jika variabel max diubah menjadi [0, 0, 1, 1] T dan variabel Prt tetap maka Algoritma 2.7 menghasilkan sebagai output karena semua node di Prt tidak didominasi oleh node max. Proses yang dilakukan serupa dengan bagian sebelumnya. Terlihat pada contoh sebelumnya bahwa Algoritma 2.7 merupakan perluasan dari Algoritma 2.6. Algoritma 2.7 digunakan untuk menguji apakah node tertentu mendominasi beberapa node. Hal ini diperlukan untuk dalam metode pembentukan coverability tree, yaitu pengujian hubungan dominasi antara node tertentu dan deretan node yang menjadi parent bertingkat dari node tersebut. 48

77 Mencari Keberadaan Node Duplicate Permasalahan berikutnya yang harus diselesaikan adalah mencari keberadaan node duplicate pada coverability tree. Untuk menyelesaikan permasalahan ini maka disusun algoritma pencarian. Ingat bahwa unsur yang dicari pada proses ini adalah keadaan sehingga dibutuhkan algoritma untuk membandingkan keadaan. Ide penyusunan algoritma ini sama dengan pencarian sekuensial (sequential search) yaitu mencari elemen yang berbeda. Jika elemen yang berbeda ditemukan maka keadaan tidak sama. Keadaan sama jika tidak ditemukan elemen yang berbeda. Input algoritma untuk membandingkan keadaan adalah dua keadaan yang dinyatakan dengan vektor. Output algoritma ini adalah variabel issama yang bertipe boolean. Pada Algoritma 2.8, variabel x dan y menyatakan dua keadaan yang dibandingkan. Jelas bahwa jumlah elemen pada kedua keadaan ini harus sama yaitu x = y. Pada baris 1, variabel issama yang digunakan sebagai output diberikan nilai false. Perulangan dilakukan pada baris 2 selama belum ditemukan elemen yang berbeda yaitu selama x i = y i. Nilai variabel i dicek pada baris 5, jika tidak ditemukan elemen yang berbeda yaitu i > x maka variabel issama bernilai true yang menyatakan keadaan x sama dengan y. Jika ditemukan elemen yang berbeda maka i < x sehingga tidak memenuhi kondisi pada if dan variabel issama tetap bernilai false. Algoritma 2.8 Perbandingan Keadaan Input: x,y dengan x = y Output: issama /* bernilai boolean */ 1 issama false; i 1 /* inisialisasi */ 2 while i x and x i = y i do 3 i i end while 5 if i > x then 6 issama true 7 end if Selanjutnya ditentukan kompleksitas algoritma perbandingan keadaan dengan menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai oleh algoritma tersebut. Jenis operasi yang dihitung harus ditentukan terlebih dahulu sebelum menghitung banyak kerja yang dilakukan. Operasi yang dihitung adalah perbandingan pada baris 2 karena operasi ini adalah pekerjaan utama yang dilakukan oleh Algoritma 2.8. Perulangan while pada baris 2 dikerjakan selama elemen pada keadaan x sama dengan y sehingga 49

78 jumlah perulangan paling besar terjadi ketika semua elemen di x sama dengan y yaitu x i = y i untuk 1 i x. Pada kondisi ini operasi perbandingan dilakukan sebanyak jumlah elemen pada keadaan x yaitu x. Jadi banyak kerja yang dilakukan Algoritma 2.8 pada kemungkinan terburuk (worst case) adalah W( x ) = x = O( x ). Banyak memori yang dipakai oleh Algoritma 2.8 tergantung banyak memori yang digunakan variabel tambahan pada Algoritma 2.8. Variabel i yang bertipe integer merupakan satu-satunya variabel tambahan pada algoritma perbandingan keadaan. Jelas bahwa banyak memori yang dipakai oleh variabel i tetap yaitu tidak tergantung input sehingga Algoritma 2.8 bekerja di tempat (work in place). Contoh berikut mengilustrasikan proses yang terjadi saat menjalankan Algoritma 2.8 jika keadaan x tidak sama dengan y yaitu x = [1, 0, 1, 0] T dan y = [1, 0, 0, 0] T. Contoh Pada baris 1, variabel issama bernilai false dan variabel i bernilai 1. Kondisi di while dipenuhi karena 1 = i x = 4 dan x 1 = 1 = y 1. Nilai variabel i ditambah 1 sehingga menjadi 2. Pernyataan pada baris 2 dipenuhi karena 2 = i x = 4 dan x 2 = 0 = y 2. Variabel i bernilai 3 setelah menjalankan perintah pada baris 3. Pada saat ini, kondisi pada while tidak dipenuhi karena 1 = x 3 y 3 = 0. Kenyataan 3 = i x = 4 menyebabkan kondisi pada baris 5 tidak dipenuhi sehingga variabel issama tetap bernilai false. Hal ini menunjukkan bahwa keadaan x = [1, 0, 1, 0] T dan y = [1, 0, 0, 0] T tidak sama. Jika keadaan yang diinputkan adalah sama misalnya x maka perulangan pada baris 2 bernilai benar untuk 1 i 4. Pada saat variabel i bernilai 5, kondisi pada while tidak dipenuhi karena 5 = i x = 4. Kondisi pada if dipenuhi karena 5 = i > x = 4 sehingga nilai variabel issama berubah menjadi true. Hasil ini menunjukkan kedua keadaan sama. Setelah menyusun algoritma membandingkan keadaan berikutnya disusun algoritma pencarian pada tree. Untuk melakukan pencarian elemen pada tree, biasanya dibutuhkan algoritma pencarian rekursif seperti algoritma Breadth First Search atau Depth First Search. Node-node coverability tree disimpan pada list S sehingga pencarian dilakukan pada list S. Untuk melakukan pencarian elemen pada list dapat digunakan algoritma pencarian yang 50

79 sederhana yaitu pencarian secara sekuensial (sequential search). Prinsip yang digunakan pada algoritma ini mudah dipahami. Elemen yang dicari dibandingkan dengan semua elemen pada list. Jika pada list terdapat elemen yang dicari maka algoritma berhenti dan menghasilkan true. Jika tidak terdapat elemen yang dicari pada list maka algoritma berhenti dan menghasilkan false. Pada algoritma ini pencarian dimulai dari elemen dengan indeks terendah menuju ke indeks yang lebih besar. Indeks paling besar sama dengan jumlah elemen yang disimpan di list. Input algoritma ini adalah list dan elemen yang dicari. Output algoritma ini bertipe boolean. Variabel ketemu bernilai boolean sehingga variabel tersebut bernilai true atau false. Jika ketemu bernilai true maka x S dan jika ketemu bernilai false maka x / S. Pada tahap inisialisasi variabel ketemu dan i masing-masing diberikan nilai true dan 1. Untuk membandingkan dua keadaan digunakan Algoritma 2.8 yang telah disusun sebelumnya. Perulangan pada baris 2 dilakukan sebanyak S kecuali terdapat S i = x dengan i S. Dengan kata lain perulangan dikerjakan hingga x ditemukan atau perulangan dilakukan untuk semua elemen S jika x tidak berada di S. Jika i > S saat keluar dari perulangan maka dapat disimpulkan bahwa S i x untuk 1 i S atau x / S sehingga variabel ketemu diganti menjadi false. Algoritma ini mempunyai urutan perintah yang sama dengan Algoritma 2.8 karena konsep yang digunakan oleh kedua algoritma tersebut sama yaitu pencarian sekuensial (sequential search). Algoritma 2.9 Pencarian Node Input: S,x Output: ketemu /* bernilai boolean */ 1 ketemu true; i 1 /* inisialisasi */ 2 while i S and not Algoritma 2.8 (S i,x) do 3 i i end while 5 if i > S then 6 ketemu false 7 end if Berikutnya dibahas kompleksitas algoritma pencarian node yang terdiri dari banyak kerja yang dilakukan dan banyak memori yang dipakai oleh algoritma tersebut. Sebelum menghitung banyak kerja yang dilakukan, jenis operasi yang dihitung harus ditentukan terlebih dahulu. Jenis operasi yang dihitung pada algoritma ini sama dengan Algoritma 2.8 yaitu operasi perban- 51

80 dingan. Operasi perbandingan yang dihitung yaitu pada saat menjalankan Algoritma 2.8 yang terletak pada baris 2. Perulangan pada baris ini dilakukan hingga diperoleh keadaan di S yang sama dengan x atau hingga diperoleh kesimpulan bahwa tidak ada keadaan di S yang sama dengan x. Kondisi yang terakhir menyebabkan banyak kerja yang dilakukan paling besar yaitu menjalankan Algoritma 2.8 sebanyak jumlah keadaan di S yang dinotasikan S. Jadi pada kemungkinan terburuk (worst case), banyak kerja yang dilakukan oleh algoritma pencarian node adalah W( S, x ) = S x = O( S x ). Variabel tambahan harus ditentukan terlebih dahulu sebelum menghitung banyak memori yang dipakai Algoritma 2.9. Pada algoritma pencarian node terdapat sebuah variabel tambahan yaitu i yang bertipe integer. Jelas bahwa banyak memori yang digunakan variabel i tetap dan tidak tergantung input yang diberikan sehingga Algoritma 2.9 bekerja di tempat (work in place). Contoh berikut mengilustrasikan proses yang dilakukan oleh Algoritma 2.9 ketika tidak ada elemen di S yang sama dengan x. Contoh Misal input Algoritma 2.9 adalah keadaan x = [0, 1, ω, 0] T dan list S = [ [1, 0, 0, 0] T, [0, 1, 1, 0] T, [1, 0, ω, 0] T]. Pada tahap inisialisasi variabel ketemu dan i masing-masing diberikan nilai true dan 1. Kondisi di baris 2 dipenuhi karena 1 = i S = 3 dan [1, 0, 0, 0] T = S 1 x = [0, 1, ω, 0] T keduanya dipenuhi. Setelah menjalankan baris 3 nilai variabel i berubah menjadi 2. Jelas bahwa [0, 1, 1, 0] T = S 2 x = [0, 1, ω, 0] T sehingga kondisi pada while dipenuhi dan nilai variabel i ditambah satu menjadi 3. Kondisi pada baris 2 kembali dipenuhi karena [1, 0, ω, 0] T = S 3 x = [0, 1, ω, 0] T dan 3 = i S = 3 kemudian dilanjutkan menuju baris 3. Variabel i menjadi 4 yang menyebabkan kondisi pada while tidak dipenuhi karena 4 = i S = 3. Kondisi pada baris 5 dipenuhi karena 4 = i > S = 3 sehingga nilai variabel ketemu diubah menjadi false. Output algoritma ini adalah false yang menunjukkan tidak ada elemen di S yang sama dengan x yang ditulis x / S. Ketika tidak ada elemen di S yang sama dengan x maka perulangan dilakukan sebanyak jumlah elemen S. Jika x S maka perulangan dilakukan hingga ditemukan elemen pada S yang sama dengan x yang ditulis S i = x dengan 1 i S. Contoh berikut mengilustrasikan kasus x S. Input Algoritma 2.9 adalah S = [ [1, 0, 0, 0] T, [0, 1, 1, 0] T, [1, 0, ω, 0] T, [0, 1, ω, 0] T] dan x = [1, 0, ω, 0] T. 52

81 Contoh Pada baris 1 variabel ketemu dan i masing-masing diinisialisasi true dan 1. Nilai variabel i menjadi 3 karena S j x untuk j = 1, 2. Saat variabel i = 3 berlaku S 3 = [1, 0, ω, 0] T = x sehingga kondisi pada baris 2 tidak dipenuhi dan menuju ke baris 5. Kondisi di baris ini juga tidak dipenuhi karena 3 = i S = 4 sehingga output dari algoritma ini adalah true. Output dari Algoritma 2.9 adalah true atau false. Hal ini sesuai dengan permasalahan yaitu menguji apakah suatu node termasuk node duplicate. Indeks node yang menjadi duplicate pada coverability tree tidak harus diketahui karena tidak diperlukan pada proses berikutnya. Setelah mendesain ketiga permasalahan yaitu menentukan parent bertingkat, menguji hubungan dominasi dan mencari keberadaan node duplicate selanjutnya dibahas desain algoritma utama. Algoritma ini merupakan bentuk lain dari metode membangun coverability tree yang mempunyai node berhingga. Jelas bahwa input algoritma ini adalah Petri net dengan keadaan awal Membangun Coverability Tree Salah satu cara membangun tree dengan menggunakan algoritma rekursif. Prinsip pemanggilan algoritma rekursif menggunakan prinsip Last In First Out. Hal ini berarti algoritma yang dipanggil terakhir kali berada di atas. Algoritma yang sedang dijalankan terletak di paling atas. Algoritma yang berada di bawahnya akan dijalankan jika semua algoritma yang berada di atasnya sudah selesai. Dari keterangan ini dapat disimpulkan bahwa algoritma rekursif selesai jika algoritma yang pertama kali dijalankan sudah selesai. Kegunaan algoritma rekursif yang lain yaitu dapat digunakan untuk pencarian elemen pada tree. Tanpa menggunakan algoritma rekursif, hal ini sulit dilakukan karena bentuk tree yang bermacam-macam. Keuntungan menggunakan algoritma rekursif adalah waktu komputasi yang cepat sedangkan kerugiannya adalah algoritma rekursif pada umumnya membutuhkan memori yang besar. Langkah pertama yang dilakukan oleh Algoritma 2.10 adalah menjalankan Algoritma 2.5. Algoritma 2.5 bertujuan untuk mencari deretan node yang menjadi parent bertingkat. Pengujian hubungan dominasi pada deretan node yang menjadi parent bertingkat dilakukan di baris 2 dengan menjalankan Algoritma 2.7. Algoritma 2.7 menghasilkan himpunan indeks yang terdapat hubungan dominasi. Elemen yang berada pada posisi ini diberikan nilai ω seperti terlihat pada baris 3. 53

82 Kondisi pada if bertujuan untuk mengetahui apakah node ini termasuk node duplicate. Jika node ini termasuk node duplicate maka proses tidak dilanjutkan yang dinyatakan dengan perintah return di baris 6. Perintah pada baris 8 mengupdate variabel S dan Ev. Langkah berikutnya adalah mencari transisi yang enabled dengan menjalankan Algoritma 2.2 di baris 9. Algoritma ini dijalankan kembali untuk setiap keadaan yang diperoleh dengan memfire transisi yang enabled seperti terlihat pada baris 12. Algoritma 2.10 Membangun Coverability Tree Input: P, T, w, Sbaru, idparent, idtran,s, Ev Output: S, Ev 1 Prt [idparent, Algoritma 2.5 (idparent)] /* parent bertingkat */ 2 Ind Algoritma 2.7 (Sbaru,S(Prt)) /* deretan dominasi */ 3 Sbaru(Ind) ω /* jika terdapat hubungan dominasi */ 4 if Algoritma 2.9 (S, Sbaru) then 5 S [S, Sbaru]; Ev Ev ( S, idparent, T idtran ) 6 return /* node ini termasuk duplicate */ 7 end if 8 S [S, Sbaru]; idbaru S ; Ev Ev (idbaru, idparent, T idtran ) 9 En Algoritma 2.2 (P, T, w, Sbaru) /* cari transisi enabled */ 10 for all tf En do 11 Sanak Algoritma 2.3 (Sbaru, tf) /* pemfirean transisi tf */ 12 [S, Ev] Algoritma 2.10 (P, T, w, Sanak, idbaru, j,s, Ev) 13 /* ini adalah bagian rekursif */ 14 end for Pada bagian berikutnya ditentukan kompleksitas algoritma membangun coverability tree. Dalam menentukan kompleksitas algoritma ada dua hal yang dihitung yaitu banyak kerja yang dilakukan dan banyak memori yang dipakai algoritma tersebut. Sebelum menghitung banyak kerja, jenis operasi harus ditentukan terlebih dahulu. Pada Algoritma 2.10 terdapat 3 macam operasi yang dilakukan yaitu mencari parent, perbandingan dan penjumlahan. Pertama dihitung banyak kerja untuk operasi mencari parent. Operasi ini dilakukan Algoritma 2.5. Berdasarkan hasil pada bagian sebelumnya maka kondisi yang menyebabkan banyak kerja algoritma ini paling besar adalah semua node menjadi parent bertingkat dari node ini. Pada kondisi tersebut kerja yang dilakukan Algoritma 2.5 sebanyak jumlah node pada coverability tree. Jika coverability tree yang dibangun mempunyai Sa node maka banyak kerja yang dilakukan adalah Sa i=1 i = 1 Sa ( Sa + 1) sehingga dapat ditulis 2 W( Sa ) = 1 2 Sa Sa = 2 O( Sa 2 ). 54

83 Jenis operasi yang dihitung selanjutnya adalah perbandingan. Operasi ini dilakukan Algoritma 2.7, 2.9 dan 2.2. Banyak kerja yang dilakukan oleh Algoritma 2.7 paling besar ketika semua keadaan di S(Prt) didominasi oleh Sbaru. Pada kondisi ini Algoritma 2.7 bekerja sebanyak S(Prt) x. Jadi banyak kerja yang dilakukan adalah x Sa i=1 i = 1 x Sa ( Sa + 1) 2 dengan Sa menyatakan jumlah node pada coverability tree. Selanjutnya dihitung banyak kerja yang dilakukan Algoritma 2.9. Dengan menggunakan hasil sebelumnya maka banyak kerja yang dilakukan Algoritma 2.9 paling besar ketika keadaan Sbaru tidak berada di S yaitu Sbaru / S. Pada kondisi ini Algoritma 2.9 bekerja sebanyak S x. Jadi banyak kerja yang dilakukan algoritma ini sama dengan Algoritma 2.7. Operasi perbandingan juga dilakukan di Algoritma 2.2. Kondisi yang menyebabkan banyak kerja yang dilakukan algoritma ini paling besar adalah semua transisi enabled atau pertidaksamaan tidak dipenuhi untuk place input yang diuji terakhir. Pada kondisi ini banyak kerja yang dilakukan Algoritma 2.2 sebanyak jumlah anggota himpunan place input dari setiap transisi di Petri net yaitu t T I(t). Banyak kerja yang dilakukan algoritma ini adalah Sa t T I(t). Jadi banyak kerja perbandingan yang dilakukan oleh Algoritma 2.10 dapat dituliskan dalam persamaan berikut. W( Sa, x, T, A ) = 2 ( ) 1 x Sa ( Sa + 1) + Sa I(t) 2 t T = x Sa ( Sa + 1) + Sa I(t) t T = x Sa 2 + x Sa + Sa I(t) t T (2.21) = O( x Sa 2 + Sa A ) Banyak kerja yang dilakukan algoritma membangun coverability tree dapat disederhanakan dengan menggunakan asumsi A x Sa. Keberlakuan asumsi ini dapat dihubungkan dengan jumlah place, jumlah transisi dan jumlah arc pada Petri net. Ingat bahwa jumlah arc pada Petri net kurang dari atau sama dengan dua kali perkalian jumlah place dan transisi yaitu A 2( P T ) karena A (P T) (T P). Dengan menggunakan hasil ini maka asumsi A x Sa dipenuhi jika banyak node di coverability tree lebih besar atau sama dengan dua kali jumlah transisi di Petri net yang ditulis Sa 2 T. Jika asumsi ini dipenuhi maka banyak kerja yang dilakukan dapat ditulis W( x, Sa ) = O( x Sa 2 ). 55

84 Operasi yang dihitung berikutnya adalah penjumlahan. Operasi ini dilakukan Algoritma 2.3. Banyak kerja yang dilakukan algoritma ini pada kemungkinan terburuk (worst case) sebanyak jumlah anggota dari gabungan (union) himpunan place input dan output transisi yang difire yaitu I(tf) O(tf) dengan tf menyatakan transisi yang difire. Jika Sa menyatakan jumlah node pada coverability tree maka jelas bahwa pemfirean dilakukan sebanyak Sa 1. Jadi banyak kerja yang dilakukan Algoritma 2.10 adalah (max t T I(t) O(t) )( Sa 1) yang dapat ditulis W( x, Sa ) = O( x Sa ). Banyak memori yang dipakai algoritma membangun coverability tree tergantung input yang diberikan karena algoritma ini termasuk rekursif. Jadi Algoritma 2.10 tidak bekerja di tempat (work in place). Terlihat bahwa Algoritma 2.10 merupakan algoritma rekursif karena algoritma tersebut menjalankan dirinya sendiri pada baris 12. Ilustrasi proses yang dilakukan oleh algoritma rekursif membingungkan karena algoritma yang sama dijalankan berkali-kali. Untuk itu pada contoh berikut disertakan gambar dengan tujuan lebih mudah dipahami. Pada contoh ini Algoritma 2.10 digunakan untuk membangun coverability tree pada Gambar Contoh Untuk membangun coverability tree Petri net di Gambar 2.15, input Algoritma 2.10 adalah Sbaru = [1, 0, 0, 0] T, idparent = 0, idtran = 0, S = [ ], Ev = dan P, T, w diambil dari definisi Petri net. Variabel Sbaru merupakan keadaan awal Petri net. Jelas bahwa node ini adalah root sehingga tidak punya parent sehingga dipilih idparent = 0 = idtran. Variabel S dan Ev masing-masing mempunyai nilai [ ] dan yang menyatakan bahwa belum ada node dan edge pada coverability tree. S b = [1, 0, 0, 0] T idparent = 0 idtran = 0 Gambar 2.18 Input Algoritma 2.10 adalah idparent = 0 dan idtran = 0 Dalam menjelaskan algoritma membangun coverability tree, algoritma tersebut digambarkan dengan kotak yang didalamnya terdapat tiga parameter, yaitu Sbaru, idparent dan idtran. Pemilihan ketiga parameter ini dilatarbelakangi nilai mereka yang berbeda dalam setiap pemanggilan algoritma. Nilai variabel yang lain bisa sama, misalnya P, T, w selalu bernilai sama pada 56

85 setiap pemanggilan dan variabel S, Ev dapat bernilai sama pada beberapa pemanggilan. Gambar 2.18 menunjukkan algoritma membangun coverability tree dijalankan. Pada baris 1, variabel Prt bernilai [ ]. Belum ada node pada coverability tree sehingga variabel Ind bernilai setelah pemanggilan Algoritma 2.7. Jelas bahwa variabel Sbaru tidak berubah berdasarkan keterangan sebelumnya. Kondisi pada baris 4 tidak dipenuhi karena S = [ ] dan menuju ke baris 8. Nilai ketiga variabel tersebut masing-masing berubah menjadi idbaru = 1, Ev = {(1, 0, 0)} dan S = [ [1, 0, 0, 0] T]. Pada keadaan ini ada sebuah transisi yang enabled yaitu t 1 sehingga En = {t 1 }. Variabel Sanak merupakan keadaan setelah transisi t 1 difire sehingga Sanak = [0, 1, 1, 0] T. Algoritma 2.10 dijalankan dengan input Sbaru = [0, 1, 1, 0] T, idparent = 1, idtran = 1 seperti ditunjukkan oleh Gambar Terlihat pada Gambar 2.19 bahwa algoritma kedua berada di atas algoritma pertama. Hal ini menunjukkan algoritma kedua dijalankan terlebih dahulu. Proses algoritma pertama dilanjutkan ketika algoritma yang dipanggil sudah selesai. Hal ini dapat dideskripsikan sebagai berikut. Jika algoritma kedua sudah selesai maka gambar kotak dihapus sehingga algoritma pertama berada di atas. Ingat bahwa algoritma yang dijalankan adalah algoritma yang berada di atas. S b = [1, 0, 0, 0] T idparent = 0 idtran = 0 S b = [0, 1, 1, 0] T idparent = 1 idtran = 1 Gambar 2.19 Input Algoritma 2.10 adalah idparent = 1 dan idtran = 1 Variabel Prt bernilai [1] pada baris 1 karena satu-satunya parent dari node ini adalah node root dengan indeks 1. Output Algoritma 2.7 adalah karena node root tidak didominasi oleh [0, 1, 1, 0] T sehingga variabel Ind bernilai. Perintah pada baris 3 tidak mengubah nilai variabel Sbaru. Kondisi pada baris 4 tidak dipenuhi karena Sbaru / S. Perintah pada baris 8 mengubah variabel S menjadi [ [1, 0, 0, 0] T, [0, 1, 1, 0] T] dan variabel Ev menjadi {(1, 0, 0), (2, 1, 1)} serta variabel idbaru bernilai 2. Pada keadaan [0, 1, 1, 0] T 57

86 terdapat dua transisi yang enabled yaitu t 2 dan t 3 sehingga En = {t 2, t 3 }. Diasumsikan perulangan pada baris 10 dimulai dengan nilai j yang paling kecil. Keadaan yang diperoleh setelah transisi t 2 difire adalah [1, 0, 1, 0] T. Kemudian Algoritma 2.10 dijalankan dengan input Sbaru = [1, 0, 1, 0] T, idparent = 2 dan idtran = 2 yang dinyatakan pada Gambar S b = [1, 0, 0, 0] T idparent = 0 idtran = 0 S b = [1, 0, 1, 0] T idparent = 2 idtran = 2 S b = [0, 1, 1, 0] T idparent = 1 idtran = 1 Gambar 2.20 Input Algoritma 2.10 adalah idparent = 2 dan idtran = 2 Deretan indeks node yang menjadi parent bertingkat disimpan dalam variabel Prt sehingga variabel tersebut bernilai [2, 1]. Jelas bahwa keadaan Sbaru = [1, 0, 1, 0] T mendominasi keadaan S 1 = [1, 0, 0, 0] T dan 1 Prt sehingga Ind = {3}. Variabel Sbaru berubah menjadi [1, 0, ω, 0] T setelah menjalankan perintah pada baris 3. Jelas bahwa Algoritma 2.9 menghasilkan false sehingga kondisi pada baris 4 tidak terpenuhi dan menjalankan perintah di baris 8. Variabel S = [ [1, 0, 0, 0] T, [0, 1, 1, 0] T, [1, 0, ω, 0] T] dan kedua variabel yang lain yaitu idbaru dan Ev masing-masing menjadi 3 dan {(1, 0, 0), (2, 1, 1), (3, 2, 2)}. Pada keadaan ini transisi yang enabled hanya satu yaitu t 1 sehingga variabel En bernilai {t 1 }. Keadaan Petri net berubah menjadi [0, 1, ω, 0] T sesudah transisi t 1 difire sehingga variabel Sanak bernilai [0, 1, ω, 0] T. Algoritma membangun coverability tree dijalankan lagi dengan input Sbaru = [0, 1, ω, 0] T, idparent = 3 dan idtran = 1 seperti ditunjukkan pada Gambar Proses yang dilakukan sama dengan sebelumnya karena algoritma yang dijalankan sama dengan sebelumnya. Variabel Prt = [3, 2, 1] menyatakan deretan indeks node yang menjadi parent bertingkat. Langkah berikutnya adalah menguji hubungan dominasi. Keadaan Sbaru = [0, 1, ω, 0] T mendominasi S 2 = [0, 1, 1, 0] T dan 2 Prt sehingga variabel Ind bernilai {3}. Variabel Sbaru tidak berubah karena sebelum menjalankan baris 3 elemen ketiga variabel tersebut sudah bernilai ω. Kondisi pada baris 4 tidak dipenuhi karena Sbaru / S dilanjutkan ke baris 8. Variabel idbaru berubah menjadi 4. 58

87 Variabel S menjadi [ [1, 0, 0, 0] T, [0, 1, 1, 0] T, [1, 0, ω, 0] T, [0, 1, ω, 0] T] sedangkan Ev menjadi {(1, 0, 0), (2, 1, 1), (3, 2, 2), (4, 3,1)}. Jelas bahwa pada keadaan ini terdapat dua transisi yang enabled yaitu transisi t 2 dan transisi t 3 sehingga variabel En bernilai {t 2, t 3 }. S b = [1, 0, 0, 0] T idparent = 0 idtran = 0 S b = [1, 0, ω, 0] T idparent = 2 idtran = 2 S b = [0, 1, 1, 0] T idparent = 1 idtran = 1 S b = [0, 1, ω, 0] T idparent = 3 idtran = 1 Gambar 2.21 Input Algoritma 2.10 adalah idparent = 3 dan idtran = 1 Ingat bahwa diasumsikan perulangan pada baris 10 dimulai dengan indeks yang terkecil sehingga transisi t 2 dijalankan terlebih dahulu. Keadaan Petri net berubah menjadi Sanak = [1, 0, ω, 0] T setelah transisi t 2 difire. Selanjutnya algoritma membangun coverability tree dijalankan dengan input Sbaru = [1, 0, ω, 0] T, idparent = 4, idtran = 2. Proses ini diilustrasikan pada Gambar 2.22 yaitu algoritma kelima berada di atas algoritma keempat yang menyatakan algoritma keempat menjalankan algoritma kelima. S b = [1, 0, 0, 0] T idparent = 0 idtran = 0 S b = [1, 0, ω, 0] T idparent = 2 idtran = 2 S b = [1, 0, ω, 0] T idparent = 4 idtran = 2 S b = [0, 1, 1, 0] T idparent = 1 idtran = 1 S b = [0, 1, ω, 0] T idparent = 3 idtran = 1 Gambar 2.22 Input Algoritma 2.10 adalah idparent = 4 dan idtran = 2 Variabel Prt bernilai [4, 3, 2, 1] setelah menjalankan perintah pada baris 1. Algoritma 2.7 menghasilkan {3} sehingga variabel Ind bernilai {3}. Perintah pada baris 3 tidak mengubah nilai variabel Sbaru yaitu [1, 0, ω, 0] T. Jelas bahwa Sbaru S sehingga output dari Algoritma 2.9 adalah true dan kondisi pada baris 4 dipenuhi sehingga menuju ke baris 5. Variabel S menjadi 59

88 [ [1, 0, 0, 0] T, [0, 1, 1, 0] T, [1, 0, ω, 0] T, [0, 1, ω, 0] T, [1, 0, ω, 0] T] dan nilai variabel Ev menjadi {(1, 0, 0), (2, 1, 1), (3, 2, 2), (4, 3, 1), (5, 4, 2)} karena jumlah elemen pada S berjumlah 5. Hal ini menyatakan node Sbaru termasuk node duplicate. Selanjutnya dijalankan baris 6 sehingga proses tidak dilanjutkan ke baris berikutnya melainkan keluar dari algoritma. Untuk menyatakan bahwa algoritma tersebut sudah dijalankan maka gambar yang menyatakan algoritma ini akan dihapus. Proses dilanjutkan ke algoritma yang menjalankan algoritma ini yaitu algoritma dengan input idparent = 3 dan idtran = 1. S b = [1, 0, 0, 0] T idparent = 0 idtran = 0 S b = [1, 0, ω, 0] T idparent = 2 idtran = 2 S b = [0, 0, ω, 1] T idparent = 4 idtran = 3 S b = [0, 1, 1, 0] T idparent = 1 idtran = 1 S b = [0, 1, ω, 0] T idparent = 3 idtran = 1 Gambar 2.23 Algoritma dijalankan dengan Menggunakan Input idparent = 4 dan idtran = 3 Saat menjalankan algoritma dengan input idparent = 3, idtran = 1 dan Sbaru = [0, 1, ω, 0] T terdapat dua transisi yang enabled yaitu transisi t 2 dan t 3. Transisi t 2 sudah dijalankan pada bagian sebelumnya. Sekarang dilanjutkan dengan memproses transisi t 3. Nilai variabel Sanak menjadi [0, 0, ω, 1] T dan Algoritma 2.10 dijalankan kembali dengan input Sbaru = [0, 0, ω, 1] T, idtran = 3 dan idparent = 4 yang dapat dilihat pada Gambar Algoritma 2.10 menentukan deretan parent bertingkat sehingga diperoleh Prt = [4, 3, 2, 1]. Selanjutnya dicari node pada S(Prt) yang didominasi oleh Sbaru = [0, 0, ω, 1] T. Tidak ada node di S(Prt) yang didominasi oleh Sbaru sehingga Ind = dan perintah pada baris 3 tidak berpengaruh. Kondisi pada baris 4 tidak dipenuhi karena Sbaru / S. Nilai variabel S menjadi [ [1, 0, 0, 0] T, [0, 1, 1, 0] T, [1, 0, ω, 0] T, [0, 1, ω, 0] T, [1, 0, ω, 0] T, [0, 0, ω, 1] T] dan nilai Ev menjadi {(1, 0, 0), (2, 1, 1), (3, 2, 2), (4, 3,1), (5, 4, 2), (6,4, 3)}. Variabel idbaru bernilai 6. Pada keadaan ini tidak ada transisi yang enabled sehingga variabel En bernilai. Perulangan pada baris 10 tidak dilakukan dan keluar dari algoritma. Ingat pada keadaan sebelumnya yaitu [0, 1, ω, 0] T terdapat dua transisi yang enabled yaitu transisi t 2 dan transisi t 3. Kedua transisi tersebut telah 60

89 dijalankan sehingga algoritma ini juga selesai dan menuju algoritma sebelumnya. Pada keadaan [1, 0, ω, 0] T terdapat sebuah transisi yang enabled yaitu t 1 dan transisi tersebut telah dijalankan sehingga algoritma ini juga telah selesai dan proses dilanjutkan ke algoritma kedua yang menyatakan keadaan [0, 1, 1, 0] T. Pada keadaan ini terdapat sebuah transisi yang belum dijalankan yaitu t 3. Jika transisi ini difire maka diperoleh keadaan [0, 0, 1, 1] T. Algoritma dijalankan dengan variabel input Sbaru = [0, 0, 1, 1] T, idparent = 2 dan idtran = 3. Gambar 2.24 menyatakan keadaan pada saat algoritma dijalankan. Ingat bahwa tiga algoritma sudah selesai sehingga tiga kotak yang ada di Gambar 2.23 dihapus. S b = [1, 0, 0, 0] T idparent = 0 idtran = 0 S b = [0, 0, 1, 1] T idparent = 2 idtran = 3 S b = [0, 1, 1, 0] T idparent = 1 idtran = 1 Gambar 2.24 Input Algoritma 2.10 adalah idparent = 2 dan idtran = 3 Variabel Prt bernilai [2, 1] yaitu indeks node yang menjadi parent bertingkat dari node baru. Tidak ada node di S(Prt) yang didominasi oleh Sbaru = [0, 0, 1, 1] T sehingga output dari algoritma pengujian deretan dominasi adalah himpunan kosong. Hal ini menyebabkan perintah pada baris 3 tidak mengubah nilai variabel Sbaru. Jelas bahwa Sbaru / S sehingga kondisi pada baris 4 tidak dipenuhi. Variabel Sbaru ditambahkan ke S menjadi [ S1 = [1, 0, 0, 0] T, S 2 = [0, 1, 1, 0] T,...,S 6 = [0, 0, ω, 1] T, S 7 = [0, 0, 1, 1] T]. Nilai variabel Ev = {(1, 0, 0), (2, 1, 1), (3, 2, 2), (4, 3, 1), (5,4, 2),(6, 4, 3), (7, 2,3)} karena idbaru bernilai 7. Pada keadaan ini tidak ada transisi yang enabled sehingga perulangan pada baris 10 tidak dilakukan dan algoritma ini berakhir. Berdasarkan keterangan sebelumnya, pada keadaan [0, 1, 1, 0] T terdapat dua transisi yang enabled yaitu t 2 dan t 3. Kedua transisi telah dijalankan sehingga semua proses algoritma ini telah dijalankan dan menuju ke algoritma yang dijalankan pertama kali. Pada keadaan awal [1, 0, 0, 0] T terdapat sebuah transisi yang enabled yaitu t 1 yang telah dijalankan pada bagian sebelumnya. 61

90 Berikutnya dibahas beberapa analisis pada sistem event diskrit yang berlaku pada Petri net. Analisis ini meliputi keterbatasan (boundedness), konservasi (conservation) dan coverability. Ketiga hal tersebut dapat dianalisis menggunakan coverability tree. Pada setiap pembahasan disertai dengan contoh untuk memudahkan dalam memahami keterangan yang diberikan Keterbatasan (boundedness) Sistem dikatakan tidak stabil jika terjadi ledakan (blow up) pada nilai variabel keadaannya. Pengertian ini juga berlaku pada salah satu model sistem event diskrit yaitu Petri net. Telah didefinisikan pada bagian sebelumnya bahwa variabel keadaan dari Petri net adalah jumlah token pada setiap place. Jika jumlah token pada satu atau lebih place bertambah menuju ke takhingga maka Petri net tidak stabil. Place yang mempunyai token menuju takhingga disebut tidak terbatas (unbounded) dan place yang mempunyai token kurang dari atau sama dengan nilai tertentu disebut terbatas (bounded). a I Q s B c Gambar 2.25 Petri net Antrian Sederhana Petri net pada Gambar 2.25 menyatakan antrian sederhana. Himpunan place P dari Petri net mempunyai tiga elemen yaitu Q, I dan B yang masing-masing menyatakan antrian (queue), server idle dan server busy. Ada tiga transisi di Petri net tersebut yaitu a, s dan c yang ditulis T = {a, s, c}. Transisi a, s dan c masing-masing menyatakan event pelanggan datang, pelayanan dimulai dan pelayanan selesai (pelanggan keluar). Transisi a selalu enabled seperti terlihat di Gambar 2.25 sehingga dapat difire setiap saat. Transisi a tidak mempunyai place input yang dapat dinyatakan dengan I(a) =. Transisi s tergantung dua kondisi yaitu kehadiran pelanggan di antrian dan server dalam keadaan idle. Hal ini dinyatakan dalam Petri net melalui dua place input untuk transisi ini yaitu Q dan I yang ditulis I(s) = {Q, I}. Transisi c dapat difire jika server dalam keadaan busy sehingga place input dari transisi ini adalah place B. Petri net pada Gambar 2.25 menyatakan antrian sedang kosong karena tidak ada token di place Q dan sebuah token berada di place I yang menyatakan server dalam keadaan idle. 62

91 Dengan menggunakan Gambar 2.25 dapat ditentukan place yang unbounded dan bounded. Place Q termasuk unbounded karena transisi a dapat difire setiap saat. Pemfirean transisi a menyebabkan jumlah token pada place Q bertambah. Kedua place yang lain yaitu I dan B termasuk bounded karena kedua place tersebut menyimpan sebuah token secara bergantian. Jika token berada di place I maka server dalam keadaan idle dan jika token berada di place B maka token dalam keadaan busy. Pengertian keterbatasan (boundedness) dapat dituliskan dalam definisi berikut. Definisi 2.16 (Cassandras, 1993). Place p i P pada Petri net dengan keadaan awal x 0 disebut k-bounded atau k-safe jika x(p i ) k untuk semua keadaan yang mungkin terjadi. Berdasarkan keterangan sebelumnya dapat ditentukan batas atas dari place yang bounded yaitu place I dan B. Jelas bahwa nilai k untuk kedua place tersebut adalah 1 karena place I dan B tidak mungkin mempunyai token lebih dari satu dengan keadaan awal [0, 1, 0] T. Place yang mempunyai batas atas 1 disebut 1-bounded atau safe. Setiap place yang bounded memiliki batas atas berhingga dan place yang unbounded didefinisikan memiliki batas atas takhingga yang dinotasikan dengan ω. Batas atas dapat dinyatakan sebagai keadaan Petri net dengan jumlah token pada place menyatakan batas atasnya. Misal keadaan yang menyatakan batas atas Petri net dinotasikan xb. Definisi keadaan xb merupakan perumuman dari keadaan Petri net karena keadaan xb dapat memuat ω. Batas atas place tertentu pada Petri net merupakan jumlah token maksimum yang disimpan pada place tersebut untuk semua keadaan yang mungkin terjadi. Cara memperoleh batas atas place di Petri net dapat ditulis dalam persamaan berikut. xb(p i ) = max x x(p i ), p i P (2.22) dengan x menyatakan semua keadaan yang dapat dicapai dari keadaan awal (termasuk). Persamaan (2.22) dapat digunakan dengan mudah jika jumlah keadaan yang mungkin terjadi adalah berhingga. Jika jumlah keadaan yang mungkin terjadi adalah tak hingga maka persamaan (2.22) sulit digunakan. Untuk itu diperlukan metode lain dalam menentukan batas atas setiap place pada Petri net. 63

92 Coverability tree dapat digunakan sebagai solusi permasalahan ini karena jumlah node pada coverability tree berhingga. Ingat bahwa node pada coverability tree menyatakan keadaan yang mungkin terjadi dan edge menyatakan transisi yang menyebabkan perubahan keadaan. Dengan menggunakan keterangan sebelumnya maka penentuan batas atas place didasarkan pada node di coverability tree. Batas atas suatu place diperoleh dari maksimum jumlah token yang disimpan place tersebut untuk setiap node di coverability tree. Jelas bahwa jika jumlah token suatu place untuk setiap node berhingga maka place tersebut bounded. Jika terdapat node yang memiliki nilai ω untuk place tertentu maka place tersebut unbounded. Dengan menggunakan keterangan sebelumnya maka penentuan batas atas place pada Petri net dapat dituliskan sebagai berikut. xb(p i ) = max S S S(p i), p i P (2.23) dengan (S, Ev, T) merupakan coverability tree dari Petri net. Selanjutnya ditentukan batas atas setiap pada Petri net antrian sederhana dengan menggunakan persamaan (2.23). Dengan menggunakan metode yang telah dibahas pada bagian sebelumnya maka coverability tree berikut diperoleh dari Petri net antrian sederhana a ω 1 0 s a ω 0 1 ω 1 0 c a ω 1 0 ω 0 1 Gambar 2.26 Coverability Tree untuk Petri net Antrian Sederhana Coverability tree di Gambar 2.26 menggunakan [x(q), x(i), x(b)] T sebagai keadaan Petri net. Misal urutan elemen list node S dinyatakan dengan S 1 = [0, 1, 0] T, S 2 = [ω, 1, 0] T = S 3, S 4 = [ω, 0, 1] T = S 5 dan S 6 = [ω, 1, 0] T. Batas atas place Q adalah ω karena x b (Q) = max 1 i 6 {S i (Q)}. Jelas bahwa S i (Q) bernilai ω untuk 2 i 6 sehingga max 1 i 6 {S i (Q)} sama dengan max {S 1 (Q), S 2 (Q)} = max {0, ω} = ω. Dengan menggunakan cara yang sama dengan sebelumnya diperoleh batas atas dari place I dan B adalah 1 yang dapat ditulis xb(i) = 1 = xb(b). 64

93 Selanjutnya didesain algoritma untuk menentukan batas atas setiap place di Petri net dengan menggunakan metode yang telah dibahas sebelumnya. Batas atas suatu place diperoleh dari maksimum jumlah token yang disimpan oleh place tersebut untuk setiap node di coverability tree. Berdasarkan keterangan sebelumnya jika terdapat nilai ω pada satu atau lebih node maka batas atas bernilai ω tanpa memperhitungkan node yang lain dengan jumlah token berhingga. Kondisi ini akan dipertimbangkan dalam penyusunan algoritma dengan tujuan mengurangi jumlah kerja sehingga mempercepat waktu komputasi. Algoritma 2.11 Menentukan Batas Atas Setiap Place di Petri net Input: S, P Output: xb /* keadaan yang menyatakan batas atas */ 1 xb S 1 /* inisialisasi */ 2 for all pl P do 3 j 2 4 while j S and xb(pl) ω do 5 xb(pl) max {xb(pl), S j (pl)} 6 j j end while 8 end for Berikutnya ditentukan kompleksitas algoritma menentukan batas atas place dengan menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai algoritma tersebut. Jenis operasi yang dihitung harus ditentukan terlebih dahulu sebelum menghitung banyak kerja. Operasi yang dihitung adalah mencari maksimum dua bilangan yang dilakukan pada baris 5. Selanjutnya ditentukan kondisi yang menyebabkan kemungkinan terburuk terjadi yaitu banyak kerja yang dilakukan Algoritma 2.11 paling besar. Perintah pada while dilakukan selama belum menemukan keadaan ω sehingga kondisi yang menyebabkan kemungkinan terburuk (worst case) untuk place tertentu jika place tersebut terbatas (bounded). Dengan menggunakan kesimpulan sebelumnya maka kondisi yang menyebabkan banyak kerja yang dilakukan algoritma ini paling besar adalah semua place terbatas. Pada kondisi ini banyak kerja yang dilakukan untuk setiap place adalah S 1 sehingga Algoritma 2.11 bekerja sebanyak P ( S 1) yang ditulis W( P, S ) = P ( S 1) = O( P S ). Banyak memori yang dipakai Algoritma 2.11 tergantung variabel tambahan. Variabel tambahan pada algoritma tersebut adalah j dan pl. Jelas bahwa banyak memori yang dipakai kedua variabel tambahan tetap yaitu tidak 65

94 tergantung input yang diberikan. Jadi algoritma menentukan batas atas place bekerja di tempat (work in place). Untuk lebih memperjelas proses yang dilakukan oleh Algoritma 2.11, berikut diberikan contoh pada Petri net antrian sederhana. Contoh Input algoritma tersebut adalah list S = [S 1,..., S 6 ] dengan S 1 = [0, 1, 0] T, S 2 = [ω, 1, 0] T = S 3, S 4 = [ω, 0, 1] T = S 5, S 6 = [ω, 1, 0] T dan P = {Q, I, B}. Pada baris 1, variabel xb diinisialisasi S 1 yaitu [0, 1, 0] T. Misal pada iterasi pertama pl = Q. Variabel j diinisialisasi dengan 2 pada baris 3. Kondisi pada baris 4 dipenuhi karena 2 = j S = 6 dan 0 = xb(q) ω proses dilanjutkan ke baris 5. Setelah menjalankan baris ini variabel xb(q) berubah menjadi ω karena S 2 (Q) = ω. Perintah pada baris 6 menyebabkan variabel j bernilai 3 dan menuju ke kondisi pada baris 4. Kondisi ini tidak dipenuhi karena variabel xb(q) bernilai ω dan dilanjutkan dengan place berikutnya. Pada iterasi kedua place yang diproses adalah I. Baris 3 menginisialisasi variabel j dengan 2. Kondisi pada while dipenuhi karena 2 = j S = 6 dan 1 = xb(i) ω sehingga menjalankan perintah pada baris 5 dan 6. Perintah pada baris 5 tidak mengubah nilai xb(i) karena S 2 (I) = 1 dan perintah pada baris 6 mengubah nilai j menjadi 3 dan menuju ke kondisi while. Kondisi dipenuhi karena 3 = j S = 6 dan 1 = xb(i) ω. Variabel xb(i) tidak berubah setelah menjalankan baris 5 karena S 3 (I) = 1 dan variabel j berubah menjadi 4. Kondisi pada while kembali dipenuhi karena 4 = j S = 6 dan 1 = xb(i) ω. Perintah pada baris 5 tidak mengubah nilai variabel xb(i) karena 0 = S 4 (I) < xb(i) = 1 dan variabel j menjadi 5 setelah menjalankan perintah pada baris 6. Kondisi pada baris 4 dipenuhi karena 5 = j S = 6 dan 1 = xb(i) ω. Dengan alasan yang sama seperti sebelumnya maka nilai variabel xb(i) tidak berubah dan variabel j bertambah menjadi 6. Kondisi pada while dipenuhi karena j = 6 = S dan 1 = xb(q) ω sehingga menuju ke baris 5. Disini variabel xb(i) tidak berubah karena xb(i) = 1 = S 6 (I) dan pada baris berikutnya variabel j berubah menjadi 7. Hal ini menyebabkan kondisi pada baris 4 tidak dipenuhi sehingga dilanjutkan dengan place yang terakhir yaitu B. Dengan menggunakan cara yang sama seperti place sebelumnya maka diperoleh xb(b) = 1. Output dari algoritma ini adalah xb = [ω, 1, 1] T yang menyatakan place Q unbounded sedangkan batas atas place I dan B adalah 1. 66

95 Setelah mengkaji keterbatasan (boundedness), pada bagian berikutnya dibahas sifat konservasi (conservation) pada Petri net. Sifat ini berhubungan dengan tidak berubahnya jumlah token untuk semua keadaan yang mungkin terjadi Konservasi (conservation) Token pada Petri net kadang merepresentasikan resource pada sistem pembagian resource. Sebagai contoh yaitu token pada place I di Petri net Gambar 2.25 menyatakan sebuah server pada sistem antrian sederhana. Token ini diberikan ke place B dan dikembalikan ke I untuk menyatakan perubahan keadaan pada server idle atau busy). Token tersebut tidak bisa hilang (berkurang) atau jumlah token pada place I dan B bertambah, karena pada sistem ini terdapat sebuah server. Ilustrasi sebelumnya merupakan contoh konservasi yang khusus yaitu jumlah token pada place I dan B selalu satu. Pada kasus yang lebih umum jumlah keseluruhan token pada Petri net tidak selalu tetap tetapi konstan jika diberikan bobot tertentu pada setiap place di Petri net. Petri net bersifat konservasi jika jumlah token pada semua place setelah dikalikan dengan bobotnya masing-masing bernilai konstan untuk setiap keadaan yang mungkin terjadi dari keadaan awal. Misal bobot dari place p i dinotasikan dengan γ i dengan γ i 0 untuk 1 i n. Vektor bobot adalah vektor baris dengan elemen ke-i merupakan bobot place p i yang dapat ditulis γ = [γ 1, γ 2,...,γ n ]. Pada ilustrasi sistem antrian sederhana, vektor bobot yang digunakan adalah γ = [1, 1]. Berdasarkan pembahasan sebelumnya maka sifat konservasi Petri net dapat dituliskan dalam definisi berikut. Definisi 2.17 (Cassandras, 1993). Petri net dengan keadaan awal x 0 disebut konservatif (conservative) terhadap γ = [γ 1, γ 2,...,γ n ] jika n γ i x(p i ) = konstan (2.24) i=1 untuk semua keadaan yang mungkin terjadi. Perhatikan bahwa [γ 1, γ 2,...,γ n ] adalah vektor baris yang dinotasikan dengan γ dan [x(p 1 ), x(p 2 ),..., x(p n )] T adalah vektor kolom yang dinotasikan 67

96 dengan x. Dengan menggunakan notasi vektor persamaan (2.24) dapat ditulis menjadi persamaan berikut. γ x = konstan (2.25) Sifat konservasi Petri net dapat ditentukan dengan menguji keberlakuan kondisi (2.24) untuk setiap keadaan yang mungkin. Hal ini sulit dilakukan karena jumlah keadaan yang diuji sangat besar dan tidak mungkin dilakukan ketika jumlah keadaan adalah takhingga. Untuk itu dibutuhkan coverability tree untuk menyelesaikan permasalahan ini karena node di coverability tree mewakili semua keadaan yang mungkin terjadi. Perhatikan bahwa jika terdapat satu atau lebih place p i yang unbounded maka bobot dari place tersebut adalah 0 yaitu γ i = 0 agar sifat konservasi mungkin dipenuhi. Ingat bahwa suatu place termasuk unbounded jika terdapat node pada coverability tree yang mempunyai nilai ω untuk place tersebut. Pemberian bobot 0 pada place unbounded disebabkan ω tidak merepresentasikan nilai integer yang tetap, melainkan himpunan tak hingga nilai. Misal terdapat dua node S 1 dan S 2 di coverability tree sedemikian hingga S 1 (p i ) = S 2 (p i ) untuk semua p i dan S 1 (p k ) = ω = S 2 (p k ) untuk beberapa p k. Secara umum nilai sebenarnya dari S 1 (p k ) dan S 2 (p k ) tidak sama karena ω notasi dari tak berhingga nilai integer. Jika γ k > 0 maka secara umum persamaan berikut tidak berlaku γ S 1 = γ S 2 (2.26) Berdasarkan pengamatan sebelumnya, jika vektor γ diberikan sedemikian hingga γ i = 0 untuk semua i dengan x(p i ) = ω maka sifat konservasi dapat diuji dengan mengevaluasi persamaan (2.24) untuk setiap keadaan pada coverability tree. Jika persamaan tersebut bernilai sama maka sifat konservasi terpenuhi. Selanjutnya dibahas kebalikan dari permasalahan sebelumnya. Diberikan suatu Petri net, akan ditentukan bentuk vektor bobot γ yang memenuhi kondisi konservasi (2.24) atau dipastikan tidak ada vektor bobot γ yang memenuhi. Untuk menyelesaikan permasalahan ini, pertama didefinisikan γ i = 0 untuk semua place p i yang unbounded. Selanjutnya misal terdapat b n place yang bounded yaitu p 1, p 2,..., p b selain itu coverability tree mempunyai r node dan faktor konstan pada (2.24) dinotasikan C. 68

97 Ingat bahwa kondisi konservasi (2.24) harus dipenuhi untuk setiap node di coverability tree sehingga diperoleh himpunan r persamaan. Persamaan ke-k berbentuk b γ i S k (p i ) = C (2.27) i=1 dengan 1 k r. Jika terdapat node duplicate pada coverability tree maka jumlah persamaan kurang dari r. Variabel pada persamaan (2.27) berjumlah b + 1 yang terdiri dari bobot place yang bounded dan konstanta yang dinotasikan γ 1, γ 2,..., γ b, C. Permasalahan konservasi menjadi menyelesaikan sistem persamaan linier. Solusi dari permasalahan ini tidak selalu ada tetapi jika ada maka dapat dicari dengan teknik standar. Perhatikan Petri net pada Gambar Pada contoh berikut dibahas bagaimana menentukan sifat konservasinya. Contoh Telah dikaji pada bagian sebelumnya bahwa Gambar 2.26 merupakan coverability tree dari Petri net antrian sederhana. Coverability tree mempunyai 6 node sehingga terdapat 6 persamaan. Terdapat dua place yang bounded yaitu place I dan B sehingga variabel pada sistem persamaan linier berjumlah 3. S 1 = [0, 1, 0] T γ 2 = C S 2 = [ω, 1, 0] T γ 2 = C S 3 = [ω, 1, 0] T γ 2 = C (2.28) S 4 = [ω, 0, 1] T γ 3 = C S 5 = [ω, 0, 1] T γ 3 = C S 6 = [ω, 1, 0] T γ 2 = C Nilai γ 1 didefinisikan 0 karena place Q unbounded. Terlihat pada sistem persamaan linier (2.28) bahwa pada dasarnya terdapat dua persamaan yang akan diselesaikan yaitu γ 2 = C dan γ 3 = C. Permasalahan ini berubah menjadi sistem persamaan linier dengan dua persamaan dan tiga variabel. Penyelesaian permasalahan ini dapat diperoleh dengan memilih variabel C sebagai parameter. Nilai yang diberikan ke parameter C harus lebih dari nol karena jika C 0 maka variabel γ 2 dan γ 3 juga tidak positif dan hal ini menyalahi definisi sebelumnya. Misal diberikan nilai 1 pada variabel C maka diperoleh γ 2 = 1 = γ 3 sehingga vektor bobot secara lengkap dapat ditulis γ = [0, 1, 1] dengan C = 1. 69

98 Pada bagian berikutnya dibahas salah satu aspek dalam analisis Petri net mengenai coverability keadaan. Coverability keadaan dapat dianalisis menggunakan coverability tree yang telah dibahas pada bagian sebelumnya Coverability Keadaan Konsep coverability mempunyai hubungan dengan L1-liveness yaitu jika terdapat barisan pemfirean tertentu sehingga transisi dapat difire paling tidak sekali. Hanya transisi yang enabled yang dapat difire. Agar suatu transisi enabled maka token harus tersedia pada place input paling tidak sebanyak bobot arcnya. Misalkan keadaan y = [y(p 1 ), y(p 2 ),...,y(p n )] T memuat jumlah token minimum yang dibutuhkan agar beberapa transisi t j enabled. Dengan kata lain beberapa transisi ini enabled jika jumlah token pada setiap place di Petri net lebih dari atau sama dengan jumlah token pada keadaan y. Jika keadaan yang menyebabkan beberapa transisi t j enabled dinotasikan dengan x maka berlaku x(p i ) y(p i ) untuk setiap p i P. Hal ini disebut keadaan x mengcover keadaan y. Beberapa transisi ini dapat enabled jika keadaan x dapat dicapai dari keadaan awal x 0. Definisi 2.18 (Cassandras, 1993). Diberikan Petri net dengan keadaan awal x 0. Keadaan y coverable jika terdapat barisan transisi yang menyebabkan keadaan x 0 menjadi keadaan x dengan x(p i ) y(p i ) untuk semua p i P. Perhatikan bahwa jika y adalah keadaan yang menyatakan jumlah token minimum yang dibutuhkan untuk membuat beberapa transisi t j enabled maka jika y tidak coverable dari keadaan saat ini dapat disimpulkan bahwa transisi t j dalam kondisi dead. Analisis coverability keadaan dapat digunakan untuk mengidentifikasi transisi yang dead. Dengan memperhatikan coverability tree dapat ditentukan apakah keadaan y coverable. Diberikan keadaan awal x 0 kemudian dikonstruksi coverability tree. Jika terdapat node x pada tree sedemikian hingga x(p i ) y(p i ) untuk setiap p i P maka y coverable. Lintasan (path) dari node root ke x mendeskripsikan barisan pemfirean menuju keadaan x. Jika x memuat ω pada satu atau lebih place maka lintasan ini mengandung loop. Transisi yang berada dalam loop dapat difire berulang-ulang hingga keadaan x tercapai. Sebagai contoh keadaan [3, 1, 0] T pada Petri net di Gambar 2.25 adalah coverable 70

99 karena [ω, 1, 0] T dapat dicapai dari node root [0, 1, 0] T. Urutan pemfirean transisi untuk memperoleh keadaan [3, 1, 0] T tidak tunggal misalnya {a, a, a} atau {a, s, a, c, s, a, c, a, a}. Pada bagian berikutnya didesain algoritma untuk menganalisis coverability keadaan. Di dalam analisis coverability keadaan terdapat proses pengujian apakah suatu keadaan mengcover keadaan yang lain. Algoritma ini didesain sebelum mendesain algoritma analisis coverability keadaan. Ingat pada pembahasan sebelumnya bahwa keadaan x mengcover keadaan y jika x i y i untuk setiap 1 i P. Jika terdapat i yang tidak memenuhi x i y i atau pada kasus ini berlaku x i < y i maka keadaan x tidak mengcover keadaan y. Ide penyusunan algoritma ini adalah mencari i yang memenuhi x i < y i. Jika terdapat i yang memenuhi maka keadaan x tidak mengcover keadaan y tetapi jika tidak ada i yang memenuhi maka keadaan x mengcover keadaan y. Algoritma yang digunakan untuk pencarian adalah algoritma pencarian sekuensial (sequential search). Algoritma 2.12 Pengujian Cover Input: x,y dengan x = y Output: iscovers /* bernilai boolean */ 1 iscovers false; i 1 /* inisialisasi */ 2 while i x and x i y i do 3 i i end while 5 if i > x then 6 iscovers true 7 end if Proses yang dilakukan Algoritma 2.12 serupa dengan algoritma mencari node duplicate. Perbedaan kedua algoritma tersebut terletak pada output. Pada Algoritma 2.9 jika ditemukan node duplicate maka menghasilkan true sedangkan Algoritma 2.12 jika ditemukan i yang tidak memenuhi x i y i maka menghasilkan false. Selanjutnya dibahas kompleksitas algoritma pengujian cover dengan menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai algoritma tersebut. Sebelum menghitung banyak kerja, jenis operasi yang dihitung harus ditentukan terlebih dahulu. Operasi yang dihitung adalah perbandingan yang dilakukan pada baris 2. Perintah pada baris ini dikerjakan selama x i y i dipenuhi untuk 1 i x. Jika keadaan x mengcover y maka banyak kerja yang dilakukan adalah x yang ditulis W( x ) = x = O( x ). 71

100 Banyak memori yang dipakai oleh algoritma pengujian cover tergantung variabel tambahan pada algoritma tersebut. Satu-satunya variabel tambahan adalah i yang bertipe integer. Jelas bahwa banyak memori yang dipakai variabel i tetap yaitu tidak tergantung input. Jadi Algoritma 2.12 bekerja di tempat (work in place). Selanjutnya diilustrasikan proses yang dilakukan oleh Algoritma 2.12 untuk mengetahui apakah keadaan [ω, 1, 0] T mengcover keadaan [3, 1, 0] T. Contoh Input Algoritma 2.12 adalah x = [ω, 1, 0] T dan y = [3, 1, 0] T. Pada baris 1 variabel iscovers diinisialisasi false dan i diinisialisasi 1. Kondisi while bernilai benar karena 1 = i x = 3 dan ω = x 1 y 1 = 3. Perintah pada baris 3 mengubah variabel i menjadi 2. Jelas bahwa 2 = i x = 3 dan x 2 = 1 = y 2 sehingga variabel i ditambah satu menjadi 3. Kondisi pada baris 2 tetap dipenuhi karena i = 3 = x dan x 2 = 0 = y 2 kemudian dilanjutkan dengan menjalankan perintah pada baris 3. Setelah menjalankan baris ini variabel i bernilai 4 sehingga menyebabkan kondisi pada while tidak dipenuhi. Kondisi pada baris 5 dipenuhi karena 4 = i > x = 3 sehingga variabel iscovers bernilai true. Hal ini menunjukkan keadaan [ω, 1, 0] T mengcover [3, 1, 0] T. Jika keadaan x tidak mengcover keadaan y maka terdapat i yang tidak memenuhi x i y i dengan 1 i x sehingga saat keluar dari perulangan while nilai variabel i x. Hal ini menyebabkan kondisi pada if tidak dipenuhi sehingga nilai variabel iscovers tidak diubah yaitu tetap bernilai false yang menunjukkan keadaan x tidak mengcover keadaan y. Contoh Algoritma 2.12 digunakan untuk mengetahui apakah keadaan [ω, 0, 1] T mengcover [ω, 1, 0] T sehingga variabel input bernilai x = [ω, 0, 1] T dan y = [ω, 1, 0] T. Variabel iscovers dan i masing-masing diinisialisasi false dan 1. Kondisi pada while dipenuhi karena 1 = i x = 3 dan x 1 = ω = y 1 sehingga variabel i ditambah 1 menjadi 2. Kenyataan 0 = x 2 y 2 = 1 menyebabkan kondisi pada baris 2 bernilai salah dan menuju ke baris 5. Kondisi pada if tidak dipenuhi karena 2 = i x = 3 sehingga nilai variabel iscovers tidak berubah yaitu false. Hal ini menunjukkan keadaan x = [ω, 0, 1] T tidak mengcover y = [ω, 1, 0] T. 72

101 Selanjutnya dibahas algoritma yang bertujuan menganalisis coverability keadaan. Input algoritma ini adalah Petri net dengan keadaan awal tertentu dan keadaan yang diuji sedangkan outputnya adalah nilai boolean true atau false. Algoritma ini menghasilkan true jika keadaan yang diuji coverable dan menghasilkan false jika tidak coverable. Proses yang dilakukan dalam algoritma ini sebagai berikut. Pertama Petri net dengan keadaan awal tertentu diubah menjadi coverability tree dengan Algoritma Langkah berikutnya adalah mencari apakah terdapat node di coverability tree yang mengcover keadaan ini (keadaan yang diuji). Jika terdapat satu atau lebih node yang memenuhi kondisi sebelumnya maka keadaan yang diuji coverable dan jika tidak ada node yang memenuhi maka keadaan yang diuji tidak coverable. Berdasarkan keterangan sebelumnya maka dapat disimpulkan permasalahan analisis coverability keadaan termasuk pencarian (searching). Terdapat beberapa metode untuk menyelesaikan permasalahan pencarian. Disini digunakan metode pencarian yang sama dengan sebelumnya yaitu pencarian secara sekuensial (sequential search) karena metode ini sederhana sehingga mudah dipahami dan diimplementasikan. Algoritma 2.13 Pengujian Coverable Input: S,x Output: iscoverable /* bernilai boolean */ 1 iscoverable true; i 1 /* inisialisasi */ 2 while i S and not Algoritma 2.12 (S i,x) do 3 i i end while 5 if i > S then 6 iscoverable false 7 end if Kompleksitas algoritma pengujian coverable dapat ditentukan dengan menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai algoritma tersebut. Jenis operasi yang dihitung harus ditentukan terlebih dahulu sebelum menghitung banyak kerja. Operasi yang dihitung disini sama dengan algoritma pengujian cover yaitu perbandingan. Perbandingan dilakukan saat menjalankan Algoritma 2.12 pada baris 2. Perintah pada baris ini dilakukan selama belum ditemukan keadaan di S yang mengcover x. Kemungkinan terburuk (worst case) terjadi jika tidak ada keadaan di S yang mengcover x. Pada kondisi ini Algoritma 2.12 dijalankan sebanyak jumlah 73

102 anggota S yaitu S. Jadi banyak kerja yang dilakukan adalah S x yang ditulis W( S, x ) = S x = O( S x ). Satu-satunya variabel tambahan pada Algoritma 2.13 adalah i. Jelas bahwa banyak memori yang dipakai variabel ini tetap sehingga algoritma pengujian coverable bekerja di tempat (work in place). Perhatikan Petri net di Gambar Jelas bahwa Gambar 2.26 merupakan coverability tree dari Petri net tersebut. Berikut merupakan ilustrasi Algoritma 2.13 untuk menentukan apakah keadaan [3, 1, 0] T coverable. Contoh Input Algoritma 2.13 adalah S = [S 1,...,S 6 ], x = [3, 1, 0] T. Misal elemen dari S berturut-turut adalah S 1 = [0, 1, 0] T, S 2 = [ω, 1, 0] T = S 3, S 4 = [ω, 0, 1] T = S 5, S 6 = [ω, 1, 0] T. Pada tahap inisialisasi variabel iscoverable bernilai true dan variabel i bernilai 1. Jelas bahwa kondisi 1 = i S = 6 bernilai benar. Keadaan di node S 1 = [0, 1, 0] T tidak mengcover x = [3, 1, 0] T sehingga Algoritma 2.12 menghasilkan false. Hal ini menyebabkan kondisi pada while dipenuhi dan menjalankan baris 3. Setelah menjalankan baris ini variabel i bernilai 2. Kondisi pada while tidak dipenuhi karena S 2 = [ω, 1, 0] T mengcover x = [3, 1, 0] T yang berarti Algoritma 2.12 menghasilkan true. Jelas bahwa 2 = i S = 6 sehingga kondisi pada if tidak dipenuhi dan perintah pada baris 6 tidak dijalankan. Algoritma ini menghasilkan true yang menyatakan keadaan [3, 1, 0] T coverable seperti telah dibahas pada bagian sebelumnya. 74

103 BAB 3 METODA PENELITIAN 3.1 Tahap-tahap Penelitian Penelitian ini dapat dibagi menjadi beberapa tahap sebagai berikut. 1. Membangun model Petri net lampu lalulintas di persimpangan. Membangun model Petri net lampu lalulintas dimulai dengan kasus yang sederhana yaitu sebuah lampu lalulintas. Selanjutnya didesain Petri net lampu lalulintas di persimpangan yang terdiri dari 2 jalur. 2. Mereduksi keadaan Petri net. Mereduksi Petri net yang telah didesain agar mempunyai jumlah place yang lebih sedikit tanpa kehilangan informasi sehingga mempercepat waktu komputasi. 3. Mendesain algoritma langkah sebelumnya. Membuat perumuman desain Petri net pada langkah sebelumnya yaitu membuat algoritma untuk mendesain Petri net lampu lalulintas di persimpangan dengan jumlah jalur sebarang. 4. Menganalisis model Petri net. Metode yang digunakan untuk analisis adalah coverability tree. Dengan menggunakan metode ini dapat diketahui keterbatasan (boundedness), konservasi (conservation) dan coverability keadaan. 5. Mengimplementasikan ke dalam program. Membuat program untuk mensimulasikan jumlah pengguna di masingmasing jalur pada tiap waktu. Bahasa pemrograman yang digunakan adalah Scilab yang dapat diperoleh dan digunakan dengan bebas. Selain itu juga dibuat program untuk membaca Petri net yang dibuat menggunakan PIPE. PIPE adalah program yang digunakan untuk membuat Petri net secara visual yang gratis. 75

104 3.2 Diagram Alir Penelitian Berikut merupakan gambar diagram alir penelitian ini. Membangun Petri net Reduksi Keadaan Analisis Petri net Desain Algoritma Implementasi Gambar 3.1 Diagram Alir Penelitian 76

105 BAB 4 PETRI NET DAN SIMULASI PENGGUNA Pada bab ini dibahas bagaimana cara membangun model Petri net lampu lalulintas di persimpangan. Metode membangun Petri net dituliskan dalam bentuk algoritma dengan tujuan dapat digunakan lebih luas. Pada setiap pembahasan disertakan contoh Petri net yang sederhana agar lebih mudah dipahami. Petri net yang sudah dibangun kemudian dianalisis dengan menggunakan metode yang telah dijelaskan pada bab sebelumnya. Hal-hal yang dianalisis meliputi keterbatasan (boundedness), konservasi (conservation) dan coverability keadaan. Pada bagian terakhir dibahas algoritma mensimulasikan jumlah pengguna di persimpangan. 4.1 Pendahuluan Pada saat mendesain algoritma membangun coverability tree pada bab sebelumnya, penyesuaian dilakukan pada definisi coverability tree. Penyesuaian ini bertujuan menghilangkan unsur pemetaan karena pemetaan sulit dituliskan dalam bentuk algoritma. Definisi Petri net pada bab sebelumnya juga mengandung unsur pemetaan. Untuk itu sebelum mendesain algoritma membangun model Petri net lampu lalulintas di persimpangan, definisi Petri net disesuaikan terlebih dahulu. Definisi 4.1. Petri net adalah 3-tuple (P, T, Aw) dengan P : himpunan berhingga place, P = {p 1, p 2,...,p n }, T : himpunan berhingga transisi, T = {t 1, t 2,...,t m }, Aw : himpunan arc dan bobot, Aw ((P T) (T P)) {0, 1,... }, Ide penyesuaian pada definisi Petri net serupa dengan penyesuaian yang dilakukan pada definisi coverability tree yaitu menggabungkan unsur pemetaan ke arc. Hal ini dapat dilakukan karena setiap arc pada Petri net mempunyai bobot sebuah bilangan bulat tak negatif. Dengan penyesuaian ini arc pada Petri net didefinisikan sebagai tiga tuple dengan elemen ketiga menyatakan bobot. Elemen pertama dan kedua sama dengan definisi sebelumnya yaitu masing-masing menyatakan asal dan tujuan arc. 77

106 Agar Definisi 4.1 lebih jelas, berikut dibahas bagaimana mengidentifikasi Petri net antrian sederhana dengan definisi tersebut. Petri net ini telah dibahas pada bab sebelumnya yaitu pada saat membahas analisis Petri net sehingga disini tidak dibahas secara lengkap. a I Q s B c Gambar 4.1 Petri net Antrian Sederhana Perhatikan Petri net pada Gambar 4.1. Jelas bahwa Petri net tersebut mempunyai tiga place dan tiga transisi yaitu P = {Q, I, B} dan T = {a, s, c}. Himpunan arc dan bobotnya yang dinotasikan Aw berisi 6 elemen yang ditulis Aw = {(a, Q, 1), (I, s, 1), (Q, s, 1), (s, B, 1), (B, c, 1), (c, I,1)}. Selanjutnya dibahas permasalahan membangun Petri net lampu lalulintas sederhana. Digunakan istilah sederhana karena Petri net berikut tidak mencantumkan waktu tunggu dan hanya berlaku untuk sebuah lampu lalulintas. 4.2 Petri net Lampu Lalulintas Sederhana Sebuah lampu lalulintas yang tidak mencantumkan waktu tunggu dapat dimodelkan menggunakan Petri net. Dalam memodelkan Petri net langkah pertama yang dilakukan adalah menentukan place. Place pada Petri net merupakan variabel keadaan. Pada sebuah lampu lalulintas terdapat tiga buah lampu yaitu merah, kuning dan hijau. Salah satu dari ketiga lampu lalulintas dalam keadaan menyala sehingga terdapat tiga kemungkinan keadaan yang berbeda. Pada permasalahan ini place menyatakan lampu lalulintas sehingga Petri net ini membutuhkan tiga place yang masing-masing menyatakan lampu merah, kuning dan hijau. Nama place pada Petri net ini adalah merah (M), kuning (K) dan hijau (H). Urutan lampu lalulintas yang menyala adalah merah-hijau-kuningmerah dan seterusnya. Setelah place ditentukan, langkah selanjutnya adalah menentukan transisi yang dibutuhkan. Terdapat tiga kemungkinan perubahan keadaan yang pada permasalahan ini adalah perubahan lampu lalulintas yang menyala yaitu merah-hijau (mh), hijau-kuning (hk) dan kuning-merah (km) sehingga dibutuhkan tiga transisi yang menyatakan ketiga perubahan tersebut. 78

107 Penentuan keadaan awal Petri net merupakan langkah berikutnya. Keadaan Petri net berkaitan dengan jumlah token pada setiap place. Pada permasalahan ini dibutuhkan sebuah token karena pada setiap saat terdapat satu lampu yang menyala. Place yang mempunyai token berarti lampu lalulintas yang direpresentasikan dalam keadaan menyala sedangkan place yang tidak mempunyai token berarti lampu lalulintas yang direpresentasikan dalam keadaan padam. Transisi mh menyatakan perubahan lampu lalulintas yang menyala dari merah ke hijau sehingga transisi ini enabled jika lampu lalulintas merah dalam keadaan menyala. Berdasarkan keterangan sebelumnya, lampu lalulintas merah menyala jika place M mempunyai sebuah token sehingga transisi mh enabled jika terdapat sebuah token pada place M. Hal ini dapat dimodelkan dengan menempatkan place M sebagai place input dari transisi mh dengan bobot arc 1. Setelah transisi ini difire, lampu lalulintas yang menyala adalah hijau yang dinyatakan dengan place H sehingga dengan alasan yang sama dengan sebelumnya place H merupakan place output dari transisi mh dengan bobot arc 1. Hal ini menyatakan setelah transisi mh difire place H menerima sebuah token. Place input dan output dari transisi hk dan km dapat diperoleh dengan cara yang sama. M mh H hk K km Gambar 4.2 Petri net Sederhana untuk Satu Lampu Lalulintas Berikut merupakan penjelasan Petri net pada Gambar 4.2. Lampu lalulintas yang dalam keadaan menyala adalah hijau karena place H mempunyai sebuah token. Transisi hk adalah satu-satunya transisi yang enabled. Hal ini sesuai dengan kenyataan bahwa setelah hijau menyala, lampu lalulintas yang menyala berikutnya adalah kuning. Pemfirean transisi hk menyebabkan token pada place H berpindah ke place K yang menyatakan lampu lalulintas hijau dalam keadaan padam dan kuning dalam keadaan menyala. Pada keadaan ini transisi hk tidak enabled dan transisi km menjadi enabled dengan alasan yang serupa dengan sebelumnya. Berikutnya disusun algoritma membangun Petri net yang berada di Gambar 4.2. Algoritma ini tidak membutuhkan input. Output algoritma ini adalah Petri net yang dinyatakan dengan 3-tuple (P, T, Aw) seperti pada 79

108 Definisi 4.1. Proses algoritma ini adalah memberikan nilai pada himpunan P, T dan Aw. Inisialisasi nilai pada himpunan P menyatakan place yang terdapat di Petri net. Pengisian elemen pada himpunan T dan Aw masing-masing menyatakan transisi dan arc pada Petri net. Misal vektor keadaan Petri net didefinisikan x = [x(m), x(h), x(k)] T maka algoritma lampu lalulintas sederhana dapat dituliskan sebagai berikut. Algoritma 4.1 Petri net Lampu Lalulintas Sederhana Input: Output: P, T, Aw,x 0 /* Petri net bertanda */ 1 P {M, H, K} /* membuat place */ 2 T {mh, hk, km} /* transisi */ 3 Aw {(M, mh, 1), (mh, H, 1), (H, hk, 1), (hk, K, 1), (K, km, 1), (km, M, 1)} 4 x 0 [0, 1, 0] T /* keadaan awal */ Petri net di Gambar 4.2 mempunyai 3 place yaitu M, H dan K. Hal ini dinyatakan dalam baris 1. Baris 2 menyatakan bahwa Petri net mempunyai 3 transisi yaitu mh, hk, km. Arc yang menghubungkan place dan transisi dinyatakan pada baris 3. Terlihat pada baris 4 bahwa pada keadaan awal terdapat sebuah token pada place H. Pengujian pure pada Petri net dapat dilakukan dengan mencari place yang menjadi input sekaligus output suatu transisi. Sifat transisi ini adalah irisan himpunan place input dan outputnya tidak kosong karena terdapat place yang menjadi anggota kedua himpunan tersebut. Berdasarkan definisi pada bab sebelumnya Petri net disebut pure jika untuk setiap transisi t T berlaku I(t) O(t) =. Hal ini dapat dilakukan dengan menguji keberlakuan persamaan berikut. (I(t) O(t)) = (4.1) t T Untuk transisi mh berlaku I(mh) O(mh) = {M} {H} =. Dapat ditunjukkan dengan cara sama untuk transisi hk dan transisi km berlaku I(hk) O(hk) = dan I(km) O(km) = sehingga persamaan (4.1) dipenuhi. Jadi Petri net lampu lalulintas sederhana pure Matriks Incidence Matriks forward incidence, backward incidence dan combined incidence yang merepresentasikan Petri net lampu lalulintas sederhana berukuran 3 3. Sebelum itu harus ditentukan transisi yang mengisi variabel t 1, t 2 dan t 3. 80

109 Misal transisi yang mengisi ketiga variabel tersebut adalah t 1 = mh, t 2 = hk, dan t 3 = km. Place yang mengisi p 1, p 2 dan p 3 sama dengan definisi vektor keadaan yaitu p 1 = M, p 2 = H dan p 3 = K. Ingat bahwa matriks forward incidence berkaitan dengan place output sedangkan matriks backward incidence berkaitan dengan place input. Transisi mh mempunyai sebuah place output yaitu H sehingga A f (2, 1) = 1. Nilai A f (3, 2) = 1 dan A f (1, 3) = 1 menyatakan place output dari hk adalah K dan place output dari km adalah M. Pengisian elemen matriks backward incidence dilakukan dengan cara yang sama. Matriks A merupakan matriks combined incidence yang diperoleh dari selisih matriks forward incidence dan backward incidence yaitu A = A f A b A f = A b = A = (4.2) Selanjutnya dibahas analisis Petri net lampu lalulintas sederhana. Sebelum melakukan analisis pada Petri net, coverability tree harus dibangun terlebih dahulu. Hal ini disebabkan analisis Petri net dilakukan dengan menggunakan coverability tree yang telah dibahas pada bagian sebelumnya Coverability Tree Proses membangun coverability tree dapat dijelaskan sebagai berikut. Keadaan x 0 = [0, 1, 0] T didefinisikan sebagai node root. Pada keadaan ini terdapat sebuah transisi yang enabled yaitu hk. Pemfirean transisi ini menyebabkan keadaan Petri net berubah menjadi [0, 0, 1] T dan transisi km menjadi satu-satunya transisi yang enabled. Keadaan berubah menjadi [1, 0, 0] T setelah transisi km difire. Pada keadaan ini transisi yang enabled adalah mh. Pemfirean transisi ini menyebabkan keadaan Petri net menjadi keadaan awal. Terlihat pada Gambar 4.3 bahwa setiap node mempunyai 1 anak. Hal ini disebabkan pada setiap keadaan terdapat sebuah transisi yang enabled. Jika Petri net bounded maka coverability tree juga disebut reachability tree. Pada kasus ini tree secara eksplisit memuat semua keadaan yang mungkin dicapai (reachable) sehingga dengan menggunakan reachability tree dapat ditentukan apakah keadaan tertentu mungkin terjadi. Tidak terdapat notasi ω di coverability tree sehingga Petri net di Gambar 4.2 bounded. Batas atas setiap place adalah 1 karena setiap place maksimum mempunyai 1 token. Berikut meru- 81

110 pakan coverability tree yang lengkap dari Petri net lampu lalulintas sederhana pada Gambar hk 0 km 0 mh Gambar 4.3 Coverability Tree untuk Petri net di Gambar 4.2 Coverability tree yang telah diperoleh pada bagian ini digunakan untuk menganalisis sifat konservasi pada Petri net lampu lalulintas sederhana Konservasi Analisis yang dibahas adalah konservasi. Jelas bahwa Petri net lampu lalulintas sederhana memenuhi sifat ini karena jumlah token pada Petri net adalah 1. Berikut merupakan cara pengujian sifat konservasi pada Petri net. Coverability tree di Gambar 4.3 memuat tiga keadaan yang berbeda yaitu [0, 1, 0] T, [0, 0, 1] T dan [1, 0, 0] T sehingga diperoleh sistem persamaan linier γ 1 = C, γ 2 = C, γ 3 = C (4.3) Solusi sistem persamaan linier (4.3) dapat diperoleh dengan menempatkan variabel C sebagai parameter bebas. Nilai variabel γ 1, γ 2 dan γ 3 sama dengan nilai C. Misal dipilih parameter C bernilai 1 maka diperoleh γ = [γ 1, γ 2, γ 3 ] T = [1, 1, 1] T. Jadi Petri net pada Gambar 4.2 memenuhi sifat konservasi. 4.3 Petri net Lampu Lalulintas Dengan Waktu Tunggu Petri net yang dibahas pada bagian sebelumnya tidak mencantumkan waktu tunggu. Pada bagian ini dibahas desain Petri net lampu lalulintas yang mencantumkan waktu tunggu. Dalam desain Petri net ini, selain menyatakan lampu lalulintas dalam keadaan menyala, token juga menyatakan satuan waktu. Jumlah token yang disimpan di place pada saat awal merupakan lama lampu lalulintas menyala. Transisi tambahan diperlukan untuk menghabiskan token pada place. Nama transisi baru ini diakhiri dengan kata nyala yaitu merah nyala, kuning 82

111 nyala dan hijau nyala. Bobot arc dari place ke transisi ini adalah 1 sehingga dibutuhkan pemfirean sebanyak lama lampu lalulintas menyala untuk menghabiskan token pada place. Selain membutuhkan transisi tambahan, Petri net ini juga membutuhkan place tambahan untuk mengindikasikan token di place yang menyatakan lampu lalulintas telah habis. Nama place tambahan ini diawali dengan kata buffer yaitu buffer merah, buffer kuning dan buffer hijau. Place ini menerima token saat transisi nyala difire. Ketika jumlah token di place buffer sama dengan lama lampu lalulintas menyala maka token di place yang menyatakan lampu lalulintas telah habis. Agar transisi yang mengubah lampu lalulintas yang menyala enabled ketika lampu lalulintas yang menyala akan berubah maka place input dari transisi yang mengubah lampu lalulintas yang menyala adalah place buffer dengan bobot lama lampu lalulintas menyala. Place output dari transisi ini adalah place yang menyatakan lampu lalulintas berikutnya dengan bobot lama lampu lalulintas menyala. Petri net secara lengkap dapat dilihat di Gambar 4.4. Place BM, BH dan BK masing-masing menyatakan buffer merah, buffer hijau dan buffer kuning. Transisi mn, hn dan kn masing-masing menyatakan merah nyala, hijau nyala dan kuning nyala. Lampu lalulintas merah, hijau dan kuning menyala masing-masing selama 8, 6 dan 4 satuan waktu. Keadaan Petri net pada Gambar 4.4 menyatakan lampu lalulintas hijau sudah menyala selama 3 satuan waktu karena place BH mempunyai 3 token. Place H mempunyai 3 token sehingga lampu lalulintas hijau masih akan menyala selama 3 satuan waktu. 8 4 km BK kn K 4 hk 6 BH 3 8 M mn BM mh 6 3 H hn Gambar 4.4 Petri net yang Mengandung Informasi Lama Lampu Lalulintas Menyala Secara umum bobot arc yang menghubungkan place BM ke transisi mh dan arc yang menghubungkan transisi km ke place M adalah lama lampu lalulintas merah menyala. Arc yang mempunyai bobot lama lampu lalulintas kuning menyala adalah arc yang menghubungkan place BK ke transisi km dan arc yang menghubungkan transisi hk ke place K. Jelas bahwa bobot arc yang menghubungkan place BH ke transisi hk dan arc yang menghubungkan transisi 83

112 mh ke place H adalah lama lampu lalulintas hijau menyala. Arc yang lain mempunyai bobot 1. Proses membangun Petri net secara umum dapat dituliskan dalam algoritma. Input algoritma ini adalah tiga bilangan bulat positif yaitu tm, tk dan th yang menyatakan lama masing-masing lampu lalulintas menyala. Variabel tm, tk dan th pada Algoritma 4.2 masing-masing menyatakan lama lampu lalulintas merah, kuning dan hijau menyala. Output algoritma sama dengan algoritma sebelumnya yaitu Petri net yang dinyatakan dengan 3-tuple (P, T, Aw) dan keadaan awal yang dinotasikan x 0. Pada Algoritma 4.2 vektor keadaan didefinisikan sebagai x = [x(m), x(bm), x(h), x(bh), x(k), x(bk)] T. Algoritma 4.2 Petri net Lampu Lalulintas Dengan Waktu Tunggu Input: tm, th, tk N /* lama lampu lalulintas menyala */ Output: P, T, Aw,x 0 1 P {M, BM, H, BH, K, BK}; T {mn, mh, hn, hk, kn, km} 2 Aw {(M, mn, 1), (mn, BM, 1), (BM, mh, tm), (mh, H, th)} 3 Aw Aw {(H, hn, 1), (hn, BH, 1), (BH, hk, th), (hk, K, tk)} 4 Aw Aw {(K, kn, 1), (kn, BK, 1), (BK, km, tk), (km, M, tm)} 5 x 0 [0, 0, th, 0, 0, 0] T Selanjutnya diteliti apakah Petri net lampu lalulintas dengan waktu tunggu pure. Untuk transisi mn berlaku I(mn) = {M} dan O(mn) = {BM} sehingga I(mn) O(mn) =. Irisan himpunan place input dan output dari transisi mh juga himpunan kosong karena I(mh) = {BM} dan O(mh) = {H}. Place input dari transisi hn adalah H dan place output dari transisi hn adalah BH sehingga I(hn) O(hn) =. Terlihat dari Gambar 4.4 bahwa tidak ada place yang menjadi input sekaligus output dari transisi hk sehingga irisan himpunan place input dan output dari transisi ini adalah himpunan kosong. Place K menjadi place input dari transisi kn dan place BK menjadi place output dari transisi kn sehingga I(kn) O(kn) =. Transisi km juga memenuhi I(km) O(km) = karena I(km) = {BK} dan O(km) = {M}. Berdasarkan hasil sebelumnya maka dapat disimpulkan persamaan (4.1) dipenuhi. Jadi Petri net lampu lalulintas dengan waktu tunggu dikatakan pure. Terlihat pada baris 2, 3 dan 4 bahwa Petri net mempunyai 12 arc. Keadaan awal Petri net adalah lampu lalulintas hijau baru menyala. Petri net yang dibangun di Algoritma 4.2 mempunyai 6 place dan 6 transisi yang ditunjukkan pada baris 1. Representasi matriks forward incidence, backward incidence dan combined incidence dari Petri net berukuran 6 6. Urutan transisi yang digunakan adalah t 1 = mn, t 2 = mh, t 3 = hn, t 4 = hk, t 5 = kn dan t 6 = km. 84

113 Pada bagian selanjutnya dikaji representasi matriks dari Petri net lampu lalulintas dengan waktu tunggu. Representasi matriks lebih mudah diimplementasikan ke program dibandingkan dengan menggunakan Definisi Matriks Incidence Terdapat 6 elemen tidak nol pada matriks forward incidence yang masing-masing menyatakan arc dari transisi km, mn, mh, hn, hk, kn ke place M, BM, H, BH, K, BK. Pada matriks backward incidence juga terdapat 6 elemen tidak nol yang masing-masing menyatakan arc dari place M, BM, H, BH, K, BK ke transisi mn, mh, hn, hk, kn, km. Setiap transisi di Petri net mempunyai place input (output) sebanyak satu karena terdapat satu elemen tidak nol pada setiap kolom matriks backward incidence (forward incidence). Tidak ada transisi yang mempunyai place input (output) sama dengan transisi yang lain karena semua elemen tidak nol berada pada baris yang berbeda di matriks backward incidence (forward incidence) A f = A b = (4.4) Elemen-elemen matriks forward incidence dan backward incidence diperoleh dari bobot arc Petri net. Elemen matriks forward incidence merupakan bobot arc dari transisi ke place output dan elemen matriks backward incidence merupakan bobot arc dari place input ke transisi. Matriks combined incidence diperoleh dari matriks forward incidence dikurangi matriks backward incidence A = A f A b = (4.5) Ketiga matriks pada persamaan (4.4) dan (4.5) merupakan representasi matriks dari Petri net di Gambar 4.4. Terlihat bahwa elemen matriks 85

114 menyatakan lama masing-masing lampu lalulintas menyala. Dengan mengubah lama masing-masing lampu lalulintas menyala maka bobot beberapa arc akan berubah sehingga mengakibatkan perubahan pada elemen matriks. Selanjutnya disusun bentuk umum matriks forward incidence, backward incidence dan combined incidence dengan lama masing-masing lampu lalulintas menyala dinotasikan dengan tm, th dan tk. Ketiga variabel merupakan bilangan bulat positif. Dalam menyusun ketiga matriks incidence, perhatikan letak elemen matriks pada persamaan (4.4) dan (4.5). Ingat bahwa matriks pada kedua persamaan tersebut menyatakan lampu lalulintas merah, kuning dan hijau masing-masing menyala selama 8, 4 dan 6 satuan waktu tm tm th A f = A b = (4.6) th tk tk Dengan menggunakan matriks forward incidence dan backward incidence pada persamaan (4.6) dapat ditentukan bentuk umum matriks combined incidence tm 1 tm th A = A f A b = (4.7) th tk tk Pada bagian selanjutnya dibahas proses membangun coverability tree dari Petri net lampu lalulintas dengan waktu tunggu. Coverability tree digunakan untuk menganalisis sifat Petri net Coverability Tree Berikutnya dibahas coverability tree dari Petri net di Gambar 4.4. Sifat Petri net ini sama dengan sebelumnya yaitu pada setiap keadaan yang dapat dicapai dari keadaan awal terdapat sebuah transisi yang enabled. Hal ini menyebabkan setiap node di coverability tree mempunyai 1 anak. Langkah per- 86

115 tama yang dilakukan saat membangun coverability tree adalah mendefinisikan keadaan awal sebagai node root. Berdasarkan Petri net di Gambar 4.4 maka [0, 0, 3, 3, 0, 0] T merupakan node root pada coverability tree. Pada keadaan ini transisi hn enabled karena terdapat token pada place H. Pemfirean transisi ini menghasilkan keadaan berturut-turut [0, 0, 2, 4, 0, 0] T, [0, 0, 1, 5, 0, 0] T dan [0, 0, 0, 6, 0, 0] T. Keadaan [0, 0, 0, 6, 0, 0] T berubah menjadi [0, 0, 0, 0, 4, 0] T setelah transisi hk difire. Dengan memfire transisi kn keadaan berubah menjadi [0, 0, 0, 0, 3, 1] T, [0, 0, 0, 0, 2, 2] T, [0, 0, 0, 0, 1, 3] T dan [0, 0, 0, 0, 0, 4] T. Pada keadaan ini transisi km enabled sehingga dapat difire. Pemfirean transisi km menyebabkan keadaan Petri net menjadi [8, 0, 0, 0, 0, 0] T. Dengan memfire transisi mn berulang-ulang diperoleh keadaan [7, 1, 0, 0, 0, 0] T, [6, 2, 0, 0, 0, 0] T, [5, 3, 0, 0, 0, 0] T, [4, 4, 0, 0, 0, 0] T, [3, 5, 0, 0, 0, 0] T, [2, 6, 0, 0, 0, 0] T, [1, 7, 0, 0, 0, 0] T dan [0, 8, 0, 0, 0, 0] T. Pemfirean transisi mh mengubah keadaan Petri net menjadi [0, 0, 6, 0, 0, 0] T. Transisi hn enabled pada keadaan ini sehingga dapat difire. Dengan memfire transisi hn maka diperoleh keadaan [0, 0, 5, 1, 0, 0] T, [0, 0, 4, 2, 0, 0] T dan [0, 0, 3, 3, 0, 0] T. Keadaan [0, 0, 3, 3, 0, 0] T merupakan node root sehingga coverability tree telah selesai dibangun. Terdapat 22 node pada coverability tree ini sehingga sulit untuk digambarkan semuanya. Untuk itu pada Gambar 4.5 hanya ditampilkan 6 node hn 2 hn 1 hn... hn 5 hn 4 hn Gambar 4.5 Coverability Tree untuk Petri net di Gambar 4.4 Himpunan keadaan pada coverability tree di Gambar 4.5 mempunyai pola tertentu. Pertama adalah pada setiap keadaan maksimum place yang mempunyai token berjumlah dua. Dua place ini adalah place lampu dan place buffer. Pola selanjutnya berkaitan dengan jumlah token pada Petri net. Perhatikan bahwa jumlah token pada Petri net sama dengan lama lampu lalulintas yang sedang menyala. Himpunan keadaan pada coverability tree dibagi menjadi 3 agar pola mudah ditentukan. Pembagian dilakukan berdasarkan lampu lalulintas yang 87

116 sedang menyala. Dengan menggunakan keterangan yang telah dibahas maka himpunan keadaan pada coverability tree dapat dituliskan sebagai berikut. S = { [8 m, m, 0, 0, 0, 0] T : 0 m 8 } { [0, 0, 6 h, h, 0, 0] T : 0 h 6 } { [0, 0, 0, 0, 4 k, k] T : 0 k 4 } (4.8) Dengan menggunakan pengetahuan yang sudah diperoleh, selanjutnya disusun bentuk umum coverability tree untuk Petri net lampu lalulintas dengan waktu tunggu. Langkah pertama yang harus dilakukan untuk membangun coverability tree adalah menentukan node root. Dari Algoritma 4.2 jelas bahwa keadaan [0, 0, th, 0, 0, 0] T merupakan keadaan awal Petri net sehingga didefinisikan sebagai node root. Pemfirean transisi hn menyebabkan token pada place H berkurang dan token pada place BH bertambah sehingga diperoleh keadaan [0, 0, th h, h, 0, 0] T dengan 1 h th. Transisi hk enabled saat keadaan Petri net [0, 0, 0, th, 0, 0] T. Pemfirean transisi hk menyebabkan keadaan berubah menjadi [0, 0, 0, 0, tk, 0] T. Transisi kn mengambil sebuah token dari place K dan memberikan sebuah token pada place BK sehingga diperoleh keadaan [0, 0, 0, 0, tk k, k] T dengan 1 k tk. Saat keadaan Petri net [0, 0, 0, 0, 0, tk] T transisi km enabled sehingga dapat difire. Setelah transisi km difire keadaan Petri net menjadi [tm, 0, 0, 0, 0, 0] T. Transisi mn mengurangi token pada place M dan menambah token pada place BM sehingga diperoleh keadaan [tm m, m, 0, 0, 0, 0] T dengan 1 m tm. Transisi mh enabled saat keadaan Petri net [0, tm, 0, 0, 0, 0] T. Pemfirean transisi mh menyebabkan keadaan Petri net sama dengan keadaan awal yaitu [0, 0, th, 0, 0, 0] T. Proses membangun coverability tree sudah selesai karena node [0, 0, th, 0, 0, 0] T merupakan node duplicate. Dengan keterangan sebelumnya maka himpunan keadaan coverability tree dapat ditulis sebagai. S = { [tm m, m, 0, 0, 0, 0] T : 0 m tm } { [0, 0, th h, h, 0, 0] T : 0 h th } { [0, 0, 0, 0, tk k, k] T : 0 k tk } (4.9) Coverability tree yang dibangun juga disebut reachability tree karena tidak terdapat notasi ω sehingga tree memuat semua keadaan yang mungkin dicapai dari keadaan awal. Jelas bahwa Petri net lampu lalulintas dengan waktu tunggu adalah terbatas (bounded) dengan alasan sama dengan sebe- 88

117 lumnya. Batas atas place dari Petri net di Gambar 4.4 adalah [8, 8, 6, 6, 4, 4] T berdasarkan persamaan (4.8). Bentuk umum dari batas atas place dapat ditentukan dengan memperhatikan persamaan (4.9) yaitu [tm, tm, th, th, tk, tk] T Konservasi Selanjutnya dilakukan pengujian sifat konservasi pada Petri net di Gambar 4.4. Dengan menggunakan metode yang telah dibahas pada bab sebelumnya maka diperoleh sistem persaman linier dengan 21 persamaan dan 7 variabel. Bagian pertama terdiri dari 9 persamaan, bagian kedua terdiri dari 7 persamaan dan bagian ketiga terdiri dari 5 persamaan. Jumlah persamaan diperoleh dari (8+1)+(6+1)+(4+1) = 21. Ketujuh variabel yang dimaksud adalah γ 1,..., γ 6, C. Solusi sistem persamaan linier (4.10) adalah trivial sehingga Petri net pada Gambar 4.4 tidak mempunyai sifat konservasi. (8 m)γ 1 + m γ 2 C = 0 dengan 0 m 8 (6 h)γ 3 + h γ 4 C = 0 dengan 0 h 6 (4.10) (4 k)γ 5 + k γ 6 C = 0 dengan 0 k 4 Ingat bahwa 8, 6 dan 4 merupakan lama lampu lalulintas merah, hijau dan kuning menyala yang dinotasikan dengan tm, th dan tk. Dengan menggunakan keterangan sebelumnya maka bentuk umum sistem persamaan linier untuk menguji sifat konservasi Petri net lampu lalulintas dengan waktu tunggu dapat dituliskan sebagai berikut. (tm m)γ 1 + m γ 2 C = 0 (th h)γ 3 + h γ 4 C = 0 (tk k)γ 5 + k γ 6 C = 0 dengan 0 m tm dengan 0 h th dengan 0 k tk (4.11) dengan tm, th dan tk masing-masing menyatakan lama lampu lalulintas merah, hijau dan kuning menyala. Jumlah persamaan pada (4.11) dinyatakan dengan (tm + 1) + (th + 1) + (tk + 1) = tm + th + tk + 3. Jumlah variabel sama dengan sebelumnya yaitu 7. Sifat konservasi dipenuhi jika jumlah persamaan kurang dari jumlah variabel yaitu tm + th + tk + 3 < 7 yang ekivalen dengan tm+th+tk < 4. Nilai minimum dari tm, th dan tk adalah 1 sehingga Petri net konservatif jika tm = 1, th = 1 dan tk = 1. Jika tidak maka sifat konservasi tidak dipenuhi oleh Petri net seperti pada Gambar

118 Jika diperhatikan dengan teliti, terdapat keadaan pada Petri net yang menyatakan tidak ada lampu yang menyala. Hal ini seharusnya dihindari dalam mendesain Petri net lampu lalulintas. Pada bagian berikutnya dibahas Petri net yang mengatasi kekurangan ini. 4.4 Petri net Lampu Lalulintas Tanpa Waktu Idle Petri net yang telah dibahas pada bagian sebelumnya harus dimodifikasi karena terdapat kelemahan pada Petri net tersebut. Kelemahan ini berupa keadaan di Petri net yang menyatakan tidak ada lampu lalulintas yang menyala. Keadaan ini terjadi pada saat pergantian lampu lalulintas yang menyala seperti terlihat pada Petri net di Gambar 4.6. Keadaan ini merupakan bagian dari proses pergantian lampu lalulintas hijau ke kuning. Lampu lalulintas hijau sudah padam karena tidak ada token pada place H dan lampu lalulintas kuning belum menyala karena tidak ada token pada place K. Waktu saat tidak ada lampu lalulintas yang menyala disebut waktu idle. Pada setiap pergantian lampu lalulintas yang menyala, selalu terdapat waktu idle sehingga terdapat tiga waktu idle untuk setiap periode. Terdapat beberapa cara untuk mengatasi permasalahan ini. Pertama dengan meminimumkan waktu idle pada Petri net sehingga tidak membingungkan pengguna jalan. Cara yang kedua yaitu menghilangkan waktu idle. Waktu idle dapat dihilangkan dengan memodifikasi Petri net. Pada bagian ini dibahas bagaimana memodifikasi Petri net lampu lalulintas sebelumnya agar tidak mempunyai waktu idle. 8 4 km BK kn K 4 hk 6 BH M mn BM mh H hn Gambar 4.6 Keadaan Petri net yang Menyatakan Semua Lampu Lalulintas Padam Telah dijelaskan pada bagian sebelumnya bahwa waktu idle disebabkan place M, H dan K tidak mempunyai token. Waktu idle pada Petri net dapat dihilangkan dengan membuat keadaan tidak ada lampu lalulintas yang menyala tidak mungkin terjadi. Hal ini dapat dilakukan dengan melakukan pergantian lampu lalulintas yang menyala saat place M, H atau K mempunyai 90

119 sebuah token. Untuk itu ketiga place tersebut masing-masing dijadikan place input transisi pengubah lampu lalulintas yang menyala yaitu mh, hk dan km. Masing-masing arc mempunyai bobot 1 agar sebuah token diambil dari place tersebut ketika transisi pengubah lampu lalulintas yang menyala difire. Permasalahan yang terjadi pada keadaan ini yaitu transisi tidak enabled karena token yang disimpan di place buffer kurang dari lama lampu lalulintas menyala. Agar transisi ini enabled maka bobot arc yang menghubungkan place buffer ke transisi ini dikurangi satu. Pada keadaan ini ada 2 transisi yang enabled yaitu transisi pengubah lampu lalulintas yang menyala dan transisi nyala. Jika transisi nyala difire maka Petri net mengalami deadlock karena tidak ada token di place M, H dan K. Agar transisi nyala tidak enabled ketika terdapat sebuah token pada ketiga place tersebut maka bobot arc dari place ke transisi nyala diubah menjadi 2. Dengan melakukan ini maka pemfirean transisi nyala mengakibatkan token pada place M, H atau K berkurang 2. Untuk itu dibuat arc dari transisi nyala ke ketiga place dengan bobot 1 agar setiap transisi nyala difire menyebabkan token pada place berkurang satu. mn BM 2 7 hn 3 BH 2 5 M mh 6 3 H hk 8 K 4 3 km 2 BK kn Gambar 4.7 Petri net Lampu Lalulintas Tanpa Waktu Idle Petri net yang lengkap dapat dilihat di Gambar 4.7. Perhatikan terdapat beberapa arc tambahan pada Petri net tersebut misalnya dari place M ke transisi mh dan dari transisi mn ke place M. Perubahan lain yang dilakukan adalah mengubah bobot arc misalnya arc dari place M ke transisi mn mempunyai bobot 2 dan arc dari place BM ke transisi mh mempunyai bobot 7 yang diperoleh dari lama lampu lalulintas merah menyala dikurangi satu. 91

120 Perhatikan bahwa tidak ada perubahan pada place dan transisi sehingga himpunan place P dan himpunan transisi T sama dengan Petri net sebelumnya. Perubahan yang dilakukan berupa menambah arc dan mengubah bobot arc. Terdapat 6 arc yang ditambahkan pada Petri net tersebut yaitu arc dari transisi mn, hn, kn ke place M, H, K dan arc dari place M, H, K ke transisi mh, hk, km. Semua arc yang ditambahkan mempunyai bobot 1. Arc yang diubah bobotnya sebanyak 6 yaitu bobot arc dari place M, H, K ke transisi mn, hn, kn ditambah satu sehingga menjadi 2 dan bobot arc dari place BM, BH, BK ke transisi mh, hk, km dikurangi satu sehingga masing-masing menjadi tm 1, th 1, tk 1. Selanjutnya disusun algoritma membangun Petri net lampu lalulintas tanpa waktu idle. Langkah pertama yang dilakukan dalam menyusun algoritma adalah menentukan input. Input algoritma ini adalah tiga bilangan bulat positif yaitu tm, th, tk. Ketiga bilangan tersebut menyatakan lama masing-masing lampu lalulintas menyala. Output algoritma ini adalah Petri net yang dinyatakan dengan 3-tuple (P, T, Aw). Pernyataan pada baris 1 di algoritma ini sama dengan pernyataan pada baris 1 di Algoritma 4.2 karena himpunan place P dan himpunan transisi T Petri net ini sama dengan sebelumnya. Petri net mempunyai 6 place dan 6 transisi yaitu P = 6 = T. Pendefinisian arc Petri net dilakukan pada baris 2, 3, 4, 5. Terdapat 18 arc pada Petri net tanpa waktu idle yang dapat dilihat pada Algoritma 4.3. Vektor keadaan pada algoritma ini didefinisikan x = [x(m), x(bm), x(h), x(bh), x(k), x(bk)] T yang sama dengan definisi vektor keadaan pada Algoritma 4.2. Algoritma 4.3 Petri net Lampu Lalulintas Tanpa Waktu Idle Input: tm, th, tk N /* lama lampu lalulintas menyala */ Output: P, T, Aw,x 0 1 P {M, BM, H, BH, K, BK}; T {mn, mh, hn, hk, kn, km} 2 Aw {(M, mn, 2), (mn, M, 1), (M, mh, 1), (mn, BM, 1), (BM, mh, tm 1)} 3 Aw Aw {(K, kn, 2), (kn, K, 1), (K, km, 1), (kn, BK, 1), (BK, km, tk 1)} 4 Aw Aw {(H, hn, 2), (hn, H, 1), (H, hk, 1), (hn, BH, 1), (BH, hk, th 1)} 5 Aw Aw {(mh, H, th), (hk, K, tk), (km, M, tm)} 6 x 0 [0, 0, th, 0, 0, 0] T Selanjutnya dilakukan pengujian terhadap Petri net tanpa waktu idle. Tujuan pengujian ini untuk mengetahui apakah Petri net tersebut pure. Langkah yang dilakukan dalam pengujian sama dengan sebelumnya yaitu mencari place yang menjadi input sekaligus output dari suatu transisi. Jika ada place yang memenuhi maka Petri net impure dan jika tidak ada place yang meme- 92

121 nuhi maka Petri net pure. Terlihat pada Gambar 4.7 bahwa terdapat 3 place yang menjadi input sekaligus output dari suatu transisi. Place yang dimaksud adalah M, H, K yang masing-masing menjadi input dan output dari transisi mn, hn, kn. Jadi Petri net tanpa waktu idle dikatakan impure Matriks Incidence Petri net pada Gambar 4.7 dapat direpresentasikan dalam matriks forward incidence, backward incidence dan combined incidence. Ketiga matriks berukuran 6 6 karena terdapat 6 place dan 6 transisi pada Petri net. Sebelum merepresentasikan dalam matriks, urutan transisi harus didefinisikan terlebih dahulu. Urutan transisi didefinisikan t 1 = mn, t 2 = mh, t 3 = hn t 4 = hk, t 5 = kn dan t 6 = km. Urutan place yang digunakan disini sama dengan urutan place pada vektor keadaan Petri net yang telah didefinisikan sebelumnya A f = A b = (4.12) Terlihat bahwa elemen tidak nol pada matriks forward dan backward incidence berjumlah 18 yang menyatakan jumlah arc pada Petri net A = A f A b = (4.13) Representasi matriks dapat digunakan untuk menentukan Petri net pure atau impure. Petri net dikatakan pure jika tidak terdapat posisi dimana elemen matriks forward incidence dan backward incidence tidak nol. Pada persamaan (4.12) terdapat tiga posisi yang memenuhi yaitu (1, 1), (3, 3) dan (5, 5). Jadi kesimpulan yang diperoleh sama dengan sebelumnya yaitu Petri net lampu lalulintas tanpa waktu idle adalah impure. 93

122 Selanjutnya disusun bentuk umum matriks forward incidence dan matriks backward incidence. Perhatikan bahwa elemen kedua matriks incidence dapat dikelompokkan menjadi dua bagian. Bagian pertama adalah elemen yang konstan yaitu tidak dipengaruhi lama lampu lalulintas menyala. Bagian kedua adalah elemen yang tergantung dari lama masing-masing lampu lalulintas menyala. Ini berarti jika terjadi perubahan pada lama masing-masing lampu lalulintas menyala maka elemen yang termasuk bagian kedua di matriks incidence juga mengalami perubahan. Jelas bahwa perubahan ini hanya mempengaruhi nilai elemen tetapi tidak mengubah letak elemen pada matriks incidence. Dengan menggunakan keterangan sebelumnya maka bentuk umum matriks forward incidence dan backward incidence dapat dirumuskan. Perumusan ini disusun berdasarkan Algoritma 4.3, urutan place dan urutan transisi yang telah didefinisikan pada saat menyusun matriks incidence tm tm th A f = A b = th tk tk 1 (4.14) Representasi matriks forward incidence dan backward incidence dari Petri net lampu lalulintas tanpa waktu idle selalu berukuran 6 6 berapapun input yang diberikan. Kesimpulan ini dapat diambil berdasarkan pernyataan pada baris 1 di Algoritma 4.3 atau dengan memperhatikan bahwa Petri net mempunyai 6 place dan 6 transisi. Pendefinisian arc mengacu pada baris 2, 3, 4 dan 5 di Algoritma 4.3. Jika arc menghubungkan transisi ke place maka bobot arc diletakkan di matriks forward incidence dan jika arc menghubungkan place ke transisi maka bobot arc diletakkan di matriks backward incidence. Posisi bobot arc pada masing-masing matriks incidence tergantung dari indeks place dan indeks transisi yang dihubungkan oleh arc tersebut. Bentuk umum matriks forward incidence dan backward incidence dapat dilihat pada persamaan (4.14). Selanjutnya ditentukan bentuk umum matriks combined incidence. Matriks combined incidence berukuran 6 6. Bentuk umum matriks combined incidence dapat diperoleh dengan mudah 94

123 yaitu mencari selisih matriks forward incidence dan backward incidence pada persamaan (4.14) tm 1 tm th A = A f A b = (4.15) th tk tk + 1 Setelah menentukan bentuk umum matriks combined incidence yang dilakukan pada persamaan (4.15), langkah berikutnya adalah menganalisis Petri net. Metode untuk analisis Petri net menggunakan coverability tree. Pada bagian selanjutnya dibahas proses membangun coverability tree dari Petri net di Gambar Coverability Tree Tahap pertama yang dilakukan dalam membangun coverability tree adalah menentukan node root. Node root menyatakan keadaan awal Petri net yaitu [0, 0, 3, 3, 0, 0] T. Pada keadaan ini transisi hn enabled. Dengan memfire transisi ini keadaan Petri net menjadi [0, 0, 2, 4, 0, 0] T, [0, 0, 1, 5, 0, 0] T. Transisi yang enabled pada keadaan [0, 0, 1, 5, 0, 0] T adalah hk. Keadaan Petri net menjadi [0, 0, 0, 0, 4, 0] T setelah transisi hk difire. Satu-satunya transisi yang enabled pada keadaan [0, 0, 0, 0, 4, 0] T adalah kn. Pemfirean transisi ini menyebabkan keadaan Petri net menjadi [0, 0, 0, 0, 3, 1] T, [0, 0, 0, 0, 2, 2] T, [0, 0, 0, 0, 1, 3] T. Pada keadaan ini transisi kn menjadi tidak enabled dan transisi km menjadi enabled. Keadaan Petri net berubah menjadi [8, 0, 0, 0, 0, 0] T setelah transisi km difire. Dengan memfire transisi mn maka keadaan menjadi [7, 1, 0, 0, 0, 0] T, [6, 2, 0, 0, 0, 0] T,...,[1, 7, 0, 0, 0, 0] T. Transisi mh berubah menjadi enabled pada saat keadaan Petri net [1, 7, 0, 0, 0, 0] T. Keadaan Petri net menjadi [0, 0, 6, 0, 0, 0] T setelah mh difire. Pemfirean transisi hn menyebabkan keadaan Petri net menjadi [0, 0, 5, 1, 0, 0] T, [0, 0, 4, 2, 0, 0] T, [0, 0, 3, 3, 0, 0] T sehingga diperoleh keadaan yang sama dengan keadaan awal Petri net. Jadi coverability tree sudah selesai dibangun. Pada coverability tree ini terdapat 19 node sehingga jumlah node di coverability tree ini 3 lebih sedikit dibandingkan sebelumnya. Perhatikan ketiga keadaan yang tidak terdapat di coverability tree ini adalah keadaan yang me- 95

124 nyebabkan terjadinya waktu idle. Coverability tree sulit digambarkan secara keseluruhan karena jumlah node yang terlalu banyak. Pada Gambar 4.8 hanya digambarkan sebagian node coverability tree hn 2 hn 1 hk... hn 5 hn 4 hn Gambar 4.8 Coverability Tree untuk Petri net di Gambar 4.7 Jika diperhatikan dengan seksama maka keadaan pada coverability tree di Gambar 4.8 mempunyai pola tertentu. Jumlah token pada place lampu yang menyala dan buffer nya sama dengan lama lampu lalulintas menyala. Tidak ada token yang disimpan pada place yang lain. Dengan menggunakan pola ini, himpunan keadaan S pada coverability tree dapat dituliskan sebagai berikut. S = { [8 m, m, 0, 0, 0, 0] T : 0 m 7 } { [0, 0, 6 h, h, 0, 0] T : 0 h 5 } { [0, 0, 0, 0, 4 k, k] T : 0 k 3 } (4.16) Berikutnya disusun bentuk umum coverability tree untuk Petri net tanpa waktu idle. Keadaan awal Petri net berdasarkan Algoritma 4.3 yaitu [0, 0, th, 0, 0, 0] T. Langkah pertama yang dilakukan dalam membangun coverability tree adalah menentukan node root. Jelas bahwa keadaan awal didefinisikan sebagai node root. Pada keadaan ini transisi hn enabled sehingga dapat difire. Dengan memfire transisi ini diperoleh keadaan [0, 0, th h, h, 0, 0] T dengan 1 h th 1. Transisi hk enabled pada keadaan [0, 0, 1, th 1, 0, 0] T. Keadaan Petri net menjadi [0, 0, 0, 0, tk, 0] T setelah transisi tersebut difire. Satu-satunya transisi yang enabled pada keadaan ini adalah kn. Pemfirean transisi ini menyebabkan keadaan Petri net menjadi [0, 0, 0, 0, tk k, k] T dengan 1 k tk 1. Transisi kn menjadi tidak enabled dan km menjadi enabled pada keadaan [0, 0, 0, 0, 1, tk 1] T. Dengan memfire transisi km maka diperoleh keadaan [tm, 0, 0, 0, 0, 0] T yang menyebabkan transisi mn enabled. Jika transisi mn difire maka keadaan Petri net menjadi [tm m, m, 0, 0, 0, 0] T dengan 96

125 1 m tm 1. Pada keadaan [1, tm 1, 0, 0, 0, 0] T satu-satunya transisi yang enabled adalah mh. Pemfirean transisi ini menyebabkan keadaan Petri net berubah menjadi [0, 0, th, 0, 0, 0] T yang sama dengan keadaan awal Petri net. Dengan ditemukan node duplicate maka proses membangun coverability tree telah selesai. Keadaan Petri net yang terdapat pada coverability tree mempunyai pola tertentu. Pola ini merupakan perumuman dari contoh sebelumnya dengan menggunakan tm, th dan tk sebagai variabel. Ketiga variabel tersebut masingmasing menyatakan lama lampu lalulintas merah, hijau dan kuning menyala. S = { [tm m, m, 0, 0, 0, 0] T : 0 m tm 1 } { [0, 0, th h, h, 0, 0] T : 0 h th 1 } { [0, 0, 0, 0, tk k, k] T : 0 k tk 1 } (4.17) Coverability tree yang dibangun pada bagian ini juga disebut reachability tree karena tidak ada node yang memuat notasi ω. Reachability tree ini memuat semua keadaan yang mungkin dicapai dari keadaan awal. Jelas bahwa Petri net tanpa waktu idle terbatas (bounded) dengan alasan yang sama dengan sebelumnya. Batas atas Petri net pada Gambar 4.7 adalah [8, 7, 6, 5, 4, 3] T dengan melihat persamaan (4.16). Dengan menggunakan persamaan (4.17), bentuk umum dari batas atas Petri net dapat ditulis sebagai keadaan [tm, tm 1, th, th 1, tk, tk 1] T Konservasi Selanjutnya dilakukan pengujian sifat konservasi pada Petri net di Gambar 4.7. Sistem persamaan linier yang terbentuk mempunyai 18 persamaan dengan 7 variabel. (8 m)γ 1 + m γ 2 C = 0 dengan 0 m 7 (6 h)γ 3 + h γ 4 C = 0 dengan 0 h 5 (4 k)γ 5 + k γ 6 C = 0 dengan 0 k 3 (4.18) Variabel pada sistem persamaan linier (4.18) adalah γ 1, γ 2,..., γ 6 dan C. Sistem persamaan linier tersebut mempunyai penyelesaian trivial sehingga Petri net pada Gambar 4.7 tidak konservatif. Ingat angka 7, 5, 3 pada persamaan (4.18) diperoleh dari 8 1, 6 1, 4 1 yang merupakan lama masingmasing lampu lalulintas menyala dikurangi satu. 97

126 Bentuk umum sistem persamaan linier yang terbentuk dari Petri net lampu lalulintas tanpa waktu idle serupa dengan bentuk umum sistem persamaan linier yang terbentuk dari Petri net lampu lalulintas dengan waktu tunggu. Perbedaan keduanya terletak pada batas atas variabel m, h dan k. Selain menggunakan pendekatan tersebut, persamaan berikut juga dapat disusun dengan memperhatikan persamaan (4.17). (tm m)γ 1 + m γ 2 C = 0 dengan 0 m tm 1 (th h)γ 3 + h γ 4 C = 0 dengan 0 h th 1 (4.19) (tk k)γ 5 + k γ 6 C = 0 dengan 0 k tk 1 dengan tm, th dan tk masing-masing menyatakan lama lampu lalulintas merah, hijau dan kuning menyala. Jumlah persamaan pada (4.19) adalah tm + th + tk dan variabel berjumlah 7 yang sama dengan persamaan (4.18). Sistem persamaan linier pada (4.19) mempunyai penyelesaian tidak trivial jika jumlah persamaan kurang dari jumlah variabel. Jadi sifat konservasi dipenuhi jika tm + th + tk < 7 dengan tm, th, tk > 0. Petri net yang telah dibahas sampai saat ini menyatakan sebuah lampu lalulintas. Pada bagian berikutnya dibahas Petri net lampu lalulintas di persimpangan. 4.5 Petri net Lampu Lalulintas di Persimpangan Persimpangan merupakan perpotongan beberapa jalur kendaraan. Disini terjadi persaingan pada kendaraan di setiap jalur untuk melewati persimpangan. Lampu lalulintas digunakan untuk mengatur kendaraan pada jalur mana yang diperbolehkan melewati persimpangan. Jelas bahwa pada setiap jalur terdapat lampu lalulintas sehingga jumlah lampu lalulintas di persimpangan secara umum lebih dari atau sama dengan jumlah jalur. Pada bagian ini dibahas Petri net lampu lalulintas di persimpangan. Batasan yang digunakan pada pembahasan ini adalah pada setiap waktu terdapat satu jalur yang berhak melewati persimpangan. Perhatikan model persimpangan sederhana pada Gambar 4.9. Garis putus-putus digunakan untuk membedakan jalan satu arah dan jalan dua arah. Pada sebelah kiri dan atas terdapat jalan dua arah yang dinyatakan dengan garis putus-putus. Diasumsikan kendaraan menggunakan lajur kiri. 98

127 Pada sebelah kanan dan bawah tidak terdapat garis putus-putus yang menyatakan jalan tersebut satu arah. Kendaraan yang belok ke kiri dapat melewati persimpangan pada setiap saat tanpa memperhatikan warna lampu lalulintas yang menyala. Terjadi persaingan antara kendaraan pada jalur 1 dengan kendaraan pada jalur 2 untuk melewati persimpangan jika belok ke kanan atau lurus seperti terlihat pada Gambar 4.9. Jadi dibutuhkan dua lampu lalulintas untuk mengatur arus kendaraan pada persimpangan tersebut. 2 1 Gambar 4.9 Model Persimpangan Sederhana Petri net yang dibahas pada bagian ini berbeda dengan Petri net yang dibahas sebelumnya. Pada Petri net sebelumnya jumlah place dan transisi selalu tetap sedangkan jumlah place dan transisi Petri net yang dibahas disini dapat berubah-ubah. Jumlah place dan transisi pada Petri net tergantung jumlah jalur pada persimpangan. Jumlah jalur yang semakin banyak menyebabkan jumlah place dan transisi semakin besar. Jumlah place dan transisi yang semakin besar mengakibatkan grafik Petri net semakin rumit sehingga sulit dipelajari. Untuk itu, model persimpangan sederhana dengan dua jalur seperti terlihat pada Gambar 4.9 digunakan sebagai contoh. Diharapkan dengan menggunakan contoh yang sederhana, proses yang dilakukan tidak rumit sehingga penjelasan lebih mudah dipahami. Dengan memodifikasi Petri net yang telah dibahas pada bagian sebelumnya maka Petri net tersebut dapat digunakan untuk membangun Petri net lampu lalulintas di persimpangan. Modifikasi ini dilakukan karena terdapat perbedaan konsep yang mendasar pada kedua Petri net tersebut. Pada Petri net sebelumnya, lama lampu lalulintas merah menyala ditetapkan sedangkan pada Petri net di persimpangan, lama lampu lalulintas merah menyala tergan- 99

128 tung lama lampu lalulintas hijau dan kuning menyala pada jalur yang lain. Jadi modifikasi dilakukan terhadap place dan transisi di Petri net yang berhubungan dengan lampu lalulintas merah. M 1 km K hk 1 H BK 1 kn 1 BH 1 hn 1 Gambar 4.10 Modifikasi Model Petri net Sebelumnya Langkah pertama yang dilakukan adalah menghapus place BM dan transisi mn. Hal ini disebabkan kedua transisi tersebut digunakan untuk mengatur lama lampu lalulintas merah menyala. Selanjutnya dilakukan modifikasi pada perubahan lampu lalulintas yang menyala. Perubahan lampu lalulintas yang menyala dari merah ke hijau dilakukan jika pada jalur sebelumnya lampu lalulintas yang menyala berubah dari kuning ke merah. Jadi transisi yang menyatakan perubahan ini juga tidak diperlukan sehingga transisi mh dihapus. Selain itu, arc yang berhubungan dengan place BM, transisi mn dan mh juga dihapus. Model Petri net setelah dimodifikasi dapat dilihat pada Gambar Model Petri net pada Gambar 4.10 menyatakan sebuah lampu lalulintas. Jumlah jalur pada model persimpangan sederhana di Gambar 4.9 sebanyak dua sehingga dibutuhkan dua Petri net yang serupa dengan Gambar Selanjutnya dibahas bagaimana menentukan arc yang menghubungkan kedua Petri net tersebut. Perhatikan bahwa lama lampu lalulintas merah menyala pada jalur 1 diperoleh dari jumlahan lama lampu lalulintas hijau dan kuning menyala pada jalur 2. Lampu lalulintas merah menyala pada jalur 1 selama lampu lalulintas hijau atau kuning menyala pada jalur 2. Diharapkan token pada place M 1 habis ketika terjadi perubahan lampu lalulintas yang menyala dari kuning ke merah pada jalur 2. Untuk itu, token pada place M 1 harus berkurang ketika token pada place K 2 atau H 2 berkurang. Hal ini dapat dilakukan dengan menghubungkan arc dari place M 1 ke transisi yang mengambil token dari place K 2 atau H 2. Transisi yang mengambil token dari place H 2 adalah hn 2 dan hk 2. Transisi yang mengambil token dari place K 2 adalah kn 2 dan km 2. Jadi dibuat arc dari place M 1 ke empat transisi tersebut dengan bobot 1 seperti terlihat pada Gambar Proses yang serupa juga dilakukan untuk place M 2. Proses ini adalah mendefinisikan arc yang menghubungkan 100

129 place M 2 ke transisi hn 1, hk 1, kn 1 dan km 1 dengan bobot untuk masing-masing arc adalah 1. hk 2 kn 2 hn 2 M 1 km 2 Gambar 4.11 Hubungan Place Merah dengan Transisi pada Jalur yang Lain Hal yang harus diperhatikan adalah ketika lampu lalulintas yang menyala berubah dari kuning ke merah pada jalur 1. Pada saat yang bersamaan pada jalur 2 lampu lalulintas yang menyala berubah dari merah ke hijau. Ingat bahwa transisi mh 2 sudah dihapus sehingga transisi km 1 juga mengubah lampu lalulintas yang menyala dari merah ke hijau pada jalur 2. Pada pembahasan sebelumnya telah dibuat arc dari place M 2 ke transisi km 1 sehingga transisi ini sudah memadamkan lampu lalulintas merah pada jalur 2. Sebuah arc dibuat dari transisi km 1 ke place H 2 dengan tujuan lampu lalulintas hijau menyala pada jalur 2. Bobot arc ini adalah lama lampu lalulintas hijau menyala pada jalur 2 yang diilustrasikan pada Gambar Proses yang sama juga dilakukan pada transisi km 2 yaitu membuat arc yang menghubungkan transisi km 2 ke place H 1. Tujuan arc ini adalah menjadikan lampu lalulintas hijau menyala pada jalur 1 saat lampu lalulintas yang menyala pada jalur 2 berubah dari kuning ke merah. Lampu lalulintas hijau pada jalur 2 menyala selama 6 satuan waktu sehingga bobot arc dari transisi km 1 ke place H 2 adalah 6. Lampu lalulintas merah pada jalur 1 menyala selama 10 satuan waktu sehingga bobot arc dari transisi km 1 ke place M 1 adalah 10. Perubahan ini diilustrasikan pada Petri net di Gambar H 2 km 1 M 1 Gambar 4.12 Modifikasi Petri net untuk Menyatakan Perubahan Jalur Petri net yang lengkap dapat dilihat di Gambar Terlihat dari gambar tersebut bahwa Petri net dibangun dari dua Petri net yang dihubungkan. Masing-masing Petri net menyatakan sebuah lampu lalulintas. Indeks pada setiap nama place dan transisi menyatakan jalur. Lama lampu lalulintas hijau dan kuning menyala masing-masing adalah 6 dan 4 satuan waktu pada 101

130 setiap jalur. Lama lampu lalulintas merah menyala di jalur 1 diperoleh dari jumlahan lama lampu lalulintas hijau dan kuning menyala di jalur 2. Cara yang sama digunakan untuk menentukan lama lampu lalulintas merah menyala pada jalur 2. Jadi lama lampu lalulintas merah menyala pada jalur 1 sama dengan lama lampu lalulintas merah menyala pada jalur 2 yaitu selama = 10 satuan waktu. Keadaan yang ditunjukkan oleh Petri net pada Gambar 4.13 adalah lampu lalulintas hijau pada jalur 1 baru saja menyala. Hal ini ditunjukkan dengan token pada place H 1 yang berjumlah 6 yaitu lama lampu lalulintas hijau menyala pada jalur 1. Lampu lalulintas merah pada jalur 2 menyala selama 10 satuan waktu karena place M 2 mempunyai 10 token. Pada keadaan ini satu-satunya transisi yang enabled adalah hn 1. Terdapat 10 place pada Petri net di Gambar 4.13 sehingga himpunan place P mempunyai 10 anggota. Anggota himpunan place P adalah p 1 = M 1, p 2 = M 2, p 3 = H 1, p 4 = BH 1, p 5 = K 1, p 6 = BK 1, p 7 = H 2, p 8 = BH 2, p 9 = K 2, p 10 = BK 2. Jumlah transisi pada Petri net sebanyak 8 sehingga himpunan transisi T mempunyai 8 anggota. Anggota himpunan transisi T adalah t 1 = hn 1, t 2 = hk 1, t 3 = kn 1, t 4 = km 1, t 5 = hn 2, t 6 = hk 2, t 7 = kn 2, t 8 = km 2. BK km 2 10 H 1 hn 1 kn 2 2 K 2 M 2 10 hk BH 1 BH hk 2 M 1 K 1 2 kn 1 hn 2 2 H km 1 3 BK 1 Gambar 4.13 Petri net untuk Dua Lampu Lalulintas Petri net lampu lalulintas di persimpangan pada Gambar 4.13 adalah impure karena terdapat place yang menjadi input sekaligus output dari suatu transisi. Place yang dimaksud adalah place H 1, K 1, H 2 dan K 2. Place H 1 dan K 1 masing-masing menjadi input dan output dari transisi hn 1 dan kn 1. Selain 102

131 itu place H 2 dan K 2 masing-masing menjadi input dan output dari transisi hn 2 dan kn 2. Hal ini dapat ditulis place H r dan K r masing-masing menjadi input dan output dari transisi hn r dan kn r dengan r = 1, 2. Selanjutnya disusun bentuk umum Petri net lampu lalulintas persimpangan yang dituliskan dalam algoritma. Input algoritma ini adalah jumlah jalur yang dinotasikan l dan lama lampu lalulintas hijau dan kuning menyala pada masing-masing jalur yang dinotasikan th dan tk. Variabel th dan tk merupakan vektor yang mempunyai l elemen. Elemen dari vektor th dan tk merupakan bilangan bulat taknegatif. Algoritma menghasilkan Petri net yang dinyatakan dengan 3-tuple (P, T, Aw) seperti yang telah didefinisikan pada bagian sebelumnya dan keadaan awal x 0. Langkah pertama yang dilakukan pada saat menyusun bentuk umum Petri net lampu lalulintas persimpangan adalah membangun Petri net untuk masing-masing jalur seperti terlihat pada Gambar Petri net untuk setiap jalur mempunyai 5 place yaitu M, H, K, BH, BK dan 4 transisi yaitu hn, hk, kn, km. Indeks digunakan untuk menunjukkan nama place dan transisi pada setiap jalur. Pada setiap jalur dibutuhkan 11 arc seperti yang terlihat pada Gambar Berdasarkan keterangan sebelumnya, dapat disimpulkan bahwa Petri net lampu lalulintas persimpangan mempunyai 5l place, 4l transisi dan 11l arc dengan l menyatakan jumlah jalur pada persimpangan. Hal yang harus dilakukan untuk menggabungkan Petri net adalah membuat arc pada place M dan transisi km yang telah dibahas pada bagian sebelumnya. Semua arc dari place M mempunyai bobot 1. Arc dihubungkan ke transisi hn, hk, kn, km pada semua jalur yang berbeda. Jumlah arc yang dibuat pada tahap ini sebanyak 4l(l 1) = 4l 2 4l. Selanjutnya dibuat arc dari transisi km ke place H pada jalur berikutnya. Bobot arc ini adalah lama lampu lalulintas hijau menyala pada jalur berikutnya. Misalnya arc dari km 1 ke H 2 mempunyai bobot th 2, arc dari km l ke H 1 mempunyai bobot th 1 dengan l menyatakan jumlah jalur pada persimpangan. Jumlah arc yang dibuat pada tahap ini sebanyak l. Terlihat pada Gambar 4.12 bahwa terdapat dua arc yang dibuat. Arc yang pertama telah dibahas sebelumnya. Arc yang kedua menghubungkan transisi km ke place M pada jalur yang sama. Bobot arc ini adalah jumlahan lama lampu lalulintas menyala hijau dan kuning pada jalur lain seperti tertulis pada baris 12. Arc yang dibuat pada tahap ini sebanyak jumlah jalur yang dinotasikan dengan l. Arc pada Petri net sebanyak 11l + (4l 2 4l) + l + l yang dapat disederhanakan menjadi 4l 2 + 9l. 103

132 Algoritma 4.4 Petri net Lampu Lalulintas di Persimpangan Input: th,tk (N {0}) l, l /* l adalah jumlah jalur */ Output: P, T, Aw,x 0 1 P ; T ; Aw ; x 0 zeros(5l, 1) /* inisialisasi */ 2 for i = 1 to l do 3 P P {M i, K i, H i, BK i, BH i }; T T {hn i, hk i, kn i, km i } 4 Aw Aw {(H i, hn i, 2), (hn i, H i, 1), (hn i, BH i, 1), (H i, hk i, 1)} 5 Aw Aw {(K i, kn i, 2), (kn i, K i, 1), (kn i, BK i, 1), (K i, km i, 1)} 6 Aw Aw {(BH i, hk i, th i 1), (hk i, K i, tk i ), (BK i, km i, tk i 1)} 7 end for 8 for i = 1 to l do 9 for j = 1 to l and j i do 10 Aw Aw {(M i, hn j, 1), (M i, hk j, 1), (M i, kn j, 1), (M i, km j, 1)} 11 end for 12 Aw Aw {(km i, H i+1, th i+1 ), (km i, M i, j i (th j + tk j ))} 13 x 0 (i) i 1 j=1 (th j + tk j ) /* place M i */ 14 end for 15 x 0 (l + 1) th 1 /* place H 1 */ Berikutnya dibahas proses yang dilakukan oleh Algoritma 4.4. Inisialisasi variabel P, T, Aw dan x 0 dilakukan pada baris 1. Perulangan for pada baris 2 bertujuan membangun Petri net untuk masing-masing jalur. Pendefinisian place dan transisi dilakukan pada baris 3 dan pendefinisian arc dilakukan pada baris 4, 5 dan 6. Arc yang menghubungkan place M ke transisi pada jalur lain terlihat pada baris 10. Perhatikan pada baris 12 bahwa place H l+1 didefinisikan sama dengan place H 1 yang ditulis H l+1 def = H 1. Dengan cara yang sama dengan sebelumnya maka th l+1 def = th 1 menyatakan lama lampu lalulintas hijau menyala pada jalur l + 1 sama dengan lama lampu lalulintas hijau menyala pada jalur 1. Pendefinisian keadaan awal Petri net dilakukan pada baris 13 dan 15. Keadaan awal yang didefinisikan pada kedua baris tersebut menyatakan lampu lalulintas hijau pada jalur 1 baru menyala. Berikutnya dibahas representasi Petri net dalam matriks incidence Matriks Incidence Dalam menyusun matriks forward incidence, urutan place dan transisi pada Petri net harus ditentukan terlebih dahulu. Urutan place yang digunakan adalah p 1 = M 1, p 2 = M 2, p 3 = H 1, p 4 = BH 1, p 5 = K 1, p 6 = BK 1, p 7 = H 2, p 8 = BH 2, p 9 = K 2, p 10 = BK 2 dan urutan transisi yang digunakan adalah t 1 = hn 1, t 2 = hk 1, t 3 = kn 1, t 4 = km 1, t 5 = hn 2, t 6 = hk 2, t 7 = kn 2, t 8 = km

133 Elemen matriks forward incidence merupakan bobot arc yang menghubungkan transisi ke place. Jika tidak ada arc yang menghubungkan transisi ke place tertentu maka diberikan nilai nol. Posisi elemen ditentukan oleh indeks transisi asal dan indeks place tujuan. Indeks transisi asal menyatakan kolom dan indeks place tujuan menyatakan baris. Matriks forward incidence untuk Petri net pada Gambar 4.13 dapat dilihat di persamaan (4.20) A f = (4.20) Selanjutnya disusun bentuk umum matriks forward incidence untuk Petri net lampu lalulintas di persimpangan. Sebelum melakukan hal tersebut urutan place dan transisi secara umum pada Petri net harus ditentukan terlebih dahulu. Urutan place yang digunakan sama dengan urutan pada vektor keadaan Petri net yaitu p 1 = M 1, p 2 = M 2,..., p l = M l, p l+1 = H 1, p l+2 = BH 1, p l+3 = K 1, p l+4 = BK 1,..., p 5l 3 = H l, p 5l 2 = BH l, p 5l 1 = K l, p 5l = BK l. Urutan transisi yang digunakan adalah t 1 = hn 1, t 2 = hk 1, t 3 = kn 1, t 4 = km 1,..., t 4l 3 = hn l, t 4l 2 = hk l, t 4l 1 = kn l, t 4l = km l. Perhatikan bahwa ukuran matriks forward incidence tergantung jumlah jalur sehingga ukuran matriks tidak selalu sama. Untuk itu, bentuk umum matriks forward incidence dinyatakan dalam bentuk algoritma. Langkah pertama yang dilakukan dalam membangun algoritma adalah menentukan input dan output. Input algoritma ini adalah lama lampu lalulintas hijau dan kuning menyala pada masing-masing jalur yang dinotasikan dengan th dan tk. Elemen kedua vektor merupakan bilangan bulat taknegatif. Input yang lain adalah jumlah jalur di persimpangan yang dinotasikan l. Output algoritma ini adalah matriks forward incidence yang dinotasikan A f. Matriks forward incidence berukuran 5l 4l yang masing-masing menyatakan jumlah place dan transisi Petri net. Elemen matriks forward incidence meru- 105

134 pakan bilangan bulat taknegatif yang menyatakan bobot arc dari transisi ke place. Algoritma 4.5 Forward Incidence Petri net Lampu Lalulintas di Persimpangan Input: th,tk (N {0}) l, l /* l adalah jumlah jalur */ Output: A f (N {0}) 5l 4l /* matriks forward incidence */ 1 A f zeros(5l, 4l); A f (l + 1, 4l) th 1 ; A f (l, 4l) l 1 j=1 (th j + tk j ) 2 for i = 1 to l 1 do 3 A f (l + 4i + 1, 4i) th i+1 ; A f (i, 4i) j i (th j + tk j ) 4 end for 5 for i = 1 to l do 6 A f (l+4i 3, 4i 3) 1; A f (l+4i 2, 4i 3) 1; A f (l+4i 1, 4i 1) 1 7 A f (l + 4i, 4i 1) 1; A f (l + 4i 1, 4i 2) tk i 8 end for Dalam membahas proses yang dilakukan oleh Algoritma 4.5 akan ditentukan proses yang ekivalen di Algoritma 4.4. Hal ini dilakukan untuk mengetahui apakah pernyataan pada Algoritma 4.5 mendefinisikan semua arc yang menghubungkan transisi ke place pada Petri net lampu lalulintas di persimpangan. Jika ya maka Algoritma 4.5 membangun matriks forward incidence dan jika tidak maka algoritma tersebut tidak membangun matriks forward incidence. Matriks forward incidence diinisialisasi dengan matriks nol berukuran 5l 4l. Pernyataan berikutnya masing-masing menyatakan arc dari transisi km l ke place H 1 dan place M l. Kedua pernyataan ini ekivalen dengan pernyataan baris 12 di Algoritma 4.4 pada saat i = l. Ingat bahwa baris pada matriks forward incidence menyatakan place dan kolom menyatakan transisi. Perhatikan bahwa A f (l+4i+1, 4i) menyatakan arc dari transisi km i ke place H i+1 dan A f (i, 4i) menyatakan arc dari transisi km i ke place M i untuk i = 1, 2,..., l 1. Jelas bahwa pernyataan ini bermakna sama dengan pernyataan pada baris 12 di Algoritma 4.4 untuk i = 1, 2,..., l 1. Pada baris 4 di Algoritma 4.4 terdapat 2 arc yang termasuk forward incidence yaitu (hn i, H i, 1) dan (hn i, BH i, 1). Kedua arc masing-masing ekivalen dengan pernyataan A f (l+4i 3, 4i 3) 1 dan A f (l+4i 2, 4i 3) 1. Dengan cara yang sama diperoleh pernyataan A f (l + 4i 1, 4i 1) 1 dan A f (l + 4i, 4i 1) 1 ekivalen dengan arc (kn i, K i, 1) dan (kn i, BK i, 1) yang didefinisikan pada baris 5. Jelas bahwa arc (hk i, K i, tk i ) ekivalen dengan pernyataan A f (l + 4i 1, 4i 2) tk i. Dengan memperhatikan penjelasan 106

135 sebelumnya maka diperoleh kesimpulan Algoritma 4.5 membangun matriks forward incidence Petri net lampu lalulintas di persimpangan. Urutan place dan transisi yang digunakan untuk menyusun matriks backward incidence sama dengan urutan place dan transisi yang digunakan untuk matriks forward incidence. Elemen matriks backward incidence menyatakan bobot arc dari place ke transisi. Jika tidak ada arc dari place ke transisi tertentu maka diberikan bobot nol. Penyusunan matriks backward incidence tidak dibahas secara terperinci pada bagian ini karena proses ini telah dijelaskan pada bagian sebelumnya. Persamaan (4.21) merupakan matriks backward incidence untuk Petri net lampu lalulintas persimpangan di Gambar A b = (4.21) Ukuran matriks backward incidence dipengaruhi jumlah jalur di persimpangan. Matriks backward incidence berukuran sama dengan matriks forward incidence yaitu 5l 4l dengan l menyatakan jumlah jalur di persimpangan. Dengan memperhatikan keterangan sebelumnya maka bentuk umum matriks backward incidence dituliskan dalam bentuk algoritma. Langkah pertama yang dilakukan dalam membangun algoritma adalah menentukan input dan output. Input algoritma ini sama dengan input algoritma membangun matriks forward incidence yaitu lama lampu lalulintas hijau dan kuning menyala pada masing-masing jalur dan jumlah jalur di persimpangan. Output algoritma ini adalah matriks backward incidence yang dinotasikan A b. Pada tahap inisialisasi, elemen matriks backward incidence pada baris 1 hingga l bernilai 1 dan elemen pada baris l + 1 hingga 5l bernilai 0 seperti terlihat pada baris 1. Selanjutnya ditunjukkan bahwa pernyataan pada algoritma ini ekivalen dengan arc yang didefinisikan dari place ke transisi pada Algoritma 4.4. Elemen matriks backward incidence merupakan bobot arc yang 107

136 menghubungkan place ke transisi. Jika tidak ada arc yang menghubungkan place ke transisi maka elemen matriks yang bersesuaian bernilai nol. Algoritma 4.6 Backward incidence Petri net Lampu Lalulintas di Persimpangan Input: th,tk (N {0}) l, l /* l adalah jumlah jalur */ Output: A b (N {0}) 5l 4l /* matriks backward incidence */ 1 A b [ones(l, 4l); zeros(4l, 4l)] /* inisialisasi */ 2 for i = 1 to l do 3 A b (l+4i 3, 4i 3) 2; A b (l+4i 3, 4i 2) 1; A b (l+4i 1, 4i 1) 2 4 A b (l+4i 1, 4i) 1; A b (l+4i 2, 4i 2) th i 1; A b (l+4i, 4i) tk i 1 5 A b (i, 4i 3 : 4i) zeros(1, 4) 6 end for Pernyataan A b (l + 4i 3, 4i 3) 2 dan A b (l + 4i 3, 4i 2) 1 masing-masing ekivalen dengan definisi arc (H i, hn i, 2) dan (H i, hk i, 1) pada baris 4 di Algoritma 4.4. Pada baris 5 di Algoritma 4.4 terdapat dua arc yang menghubungkan place ke transisi yaitu (K i, kn i, 2) dan (K i, km i, 1) yang masing-masing ekivalen dengan pernyataan A b (l + 4i 1, 4i 1) 2 dan A b (l+4i 1, 4i) 1. Perhatikan pernyataan A b (l+4i 2, 4i 2) th i 1 dan A b (l + 4i, 4i) tk i 1 masing-masing ekivalen dengan arc yang didefinisikan dengan (BH i, hk i, th i 1) dan (BK i, km i, tk i 1). Pada baris 10 di Algoritma 4.4 didefinisikan arc dari place M ke semua transisi pada jalur yang lain dengan bobot 1. Ingat pada tahap inisialisasi elemen matriks backward incidence pada baris 1 hingga l bernilai 1. Kenyataan ini menunjukkan terdapat arc dari place M ke semua transisi. Langkah yang harus dilakukan adalah menghapus arc dari place M ke semua transisi pada jalur yang sama agar sesuai dengan Algoritma 4.4. Perhatikan bahwa definisi A b (i, 4i 3), A b (i, 4i 2), A b (i, 4i 1), A b (i, 4i) masing-masing menyatakan arc dari place M i ke transisi hn i, hk i, kn i, km i. Dengan menggunakan keterangan sebelumnya maka pernyataan A b (i, 4i 3 : 4i) zeros(1, 4) dapat diartikan menghapus arc dari place M ke semua transisi pada jalur yang sama. Jadi Algoritma 4.6 membangun matriks backward incidence untuk Petri net lampu lalulintas di persimpangan. Secara umum Petri net lampu lalulintas di persimpangan adalah impure karena terdapat place yang menjadi input sekaligus output dari suatu transisi. Jelas bahwa place H r dan K r masing-masing menjadi input dan output dari transisi hn r dan kn r dengan r = 1, 2,..., l dan l menyatakan jumlah jalur di persimpangan. 108

137 Pada bagian berikutnya dibahas analisis Petri net lampu lalulintas di persimpangan. Analisis Petri net dilakukan dengan menggunakan coverability tree. Untuk itu proses yang dilakukan dalam membangun coverability tree dibahas terlebih dahulu Coverability Tree Cara yang digunakan untuk membangun coverability tree sama dengan sebelumnya. Langkah pertama yang dilakukan dalam membangun coverability tree adalah mendefinisikan keadaan awal sebagai root. Pada keadaan awal Petri net terdapat 10 token pada place M 2 dan 6 token pada place H 1 sehingga vektor keadaan dapat ditulis [0, 10, 6, 0, 0, 0, 0, 0, 0, 0] T. Transisi yang enabled pada keadaan ini adalah hn 1. Dengan memfire transisi ini diperoleh [0, 9, 5, 1, 0, 0, 0, 0, 0, 0] T, [0, 8, 4, 2, 0, 0, 0, 0, 0, 0] T, [0, 7, 3, 3, 0, 0, 0, 0, 0, 0] T, [0, 6, 2, 4, 0, 0, 0, 0, 0, 0] T, [0, 5, 1, 5, 0, 0, 0, 0, 0, 0] T. Keadaan terakhir menyebabkan transisi hn 1 tidak enabled karena jumlah token pada place H 1 sebanyak satu. Transisi hk 1 menjadi enabled karena terdapat sebuah token pada place H 1 dan 5 token pada place BH 1. Pemfirean transisi hk 1 menyebabkan token yang disimpan di place M 2 menjadi 4, place H 1 dan BH 1 tidak mempunyai token dan place K 1 mempunyai 4 token sehingga vektor keadaan dapat ditulis [0, 4, 0, 0, 4, 0, 0, 0, 0, 0] T. Pada keadaan ini transisi kn 1 menjadi enabled. Dengan memfire transisi ini maka keadaan Petri net menjadi [0, 3, 0, 0, 3, 1, 0, 0, 0, 0] T, [0, 2, 0, 0, 2, 2, 0, 0, 0, 0] T, [0, 1, 0, 0, 1, 3, 0, 0, 0, 0] T. Pada keadaan ini transisi km 1 menjadi enabled. Dengan memfire transisi ini maka lampu lalulintas yang menyala pada jalur 1 berubah menjadi merah dan pada saat yang bersamaan lampu lalulintas yang menyala pada jalur 2 berubah menjadi hijau. Pemfirean transisi km 1 menyebabkan keadaan Petri net menjadi [10, 0, 0, 0, 0, 0, 6, 0, 0, 0] T. Satu-satunya transisi yang enabled pada saat terdapat 10 token pada place M 1 dan 6 token pada place H 1 yaitu keadaan [10, 0, 0, 0, 0, 0, 6, 0, 0, 0] T adalah hn 2. Dengan memfire transisi ini maka keadaan Petri net berubah menjadi [9, 0, 0, 0, 0, 0, 5, 1, 0, 0] T, [8, 0, 0, 0, 0, 0, 4, 2, 0, 0] T, [7, 0, 0, 0, 0, 0, 3, 3, 0, 0] T, [6, 0, 0, 0, 0, 0, 2, 4, 0, 0] T, [5, 0, 0, 0, 0, 0, 1, 5, 0, 0] T. Pada keadaan ini transisi hn 2 menjadi tidak enabled dan transisi hk 2 menjadi enabled. Pemfirean transisi hk 2 menyebabkan keadaan Petri net menjadi [4, 0, 0, 0, 0, 0, 0, 0, 4, 0] T. Dengan memfire transisi kn 2 maka keadaan berubah menjadi [3, 0, 0, 0, 0, 0, 0, 0, 3, 1] T, [2, 0, 0, 0, 0, 0, 0, 0, 2, 2] T, [1, 0, 0, 0, 0, 0, 0, 0, 1, 3] T. Transisi km 2 berubah men- 109

138 jadi enabled pada keadaan ini. Pemfirean transisi ini menyebabkan keadaan Petri net menjadi [0, 10, 6, 0, 0, 0, 0, 0, 0, 0] T. Perhatikan bahwa keadaan ini sama dengan keadaan awal Petri net sehingga proses membangun coverability tree telah selesai. Jumlah node pada coverability tree sebanyak 21 dengan 20 keadaan yang berbeda. Berdasarkan proses sebelumnya dapat disimpulkan bahwa pada setiap keadaan terdapat sebuah transisi yang enabled sehingga setiap node pada coverability tree mempunyai 1 anak hn 1 hn 1 hn 1 kn 2 kn 2 km 2 Gambar 4.14 Coverability Tree untuk Petri net di Gambar 4.13 Coverability tree yang lengkap sulit untuk ditampilkan karena coverability tree mempunyai 21 node dan setiap node dinyatakan dengan vektor keadaan yang mempunyai 10 elemen. Untuk itu pada Gambar 4.14 hanya ditampilkan sebagian node di coverability tree. Node yang terletak di paling kiri merupakan node root yang berisi keadaan awal Petri net. Berdasarkan keterangan sebelumnya maka satu-satunya transisi yang enabled pada keadaan ini adalah hn 1. Dengan memfire transisi ini maka diperoleh keadaan di sebelah kanan dari node root. Kedua node dihubungkan dengan anak panah yang bertuliskan nama transisi yang difire yaitu hn 1. Proses ini dilakukan berulang-ulang hingga diperoleh node duplicate. Selanjutnya keadaan yang termuat di coverability tree akan dituliskan dengan menggunakan notasi himpunan. Hal ini dilakukan untuk mengetahui karakteristik keadaan yang dapat dicapai dari keadaan awal dan menyederhanakan penulisan terutama jika jumlah node di coverability tree sangat besar. Langkah pertama yang dilakukan adalah mencari pola vektor keadaan yang termuat di coverability tree. Pola ini sulit ditemukan karena jumlah node yang besar dan bentuk vektor keadaan yang bervariasi. Untuk itu keadaan di co- 110

139 verability tree akan dikelompokkan berdasarkan lampu lalulintas hijau atau kuning yang menyala dan jalurnya. Persimpangan yang dibahas pada bagian ini mempunyai 2 jalur sehingga keadaan di coverability tree dikelompokkan menjadi 4 himpunan yaitu Sh 1, Sh 2, Sk 1 dan Sk 2. Notasi h dan k masing-masing menyatakan lampu lalulintas hijau dan kuning yang menyala. Indeks menyatakan jalur dimana lampu lalulintas hijau atau kuning menyala. Sebagai contoh Sh 1 merupakan himpunan keadaan yang menyatakan lampu lalulintas hijau menyala pada jalur 1 dan Sk 2 merupakan himpunan keadaan yang menyatakan lampu lalulintas kuning menyala pada jalur 2. Ketika lampu lalulintas hijau menyala pada jalur 1 maka place yang mungkin mempunyai token adalah M 2, H 1 dan BH 1. Place yang lain tidak mungkin mempunyai token. Indeks masing-masing place yang mungkin mempunyai token adalah 2, 3 dan 4. Anggota himpunan Sh 1 merupakan vektor keadaan yang dinotasikan h 1 (t) untuk t = 0, 1,..., 5. Variabel t berhubungan dengan lama lampu lalulintas hijau menyala. Ingat lampu lalulintas hijau menyala di jalur 1 selama 6 satuan waktu. Dengan menggunakan notasi himpunan maka Sh 1 dapat dinyatakan sebagai Sh 1 = { h 1 (t) : t = 0,..., 5 }. Berikut merupakan bentuk keadaan h 1 (t) dengan i = 1, 2,..., 10. Variabel i berkaitan dengan banyak elemen pada vektor keadaan. 10 t, untuk i = 2 h 1 i (t) = 6 t, untuk i = 3 (4.22) t, untuk i = 4 0, untuk i yang lain Perhatikan bahwa nilai t yang semakin besar menyebabkan token pada place M 2 dan H 1 akan berkurang dan token pada place BH 1 bertambah. Kesimpulan ini sesuai dengan kenyataan bahwa place M 2 dan H 1 merupakan place input dari transisi hn 1. Jelas bahwa place output dari transisi hn 1 adalah place BH 1. Ketika lampu lalulintas yang menyala pada jalur 1 berubah menjadi kuning maka place yang mungkin mempunyai token adalah M 2, K 1 dan BK 1. Indeks dari ketiga place tersebut masing-masing adalah 2, 5 dan 6. Himpunan Sk 1 dinyatakan dengan Sk 1 = { k 1 (t) : t = 0, 1,..., 3 }. Ingat lampu lalulintas kuning di jalur 1 menyala selama 4 satuan waktu. Pada keadaan ini jumlah token pada place M 2 sama dengan K 1. Jumlah token yang disimpan di M 2 dan K 1 111

140 pada kondisi awal sebanyak 4. Dengan menggunakan keterangan sebelumnya maka keadaan k 1 (t) dapat dinyatakan sebagai berikut dengan i = 1, 2,..., t, untuk i = 2 ki 1 (t) = 4 t, untuk i = 5 t, untuk i = 6 0, untuk i yang lain (4.23) Selanjutnya dibahas bentuk keadaan yang menyatakan lampu lalulintas hijau atau kuning menyala pada jalur 2. Pada saat lampu lalulintas hijau menyala pada jalur 2, place yang mungkin mempunyai token adalah M 1, H 2 dan BH 2. Indeks masing-masing place tersebut adalah 1, 7 dan 8. Himpunan Sh 2 dinyatakan dengan Sh 2 = { h 2 (t) : t = 0,...,5 }. Ingat lampu lalulintas hijau menyala di jalur 2 selama 6 satuan waktu. Berikut merupakan bentuk keadaan h 2 (t) dengan i = 1, 2,..., 10. h 2 i(t) = 10 t, untuk i = 1 6 t, untuk i = 7 t, untuk i = 8 0, untuk i yang lain (4.24) Saat lampu lalulintas kuning menyala pada jalur 2 maka place yang mungkin mempunyai token adalah M 1, K 2 dan BK 2. Indeks masing-masing place adalah 1, 9 dan 10. Himpunan Sk 2 mempunyai anggota vektor keadaan yang dinyatakan dengan Sk 2 = { k 2 (t) : t = 0, 1,..., 3 }. Ingat lampu lalulintas kuning menyala di jalur 2 selama 4 satuan waktu. Keadaan k 2 (t) dapat dinyatakan sebagai berikut dengan i = 1, 2,..., t, untuk i = 1 ki 2 4 t, untuk i = 9 (t) = t, untuk i = 10 0, untuk i yang lain (4.25) Selanjutnya ditentukan bentuk umum coverability tree untuk Petri net lampu lalulintas di persimpangan. Langkah pertama yang dilakukan dalam membangun coverability tree adalah mendefinisikan bentuk umum keadaan awal Petri net sebagai node root. Bentuk keadaan awal secara umum dapat dilihat pada Algoritma 4.4. Place yang mempunyai token pada keadaan awal 112

141 adalah M 2, M 3,...,M l dan H 1. Indeks masing-masing place adalah 2, 3,..., l dan l+1. Jika x adalah vektor yang menyatakan keadaan awal Petri net maka untuk i = 1, 2,..., 5l berlaku x i = 1 j<i (th j + tk j ), untuk i = 2, 3,..., l th 1, untuk i = l + 1 0, untuk i yang lain (4.26) dengan th j dan tk j masing-masing menyatakan lama lampu lalulintas hijau dan kuning menyala pada jalur ke j untuk j = 1, 2,..., l. Jika token yang disimpan pada place H 1 pada saat awal lebih dari atau sama dengan 2 yaitu th 1 2 maka transisi hn 1 enabled dan jika place H 1 mempunyai sebuah token pada saat awal yaitu th 1 = 1 maka transisi yang enabled adalah hk 1. Diasumsikan lama lampu lalulintas hijau menyala pada jalur 1 lebih dari atau sama dengan 2 satuan waktu sehingga th 1 2 yang menyebabkan transisi hn 1 dapat difire. Dengan memfire transisi ini maka token pada place M r dengan r = 2, 3,..., l dan place H 1 berkurang sedangkan token pada place BH 1 bertambah. Indeks place H 1 dan BH 1 masing-masing adalah l + 1 dan l + 2. Jika Sh 1 = { h 1 (t) : t = 0,...,th 1 1 } adalah himpunan keadaan yang menyatakan lampu lalulintas hijau menyala pada jalur 1 maka untuk i = 1, 2,..., 5l berlaku h 1 i (t) = 1 j<i (th j + tk j ) t, untuk i = 2, 3,..., l th 1 t, untuk i = l + 1 t, untuk i = l + 2 0, untuk i yang lain (4.27) Transisi hn 1 tidak enabled pada saat place H 1 menyimpan sebuah token dan transisi hk 1 menjadi enabled. Dengan memfire hk 1 maka token pada place M r dengan r = 2, 3,..., l berkurang, token pada place H 1 dan BH 1 habis serta place K 1 menerima token sebanyak tk 1 yaitu lama lampu lalulintas kuning menyala pada jalur 1. Pada keadaan ini satu-satunya transisi yang enabled adalah kn 1. Pemfirean transisi ini menyebabkan token pada place M r dengan r = 2, 3,..., l dan K 1 berkurang sedangkan token pada place BK 1 bertambah. Indeks place K 1 dan BK 1 masing-masing adalah l + 3 dan l + 4. Himpunan Sk 1 merupakan himpunan dengan anggota keadaan yang menyatakan lampu lalulintas kuning menyala pada jalur 1 yang ditulis 113

142 Sk 1 = { k 1 (t) : t = 0, 1,..., tk 1 1 }. Keadaan k 1 (t) dengan i = 1, 2,..., 5l merupakan vektor kolom yang dinyatakan dalam persamaan berikut. tk 1 + (th j + tk j ) t, untuk i = 2, 3,..., l 1<j<i ki 1 (t) = tk 1 t, untuk i = l + 3 (4.28) t, untuk i = l + 4 0, untuk i yang lain Selanjutnya dibahas keadaan yang menyatakan lampu lalulintas hijau atau kuning menyala pada jalur 2. Langkah-langkah yang dilakukan serupa dengan jalur 1 ditambah beberapa penyesuaian. Penyesuaian pertama pada variabel yang menyatakan lama lampu lalulintas menyala. Hal lain yang perlu diperhatikan adalah indeks place yang mungkin mempunyai token. Jelas bahwa indeks place yang mungkin mempunyai token pada jalur 2 berbeda dengan indeks place yang mungkin mempunyai pada jalur 1 meskipun warna lampu lalulintas yang menyala sama (hijau atau kuning). Perhatikan ketika lampu lalulintas pada jalur 1 menyala hijau atau kuning maka lampu lalulintas merah pada jalur 1 tidak menyala. Kenyataan ini dapat disimpulkan dengan memperhatikan bahwa elemen pertama dari vektor keadaan selalu bernilai nol pada pembahasan sebelumnya. Hal ini juga harus disesuaikan yaitu ketika lampu lalulintas hijau atau kuning menyala pada jalur 2 maka lampu lalulintas merah pada jalur 2 tidak menyala dengan memberikan nilai nol pada elemen kedua dari vektor keadaan. Jika Sh 2 adalah himpunan keadaan yang menyatakan lampu lalulintas hijau menyala pada jalur 2 maka ditulis Sh 2 = { h 2 (t) : t = 0, 1,..., th 2 1 }. Keadaan h 2 (t) didefinisikan sebagai berikut untuk i = 1, 2,..., 5l. h 2 i(t) = 2 j l 2 j<i (th j + tk j ) t, untuk i = 1 (th j + tk j ) t, untuk i = 3, 4,..., l (4.29) th 2 t, untuk i = l + 5 t, untuk i = l + 6 0, untuk i yang lain Perhatikan bahwa terdapat kasus tambahan pada definisi h 2 (t) yaitu pada saat i = 1. Ingat elemen pertama dari vektor keadaan menyatakan jumlah token pada place M 1. Lampu lalulintas merah menyala di jalur 1 selama 114

143 lampu lalulintas hijau atau kuning menyala di jalur 2, 3,..., l sehingga token pada place M 1 merupakan jumlahan lama lampu lalulintas hijau dan kuning menyala pada jalur yang lain. Himpunan Sk 2 = { k 2 (t) : t = 0, 1,..., tk 2 1 } beranggotakan keadaan yang menyatakan lampu lalulintas kuning menyala pada jalur 2. Definisi keadaan k 2 (t) dapat dituliskan sebagai berikut untuk i = 1, 2,..., 5l. tk 2 + 2<j l (th j + tk j ) t, untuk i = 1 tk 2 + (th j + tk j ) t, untuk i = 3, 4,..., l ki 2 2<j<i (t) = tk 2 t, untuk i = l + 7 t, untuk i = l + 8 0, untuk i yang lain (4.30) Selanjutnya dibahas keadaan Petri net yang menyatakan lampu lalulintas hijau atau kuning menyala pada jalur 3. Diharapkan bentuk vektor keadaan jalur 1, 2 dan 3 dapat digunakan sebagai dasar untuk menyusun bentuk umum vektor keadaan untuk semua jalur di persimpangan. Keadaan Petri net yang menyatakan lampu lalulintas hijau menyala dibahas terlebih dahulu. Langkah yang dilakukan serupa dengan sebelumnya. Misalkan Sh 3 merupakan himpunan keadaan yang menyatakan lampu lalulintas hijau menyala pada jalur 3 yang ditulis Sh 3 = { h 3 (t) : t = 0, 1,..., th 3 1 }. Vektor kolom h 3 (t) yang menyatakan keadaan Petri net dapat dituliskan dalam persamaan berikut untuk i = 1, 2,..., 5l. h 3 i (t) = (j<i) (j 3) 3 j<i (th j + tk j ) t, untuk i = 1, 2 (th j + tk j ) t, untuk i = 4, 5,...,l th 3 t, untuk i = l + 9 t, untuk i = l , untuk i yang lain (4.31) Ekspresi jumlahan yang memuat (j < i) (j 3) dilakukan pada saat i bernilai 1 atau 2. Hal ini dapat dijelaskan dengan mengambil contoh untuk i = 2 yaitu lama lampu lalulintas merah menyala pada jalur 2. Lama lampu lalulintas merah menyala pada jalur 2 diperoleh dari jumlahan lama lampu lalulintas hijau dan kuning menyala pada jalur yang lain. Perhatikan bahwa pada saat t = 0 lampu lalulintas merah pada jalur 2 baru saja me- 115

144 nyala. Ekspresi (j < i) (j 3) dan (1 j < i) (3 j l) adalah ekivalen dengan memperhatikan bahwa j menyatakan jalur yang nilainya berada diantara 1 dan l yaitu 1 j l. Selanjutnya dibahas lampu lalulintas kuning menyala pada jalur 3. Misalkan Sk 3 adalah himpunan keadaan yang menyatakan lampu lalulintas kuning menyala pada jalur 3 yang ditulis Sk 3 = { k 3 (t) : t = 0, 1,..., tk 3 1 }. Bentuk vektor keadaan k 3 (t) dapat dinyatakan sebagai berikut dengan i = 1, 2,..., 5l. ki 3 (t) = tk 3 + (j<i) (j>3) tk 3 + 3<j<i (th j + tk j ) t, untuk i = 1, 2 (th j + tk j ) t, untuk i = 4, 5,..., l tk 3 t, untuk i = l + 11 t, untuk i = l , untuk i yang lain (4.32) Jumlah node pada coverability tree adalah 1 + l i=1 (th i + tk i ) yaitu jumlahan lama lampu lalulintas hijau dan kuning untuk semua jalur ditambah satu. Penambahan satu node ini merupakan node duplicate dari node root. Berikutnya disusun bentuk umum keadaan yang berada di coverability tree. Misalkan S adalah himpunan keadaan di coverability tree. Dengan menggunakan keterangan sebelumnya ditulis S = Sh Sk dengan Sh = ( l r=1 Sh ) r dan Sk = ( ) l r=1sk r. Himpunan Sh = {h r (t r ) : 0 t r < th r, 1 r l} beranggotakan keadaan yang menyatakan terdapat lampu lalulintas hijau yang menyala. Indeks dari place H r dan BH r masing-masing adalah l + 4r 3 dan l + 4r 2. Berikut merupakan bentuk dari vektor keadaan h r (t r ) dengan i = 1, 2,..., 5l. h r i(t r ) = (j<i) (j r) r j<i (th j + tk j ) t r, untuk 1 i < r (th j + tk j ) t r, untuk r < i l th r t r, untuk i = l + 4r 3 t r, untuk i = l + 4r 2 0, untuk i yang lain (4.33) Anggota himpunan Sk = {k r (t r ) : 0 t r < tk r, 1 r l} adalah semua keadaan yang menyatakan terdapat lampu lalulintas kuning yang menyala. Variabel i menyatakan indeks place dan variabel r menyatakan indeks jalur sehingga i = 1, 2,..., 5l dan r = 1, 2,..., l. Indeks dari place K r dan 116

145 BK r masing-masing adalah l + 4r 1 dan l + 4r. Berikut merupakan bentuk dari vektor keadaan k r (t r ). k r i (t r ) = tk r + (j<i) (j>r) tk r + r<j<i (th j + tk j ) t r, untuk 1 i < r (th j + tk j ) t r, untuk r < i l tk r t r, untuk i = l + 4r 1 t r, untuk i = l + 4r 0, untuk i yang lain (4.34) Dengan memperhatikan persamaan (4.33) dan (4.34) dapat disimpulkan bahwa secara umum banyak keadaan yang berbeda pada coverability tree adalah l r=1 (th r + tk r ). Terdapat dua node coverability tree yang menyatakan keadaan awal sehingga jumlah node pada coverability tree sebanyak 1 + l r=1 (th r + tk r ). Perhatikan bahwa tidak ada keadaan di coverability tree yang mempunyai notasi ω sehingga Petri net lampu lalulintas di persimpangan terbatas (bounded). Coverability tree yang diperoleh juga disebut reachability tree karena tree ini secara eksplisit memuat semua keadaan yang mungkin dicapai dari keadaan awal. Batas atas setiap place pada Petri net di Gambar 4.13 dapat diperoleh dengan memperhatikan persamaan (4.22), (4.23), (4.24) dan (4.25). Jumlah token maksimum pada place M 1 dan M 2 masing-masing adalah 10 yang terlihat pada persamaan (4.24) dan (4.22) pada saat t = 0. Dengan cara yang sama dapat diperoleh batas atas place yang lain di Petri net. Batas atas Petri net dapat dinyatakan sebagai keadaan xb seperti telah dijelaskan pada bab sebelumnya saat membahas keterbatasan (boundedness). Keadaan yang menyatakan batas atas Petri net di Gambar 4.13 adalah [10, 10, 6, 5, 4, 3, 6, 5, 4, 3] T. Perhatikan bahwa batas atas dari place M 1 adalah jumlahan lama lampu lalulintas hijau dan kuning menyala pada jalur 2 dan batas atas dari place M 2 adalah jumlahan lama lampu lalulintas hijau dan kuning menyala pada jalur 1. Secara umum batas atas place M untuk suatu jalur diperoleh dari jumlahan lama lampu lalulintas hijau dan kuning menyala pada jalur yang lain. Jumlah token maksimum pada place H 1, H 2, K 1 dan K 2 merupakan lama masing-masing lampu lalulintas menyala. Batas atas untuk place buffer yaitu BH 1, BH 2, BK 1 dan BK 2 diperoleh dari lama masing-masing lampu lalulintas menyala dikurangi satu. Indeks dari place M 1, M 2,..., M l masing-masing adalah 1, 2,..., l. Indeks dari place H 1, H 2,...,H l masing-masing dinyatakan 117

146 l + 1, l + 5,..., 5l 3. Indeks dari place BH 1, BH 2,...,BH l masing-masing adalah l + 2, l + 6,..., 5l 2. Indeks dari place K 1, K 2,...,K l masing-masing adalah l + 3, l + 7,..., 5l 1. Indeks dari place BK 1, BK 2,...,BK l masingmasing adalah l + 4, l + 8,...,5l. Dengan menggunakan hasil yang sudah diperoleh maka dapat disusun bentuk umum batas atas place. Bentuk umum batas atas place di Petri net lampu lalulintas di persimpangan dapat dituliskan sebagai berikut. xb i = j i (th j + tk j ), untuk i = 1, 2,..., l th (i l+3)/4, untuk i = l + 1, l + 5,..., 5l 3 th (i l+2)/4 1, untuk i = l + 2, l + 6,..., 5l 2 tk (i l+1)/4, untuk i = l + 3, l + 7,..., 5l 1 tk (i l)/4 1, untuk i = l + 4, l + 8,..., 5l (4.35) Pada bagian selanjutnya dibahas sifat konservasi Petri net lampu lalulintas di persimpangan Konservasi Pengujian sifat konservasi dilakukan dengan membangun sistem persamaan linier. Setiap persamaan menyatakan suatu keadaan di coverability tree sehingga jumlah persamaan sama dengan jumlah keadaan yaitu 20. Jumlah variabel satu lebih banyak dibandingkan jumlah place di Petri net yaitu 11. Notasi yang digunakan untuk menyatakan variabel sama dengan bagian sebelumnya yaitu γ 1, γ 2,...,γ 10, C. Sistem persamaan linier berikut diperoleh dari mengevaluasi persamaan (4.22) dengan t = 0, 1,..., γ γ 3 = C 9 γ γ 3 + γ 4 = C 8 γ γ γ 4 = C 7 γ γ γ 4 = C 6 γ γ γ 4 = C 5 γ 2 + γ γ 4 = C (4.36) Nilai elemen dan posisi elemen pada vektor keadaan masing-masing menyatakan konstanta dan variabel pada sistem persamaan linier. Perhatikan bahwa konstanta dari variabel γ 2 dan γ 3 semakin kecil sedangkan konstanta dari variabel γ 4 semakin besar. Kenyataan ini dapat digunakan sebagai 118

147 pedoman untuk menuliskan keenam persamaan pada (4.36) menjadi sebuah persamaan. Konstanta dari variabel γ 2, γ 3 dan γ 4 pada persamaan pertama masing-masing adalah 10, 6 dan 0 sehingga jika h 1 = 0, 1,..., 5 maka sistem persamaan linier (4.36) dapat ditulis menjadi (10 h 1 )γ 2 + (6 h 1 )γ 3 + h 1 γ 4 = C (4.37) Dengan menggunakan cara yang sama dapat ditentukan bentuk sistem persamaan linier untuk keadaan yang lain. Ketiga persamaan berikut masingmasing diperoleh dengan mengevaluasi persamaan (4.23), (4.24) dan (4.25) dengan t yang bersesuaian. (4 k 1 )γ 2 + (4 k 1 )γ 5 + k 1 γ 6 = C dengan k 1 = 0, 1,..., 3 (10 h 2 )γ 1 + (6 h 2 )γ 7 + h 2 γ 8 = C dengan h 2 = 0, 1,..., 5 (4.38) (4 k 2 )γ 1 + (4 k 2 )γ 9 + k 2 γ 10 = C dengan k 2 = 0, 1,..., 3 Perhatikan persamaan yang menyatakan lampu lalulintas hijau menyala pada jalur 1 dan jalur 2. Kedua persamaan dapat ditulis menjadi sebuah persamaan dengan menambahkan variabel r yang menyatakan jalur. Sebelum itu dibahas bagaimana mendapatkan konstanta 10 dan 6 pada kedua persamaan tersebut dari input yang diberikan. Input yang diberikan adalah lama lampu lalulintas hijau dan kuning menyala pada jalur 1 dan jalur 2. Ingat bahwa lampu lalulintas hijau dan kuning masing-masing menyala selama 6 dan 4 satuan waktu pada jalur 1 dan jalur 2 sehingga th 1 = 6 = th 2 dan tk 1 = 4 = tk 2. Konstanta 10 pada jalur 1 diperoleh dari th 1 +tk 1 sedangkan konstanta 10 pada jalur 2 diperoleh dari th 2 + tk 2 yang terlihat pada persamaan (4.33). Dengan menggunakan cara yang sama dapat disimpulkan konstanta 6 pada jalur 1 diperoleh dari th 1 dan konstanta 6 pada jalur 2 diperoleh dari th 2. Persamaan berikut menyatakan terdapat lampu lalulintas hijau yang menyala. (10 h r )γ 2 r+1 + (6 h r )γ 2+4r 3 + h r γ 2+4r 2 = C (4.39) dengan 0 h r < th r dan r = 1, 2. Perhatikan bahwa 2+4r 3 dan 2+4r 2 diperoleh dari persamaan (4.33) dengan menggunakan l = 2. Selanjutnya dibahas persamaan yang menyatakan lampu lalulintas kuning menyala pada jalur 1 dan jalur 2. Terlihat pada persamaan (4.38) bahwa semua konstanta bernilai sama. Konstanta 4 pada jalur 1 diperoleh dari tk 1 119

148 sedangkan konstanta 4 pada jalur 2 diperoleh dari tk 2. Persamaan (4.34) dapat digunakan sebagai pedoman untuk menentukan persamaan yang menyatakan terdapat lampu lalulintas kuning yang menyala. Variabel l diberikan nilai 2 karena persimpangan mempunyai dua jalur. (4 k r )γ 2 r+1 + (4 k r )γ 2+4r 1 + k r γ 2+4r = C (4.40) dengan 0 k r < tk r dan r = 1, 2. Persamaan (4.39) dan (4.40) berlaku untuk persimpangan yang mempunyai dua jalur dengan lama lampu lalulintas hijau dan kuning masingmasing menyala selama 6 dan 4 satuan waktu. Kedua persamaan tersebut dapat diubah agar berlaku untuk lama lampu lalulintas menyala sebarang. Perubahan yang dilakukan berdasarkan keterangan yang telah dibahas sebelumnya. Dengan menggunakan variabel th 1, th 2, tk 1, tk 2 untuk menyatakan lama masing-masing lampu lalulintas menyala pada setiap jalur maka persamaan (4.39) dan (4.40) dapat dinyatakan sebagai. ((th r + tk r ) h r )γ 2 r+1 + (th r h r )γ 2+4r 3 + h r γ 2+4r 2 = C (tk r k r )γ 2 r+1 + (tk r k r )γ 2+4r 1 + k r γ 2+4r = C (4.41) dengan 0 h r < th r dan r = 1, 2. Perhatikan bahwa (th r + tk r ) h r, th r h r dan h r serupa dengan persamaan (4.33) jika variabel h r diganti dengan t r. Ekspresi (tk r k r ) dan k r juga serupa dengan persamaan (4.34). Selanjutnya disusun bentuk umum sistem persamaan linier yang diperoleh jika jalur pada persimpangan berjumlah sebarang. Bentuk umum sistem persamaan linier diperoleh dari persamaan (4.33) dan (4.34) yang telah dibahas pada saat menurunkan persamaan (4.41). Ingat letak elemen dan nilai elemen pada vektor keadaan masing-masing menentukan variabel dan konstanta pada sistem persamaan linier. Secara umum sistem persamaan linier yang terbentuk dapat dituliskan sebagai berikut. 5l i=1 h r i (th r ) γ i = C, 5l i=1 k r i (tk r ) γ i = C (4.42) dengan 0 t h r < th r, 0 t k r < tk r dan 1 r l. Sistem persamaan linier (4.42) mempunyai l r=1 (th r + tk r ) persamaan dan 5l + 1 variabel. Jelas bahwa terdapat penyelesaian tidak trivial jika jumlah persamaan kurang dari jumlah variabel. Jika terdapat penyelesaian tidak trivial maka Petri 120

149 net memenuhi sifat konservasi. Jadi sifat konservasi dipenuhi jika berlaku l r=1 (th r +tk r ) < 5l+1 dengan l menyatakan jumlah jalur di persimpangan. Pada bagian berikutnya dibahas reduksi keadaan pada Petri net lampu lalulintas di persimpangan. Hal ini bertujuan mengurangi place di Petri net tanpa kehilangan informasi. Dengan berkurangnya place maka ukuran matriks incidence juga semakin kecil sehingga memperkecil kebutuhan memori dan mempercepat waktu komputasi. 4.6 Reduksi Keadaan Petri net Lampu Lalulintas Secara umum terdapat lebih dari satu Petri net untuk memodelkan suatu permasalahan. Untuk itu dibutuhkan parameter untuk mengetahui Petri net yang baik. Parameter yang digunakan adalah dimensi ruang keadaan Petri net. Dimensi ruang keadaan merupakan jumlah place pada Petri net yang telah dibahas pada bab sebelumnya. Petri net yang baik mempunyai dimensi ruang keadaan yang kecil, yaitu ekivalen dengan jumlah place sedikit. Mendesain Petri net yang mempunyai place sedikit sulit dilakukan secara langsung. Untuk itu dibutuhkan proses yang bertujuan mengurangi place di Petri net yang disebut reduksi keadaan. Reduksi keadaan dilakukan setelah desain Petri net sudah dibuat. Proses ini menghasilkan Petri net dengan jumlah place yang lebih kecil jika terdapat place-place yang mempunyai perilaku sama. Pada bagian ini dibahas reduksi keadaan Petri net lampu lalulintas di persimpangan. Langkah pertama yang dilakukan untuk mereduksi keadaan Petri net adalah menentukan place-place yang mempunyai perilaku sama. Perhatikan contoh permasalahan pada bagian sebelumnya. Jelas bahwa lampu lalulintas hijau tidak pernah menyala bersamaan di jalur 1 dan jalur 2. Hal ini juga berlaku untuk lampu lalulintas kuning. Kenyataan ini menyebabkan place H 1, BH 1, K 1, BK 1 dan H 2, BH 2, K 2, BK 2 digunakan secara bergantian. Dengan kata lain tidak mungkin place H 1 dan H 2 mempunyai token pada saat yang bersamaan. Hal ini juga berlaku untuk tiga pasang place yang lain yaitu BH 1 dan BH 2, K 1 dan K 2, BK 1 dan BK 2. Berdasarkan penjelasan sebelumnya dapat disimpulkan place H 1, BH 1, K 1, BK 1 masing-masing mempunyai perilaku yang sama dengan H 2, BH 2, K 2, BK 2. Place-place yang mempunyai perilaku sama, cukup diwakili sebuah place sehingga place yang lain dapat dihapus. Pada permasalahan ini place H 1 dan H 2 diwakili oleh place H. Ketiga pasang place yang lain masing-masing 121

150 diwakili oleh place BH, K dan BK. Semua arc yang berasal dari (menuju ke) place H 1 atau H 2 diganti dengan arc yang berasal dari (menuju ke) place H tanpa mengubah transisi tujuan (asal) dan bobot arc. Proses ini juga dilakukan untuk place BH, K dan BK. Hasil reduksi keadaan pada Petri net sebelumnya dapat dilihat di Gambar hn hn 2 6 H hk 1 kn BH K hk 2 kn 2 km 1 km 2 3 BK 3 M M 1 Gambar 4.15 Hasil Reduksi Keadaan pada Petri net Lampu Lalulintas di Persimpangan dengan Dua Jalur Sebelum dilakukan reduksi keadaan pada Petri net lampu lalulintas di persimpangan, jalur dimana lampu lalulintas hijau atau kuning menyala dilihat dari indeks placenya. Setelah dilakukan reduksi keadaan, place hijau maupun kuning tidak mempunyai indeks seperti terlihat pada Gambar Ingat pada saat lampu lalulintas di suatu jalur menyala hijau atau kuning maka lampu lalulintas merah di jalur tersebut dalam keadaan padam. Pada setiap saat terdapat sebuah lampu lalulintas merah dalam keadaan padam. Berdasarkan kenyataan ini, dapat disimpulkan jalur dimana lampu lalulintas menyala hijau atau kuning adalah jalur yang lampu lalulintas merah tidak dalam keadaan menyala. Selanjutnya disusun algoritma untuk membangun Petri net lampu lalulintas di persimpangan setelah dilakukan reduksi keadaan. Ingat Petri net pada Gambar 4.15 diperoleh dari mengubah Petri net di Gambar 4.13 seperti telah dibahas sebelumnya. Penyusunan algoritma juga tidak harus dimulai dari awal melainkan dari mengubah algoritma untuk membangun Petri net sebelumnya. Perubahan dilakukan pada place H r, BH r, K r dan BK r dengan 122

151 1 r l. Keempat kelompok place tersebut masing-masing diwakili place H, BH, K dan BK. Semua arc yang berasal dari (menuju ke) place H r dengan 1 r l diganti dengan arc yang berasal dari (menuju ke) place H tanpa mengubah transisi tujuan (asal) dan bobot arc. Proses ini juga dilakukan untuk place BH, K dan BK. Algoritma 4.7 Petri net Lampu Lalulintas Tereduksi Input: th,tk (N {0}) l, l /* l adalah jumlah jalur */ Output: P, T, Aw,x 0 1 P {H, BH, K, BK}; T ; Aw ; x 0 zeros(l + 4, 1) 2 for i = 1 to l do 3 P P {M i }; T T {hn i, hk i, kn i, km i } 4 Aw Aw {(H, hn i, 2), (hn i, H, 1), (hn i, BH, 1), (H, hk i, 1)} 5 Aw Aw {(K, kn i, 2), (kn i, K, 1), (kn i, BK, 1), (K, km i, 1)} 6 Aw Aw {(BH, hk i, th i 1), (hk i, K, tk i ), (BK, km i, tk i 1)} 7 end for 8 for i = 1 to l do 9 for j = 1 to l and j i do 10 Aw Aw {(M i, hn j, 1), (M i, hk j, 1), (M i, kn j, 1), (M i, km j, 1)} 11 end for 12 Aw Aw {(km i, H, th i+1 ), (km i, M i, j i (th j + tk j ))} 13 x 0 (i) i 1 j=1 (th j + tk j ) /* place M i */ 14 end for 15 x 0 (l + 1) th 1 /* place H */ Perubahan selanjutnya dilakukan pada ukuran vektor keadaan. Ukuran vektor keadaan pada Petri net menyatakan jumlah place. Secara umum place pada Petri net lampu lalulintas di persimpangan setelah dilakukan reduksi keadaan sebanyak l + 4 yaitu p 1 = M 1, p 2 = M 2,..., p l = M l, p l+1 = H, p l+2 = BH, p l+3 = K, p l+4 = BK. Hal yang tidak diubah dari algoritma sebelumnya adalah banyak transisi dan arc yang digunakan. Transisi dan arc yang digunakan pada Petri net ini sama dengan sebelumnya yaitu masingmasing sebanyak 4l dan 4l 2 +9l dengan l menyatakan jumlah jalur pada persimpangan. Urutan transisi yang digunakan sama dengan sebelumnya, yang dinyatakan dengan t 1 = hn 1, t 2 = hk 1, t 3 = kn 1, t 4 = km 1,..., t 4l 3 = hn l, t 4l 2 = hk l, t 4l 1 = kn l, t 4l = km l. Algoritma membangun Petri net lampu lalulintas tereduksi yang diperoleh dengan melakukan penyesuaian terhadap Algoritma 4.4. Hasil akhir proses tersebut dapat dilihat pada Algoritma 4.7. Berikutnya dibahas pengujian sifat pure pada Petri net di bagian ini. Petri net lampu lalulintas di persimpangan setelah dilakukan reduksi keadaan 123

152 bersifat impure karena masih terdapat place yang menjadi input sekaligus output dari suatu transisi. Place H dan K masing-masing menjadi input sekaligus output dari transisi hn r dan kn r dengan 1 r l dan l menyatakan jumlah jalur di persimpangan Matriks Incidence Petri net pada Gambar 4.15 mempunyai 6 place dan 8 transisi sehingga ketiga matriks incidence berukuran 6 8. Sebelum dilakukan reduksi keadaan, ketiga matriks incidence berukuran lebih besar yaitu Salah satu manfaat yang diperoleh dari segi komputasi dengan melakukan reduksi keadaan adalah memperkecil kebutuhan memori A f = (4.43) Matriks forward incidence pada persamaan (4.43) diperoleh dari matriks forward incidence pada persamaan (4.20) dengan beberapa perubahan. Place M 1 dan M 2 tidak mengalami perubahan sehingga semua elemen pada baris pertama dan kedua tidak berubah. Ingat indeks dari place M 1 dan M 2 masing-masing adalah 1 dan 2. Perubahan dilakukan pada place H 1, BH 1, K 1, BK 1, H 2, BH 2, K 2, BK 2 yang masing-masing mempunyai indeks 3 hingga 10. Pada proses reduksi keadaan, semua arc yang menuju ke place H 1 atau H 2 diganti arc yang menuju ke place H dengan transisi asal dan bobot arc tidak berubah. Elemen tidak nol pada baris 3 dan baris 7 di matriks forward incidence (4.20) masing-masing menyatakan arc yang menuju ke place H 1 dan H 2. Transisi asal dan bobot arc masing-masing dinyatakan dengan posisi kolom dan nilai elemen pada matriks forward incidence. Indeks place H adalah 3 setelah dilakukan reduksi keadaan pada Petri net. Ingat bahwa place tujuan dinyatakan dengan posisi baris pada matriks forward incidence. Dengan menggunakan keterangan sebelumnya maka proses reduksi keadaan ekivalen dengan memindahkan elemen tidak nol pada baris 3 dan 7 di persamaan (4.20) ke baris 3 tanpa mengubah posisi kolomnya. Jelas bahwa proses ini tidak mengubah nilai elemen. 124

153 Proses yang serupa dilakukan untuk place BH, K dan BK. Hasil akhir matriks forward incidence untuk Petri net lampu lalulintas di persimpangan setelah dilakukan reduksi keadaan dapat dilihat pada persamaan (4.43). Selanjutnya dibahas bentuk umum matriks forward incidence untuk Petri net setelah dilakukan reduksi keadaan. Ukuran matriks forward incidence tergantung jumlah place dan transisi pada Petri net. Berdasarkan pembahasan sebelumnya maka jumlah place dan transisi pada Petri net tergantung jumlah jalur. Kenyataan ini mengakibatkan ukuran matriks forward incidence dipengaruhi jumlah jalur di persimpangan. Oleh sebab itu bentuk umum matriks forward incidence dituliskan dalam bentuk algoritma. Algoritma 4.8 Forward Incidence Petri net Lampu Lalulintas Tereduksi Input: th,tk (N {0}) l, l /* l adalah jumlah jalur */ Output: A f (N {0}) (l+4) 4l /* matriks forward incidence */ 1 A f zeros(l + 4, 4l); A f (l + 1, 4l) th 1 ; A f (l, 4l) l 1 j=1 (th j + tk j ) 2 for i = 1 to l 1 do 3 A f (l + 1, 4i) th i+1 ; A f (i, 4i) j i (th j + tk j ) 4 end for 5 for i = 1 to l do 6 A f (l + 1, 4i 3) 1; A f (l + 2, 4i 3) 1; A f (l + 3, 4i 1) 1 7 A f (l + 4, 4i 1) 1; A f (l + 3, 4i 2) tk i 8 end for Algoritma 4.8 merupakan perumuman dari proses yang dibahas sebelumnya. Langkah pertama yang dilakukan adalah menentukan indeks place yang mengalami perubahan. Place yang mengalami perubahan adalah H i, BH i, K i dan BK i dengan 1 i l. Secara umum indeks dari place H i, BH i, K i dan BK i masing-masing adalah l+4i 3, l+4i 2, l+4i 1 dan l+4i dengan 1 i l. Indeks dari place H i+1 adalah l + 4i + 1 dengan 1 i l. Setelah dilakukan reduksi keadaan, indeks dari place H, BH, K dan BK masing-masing adalah l + 1, l + 2, l + 3 dan l + 4. Berdasarkan keterangan sebelumnya maka ekspresi l + 4i 3, l + 4i 2, l + 4i 1 dan l + 4i pada Algoritma 4.5 masing-masing diubah menjadi l+1, l+2, l+3 dan l+4. Ekspresi l+4i+1 diubah menjadi l + 1. Berikutnya dibahas perubahan yang dilakukan pada Algoritma 4.5 untuk memperoleh Algoritma 4.8 secara lengkap dan mendetil. Algoritma 4.8 diperoleh dari Algoritma 4.5 dengan melakukan beberapa perubahan. Perubahan pertama dilakukan adalah mengubah ukuran matriks forward incidence menjadi (l + 4) 4l karena jumlah place pada Petri net sebanyak l+4. Ekspresi l+4i+1 menyatakan place H i+1 sehingga diganti 125

154 dengan l + 1 yang menyatakan place H seperti terlihat pada pernyataan pertama di baris 3. Semua pernyataan pada baris 6 juga harus diubah. Ekspresi l + 4i 3, l + 4i 2 dan l + 4i 1 masing-masing menyatakan place H i, BH i dan K i sehingga masing-masing harus diubah menjadi l + 1, l + 2 dan l + 3 yang masing-masing menyatakan place H, BH dan K. Perubahan terakhir dilakukan pada semua pernyataan di baris 7. Ekspresi l+4i dan l+4i 1 yang masing-masing menyatakan place BK i dan K i diubah menjadi l + 4 dan l + 3 yang masing-masing menyatakan place BK dan K A b = (4.44) Matriks backward incidence pada persamaan (4.44) diperoleh dari matriks backward incidence pada persamaan (4.21) dengan melakukan beberapa perubahan. Tujuan dilakukan perubahan adalah menyesuaikan dengan proses reduksi keadaan pada Petri net lampu lalulintas di persimpangan. Place M 1 dan M 2 tidak mengalami perubahan sehingga elemen pada baris pertama dan baris kedua tidak berubah. Ingat indeks place M 1 dan M 2 masing-masing adalah 1 dan 2. Perubahan dilakukan pada place H 1, BH 1, K 1, BK 1, H 2, BH 2, K 2, BK 2 yang masing-masing mempunyai indeks 3 hingga 10. Pada proses reduksi keadaan, semua arc yang berasal dari place H 1 atau H 2 diganti arc yang berasal dari place H tanpa mengubah transisi tujuan dan bobot arc. Elemen tidak nol pada baris 3 dan baris 7 pada matriks backward incidence (4.21) masing-masing menyatakan arc yang berasal dari place H 1 dan H 2. Transisi tujuan dan bobot arc masing-masing dinyatakan dengan posisi kolom dan nilai elemen pada matriks backward incidence. Dengan menggunakan keterangan sebelumnya maka proses reduksi keadaan pada Petri net ekivalen dengan memindahkan elemen pada baris 3 dan baris 7 pada persamaan (4.21) ke baris 3 tanpa mengubah posisi kolomnya. Jelas bahwa proses ini tidak mengubah nilai elemen. Proses yang serupa dilakukan untuk ketiga place yang lain yaitu BH, K dan BK. Hal yang perlu diperhatikan adalah indeks place yang sedang diproses. Hasil akhir matriks backward incidence setelah proses reduksi keadaan dapat 126

155 dilihat pada persamaan (4.44). Ukuran matriks backward incidence tergantung jumlah place dan transisi di Petri net. Jumlah place dan transisi di Petri net tergantung jumlah jalur di persimpangan. Jadi ukuran matriks backward incidence tergantung jumlah jalur di persimpangan. Oleh sebab itu bentuk umum matriks backward incidence dituliskan dalam bentuk algoritma. Input algoritma ini adalah jumlah jalur di persimpangan dan lama lampu lalulintas hijau dan kuning menyala pada setiap jalur. Output algoritma ini adalah matriks backward incidence yang berisi bobot arc dari place ke transisi. Algoritma 4.9 Backward Incidence Petri net Lampu Lalulintas Tereduksi Input: th,tk (N {0}) l, l /* l adalah jumlah jalur */ Output: A b (N {0}) (l+4) 4l /* matriks backward incidence */ 1 A b [ones(l, 4l); zeros(4, 4l)] /* inisialisasi */ 2 for i = 1 to l do 3 A b (l + 1, 4i 3) 2; A b (l + 1, 4i 2) 1; A b (l + 3, 4i 1) 2 4 A b (l + 3, 4i) 1; A b (l + 2, 4i 2) th i 1; A b (l + 4, 4i) tk i 1 5 A b (i, 4i 3 : 4i) zeros(1, 4) 6 end for Algoritma 4.9 diperoleh dari Algoritma 4.6 dengan melakukan beberapa perubahan. Perubahan ini menyesuaikan dengan proses reduksi keadaan pada Petri net. Hal pertama yang diubah adalah ukuran matriks backward incidence sehingga menjadi (l + 4) 4l seperti terlihat pada baris 1. Secara umum proses reduksi keadaan dapat dijelaskan sebagai berikut. Semua arc yang berasal dari place H i, BH i, K i dan BK i dengan 1 i l masing-masing diubah menjadi arc yang berasal dari place H, BH, K dan BK. Indeks dari place H i, BH i, K i dan BK i masing-masing adalah l+4i 3, l+4i 2, l+4i 1 dan l + 4i dengan 1 i l. Indeks dari place H, BH, K dan BK setelah dilakukan reduksi keadaan masing-masing adalah l + 1, l + 2, l + 3 dan l + 4. Berdasarkan keterangan sebelumnya maka proses reduksi keadaan ekivalen dengan mengubah ekspresi l + 4i 3, l + 4i 2, l + 4i 1 dan l + 4i masing-masing menjadi l + 1, l + 2, l + 3 dan l + 4. Algoritma membangun matriks combined incidence tidak dibahas karena matriks combined incidence diperoleh dari selisih matriks forward incidence dan backward incidence. Berikutnya dibahas analisis Petri net lampu lalulintas di persimpangan setelah dilakukan reduksi keadaan. Analisis Petri net dilakukan dengan menggunakan coverability tree. Pada bagian berikutnya dibahas proses membangun coverability tree Petri net di Gambar

156 4.6.2 Coverability Tree Cara yang digunakan untuk membangun coverability tree sama dengan sebelumnya. Langkah pertama yang dilakukan dalam membangun coverability tree adalah mendefinisikan keadaan awal sebagai node root. Pada keadaan awal Petri net terdapat 10 token pada place M 2 dan 6 token pada place H sehingga vektor keadaan dapat ditulis [0, 10, 6, 0, 0, 0] T. Transisi yang enabled pada keadaan ini adalah hn 1. Dengan memfire transisi ini diperoleh [0, 9, 5, 1, 0, 0] T, [0, 8, 4, 2, 0, 0] T, [0, 7, 3, 3, 0, 0] T, [0, 6, 2, 4, 0, 0] T, [0, 5, 1, 5, 0, 0] T. Keadaan yang terakhir menyebabkan transisi hn 1 tidak enabled karena jumlah token pada place H sebanyak satu. Transisi hk 1 menjadi enabled karena terdapat sebuah token pada place H dan 5 token pada place BH. Pemfirean transisi hk 1 menyebabkan token yang disimpan di place M 2 menjadi 4, place H dan BH tidak mempunyai token dan place K mempunyai 4 token sehingga vektor keadaan dapat ditulis [0, 4, 0, 0, 4, 0] T. Pada keadaan ini transisi kn 1 menjadi enabled. Dengan memfire transisi ini maka keadaan Petri net menjadi [0, 3, 0, 0, 3, 1] T, [0, 2, 0, 0, 2, 2] T, [0, 1, 0, 0, 1, 3] T. Pada keadaan ini transisi km 1 berubah menjadi enabled. Dengan memfire transisi ini maka lampu lalulintas yang menyala pada jalur 1 berubah menjadi merah dan pada saat yang bersamaan lampu lalulintas yang menyala pada jalur 2 berubah menjadi hijau. Pemfirean transisi km 1 menyebabkan keadaan Petri net menjadi [10, 0, 6, 0, 0, 0] T. Satu-satunya transisi yang enabled pada saat terdapat 10 token di place M 1 dan 6 token pada place H yaitu keadaan [10, 0, 6, 0, 0, 0] T adalah transisi hn 2. Pemfirean transisi ini menyebabkan keadaan Petri net menjadi [9, 0, 5, 1, 0, 0] T, [8, 0, 4, 2, 0, 0] T,..., [6, 0, 2, 4, 0, 0] T, [5, 0, 1, 5, 0, 0] T. Pada keadaan ini transisi hn 2 menjadi tidak enabled dan transisi hk 2 berubah menjadi enabled. Pemfirean transisi hk 2 mengubah keadaan menjadi [4, 0, 0, 0, 4, 0] T. Dengan memfire transisi kn 2 maka keadaan berubah menjadi [3, 0, 0, 0, 3, 1] T, [2, 0, 0, 0, 2, 2] T, [1, 0, 0, 0, 1, 3] T. Transisi km 2 menjadi enabled pada keadaan ini. Pemfirean transisi mengubah keadaan menjadi [0, 10, 6, 0, 0, 0] T. Perhatikan bahwa keadaan ini sama dengan keadaan awal Petri net sehingga proses membangun coverability tree telah selesai. Jumlah node pada coverability tree sebanyak 21. Jumlah keadaan yang berbeda di coverability tree sebanyak 20. Berdasarkan proses sebelumnya dapat disimpulkan bahwa untuk setiap keadaan terdapat sebuah transisi yang enabled. Kenyataan ini mengakibatkan setiap node pada coverability tree mempunyai 1 anak. 128

157 Perhatikan bahwa jumlah node pada coverability tree tidak berubah setelah dilakukan reduksi keadaan pada Petri net. Perubahan terjadi pada ukuran vektor keadaan yang menjadi lebih kecil dari sebelumnya. Sebelum dilakukan reduksi keadaan, vektor keadaan menyimpan 10 elemen dan setelah dilakukan reduksi keadaan elemen yang disimpan di vektor keadaan sebanyak 6. Vektor keadaan pada coverability tree dapat diperoleh dari vektor keadaan pada coverability tree sebelumnya dengan menghapus elemen yang bernilai nol. Elemen yang dihapus berada pada posisi ketiga hingga keenam yang menyatakan jalur 1 atau berada pada posisi ketujuh hingga kesepuluh yang menyatakan jalur 2. Tidak mungkin elemen ketiga hingga kesepuluh bernilai nol karena selalu ada lampu lalulintas hijau atau kuning yang menyala hn 1 5 hn 1 4 hn 1... kn 2 0 kn 2 0 km Gambar 4.16 Coverability Tree untuk Petri net di Gambar 4.15 Coverability tree yang lengkap sulit untuk ditampilkan karena coverability tree mempunyai 21 node dan setiap node dinyatakan dengan vektor keadaan yang mempunyai 6 elemen. Untuk itu pada Gambar 4.16 hanya ditampilkan sebagian node di coverability tree. Node yang terletak di paling kiri merupakan node root yang menyatakan keadaan awal Petri net. Berdasarkan keterangan sebelumnya maka satu-satunya transisi yang enabled pada keadaan ini adalah transisi hn 1. Dengan memfire transisi ini maka diperoleh keadaan yang berada di sebelah kanan dari node root. Kedua node dihubungkan dengan anak panah yang bertuliskan nama transisi yang difire yaitu hn 1. Proses ini dilakukan berulang-ulang hingga semua node diperoleh adalah node duplicate atau node terminal. Selanjutnya keadaan yang termuat di coverability tree akan dituliskan dengan menggunakan notasi himpunan. Hal ini dilakukan untuk mengetahui karakteristik keadaan yang dapat dicapai dari keadaan awal dan menyederhanakan penulisan terutama jika jumlah node di coverability tree sangat besar. Langkah pertama yang dilakukan adalah mencari pola vektor keadaan yang 129

158 termuat di coverability tree. Pola ini sulit ditemukan karena jumlah node yang besar dan bentuk vektor keadaan yang bervariasi. Untuk itu keadaan di coverability tree akan dikelompokkan berdasarkan lampu lalulintas hijau atau kuning yang menyala dan jalurnya. Persimpangan yang dibahas disini mempunyai 2 jalur sehingga keadaan di coverability tree dikelompokkan menjadi 4 himpunan yaitu Sh 1, Sh 2, Sk 1 dan Sk 2. Notasi h dan k masing-masing menyatakan lampu lalulintas hijau dan kuning yang menyala. Indeks menyatakan jalur dimana lampu lalulintas hijau atau kuning menyala. Sebagai contoh Sh 2 merupakan himpunan keadaan yang menyatakan lampu lalulintas hijau menyala pada jalur 2 dan Sk 1 merupakan himpunan keadaan yang menyatakan lampu lalulintas kuning menyala pada jalur 1. Ketika lampu lalulintas hijau menyala pada jalur 1 maka place yang mungkin mempunyai token adalah M 2, H dan BH. Place yang lain tidak mungkin mempunyai token. Indeks masing-masing place yang mungkin mempunyai token adalah 2, 3 dan 4. Anggota himpunan Sh 1 adalah vektor keadaan h 1 (t) untuk t = 0, 1,..., 5. Variabel t berhubungan dengan lama lampu lalulintas hijau menyala. Ingat lampu lalulintas hijau menyala di jalur 1 selama 6 satuan waktu. Dengan menggunakan notasi himpunan maka Sh 1 dapat dinyatakan sebagai Sh 1 = { h 1 (t) : t = 0,...,5 }. Berikut merupakan bentuk keadaan h 1 (t) 10 t, untuk i = 2 h 1 i (t) = 6 t, untuk i = 3 (4.45) t, untuk i = 4 0, untuk i yang lain dengan i = 1, 2,..., 6 menyatakan indeks place di Petri net. Perhatikan bahwa nilai t yang semakin besar menyebabkan token pada place M 2 dan H berkurang dan token pada place BH bertambah. Hal ini disebabkan place M 2 dan H adalah place input dari transisi hn 1 sedangkan place BH adalah place output dari transisi hn 1. Saat lampu lalulintas yang menyala pada jalur 1 berubah menjadi kuning maka place yang mungkin mempunyai token adalah M 2, K dan BK. Indeks dari ketiga place tersebut masing-masing adalah 2, 5 dan 6. Anggota himpunan Sk 1 adalah vektor keadaan k 1 (t) untuk t = 0, 1,..., 3. Variabel t terkait dengan lama lampu lalulintas kuning menyala. Ingat lampu lalulintas kuning di jalur 1 menyala selama 4 satuan waktu. Himpunan Sk 1 dapat 130

159 dinyatakan dengan Sk 1 = { k 1 (t) : t = 0, 1,..., 3 }. Dengan menggunakan keterangan sebelumnya maka keadaan k 1 (t) dapat dinyatakan dalam persamaan berikut 4 t, untuk i = 2 ki 1 (t) = 4 t, untuk i = 5 (4.46) t, untuk i = 6 0, untuk i yang lain dengan i = 1, 2,..., 6 menyatakan indeks vektor keadaan. Perhatikan bahwa jumlah token pada place M 2 sama dengan K. Hal ini disebabkan lampu lalulintas kuning di jalur 1 dan lampu lalulintas merah di jalur 2 padam pada saat bersamaan. Selanjutnya dibahas bentuk keadaan yang menyatakan lampu lalulintas hijau atau kuning menyala pada jalur 2. Pada saat lampu lalulintas hijau menyala pada jalur 2, place yang mungkin mempunyai token adalah M 1, H dan BH. Indeks masing-masing place tersebut adalah 1, 3 dan 4. Himpunan Sh 2 dinyatakan dengan Sh 2 = { h 2 (t) : t = 0,..., 5 }. Ingat lampu lalulintas hijau menyala di jalur 2 selama 6 satuan waktu. Berikut merupakan bentuk keadaan h 2 (t) dengan i = 1, 2,..., t, untuk i = 1 h 2 i (t) = 6 t, untuk i = 3 (4.47) t, untuk i = 4 0, untuk i yang lain Saat lampu lalulintas kuning menyala pada jalur 2 maka place yang mungkin mempunyai token adalah M 1, K dan BK. Indeks masing-masing place adalah 1, 5 dan 6. Himpunan Sk 2 mempunyai anggota vektor keadaan yang dinyatakan dengan Sk 2 = { k 2 (t) : t = 0, 1,..., 3 }. Ingat lampu lalulintas kuning menyala di jalur 2 selama 4 satuan waktu. Keadaan k 2 (t) dapat dinyatakan sebagai berikut dengan i = 1, 2,..., 6. 4 t, untuk i = 1 ki 2 (t) = 4 t, untuk i = 5 (4.48) t, untuk i = 6 0, untuk i yang lain Selanjutnya dicari bentuk umum coverability tree untuk Petri net lampu lalulintas tereduksi. Langkah pertama yang dilakukan dalam memba- 131

160 ngun coverability tree adalah mendefinisikan keadaan awal sebagai node root. Jika x menyatakan keadaan awal Petri net maka berdasarkan Algoritma 4.7 untuk i = 1, 2,..., l + 4 berlaku x i = 1 j<i (th j + tk j ), untuk i = 2, 3,..., l th 1, untuk i = l + 1 0, untuk i yang lain (4.49) dengan th j dan tk j masing-masing menyatakan lama lampu lalulintas hijau dan kuning menyala pada jalur ke j dengan j = 1, 2,..., l. Jika token yang disimpan pada place H pada saat awal lebih dari atau sama dengan 2 yaitu th 1 2 maka transisi hn 1 enabled dan jika place H mempunyai sebuah token pada saat awal yaitu th 1 = 1 maka transisi yang enabled adalah hk 1. Diasumsikan lama lampu lalulintas hijau menyala pada jalur 1 lebih dari atau sama dengan 2 satuan waktu sehingga th 1 2 yang menyebabkan transisi hn 1 dapat difire. Dengan memfire transisi ini maka token pada place M r dengan r = 2, 3,..., l dan place H berkurang sedangkan token pada place BH bertambah. Indeks place H dan BH masing-masing adalah l + 1 dan l + 2. Jika Sh 1 = { h 1 (t) : t = 0,...,th 1 1 } adalah himpunan keadaan yang menyatakan lampu lalulintas hijau menyala pada jalur 1 maka untuk i = 1, 2,..., l + 4 berlaku h 1 i (t) = 1 j<i (th j + tk j ) t, untuk i = 2, 3,..., l th 1 t, untuk i = l + 1 t, untuk i = l + 2 0, untuk i yang lain (4.50) Transisi hn 1 tidak enabled pada saat place H menyimpan sebuah token dan transisi hk 1 menjadi enabled. Dengan memfire hk 1 maka token pada place M r dengan r = 2, 3,..., l berkurang, token pada place H dan BH habis serta place K menerima token sebanyak tk 1 yaitu lama lampu lalulintas kuning menyala pada jalur 1. Pada keadaan ini satu-satunya transisi yang enabled adalah transisi kn 1. Pemfirean transisi ini menyebabkan token pada place M r dengan r = 2, 3,..., l dan K berkurang sedangkan token pada place BK bertambah. Indeks place K dan BK masing-masing adalah l + 3 dan l + 4. Anggota himpunan Sk 1 adalah keadaan yang menyatakan lampu lalulintas kuning menyala 132

161 pada jalur 1 yang ditulis Sk 1 = { k 1 (t) : t = 0, 1,..., tk 1 1 }. Dengan menggunakan keterangan sebelumnya maka keadaan k 1 (t) dapat dinyatakan dalam persamaan berikut tk 1 + (th j + tk j ) t, untuk i = 2, 3,..., l 1<j<i ki 1 (t) = tk 1 t, untuk i = l + 3 (4.51) t, untuk i = l + 4 0, untuk i yang lain dengan i = 1, 2,..., l + 4. Keadaan yang menyatakan lampu lalulintas hijau atau kuning menyala pada jalur 1 telah dibahas. Selanjutnya dibahas keadaan yang menyatakan lampu lalulintas hijau atau kuning menyala pada jalur 2. Langkah-langkah yang dilakukan serupa dengan jalur 1 dengan ditambahkan beberapa penyesuaian. Penyesuaian pertama pada variabel yang menyatakan lama lampu lalulintas menyala. Hal lain yang perlu diperhatikan adalah indeks place yang mungkin mempunyai token. Jelas bahwa indeks place yang mungkin mempunyai token pada jalur 2 berbeda dengan indeks place yang mungkin mempunyai pada jalur 1 meskipun warna lampu lalulintas yang menyala sama (hijau atau kuning). Perhatikan ketika lampu lalulintas hijau atau kuning menyala pada jalur 1 maka lampu lalulintas merah pada jalur 1 tidak menyala. Kenyataan ini dapat disimpulkan dengan memperhatikan bahwa elemen pertama dari vektor keadaan selalu bernilai nol pada pembahasan sebelumnya. Hal ini juga harus disesuaikan yaitu ketika lampu lalulintas hijau atau kuning menyala pada jalur 2 maka lampu lalulintas merah pada jalur 2 tidak menyala dengan memberikan nilai nol pada elemen kedua dari vektor keadaan. Ketika lampu lalulintas hijau menyala pada jalur 2 maka place yang mungkin mempunyai token adalah M 1, M 3, M 4,...,M l, H dan BH. Place yang lain tidak mungkin mempunyai token. Indeks place yang mungkin mempunyai token masing-masing adalah 1, 3, 4,..., l, l + 1 dan l + 2. Misal Sh 2 adalah himpunan keadaan yang menyatakan lampu lalulintas hijau menyala pada jalur 2. Anggota himpunan Sh 2 adalah keadaan yang menyatakan lampu lalulintas hijau menyala pada jalur 2 yang dinotasikan h 2 (t) untuk t = 0, 1,..., th 2 1. Variabel t berhubungan dengan lama lampu lalulintas hijau menyala. Ingat lampu lalulintas hijau menyala di jalur 2 selama th 2 satuan waktu. Himpunan 133

162 Sh 2 dapat dinyatakan dengan Sh 2 = { h 2 (t) : t = 0, 1,..., th 2 1 }. Dengan menggunakan keterangan sebelumnya maka keadaan h 2 (t) dapat dituliskan dalam persamaan berikut h 2 i(t) = 2 j l 2 j<i dengan i = 1, 2,..., l + 4. (th j + tk j ) t, untuk i = 1 (th j + tk j ) t, untuk i = 3, 4,..., l th 2 t, untuk i = l + 1 t, untuk i = l + 2 0, untuk i yang lain (4.52) Perhatikan bahwa terdapat kasus tambahan pada definisi h 2 (t) yaitu pada saat i = 1. Ingat elemen pertama dari vektor keadaan menyatakan jumlah token pada place M 1. Lampu lalulintas merah menyala di jalur 1 selama lampu lalulintas hijau atau kuning menyala di jalur 2, 3,..., l sehingga token pada place M 1 merupakan jumlahan lama lampu lalulintas hijau dan kuning menyala pada jalur yang lain. Himpunan Sk 2 = { k 2 (t) : t = 0, 1,..., tk 2 1 } beranggotakan keadaan yang menyatakan lampu lalulintas kuning menyala pada jalur 2. Definisi keadaan k 2 (t) dapat dituliskan sebagai berikut untuk i = 1, 2,..., l + 4. tk 2 + 2<j l (th j + tk j ) t, untuk i = 1 tk 2 + (th j + tk j ) t, untuk i = 3, 4,..., l ki 2 (t) = 2<j<i tk 2 t, untuk i = l + 3 t, untuk i = l + 4 0, untuk i yang lain (4.53) Selanjutnya dibahas keadaan Petri net yang menyatakan lampu lalulintas hijau atau kuning menyala pada jalur 3. Diharapkan bentuk vektor keadaan pada jalur 1, 2 dan 3 dapat digunakan sebagai dasar untuk menyusun bentuk umum vektor keadaan untuk semua jalur di persimpangan. Keadaan Petri net yang menyatakan lampu lalulintas hijau menyala pada jalur 3 dibahas terlebih dahulu. Pada saat lampu lalulintas hijau menyala di jalur 3 maka place yang mungkin mempunyai token adalah M 1, M 2, M 4,...,M l, H dan BH. Indeks setiap place adalah 1, 2, 4,..., l, l + 1 dan l + 2. Misalkan Sh 3 merupakan him- 134

163 punan keadaan yang menyatakan lampu lalulintas hijau menyala pada jalur 3 yang ditulis Sh 3 = { h 3 (t) : t = 0, 1,..., th 3 1 }. Bentuk vektor keadaan h 3 (t) dapat dituliskan sebagai berikut h 3 i (t) = (j<i) (j 3) 3 j<i dengan i = 1, 2,..., l + 4. (th j + tk j ) t, untuk i = 1, 2 (th j + tk j ) t, untuk i = 4, 5,...,l th 3 t, untuk i = l + 1 t, untuk i = l + 2 0, untuk i yang lain (4.54) Ekspresi jumlahan yang memuat (j < i) (j 3) dilakukan pada saat i bernilai 1 atau 2. Hal ini dapat dijelaskan dengan mengambil contoh untuk i = 2 yaitu lama lampu lalulintas merah menyala pada jalur 2. Lama lampu lalulintas merah menyala pada jalur 2 diperoleh dari jumlahan lama lampu lalulintas hijau dan kuning menyala pada jalur yang lain. Perhatikan bahwa pada saat t = 0 lampu lalulintas merah pada jalur 2 baru saja menyala. Ekspresi (j < i) (j 3) dan (1 j < i) (3 j l) adalah ekivalen. k 3 i (t) = tk 3 + (j<i) (j>3) tk 3 + 3<j<i (th j + tk j ) t, untuk i = 1, 2 (th j + tk j ) t, untuk i = 4, 5,..., l tk 3 t, untuk i = l + 3 t, untuk i = l + 4 0, untuk i yang lain (4.55) Misalkan Sk 3 adalah himpunan keadaan yang menyatakan lampu lalulintas kuning menyala di jalur 3 yaitu Sk 3 = { k 3 (t) : t = 0, 1,..., tk 3 1 } dan i menyatakan indeks place. Bentuk vektor keadaan k 3 (t) dapat dinyatakan dalam persamaan (4.55) untuk i = 1, 2,..., l + 4. Jumlah node pada coverability tree adalah 1 + l r=1 (th r + tk r ) yaitu jumlahan lama lampu lalulintas hijau dan kuning untuk semua jalur ditambah satu. Penambahan satu node ini merupakan node duplicate dari node root. Berikutnya disusun bentuk umum keadaan yang berada di coverability tree. Misalkan S adalah himpunan keadaan di coverability tree. Dengan menggunakan keterangan sebelumnya ditulis S = Sh Sk dengan Sh = ( l r=1sh r ) dan Sk = ( l r=1 Sk r). Himpunan Sh = {h r (t r ) : 0 t r < th r, 1 r l} ber- 135

164 anggotakan keadaan yang menyatakan terdapat lampu lalulintas hijau yang menyala. Variabel r menyatakan jalur yang dilayani sehingga r = 1, 2,..., l. Berikut merupakan bentuk umum keadaan h r (t r ) h r i (t r) = (j<i) (j r) dengan i = 1, 2,..., l + 4. r j<i (th j + tk j ) t r, untuk 1 i < r (th j + tk j ) t r, untuk r < i l th r t r, untuk i = l + 1 t r, untuk i = l + 2 0, untuk i yang lain (4.56) Anggota himpunan Sk = {k r (t r ) : 0 t r < tk r, 1 r l} adalah keadaan yang menyatakan terdapat lampu lalulintas kuning yang menyala. Berikut merupakan bentuk dari vektor keadaan k r (t r ) dengan i = 1, 2,..., l + 4. ki r (t r) = tk r + (j<i) (j>r) tk r + r<j<i (th j + tk j ) t r, untuk 1 i < r (th j + tk j ) t r, untuk r < i l tk r t r, untuk i = l + 3 t r, untuk i = l + 4 0, untuk i yang lain (4.57) Dengan memperhatikan persamaan (4.56) dan (4.57) dapat disimpulkan bahwa secara umum banyak keadaan yang berbeda pada coverability tree adalah l r=1 (th r + tk r ). Terdapat dua node coverability tree yang menyatakan keadaan awal sehingga jumlah node pada coverability tree sebanyak 1 + l r=1 (th r + tk r ). Perhatikan bahwa tidak ada keadaan di coverability tree yang mempunyai notasi ω sehingga Petri net lampu lalulintas tereduksi bersifat terbatas (bounded). Coverability tree yang diperoleh juga disebut reachability tree karena tree ini secara eksplisit memuat semua keadaan yang mungkin dicapai dari keadaan awal. Selanjutnya ditentukan batas atas setiap place di Petri net. Batas atas setiap place pada Petri net di Gambar 4.15 dapat diperoleh dengan memperhatikan persamaan (4.45), (4.46), (4.47) dan (4.48). Jumlah token maksimum pada place M 1 dan M 2 masing-masing adalah 10 yang terlihat pada persamaan (4.47) dan (4.45) pada saat variabel t bernilai 0. Cara yang sama dapat digunakan untuk mendapatkan batas atas semua place. 136

165 Batas atas Petri net dapat dinyatakan sebagai keadaan xb seperti telah dijelaskan pada bab sebelumnya saat membahas keterbatasan (boundedness). Keadaan yang menyatakan batas atas Petri net di Gambar 4.15 adalah [10, 10, 6, 5, 4, 3] T. Perhatikan bahwa batas atas dari place M 1 dan M 2 masingmasing adalah jumlahan lama lampu lalulintas hijau dan kuning menyala pada jalur yang lain. Jumlah token maksimum pada place H dan K merupakan maksimum lama masing-masing lampu lalulintas menyala untuk semua jalur. Batas atas untuk place buffer yaitu BH dan BK merupakan maksimum lama masing-masing lampu lalulintas menyala untuk setiap jalur dikurangi satu. Hasil yang diperoleh pada contoh ini dapat digunakan sebagai acuan untuk memperoleh bentuk umum batas atas place di Petri net lampu lalulintas di persimpangan. Bentuk umum keadaan xb dapat dinyatakan dalam persamaan berikut j i (th j + tk j ), untuk i = 1, 2,..., l max{th j : 1 j l}, untuk i = l + 1 xb i = max{th j : 1 j l} 1, untuk i = l + 2 dengan i = 1, 2,..., l + 4. max{tk j : 1 j l}, untuk i = l + 3 max{tk j : 1 j l} 1, untuk i = l + 4 (4.58) Pada bagian selanjutnya dibahas sifat konservasi Petri net lampu lalulintas di persimpangan setelah dilakukan proses reduksi keadaan. Pengujian sifat konservasi menggunakan coverability tree yang telah dibangun dan dibahas pada bagian ini Konservasi Pada bagian ini dibahas sifat konservasi untuk Petri net yang terdapat pada Gambar Pengujian sifat konservasi dilakukan dengan membangun sistem persamaan linier terlebih dahulu. Setiap persamaan menyatakan suatu keadaan di coverability tree sehingga jumlah persamaan sama dengan jumlah keadaan di coverability tree yaitu 20. Jumlah variabel satu lebih banyak dibandingkan jumlah place di Petri net yaitu 7. Notasi yang digunakan untuk menyatakan variabel sama dengan notasi yang digunakan pada bagian sebelumnya yaitu γ 1, γ 2,...,γ 6, C. Sistem persamaan linier (4.59) diperoleh dengan mengevaluasi persamaan (4.45) untuk t = 0, 1,..., 5. Perhatikan bahwa sistem persamaan linier 137

166 yang diperoleh sama dengan sistem persamaan linier sebelum dilakukan proses reduksi keadaaan pada Petri net. 10 γ γ 3 = C 9 γ γ 3 + γ 4 = C 8 γ γ γ 4 = C 7 γ γ γ 4 = C 6 γ γ γ 4 = C 5 γ 2 + γ γ 4 = C (4.59) Nilai elemen dan posisi elemen pada vektor keadaan masing-masing menyatakan konstanta dan variabel pada sistem persamaan linier. Kenyataan ini dapat digunakan sebagai pedoman untuk menuliskan keenam persamaan pada (4.59) sebagai berikut. (10 h 1 )γ 2 + (6 h 1 )γ 3 + h 1 γ 4 = C (4.60) dengan h 1 = 0, 1,..., 5. Cara yang sama dapat digunakan untuk mendapatkan bentuk sistem persamaan linier untuk keadaan yang lain. Bentuk berikut diperoleh dari persamaan (4.46), (4.47) dan (4.48). (4 k 1 )γ 2 + (4 k 1 )γ 5 + k 1 γ 6 = C dengan k 1 = 0, 1,..., 3 (10 h 2 )γ 1 + (6 h 2 )γ 3 + h 2 γ 4 = C dengan h 2 = 0, 1,..., 5 (4.61) (4 k 2 )γ 1 + (4 k 2 )γ 5 + k 2 γ 6 = C dengan k 2 = 0, 1,..., 3 Perhatikan bahwa persamaan (4.60) dan persamaan pertama pada sistem persamaan linier (4.61) masing-masing sama dengan persamaan (4.37) dan persamaan pertama pada sistem persamaan linier (4.38). Persamaan kedua dan ketiga pada sistem persamaan linier (4.61) diperoleh dari persamaan kedua dan ketiga pada sistem persamaan linier (4.38) dengan menggantikan variabel γ 7, γ 8, γ 9 dan γ 10 masing-masing dengan variabel γ 3, γ 4, γ 5 dan γ 6. Perhatikan persamaan yang menyatakan lampu lalulintas hijau menyala pada jalur 1 dan jalur 2. Kedua persamaan dapat ditulis menjadi sebuah persamaan dengan menambahkan variabel r yang menyatakan jalur. Sebelum itu dibahas bagaimana mendapatkan konstanta 10 dan 6 pada kedua persamaan tersebut dari input yang diberikan. Input yang diberikan adalah lama lampu lalulintas hijau dan kuning menyala pada jalur 1 dan jalur 2. Ingat 138

167 bahwa lampu lalulintas hijau dan kuning masing-masing menyala selama 6 dan 4 satuan waktu pada jalur 1 dan jalur 2 sehingga th 1 = 6 = th 2 dan tk 1 = 4 = tk 2. Konstanta 10 pada jalur 1 diperoleh dari th 1 +tk 1 sedangkan konstanta 10 pada jalur 2 diperoleh dari th 2 + tk 2 yang terlihat pada persamaan (4.56). Dengan menggunakan cara yang sama dapat disimpulkan konstanta 6 pada jalur 1 diperoleh dari th 1 dan konstanta 6 pada jalur 2 diperoleh dari th 2. Persamaan berikut menyatakan terdapat lampu lalulintas hijau yang menyala. (10 h r )γ 2 r+1 + (6 h r )γ 3 + h r γ 4 = C (4.62) dengan 0 h r < th r dan r = 1, 2. Perhatikan bahwa indeks 3 dan 4 diperoleh dari persamaan (4.56) dengan menggunakan l = 2. Selanjutnya dibahas persamaan yang menyatakan lampu lalulintas kuning menyala pada jalur 1 dan jalur 2. Terlihat pada persamaan (4.61) bahwa semua konstanta bernilai sama. Konstanta 4 pada jalur 1 diperoleh dari tk 1 sedangkan konstanta 4 pada jalur 2 diperoleh dari tk 2. Persamaan (4.57) dapat digunakan sebagai pedoman untuk menentukan persamaan yang menyatakan terdapat lampu lalulintas kuning yang menyala. Variabel l diberikan nilai 2 karena persimpangan mempunyai dua jalur. (4 k r )γ 2 r+1 + (4 k r )γ 5 + k r γ 6 = C (4.63) dengan 0 k r < tk r dan r = 1, 2. Persamaan (4.62) dan (4.63) berlaku untuk persimpangan yang mempunyai dua jalur dengan lama lampu lalulintas hijau dan kuning masingmasing menyala selama 6 dan 4 satuan waktu. Kedua persamaan tersebut dapat diubah agar berlaku untuk lama lampu lalulintas menyala sebarang. Perubahan yang dilakukan berdasarkan keterangan yang telah dibahas sebelumnya. Dengan menggunakan variabel th 1, th 2, tk 1, tk 2 untuk menyatakan lama masing-masing lampu lalulintas menyala pada setiap jalur maka persamaan (4.62) dan (4.63) dapat dinyatakan sebagai. ((th r + tk r ) h r )γ 2 r+1 + (th r h r )γ 3 + h r γ 4 = C (tk r k r )γ 2 r+1 + (tk r k r )γ 5 + k r γ 6 = C (4.64) dengan 0 h r < th r dan r = 1, 2. Perhatikan bahwa (th r + tk r ) h r, th r h r dan h r serupa dengan persamaan (4.56) jika variabel h r diganti dengan 139

168 t r. Ekspresi (tk r k r ) dan k r juga serupa dengan persamaan (4.57) dengan mengganti variabel k r menjadi t r. Selanjutnya disusun bentuk umum sistem persamaan linier yang diperoleh jika jalur pada persimpangan berjumlah sebarang. Bentuk umum sistem persamaan linier diperoleh dari persamaan (4.56) dan (4.57) yang telah dibahas pada saat menurunkan persamaan (4.64). Ingat letak elemen dan nilai elemen pada vektor keadaan masing-masing menentukan variabel dan konstanta pada sistem persamaan linier. Secara umum sistem persamaan linier yang terbentuk dapat dituliskan sebagai berikut. l+4 h r i (th r ) γ i = C, i=1 l+4 ki r (tk r ) γ i = C (4.65) i=1 dengan 0 t h r < th r, 0 t k r < tk r dan 1 r l. Perhatikan bahwa sistem persamaan linier (4.65) dapat diperoleh dari sistem persamaan linier (4.42) dengan mengganti ekspresi 5l menjadi l + 4. Perubahan ini berkaitan dengan jumlah place pada Petri net. Sistem persamaan linier (4.65) mempunyai l r=1 (th r+tk r ) persamaan dan l + 5 variabel. Jelas bahwa terdapat penyelesaian tidak trivial jika jumlah persamaan kurang dari jumlah variabel. Jika terdapat penyelesaian tidak trivial maka Petri net memenuhi sifat konservasi. Jadi sifat konservasi dipenuhi jika berlaku l r=1 (th r + tk r ) < l + 5 dengan l menyatakan jumlah jalur di persimpangan. Semua Petri net yang dibahas hingga bagian ini digunakan untuk mensimulasikan lampu lalulintas dengan berbagai variasinya. Pada bagian berikutnya dibahas desain algoritma untuk mensimulasikan jumlah pengguna di persimpangan pada setiap waktu. 4.7 Simulasi Jumlah Pengguna di Persimpangan Ada beberapa faktor yang harus diperhitungkan dalam mensimulasikan jumlah pengguna di persimpangan. Pertama adalah urutan jalur yang dilayani sudah ditetapkan sebelumnya. Penetapan ini dilakukan dengan tujuan tidak membingungkan pengguna jalan. Selain itu diasumsikan pada setiap jalur terdapat sebuah lampu lalulintas yang menyala disertai bilangan yang menunjukkan sisa waktu lampu lalulintas menyala. Berdasarkan keterangan sebelumnya maka pada setiap jalur terdapat satu lampu lalulintas yang me- 140

169 nyala setiap waktu sehingga dibutuhkan sebuah bilangan untuk setiap jalur. Bilangan ini digunakan secara bergantian oleh masing-masing lampu lalulintas. Asumsi yang digunakan sebelumnya merupakan batasan dalam mensimulasikan jumlah pengguna di persimpangan. Jumlah pengguna yang melewati persimpangan pada saat lampu lalulintas hijau menyala lebih besar dibandingkan pada saat lampu lalulintas kuning menyala. Hal ini disebabkan lampu lalulintas kuning menyatakan pelayanan pada jalur tersebut segera berakhir. Pada saat lampu lalulintas hijau baru saja menyala, jumlah pengguna yang melewati persimpangan sedikit karena sebelumnya pengguna dalam keadaan berhenti. Pada simulasi ini diusahakan untuk memperkecil frekuensi pergantian jalur yang dilayani. Pada setiap jalur diberikan maksimum lama lampu lalulintas hijau dan kuning menyala. Lama maksimum lampu lalulintas kuning menyala dapat diberikan nilai yang sama untuk semua jalur. Lama maksimum lampu lalulintas hijau menyala menunjukkan perkiraan tingkat kepadatan pada masing-masing jalur. Semakin tinggi tingkat kepadatan pada suatu jalur maka maksimum lama lampu lalulintas hijau pada jalur tersebut semakin besar. Penentuan lama lampu lalulintas hijau atau kuning menyala pada suatu jalur tergantung perkiraan waktu yang dibutuhkan untuk melayani semua pengguna yang saat itu berada pada jalur tersebut. Jika waktu yang dibutuhkan melebihi maksimum lama lampu lalulintas menyala maka lama lampu lalulintas menyala adalah maksimum lamanya. Jadi lama lampu lalulintas menyala adalah minimum perkiraan waktu yang dibutuhkan untuk melayani semua pengguna saat itu dan maksimum lamanya. Permasalahan berikutnya adalah saat penentuan lama lampu lalulintas hijau dan kuning menyala. Jelas bahwa lama lampu lalulintas hijau dan kuning menyala tergantung jumlah pengguna. Penentuan lama lampu lalulintas hijau dan kuning menyala dapat dilakukan pada saat lampu lalulintas akan menyala. Ingat lama lampu lalulintas merah menyala tergantung lama lampu lalulintas hijau dan kuning menyala pada jalur yang lain. Dengan menggunakan pendekatan ini maka lama lampu lalulintas merah menyala tidak dapat dihitung. Hal ini disebabkan tidak tersedia lama lampu lalulintas hijau dan kuning menyala pada semua jalur. Oleh sebab itu penetapan lama lampu lalulintas hijau dan kuning menyala di suatu jalur dilakukan pada saat lampu lalulintas yang menyala di jalur tersebut akan berganti ke merah. Ingat lama lampu lalulintas hijau dan kuning menyala tergantung jumlah pengguna. Jelas bahwa jumlah pengguna belum diketahui pada saat mene- 141

170 tapkan lama lampu lalulintas hijau dan kuning menyala sehingga lama kedua lampu lalulintas menyala belum bisa dihitung. Lama lampu lalulintas hijau dan kuning menyala dapat dihitung dengan menggunakan perkiraan jumlah pengguna pada saat lampu lalulintas hijau atau kuning akan menyala. Simulasi jumlah pengguna di persimpangan membutuhkan data kedatangan dan keberangkatan setiap jalur pada setiap waktu. Jika simulasi tidak dilakukan dalam waktu yang lama, data ini dapat diinputkan secara manual. Jika simulasi dilakukan dalam waktu yang lama, tidak realistis untuk menginputkan data ini secara manual. Ingat jumlah kedatangan dan keberangkatan pada setiap jalur secara umum tidak sama untuk setiap waktu. Pada penelitian ini jumlah keberangkatan pada setiap waktu dianggap mendekati konstan sehingga jumlah pengguna yang dilayani berdistribusi normal dengan mean µ dan varian σ 2. Mean menyatakan perkiraan jumlah pengguna yang terlayani dan varian menyatakan tingkat akurasi dari perkiraan. Diharapkan dengan menggunakan pendekatan ini, jumlah keberangkatan yang diperoleh mendekati kenyataan. Pada penelitian ini dibahas dua pendekatan untuk menyatakan kedatangan pengguna. Pendekatan yang pertama menggunakan distribusi normal dan pendekatan yang kedua menggunakan distribusi uniform diskrit Kedatangan Berdistribusi Normal Pada pendekatan ini jumlah pengguna yang datang pada setiap waktu dianggap mendekati nilai tertentu. Nilai ini menyatakan mean yang disimbolkan dengan µ. Varian menyatakan tingkat keberagaman data yang disimbolkan dengan σ 2. Semakin besar nilai varian maka jumlah pengguna yang datang semakin bervariasi dan semakin kecil nilai varian menyebabkan jumlah pengguna yang datang semakin mendekati nilai mean. Pada kajian sebelumnya telah dibahas lama lampu lalulintas hijau atau kuning menyala tergantung jumlah pengguna pada saat itu. Berdasarkan keterangan pada paragraf sebelumnya maka jumlah keberangkatan pengguna pada setiap waktu merupakan bilangan random berdistribusi normal. Waktu yang dibutuhkan untuk melayani semua pengguna diperoleh dari jumlah pengguna dibagi mean keberangkatan. Mean kedatangan digunakan untuk memperkirakan jumlah pengguna pada waktu yang akan datang. Nilai mean dipilih karena mempunyai peluang paling besar jika dibandingkan dengan nilai yang lain pada distribusi normal. 142

171 Selanjutnya akan disusun algoritma simulasi jumlah pengguna di persimpangan. Sebelum itu akan dibahas notasi-notasi yang digunakan di algoritma. Notasi l menyatakan jumlah jalur pada persimpangan. Jelas bahwa l merupakan bilangan asli sehingga dapat ditulis l N. Notasi N(µ, σ 2 ) menyatakan bilangan random berdistribusi normal dengan mean µ dan varian σ 2. Variabel x menyatakan jumlah pengguna di setiap jalur untuk setiap waktu. Jelas bahwa variabel x merupakan matriks dengan baris menyatakan jalur dan kolom menyatakan waktu. Jumlah baris matriks x sama dengan jumlah jalur di persimpangan yaitu l. Pada permasalahan ini elemen dari x merupakan bilangan bulat taknegatif karena menyatakan jumlah pengguna di suatu jalur pada saat tertentu. Data mean kedatangan dan keberangkatan disimpan dalam variabel µ yang bertipe matriks. Data varian kedatangan dan keberangkatan disimpan dalam variabel σ 2 yang bertipe matriks. Elemen matriks µ dan σ 2 merupakan bilangan real positif. Variabel wkt menyimpan lama lampu lalulintas hijau dan kuning menyala pada setiap jalur. Elemen matriks wkt merupakan bilangan bulat taknegatif. Variabel maks menyimpan maksimum lama lampu lalulintas hijau dan kuning menyala pada setiap jalur. Elemen matriks maks sama dengan wkt yaitu bilangan bulat taknegatif. Baris pada matriks µ, σ 2, wkt, maks menyatakan jalur sehingga jumlah baris pada keempat matriks tersebut sama dengan jumlah jalur di persimpangan. Kolom pertama matriks µ dan σ 2 masing-masing menyimpan mean dan varian kedatangan. Kolom kedua dari matriks µ dan σ 2 masing-masing menyimpan mean dan varian keberangkatan saat lampu lalulintas hijau menyala. Kolom ketiga dari matriks µ dan σ 2 masing-masing menyimpan mean dan varian keberangkatan saat lampu lalulintas kuning menyala. Kolom pertama dan kedua dari matriks wkt masing-masing menyimpan lama lampu lalulintas hijau dan kuning menyala pada setiap jalur. Kolom pertama dan kedua dari matriks maks masing-masing menyimpan maksimum lama lampu lalulintas hijau dan kuning menyala pada setiap jalur. Lama simulasi dinyatakan dengan variabel T. Pada penelitian ini lama simulasi merupakan bilangan bulat taknegatif. Berikut dituliskan nama variabel yang digunakan di algoritma simulasi pengguna di persimpangan disertai dengan keterangan singkat yang menjelaskan kegunaan variabel tersebut. Daftar nama variabel ini merupakan ringkasan dari pembahasan sebelumnya. Diharapkan dengan menggunakan daftar ini maka algoritma simulasi jumlah pengguna lebih cepat dipahami. 143

172 x(:, t) jumlah pengguna pada waktu ke t µ(:, 1) mean kedatangan µ(:, 2) mean keberangkatan saat lampu lalulintas hijau menyala µ(:, 3) mean keberangkatan saat lampu lalulintas kuning menyala σ 2 (:, 1) varian kedatangan σ 2 (:, 2) varian keberangkatan saat lampu lalulintas hijau menyala σ 2 (:, 3) varian keberangkatan saat lampu lalulintas kuning menyala wkt(:, 1) lama lampu lalulintas hijau menyala wkt(:, 2) lama lampu lalulintas kuning menyala maks(:, 1) maksimum lama lampu lalulintas hijau menyala maks(:, 2) maksimum lama lampu lalulintas kuning menyala T lama simulasi Selanjutnya didesain algoritma untuk mensimulasikan jumlah pengguna setiap jalur di persimpangan pada setiap waktu. Urutan jalur yang dilayani pada setiap periode adalah tetap dengan asumsi pelayanan dimulai dari jalur yang mempunyai indeks kecil. Berdasarkan keterangan sebelumnya maka lampu lalulintas hijau menyala di jalur 1 dan lampu lalulintas merah menyala di jalur yang lain pada kondisi awal. Pada tahap inisialisasi dihitung lama lampu lalulintas hijau menyala pada jalur 1 dan lama lampu lalulintas merah menyala pada jalur yang lain. Hasil dari proses ini ditampilkan kepada pengguna di setiap jalur agar mengetahui perkiraan lama suatu lampu lalulintas menyala. Ada beberapa input yang dibutuhkan untuk algoritma tahap inisialisasi. Input pertama adalah jumlah pengguna setiap jalur di persimpangan pada kondisi awal yang dinotasikan dengan x. Variabel ini merupakan vektor dengan elemen sebanyak jumlah jalur di persimpangan yaitu l. Jelas bahwa elemen dari x adalah bilangan bulat taknegatif. Selain jumlah pengguna, mean kedatangan dan keberangkatan pada setiap jalur juga dibutuhkan sebagai input algoritma tahap inisialisasi. Nilai mean digunakan untuk memperkirakan jumlah pengguna pada saat terjadi pergantian lampu lalulintas yang menyala. Selain itu nilai mean juga digunakan untuk menghitung waktu yang dibutuhkan agar semua pengguna pada suatu jalur terlayani. Lama lampu lalulintas menyala merupakan minimum dari waktu yang dibutuhkan untuk melayani semua pengguna dan maksimum lama lampu lalulintas menyala sehingga input berikutnya adalah maksimum lama lampu lalulintas hijau dan kuning menyala pada setiap jalur di persimpangan. 144

173 Pengguna yang menunggu di jalur 1 pada kondisi awal sebanyak x 1 dan mean keberangkatan saat lampu lalulintas hijau menyala adalah µ(1, 2) sehingga waktu yang dibutuhkan untuk melayani semua pengguna di jalur ini selama x 1 /µ(1, 2) satuan waktu. Ekspresi x 1 /µ(1, 2) dapat ditulis xpre h 1 /µ(1, 2) dengan xpre h 1 menyatakan perkiraan banyak pengguna di jalur 1 saat lampu lalulintas hijau akan menyala. Lama lampu lalulintas hijau menyala merupakan minimum dari waktu yang dibutuhkan untuk melayani semua pengguna dan maksimum lama lampu lalulintas hijau menyala di jalur 1 yang dinyatakan dengan maks(1, 1). Ingat lampu lalulintas hijau menyala paling tidak selama 1 satuan waktu. Hal ini berguna untuk menghindari terjadinya deadlock ketika tidak ada pengguna pada semua jalur di persimpangan. Notasi yang menyatakan lama lampu lalulintas hijau menyala pada jalur 1 di Algoritma 4.10 adalah wkt(1, 1). Berdasarkan keterangan sebelumnya maka wkt(1, 1) diperoleh dari min { max { xpre h 1/µ(1, 2), 1 }, maks(1, 1) }. Selanjutnya dihitung lama lampu lalulintas kuning menyala pada jalur 1 yang dinotasikan dengan wkt(1, 2) di Algoritma Lama lampu lalulintas kuning menyala merupakan minimum dari waktu yang dibutuhkan untuk melayani semua pengguna dan maksimum lama lampu lalulintas kuning menyala. Waktu yang dibutuhkan untuk melayani semua pengguna tergantung banyak pengguna saat pergantian lampu lalulintas yang menyala. Perkiraan banyak pengguna saat lampu lalulintas kuning baru menyala diperoleh dari xpre h 1 + (µ(1, 1) µ(1, 2))wkt(1, 1) yaitu banyak pengguna pada kondisi awal ditambah selisih antara mean kedatangan dan mean keberangkatan saat lampu lalulintas hijau menyala dikalikan lama lampu lalulintas hijau menyala. Ekspresi sebelumnya dapat ditulis xpre k 1 yang menyatakan perkiraan banyak pengguna di jalur 1 saat lampu lalulintas kuning akan menyala. Waktu yang dibutuhkan untuk melayani pengguna di jalur 1 selama xpre k 1/µ(1, 3) satuan waktu. Lama maksimum lampu lalulintas kuning menyala dinotasikan dengan maks(1, 2). Ingat lampu lalulintas kuning menyala paling tidak selama 1 satuan waktu dengan menggunakan alasan yang sama seperti sebelumnya. Berdasarkan keterangan sebelumnya maka lampu lalulintas kuning menyala di jalur 1 selama min { max { xpre k 1/µ(1, 3), 1 }, maks(1, 2) } satuan waktu. Lama lampu lalulintas hijau menyala di jalur 2 tergantung waktu yang dibutuhkan untuk melayani semua pengguna di jalur 1 dan maksimum lama lampu lalulintas hijau menyala. Waktu yang dibutuhkan untuk melayani semua pengguna pada jalur 2 tergantung banyak pengguna saat lampu lalulintas hijau akan menyala di jalur 2. Perkiraan banyak pengguna yang menunggu di 145

174 jalur 2 sebanyak pengguna pada kondisi awal ditambah dengan pengguna yang datang pada saat lampu lalulintas hijau dan kuning menyala pada jalur 1 yang ditulis x 2 +(wkt(1, 1)+wkt(1, 2))µ(2, 1). Ekspresi sebelumnya dinyatakan dengan xpre h 2 agar penulisan lebih sederhana. Waktu yang dibutuhkan untuk melayani pengguna di jalur 2 diperoleh dari banyak pengguna dibagi mean keberangkatan yaitu selama xpre h 2 /µ(2, 2) satuan waktu. Dengan menggunakan keterangan sebelumnya maka lampu lalulintas hijau menyala di jalur 2 selama min { max { xpre h 2 /µ(2, 2), 1 }, maks(2, 1) } satuan waktu. Pada bagian ini ditentukan lama lampu lalulintas kuning menyala pada jalur 2. Pada Algoritma 4.10 notasi yang digunakan adalah wkt(1, 2). Lama lampu lalulintas kuning menyala di jalur 2 merupakan minimum dari waktu yang dibutuhkan untuk melayani semua pengguna di jalur ini dan maksimum lama lampu lalulintas kuning menyala. Waktu yang dibutuhkan untuk melayani semua pengguna tergantung banyak pengguna saat lampu lalulintas kuning akan menyala. Perkiraan banyak pengguna pada saat itu adalah xpre h 2 +(µ(2, 1) µ(2, 2))wkt(2, 1) yaitu perkiraan banyak pengguna saat lampu lalulintas hijau akan menyala ditambah selisih antara mean kedatangan dan mean keberangkatan dikalikan lama lampu lalulintas hijau menyala. Ekspresi sebelumnya ditulis xpre k 2 yang menyatakan perkiraan banyak pengguna di jalur 2 saat lampu lalulintas kuning akan menyala. Waktu yang dibutuhkan untuk melayani pengguna di jalur 2 selama xpre k 2 /µ(2, 3) satuan waktu. Lama maksimum lampu lalulintas kuning menyala di jalur 2 dinotasikan dengan maks(2, 2). Ingat lampu lalulintas kuning menyala paling tidak selama 1 satuan waktu dengan menggunakan alasan yang sama seperti sebelumnya. Berdasarkan keterangan sebelumnya maka lampu lalulintas kuning menyala di jalur 2 selama min { max { xpre k 2 /µ(2, 3), 1 }, maks(2, 2) } satuan waktu. Secara umum perkiraan banyak pengguna pada jalur i saat lampu lalulintas hijau akan menyala diperoleh dari banyak pengguna pada kondisi awal ditambah pengguna yang datang saat lampu lalulintas hijau dan kuning menyala pada jalur sebelumnya. Proses ini dapat ditulis menjadi persamaan x i + µ(i, 1) i 1 j=1 (wkt(j, 1) + wkt(j, 2)) dengan x i menyatakan banyak pengguna di jalur i pada kondisi awal. Ekspresi sebelumnya juga dapat ditulis x i + µ(i, 1) i 1 2 j=1 q=1 wkt(j, q) yang dinyatakan dengan xpreh i. Waktu yang dibutuhkan untuk melayani pengguna pada jalur i saat lampu lalulintas hijau menyala adalah xpre h i /µ(i, 2) satuan waktu. Lama lampu lalulintas hijau menyala pada jalur i dinyatakan dengan wkt(i, 1) yang diperoleh dari min { max { xpre h i /µ(i, 2), 1 }, maks(i, 1) }. 146

175 Perkiraan banyak pengguna pada jalur i saat lampu lalulintas kuning akan menyala diperoleh dari banyak pengguna saat lampu lalulintas hijau akan menyala ditambah selisih antara mean kedatangan dan mean keberangkatan saat lampu lalulintas hijau menyala. Proses ini dapat ditulis menjadi persamaan xpre h i + (µ(i, 1) µ(i, 2))wkt(i, 1) dengan xpreh i menyatakan perkiraan banyak pengguna di jalur i saat lampu lalulintas hijau akan menyala. Ekspresi sebelumnya dinyatakan dengan xpre k i untuk menyederhanakan penulisan. Waktu yang dibutuhkan untuk melayani pengguna pada jalur i saat lampu lalulintas kuning menyala adalah xpre k i /µ(i, 3) satuan waktu. Lama lampu lalulintas hijau menyala pada jalur i dapat ditulis sebagai ekspresi min { max { xpre k i /µ(i, 3), 1 }, maks(i, 2) } yang dinyatakan dengan wkt(i, 2). Berikut merupakan algoritma tahap inisialisasi simulasi persimpangan. Algoritma 4.10 Tahap Inisialisasi Simulasi Jumlah Pengguna Input: µ R l 3,x (N {0}) l, maks (N {0}) l 2, l N Output: wkt (N {0}) l 2 1 for i = 1 to l do 2 xpre x i + µ(i, 1) i 1 2 j=1 q=1 wkt(j, q) /* hijau */ 3 wkt(i, 1) min {max { xpre/µ(i, 2),1},maks(i, 1)} 4 xpre xpre + (µ(i, 1) µ(i, 2)) wkt(i, 1) /* kuning */ 5 wkt(i, 2) min {max { xpre/µ(i, 3),1},maks(i, 2)} 6 end for Variabel yang digunakan untuk menyimpan perkiraan banyak pengguna saat lampu lalulintas hijau atau kuning akan menyala pada semua jalur adalah xpre. Hal ini dilakukan dengan tujuan mengurangi kebutuhan memori Algoritma Berikutnya ditentukan kompleksitas algoritma tahap inisialisasi simulasi persimpangan. Kompleksitas algoritma terdiri dari menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai. Sebelum menghitung banyak kerja, jenis operasi yang dihitung harus ditentukan terlebih dahulu. Jenis operasi yang dihitung adalah perkalian karena operasi ini terdiri dari banyak operasi dasar. Operasi-operasi yang setara dengan perkalian juga dihitung misalnya pembagian. Operasi perkalian dilakukan pada baris 2 dan 4 sedangkan operasi pembagian dilakukan pada baris 3 dan 5. Pernyataan pada baris 2, 3, 4 dan 5 dilakukan sebanyak l sehingga banyak kerja yang dilakukan Algoritma 4.10 adalah 4l yang dapat ditulis O(l). Banyak memori yang dipakai Algoritma 4.10 tergantung variabel tambahan di algoritma tersebut. Pada algoritma tahap inisialisasi simulasi persimpangan terdapat sebuah variabel tambahan yaitu xpre. Banyak memori yang 147

176 dipakai variabel ini tidak tergantung input sehingga Algoritma 4.10 bekerja di tempat (work in place). Berikut merupakan ilustrasi proses yang dilakukan oleh Algoritma Contoh 4.1. Persimpangan yang dibahas pada contoh ini mempunyai 2 jalur sehingga l = 2. Lama maksimum lampu lalulintas hijau menyala di jalur 1 dan jalur 2 adalah 6 satuan waktu. Lama maksimum lampu lalulintas kuning menyala pada kedua jalur adalah 4 satuan waktu. Mean kedatangan pada jalur 1 dan jalur 2 adalah 2. Mean keberangkatan saat lampu lalulintas hijau menyala adalah 5 dan mean keberangkatan saat lampu lalulintas kuning menyala adalah 3. Nilai mean keberangkatan sama untuk kedua jalur di persimpangan. Pada kondisi awal terdapat 15 pengguna pada kedua jalur. Ukuran matriks µ adalah 2 3 sedangkan ukuran matriks maks adalah 2 2. [ ] [ ] [ ] µ = maks = x = (4.66) Perulangan di baris 1 dijalankan dengan i = 1. Variabel xpre bernilai sama dengan x 1 yaitu 15 setelah menjalankan perintah di baris 2. Ekspresi xpre/µ(1, 2) bernilai 3 dan ekspresi maks(1, 1) bernilai 6 sehingga ekspresi min{max{3, 1}, 6} bernilai 3. Selanjutnya menjalankan perintah di baris 4. Ekspresi µ(1, 1), µ(1, 2) dan wkt(1, 1) masing-masing bernilai 2, 5 dan 3 sehingga variabel xpre bernilai 6 yang diperoleh dari 15 + (2 5)3. Variabel wkt(1, 2) bernilai 2 setelah menjalankan perintah di baris 5 karena µ(1, 3) = 3 dan maks(1, 2) = 4. Langkah selanjutnya menjalankan perulangan untuk i = 2. Ekspresi pada baris 2 dapat ditulis menjadi x 2 +µ(2, 1)(wkt(1, 1)+wkt(1, 2)). Variabel xpre bernilai 25 karena variabel x 2, µ(2, 1), wkt(1, 1) dan wkt(1, 2) masingmasing bernilai 15, 2, 3 dan 2. Variabel wkt(2, 1) bernilai 5 setelah menjalankan perintah pada baris 3 karena µ(2, 2) = 5 dan maks(2, 1) = 6. Perintah pada baris 4 menyebabkan variabel xpre berubah menjadi 10 karena variabel µ(2, 1), µ(2, 2) dan wkt(2, 1) masing-masing bernilai 2, 5 dan 5. Variabel wkt(2, 2) bernilai 4 karena µ(2, 3) = 3 dan maks(2, 2) = 4. Matriks wkt berukuran 2 2 dan dapat dituliskan sebagai berikut. [ ] 3 2 wkt = (4.67)

177 Setelah menyusun algoritma tahap inisialisasi, berikutnya disusun algoritma perpindahan jalur pada simulasi jumlah pengguna. Algoritma perpindahan jalur dijalankan ketika terjadi perubahan jalur yang dilayani. Proses ini ditandai dengan perubahan lampu lalulintas yang menyala dari kuning ke merah di suatu jalur dan pada saat yang bersamaan terjadi perubahan lampu lalulintas yang menyala dari merah ke hijau di jalur lain. Jalur lain yang dimaksud adalah jalur yang akan dilayani. Proses yang dilakukan oleh algoritma perpindahan jalur adalah menghitung lama lampu lalulintas hijau dan kuning menyala di jalur yang dilayani terakhir untuk periode berikutnya. Perintah pada algoritma ini serupa dengan algoritma tahap inisialisasi karena tujuan kedua algoritma hampir sama. Algoritma tahap inisialisasi menghitung lama lampu lalulintas menyala di semua jalur sedangkan algoritma perpindahan jalur menghitung lama lampu lalulintas menyala di satu jalur. Ada beberapa input yang dibutuhkan oleh algoritma perpindahan jalur. Pertama adalah data mean pada jalur yang dihitung. Data mean ini meliputi mean kedatangan, mean keberangkatan saat lampu lalulintas hijau menyala dan mean keberangkatan saat lampu lalulintas kuning menyala. Pada Algoritma 4.11, data mean dinotasikan dengan µ yaitu vektor baris dengan 3 elemen. Data mean digunakan untuk menghitung perkiraan banyak pengguna dan menentukan lama lampu lalulintas menyala. Dalam memperkirakan banyak pengguna, selain membutuhkan mean kedatangan juga membutuhkan informasi banyak pengguna di jalur yang dimaksud pada saat ini dan lama lampu lalulintas menyala di jalur yang lain. Informasi banyak pengguna disimpan di variabel x dan lama lampu lalulintas menyala pada jalur yang lain disimpan di variabel wkt. Dalam menghitung lama lampu lalulintas menyala dibutuhkan data maksimum lama lampu lalulintas menyala. Data ini disimpan dalam variabel maks yaitu vektor baris dengan 2 elemen. Indeks jalur yang dihitung juga menjadi input yang digunakan untuk menghitung perkiraan banyak pengguna seperti terlihat pada baris 1. Langkah pertama yang dilakukan adalah menghitung perkiraan banyak pengguna di jalur yang dilayani terakhir pada periode berikutnya. Perkiraan banyak pengguna tergantung mean kedatangan dan waktu yang dibutuhkan hingga jalur tersebut dilayani. Ingat urutan jalur yang dilayani adalah tetap sehingga jalur akan dilayani lagi ketika jalur yang lain sudah dilayani. Jadi waktu yang dibutuhkan hingga jalur dilayani lagi sama dengan jumlah waktu untuk melayani jalur yang lain. 149

178 Variabel yang digunakan untuk menyimpan perkiraan banyak pengguna saat lampu lalulintas hijau atau kuning akan menyala adalah xpre. Hal ini dapat dilakukan karena perkiraan banyak pengguna tidak dibutuhkan setelah mengetahui lama lampu lalulintas hijau atau kuning menyala. Dengan melakukan hal ini diharapkan kebutuhan memori Algoritma 4.11 menjadi semakin kecil. Algoritma 4.11 Perpindahan Jalur Simulasi Jumlah Pengguna Input: µ R 1 3, x N {0},maks (N {0}) 1 2, wkt (N {0}) l 2, i N Output: wkt (N {0}) l 2 1 xpre x + µ(1) 2 j i q=1 wkt(j, q) /* hijau */ 2 wkt(i, 1) min {max { xpre/µ(2),1},maks(1)} 3 xpre xpre + (µ(1) µ(2)) wkt(i, 1) /* kuning */ 4 wkt(i, 2) min {max { xpre/µ(3),1},maks(2)} Berikutnya ditentukan kompleksitas algoritma perpindahan jalur simulasi jumlah pengguna. Kompleksitas algoritma terdiri dari menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai. Sebelum menghitung banyak kerja, jenis operasi yang dihitung harus ditentukan terlebih dahulu. Jenis operasi yang dihitung adalah perkalian karena operasi ini terdiri dari banyak operasi dasar. Operasi-operasi yang setara dengan perkalian juga dihitung misalnya pembagian. Operasi perkalian dilakukan pada baris 1 dan 3 sedangkan operasi pembagian dilakukan pada baris 2 dan 4. Pernyataan pada baris 1, 2, 3 dan 4 dilakukan sekali sehingga banyak kerja yang dilakukan Algoritma 4.11 adalah 4. Banyak memori yang dipakai Algoritma 4.11 tergantung variabel tambahan di algoritma tersebut. Pada algoritma perpindahan jalur simulasi persimpangan terdapat sebuah variabel tambahan yaitu xpre. Banyak memori yang dipakai variabel ini tidak tergantung input sehingga Algoritma 4.11 bekerja di tempat (work in place). Berikut dijelaskan proses yang dilakukan oleh algoritma perpindahan jalur. Contoh 4.2. Misal input dari Algoritma 4.11 adalah µ = [2, 5, 3], x = 7, maks = [6, 4], i = 1 dan variabel wkt yang digunakan sama dengan persamaan (4.67). Perintah pada baris 1 yaitu xpre 7 + 2(5 + 4) menyebabkan variabel xpre bernilai 25. Variabel wkt(1, 1) = 5 karena variabel µ(2) dan maks(1) masing-masing bernilai 5 dan 6. Perintah pada baris 3 yaitu xpre 25 + (2 5)5 menyebabkan nilai variabel xpre berubah menjadi 10. Variabel wkt(1, 2) bernilai 4 karena variabel µ(3) dan maks(2) masing-masing 150

179 bernilai 3 dan 4. Elemen pada baris pertama matriks wkt menjadi [5, 4]. Matriks wkt yang lengkap dapat ditulis sebagai berikut. [ ] 5 4 wkt = (4.68) 5 4 Selanjutnya disusun algoritma untuk mensimulasikan jumlah pengguna di persimpangan pada setiap waktu. Algoritma tahap inisialisasi dan perpindahan jalur merupakan bagian dari algoritma ini. Input algoritma ini adalah mean dan varian kedatangan dan keberangkatan di setiap jalur, jumlah pengguna pada kondisi awal, maksimum lama lampu lalulintas menyala, jumlah jalur di persimpangan dan lama simulasi dilakukan. Variabel t menyatakan waktu simulasi dan variabel r menyatakan indeks jalur yang sedang dilayani. Ingat variabel r dimulai dari nol sehingga r = 0, 1,..., l 1 dengan l menyatakan jumlah jalur di persimpangan. Pada tahap inisialisasi variabel t diberikan nilai 1. Variabel r diinisialisasi dengan 0 karena jalur yang dilayani pertama kali adalah jalur 1. Berikutnya dihitung lama lampu lalulintas hijau dan kuning menyala di semua jalur dengan menjalankan Algoritma 4.10 seperti terlihat pada baris 1. Kondisi t T pada perulangan while menyatakan variabel T berisi lama simulasi. Variabel q menyatakan warna lampu lalulintas yang menyala. Jika q = 2 maka lampu lalulintas hijau menyala dan jika q = 3 maka lampu lalulintas kuning menyala. Perulangan for pada baris 4 dilakukan sebanyak lama lampu lalulintas hijau atau kuning menyala. Ingat lama lampu lalulintas hijau dan kuning menyala di semua jalur disimpan di variabel wkt. Notasi N(µ, σ 2 ) menyatakan bilangan random berdistribusi normal dengan mean µ dan varian σ 2. Notasi... menyatakan pembulatan ke bilangan bulat yang paling dekat. Variabel j menyatakan indeks jalur yaitu j = 1, 2,..., l dengan l adalah jumlah jalur di persimpangan. Perintah pada baris 6 menyatakan kedatangan pengguna pada setiap jalur di persimpangan sedangkan perintah pada baris 9 menyatakan jalur r + 1 sedang dilayani. Perintah pada baris 13 dan 14 dijalankan ketika terjadi perpindahan jalur. Algoritma 4.11 digunakan untuk menghitung lama lampu lalulintas hijau dan kuning menyala pada periode berikutnya. Perintah di baris 14 berguna untuk mengubah nilai variabel r sehingga jalur yang dilayani berubah. Jumlah perulangan while bisa lebih dari T + 1 sehingga menyebabkan jumlah kolom 151

180 matriks x lebih dari T + 1. Perintah pada baris 16 digunakan untuk menjamin jumlah kolom matriks x sebanyak T + 1 sehingga sesuai dengan output Algoritma Algoritma 4.12 Simulasi Jumlah Pengguna di Persimpangan Input: µ, σ 2 R l 3 ;x(:, 1) (N {0}) l ; maks (N {0}) l 2 ; T, l N Output: x (N {0}) l (T+1) 1 t 1; r 0; wkt Algoritma 4.10 (µ,x(:, 1), maks, l) 2 while t T do 3 for q = 2 to 3 do 4 for i = 1 to wkt(r + 1, q 1) do 5 for j = 1 to l do 6 wd N(µ(j, 1), σ 2 (j, 1)); x(j, t + 1) max {x(j, t) + wd,0} 7 end for 8 wb N(µ(r + 1, q), σ 2 (r + 1, q)) 9 x(r + 1, t + 1) max{x(r + 1, t + 1) wb, 0} 10 t t + 1 /* hijau (q = 2) dan kuning (q = 3) */ 11 end for 12 end for 13 wkt Algoritma 4.11 (µ(r + 1, :), x(r + 1, t),maks(r + 1, :), wkt, r + 1) 14 r (r + 1) mod l /* perpindahan jalur */ 15 end while 16 x x(:, 1 : T + 1) Selanjutnya ditentukan kompleksitas algoritma simulasi jumlah pengguna di persimpangan. Kompleksitas algoritma terdiri dari banyak kerja yang dilakukan dan banyak memori yang dipakai oleh Algoritma Sebelum menghitung banyak kerja, jenis operasi yang dihitung harus ditentukan terlebih dahulu. Operasi yang dihitung adalah membangkitkan bilangan random berdistribusi normal karena operasi ini termasuk rumit yaitu terdiri dari banyak operasi dasar. Operasi ini dilakukan di baris 6 dan baris 9 pada algoritma simulasi jumlah pengguna di persimpangan. Pada setiap iterasi, banyak kerja yang dilakukan adalah l + 1 sehingga jumlah banyak kerja yang dilakukan oleh Algoritma 4.12 sebanyak l + 1 dikalikan dengan jumlah perulangan pada while. Jumlah perulangan pada while yang paling kecil adalah T. Informasi yang dibutuhkan adalah jumlah perulangan while yang paling besar. Dalam mencari jumlah perulangan while yang paling besar, akan ditentukan kondisi yang menyebabkan hal itu terjadi. Kondisi yang menyebabkan perulangan while paling besar ketika pergantian jalur terjadi saat t = T dan jumlah lama lampu lalulintas hijau dan kuning menyala pada jalur berikutnya paling besar. Jumlah lama lampu lalu- 152

181 lintas menyala paling besar ketika lama lampu lalulintas menyala sama dengan maksimum lamanya. Jalur yang jumlah maksimum lama lampu lalulintas menyala paling besar menyebabkan jumlah perulangan pada while lebih dari atau sama dengan jalur yang lain. ( { 2 W(l, T, maks) = (l + 1) T + max maks(1, j),..., j=1 }) 2 maks(l, j) j=1 ( { 2 }) = (l + 1) T + max maks(i, j) : 1 i l j=1 (4.69) Jika jumlah maksimum lama lampu lalulintas hijau dan kuning menyala di setiap jalur kurang dari lama simulasi yaitu 2 j=1 maks(i, j) < T untuk setiap 1 i l maka persamaan (4.69) dapat ditulis menjadi persamaan yang lebih sederhana sebagai berikut. W(l, T) = 2T(l + 1) = O(Tl) (4.70) Banyak memori yang dipakai Algoritma 4.12 tergantung variabel tambahan pada algoritma tersebut. Variabel tambahan yang digunakan adalah t, r, q, i, j, wd, wb dan wkt. Banyak memori yang dipakai oleh variabel t, r, q, i, j, wd dan wb tetap sedangkan banyak memori yang dipakai variabel wkt tergantung nilai l yang diberikan sehingga Algoritma 4.12 tidak bekerja di tempat (work in place). Berikutnya dibahas ilustrasi proses yang dilakukan algoritma simulasi jumlah pengguna di persimpangan dengan tujuan algoritma tersebut lebih mudah dipahami. Contoh 4.3. Persimpangan yang dibahas disini mempunyai 2 jalur sehingga l = 2. Simulasi dilakukan selama 13 satuan waktu sehingga variabel T bernilai 13. Berikut merupakan input lain yang diberikan ke Algoritma [ ] [ ] [ ] [ ] x = µ = σ = maks = (4.71) Jumlah baris matriks µ, σ 2 dan maks menunjukkan banyak jalur yang ada di persimpangan yang pada contoh ini berjumlah 2. Matriks µ dan σ 2 mempunyai 3 kolom. Kolom pertama berisi data kedatangan, kolom kedua berisi data keberangkatan saat lampu lalulintas hijau menyala dan kolom 153

182 ketiga berisi data keberangkatan saat lampu lalulintas kuning menyala. Matriks maks terdiri dari 2 kolom. Kolom pertama berisi data lampu lalulintas hijau dan kolom kedua berisi data lampu lalulintas kuning. Pada baris 1, variabel t dan r masing-masing diberikan nilai 1 dan 0. Perhatikan input yang diberikan ke Algoritma 4.10 disini sama dengan input yang diberikan di Contoh 4.1 sehingga output yang dihasilkan disini sama dengan output yang dihasilkan pada Contoh 4.1. Berikut merupakan matriks wkt yang dihasilkan pada Contoh 4.1. [ ] 3 2 wkt = (4.72) 5 4 Kondisi pada while dipenuhi karena 1 = t T = 13 selanjutnya menuju ke perulangan for di baris 3. Variabel q diinisialisasi dengan 2 sehingga variabel i dijalankan mulai dari 1 hingga wkt(1, 1) = 3. Untuk perulangan pertama, variabel i bernilai 1. Perintah yang berada pada baris 6 yaitu ekspresi x(1, 2) max{ , 0} menyebabkan x(1, 2) = 16 dan perintah x(2, 2) max{ , 0} menyebabkan x(2, 2) = 18. Perintah x(1, 2) max{ , 0} mengubah variabel x(1, 2) menjadi 11. Jadi pada saat ini jumlah pengguna pada jalur 1 sebanyak 11 dan jumlah pengguna pada jalur 2 sebanyak 18 yang ditulis x(:, 2) = [11, 18] T. Setelah menjalankan perintah pada baris 10 maka nilai variabel t menjadi 2. Perulangan pada baris 4 dijalankan untuk i = 2. Perintah pada baris 6 yaitu ekspresi x(1, 3) max{ , 0} menyebabkan x(1, 3) bernilai 14 dan perintah x(2, 3) max{ , 0} menyebabkan x(2, 3) = 21. Perintah x(1, 3) max{ , 0} mengubah variabel x(1, 3) menjadi 8. Jadi jumlah pengguna pada jalur 1 sebanyak 8 dan jumlah pengguna pada jalur 2 sebanyak 21 yang ditulis x(:, 3) = [8, 21] T. Nilai variabel t berubah menjadi 3 setelah menjalankan perintah pada baris 10. Perulangan pada baris 4 dijalankan untuk i = 3. Perintah pada baris 6 yaitu ekspresi x(1, 4) max{ , 0} menyebabkan x(1, 4) menjadi 11 dan perintah x(2, 4) max{ , 0} menyebabkan x(2, 4) = 23. Perintah x(1, 4) max{ , 0} mengubah variabel x(1, 4) menjadi 7. Jumlah pengguna pada jalur 1 sebanyak 7 dan jumlah pengguna pada jalur 2 sebanyak 23 yang ditulis x(:, 4) = [7, 23] T. Perintah pada baris 10 menyebabkan nilai variabel t berubah menjadi 4. Perulangan pada baris 3 dijalankan untuk q = 3 yang menyatakan 154

183 lampu lalulintas kuning menyala pada jalur 1. Perulangan variabel i dimulai dari 1 hingga wkt(1, 2) = 2. Perulangan pada baris 4 dijalankan untuk i = 1. Perintah pada baris 6 yaitu ekspresi x(1, 5) max{ , 0} menyebabkan x(1, 5) = 10 dan perintah x(2, 5) max{ , 0} menyebabkan x(2, 5) = 27. Perintah x(1, 5) max{ , 0} mengubah variabel x(1, 5) menjadi 7. Jadi pada saat ini terdapat 7 pengguna pada jalur 1 dan 27 pengguna pada jalur 2 yang ditulis x(:, 5) = [7, 27] T. Kemudian menjalankan perintah pada baris 10 sehingga variabel t bernilai 5. Perulangan pada baris 4 dijalankan untuk i = 2. Perintah pada baris 6 yaitu ekspresi x(1, 6) max{ , 0} menyebabkan x(1, 6) menjadi 10 dan perintah x(2, 6) max{ , 0} menyebabkan x(2, 6) bernilai 28. Perintah x(1, 6) max{ , 0} mengubah variabel x(1, 6) menjadi 7. Saat ini jumlah pengguna pada jalur 1 sebanyak 7 dan jumlah pengguna pada jalur 2 sebanyak 28. Dengan menggunakan notasi vektor, hasil ini dapat ditulis x(:, 6) = [7, 28] T. Selanjutnya menjalankan perintah pada baris 10 yang menyebabkan nilai variabel t berubah menjadi 6. Kemudian proses dilanjutkan dengan menjalankan Algoritma Perhatikan bahwa input yang diberikan disini sama dengan input yang diberikan ke Algoritma 4.11 pada Contoh 4.2 sehingga variabel wkt yang dihasilkan disini sama dengan variabel wkt pada persamaan (4.68). [ ] 5 4 wkt = (4.73) 5 4 Perintah pada baris 14 menyebabkan nilai variabel r berubah menjadi 1. Perubahan ini menyatakan jalur yang dilayani berikutnya yaitu jalur 2. Kemudian menuju ke kondisi perulangan while pada baris 2. Jelas bahwa kondisi pada while dipenuhi karena 6 = t T = 13. Variabel q diinisialisasi dengan nilai 2 pada baris 3. Perulangan variabel i pada baris 4 dimulai dari 1 hingga wkt(2, 1) = 5. Pertama variabel i diinisialisasi dengan 1. Ingat bahwa nilai variabel t adalah 6. Seperti yang telah dijelaskan sebelumnya maka perulangan pada baris 4 dijalankan untuk i = 1. Perintah pada baris 6 yaitu ekspresi x(1, 7) max{ , 0} menyebabkan x(1, 7) menjadi 9 dan perintah x(2, 7) max{ , 0} menyebabkan x(2, 7) = 28. Perintah x(2, 7) max{ , 0} mengubah variabel x(2, 7) menjadi 23. Jadi saat t = 7 jumlah pengguna pada jalur 1 dan 2 masing-masing sebanyak 9 dan 23 yang ditulis x(:, 7) = [9, 23] T. 155

184 Setelah menjalankan perintah pada baris 10 maka nilai variabel t menjadi 7. Perulangan pada baris 4 dijalankan untuk i = 2. Perintah pada baris 6 yaitu ekspresi x(1, 8) max{ , 0} menyebabkan x(1, 8) = 10 dan perintah x(2, 8) max{ , 0} menyebabkan x(2, 8) = 24. Perintah x(2, 8) max{ , 0} mengubah variabel x(2, 8) menjadi 21. Jumlah pengguna pada jalur 1 sebanyak 10 dan jumlah pengguna pada jalur 2 sebanyak 21 yang ditulis x(:, 8) = [10, 21] T. Perintah pada baris 10 menyebabkan nilai variabel t berubah menjadi 8. Perulangan pada baris 4 dijalankan untuk i = 3. Perintah pada baris 6 yaitu ekspresi x(1, 9) max{ , 0} menyebabkan x(1, 9) bernilai 13 dan perintah x(2, 9) max{ , 0} menyebabkan x(2, 9) = 23. Perintah x(2, 9) max{ , 0} mengubah variabel x(2, 9) menjadi 19. Jadi jumlah pengguna pada jalur 1 sebanyak 13 dan jumlah pengguna pada jalur 2 sebanyak 19 yang ditulis x(:, 9) = [13, 19] T. Nilai variabel t berubah menjadi 9 setelah menjalankan perintah pada baris 10. Perulangan pada baris 4 dijalankan untuk i = 4. Perintah pada baris 6 yaitu ekspresi x(1, 10) max{ , 0} menyebabkan x(1, 10) = 15 dan perintah x(2, 10) max{ , 0} menyebabkan x(2, 10) = 21. Perintah x(2, 10) max{ , 0} mengubah variabel x(2, 10) menjadi 17. Jumlah pengguna pada jalur 1 sebanyak 15 dan jumlah pengguna pada jalur 2 sebanyak 17 yang ditulis x(:, 10) = [15, 17] T. Kemudian menjalankan perintah pada baris 10 sehingga variabel t bernilai 10. Perulangan pada baris 4 dijalankan untuk i = 5. Perintah pada baris 6 yaitu ekspresi x(1, 11) max{ , 0} menyebabkan x(1, 11) = 16 dan perintah x(2, 11) max{ , 0} menyebabkan x(2, 11) = 18. Perintah x(2, 11) max{ , 0} mengubah variabel x(2, 11) menjadi 14. Jadi jumlah pengguna pada jalur 1 menjadi 16 dan jumlah pengguna pada jalur 2 menjadi 14 yang ditulis x(:, 11) = [16, 14] T. Selanjutnya menjalankan perintah pada baris 10 sehingga nilai variabel t menjadi 11. Langkah berikutnya adalah menjalankan perulangan di baris 3 yang menyebabkan nilai variabel q berubah menjadi 3. Proses ini menyatakan lampu lalulintas yang menyala pada jalur 2 berubah dari hijau ke kuning. Perulangan variabel i pada baris 4 dimulai dari 1 hingga wkt(2, 2) = 4. Pertama variabel i diinisialisasi dengan 1. Perintah pada baris 6 yang dapat ditulis dengan ekspresi x(1, 12) max{ , 0} menyebabkan x(1, 12) = 17 dan perintah x(2, 12) max{ , 0} menyebabkan x(2, 12) = 15. Perintah x(2, 12) max{ , 0} mengubah variabel x(2, 12) 156

185 menjadi 11. Jadi jumlah pengguna pada jalur 1 sebanyak 17 dan jumlah pengguna pada jalur 2 sebanyak 11 yang ditulis x(:, 12) = [17, 11] T. Setelah menjalankan perintah pada baris 10 maka nilai variabel t menjadi 12. Perulangan pada baris 4 dijalankan untuk i = 2. Perintah pada baris 6 yaitu ekspresi x(1, 13) max{ , 0} menyebabkan x(1, 13) = 22 dan perintah x(2, 13) max{ , 0} menyebabkan x(2, 13) = 12. Perintah x(2, 13) max{ , 0} mengubah variabel x(2, 13) menjadi 9. Jumlah pengguna pada jalur 1 sebanyak 22 dan jumlah pengguna pada jalur 2 sebanyak 9 yang ditulis x(:, 13) = [22, 9] T. Kemudian menjalankan perintah pada baris 10 sehingga nilai variabel t menjadi 13. Perulangan pada baris 4 dijalankan untuk i = 3. Perintah pada baris 6 yaitu ekspresi x(1, 14) max{ , 0} menyebabkan x(1, 14) = 22 dan perintah x(2, 14) max{ , 0} menyebabkan x(2, 14) = 12. Perintah x(2, 14) max{ , 0} mengubah variabel x(2, 14) menjadi 9. Jadi saat t = 14 jumlah pengguna pada jalur 1 sebanyak 22 dan jumlah pengguna pada jalur 2 sebanyak 9 yang ditulis x(:, 14) = [22, 9] T. Selanjutnya menjalankan perintah di baris 10 sehingga variabel t bernilai 14. Nilai variabel i berubah menjadi 4 pada perulangan berikutnya. Perintah pada baris 6 yaitu ekspresi x(1, 15) max{ , 0} menyebabkan x(1, 15) = 24 dan perintah x(2, 15) max{ , 0} menyebabkan x(2, 15) = 8. Perintah x(2, 15) max{ , 0} mengubah variabel x(2, 15) menjadi 4. Jadi saat t = 15 jumlah pengguna pada jalur 1 sebanyak 24 dan jumlah pengguna pada jalur 2 sebanyak 4 yang ditulis x(:, 15) = [24, 4] T. Kemudian menjalankan perintah pada baris 10 sehingga nilai variabel t menjadi 15. Proses dilanjutkan dengan menjalankan Algoritma 4.11 seperti terlihat pada baris 13 yang menyebabkan wkt(2, 2) berubah menjadi 3. Perintah pada baris 14 menyebabkan nilai variabel r berubah menjadi 0. Proses ini menyatakan jalur yang akan dilayani adalah jalur 1. Selanjutnya menuju ke kondisi pada perulangan while di baris 2. Jelas kondisi pada while tidak dipenuhi karena 15 = t T = 13 sehingga menuju ke baris 16. Perintah pada baris ini menghapus kolom ke 15 dari matriks x. Hal ini dilakukan karena simulasi dilakukan selama 13 satuan waktu sehingga matriks yang dihasilkan mempunyai kolom sebanyak = 14. Tambahan satu kolom berisi informasi mengenai keadaan awal. 157

186 Gambar 4.17 merupakan sketsa grafik perubahan jumlah pengguna terhadap waktu yang dibahas pada Contoh 4.3. Grafik dengan warna biru menyatakan jumlah pengguna pada jalur 1 dan grafik dengan warna merah menyatakan jumlah pengguna pada jalur 2. Pengguna di jalur 1 cenderung turun dan pengguna di jalur 2 cenderung naik pada saat awal karena jalur 1 sedang dilayani. Ketika terjadi perpindahan jalur pelayanan maka pengguna di jalur 1 cenderung naik dan pengguna di jalur 2 cenderung turun. 25 jumlah pengguna waktu Gambar 4.17 Grafik Perubahan Jumlah Pengguna Terhadap Waktu di Persimpangan dengan Dua Jalur Setelah membahas simulasi jumlah pengguna di persimpangan dengan kedatangan pengguna berdistribusi normal selanjutnya digunakan pendekatan kedua yaitu kedatangan pengguna berdistribusi uniform Kedatangan Berdistribusi Uniform Pada bagian ini dibahas simulasi jumlah pengguna di persimpangan dengan kedatangan pengguna berdistribusi uniform diskrit (Allen, 2003). Parameter pada distribusi uniform ada 2 yaitu nilai minimum dan maksimum bilangan yang mungkin terjadi. Distribusi uniform terdiri dari 2 macam yaitu diskrit dan kontinu. Pada simulasi ini digunakan distribusi uniform diskrit karena jumlah pengguna yang datang berupa bilangan bulat. Jumlah pengguna yang datang pada setiap waktu untuk semua jalur tidak pernah bernilai negatif sehingga nilai minimum adalah 0. Nilai maksimum merupakan input algoritma simulasi jumlah pengguna di persimpangan. 158

187 Pada algoritma simulasi jumlah pengguna di persimpangan nilai maksimum kedatangan pada setiap jalur dinyatakan dengan dmaks. Variabel dmaks merupakan vektor dengan elemen sebanyak jumlah jalur di persimpangan yaitu l. Elemen dari vektor ini merupakan bilangan bulat taknegatif karena menyatakan jumlah maksimum pengguna yang datang. Data mengenai mean dan varian kedatangan tidak dibutuhkan pada algoritma ini sehingga jumlah kolom matriks µ dan σ 2 berkurang menjadi 2. Kolom pertama pada kedua matriks masing-masing menyatakan mean dan varian keberangkatan saat lampu lalulintas hijau menyala dan kolom kedua pada matriks µ dan σ 2 masing-masing menyatakan mean dan varian keberangkatan saat lampu lalulintas kuning menyala. Variabel yang lain mempunyai kegunaan sama dengan variabel pada bagian sebelumnya sehingga tidak dibahas disini secara lengkap. Berikut merupakan variabel-variabel yang digunakan pada algoritma simulasi jumlah pengguna di persimpangan. x(:, t) jumlah pengguna pada waktu ke t µ(:, 1) mean keberangkatan saat lampu lalulintas hijau menyala µ(:, 2) mean keberangkatan saat lampu lalulintas kuning menyala σ 2 (:, 1) varian keberangkatan saat lampu lalulintas hijau menyala σ 2 (:, 2) varian keberangkatan saat lampu lalulintas kuning menyala wkt(:, 1) lama lampu lalulintas hijau menyala wkt(:, 2) lama lampu lalulintas kuning menyala maks(:, 1) maksimum lama lampu lalulintas hijau menyala maks(:, 2) maksimum lama lampu lalulintas kuning menyala dmaks jumlah maksimum pengguna yang datang T lama simulasi Proses yang dilakukan oleh algoritma simulasi jumlah pengguna di persimpangan pada bagian ini hampir sama dengan proses yang dilakukan pada algoritma sebelumnya. Hal ini menyebabkan algoritma pada bagian ini mirip dengan algoritma pada bagian sebelumnya. Dengan menggunakan alasan tersebut maka algoritma pada bagian ini diperoleh dari algoritma pada bagian sebelumnya dengan melakukan beberapa perubahan. Perubahan yang pertama dilakukan pada salah satu input algoritma tahap inisialisasi yaitu µ R l 3. Ingat jumlah kolom matriks µ adalah 2 sehingga input ini diubah menjadi µ R l 2. Data mean kedatangan digantikan dengan jumlah maksimum pengguna yang datang yaitu dmaks. Output algoritma ini sama dengan output Algoritma 4.10 yaitu wkt (N {0}) l

188 Ekspresi µ(i, 2) dan µ(i, 3) pada Algoritma 4.10 masing-masing diubah menjadi µ(i, 1) dan µ(i, 2) dengan memperhatikan perubahan variabel µ yang telah dijelaskan sebelumnya. Diasumsikan banyak pengguna yang datang pada setiap saat sebanyak setengah dari jumlah maksimum pengguna. Asumsi ini digunakan untuk memperkirakan jumlah pengguna. Berdasarkan keterangan sebelumnya maka ekspresi µ(i, 1) diganti dmaks(i)/2. Algoritma 4.13 Modifikasi Tahap Inisialisasi Simulasi Jumlah Pengguna Input: µ R l 2 ;x,dmaks (N {0}) l ; maks (N {0}) l 2 ; l N Output: wkt (N {0}) l 2 1 for i = 1 to l do 2 xpre x i + dmaks(i)/2 i 1 2 j=1 q=1 wkt(j, q) /* hijau */ 3 wkt(i, 1) min {max { xpre/µ(i, 1),1},maks(i, 1)} 4 xpre xpre + (dmaks(i)/2 µ(i, 1)) wkt(i, 1) /* kuning */ 5 wkt(i, 2) min {max { xpre/µ(i, 2),1},maks(i, 2)} 6 end for Berikutnya ditentukan kompleksitas algoritma modifikasi tahap inisialisasi simulasi jumlah pengguna. Kompleksitas algoritma terdiri dari menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai. Jenis operasi yang dihitung adalah perkalian dan operasi yang setara yaitu pembagian. Terlihat pada baris 2 dan 4 di Algoritma 4.13 bahwa terdapat tambahan sebuah operasi pembagian dibandingkan dengan Algoritma Pada baris 2 dan 4 masing-masing terdapat operasi perkalian dan pembagian sebanyak satu. Kedua operasi ini dapat dihitung sebagai satu operasi karena dilakukan pada pernyataan (statement) yang sama. Banyak kerja yang dilakukan Algoritma 4.13 sama dengan Algoritma 4.10 yaitu 4l yang dapat ditulis O(l). Variabel tambahan yang digunakan di Algoritma 4.13 sama dengan Algoritma 4.10 yaitu xpre. Jelas bahwa banyak memori yang dipakai variabel ini tidak tergantung input yang diberikan sehingga Algoritma 4.13 bekerja di tempat (work in place). Berikut merupakan ilustrasi proses yang dilakukan oleh Algoritma Contoh 4.4. Persimpangan yang dibahas pada contoh ini mempunyai 2 jalur sehingga l = 2. Lama maksimum lampu lalulintas hijau menyala di jalur 1 dan jalur 2 adalah 6 satuan waktu. Lama maksimum lampu lalulintas kuning menyala pada kedua jalur adalah 4 satuan waktu. Maksimum kedatangan pada jalur 1 dan jalur 2 adalah 4. Mean keberangkatan saat lampu lalulintas 160

189 hijau menyala adalah 5 dan mean keberangkatan saat lampu lalulintas kuning menyala adalah 3. Nilai mean keberangkatan sama untuk kedua jalur di persimpangan. Pada kondisi awal terdapat 15 pengguna pada kedua jalur. Ukuran matriks µ adalah 2 2 sedangkan ukuran matriks maks adalah 2 2. Ukuran vektor dmaks sama dengan x yaitu 2 1. [ ] [ ] [ ] [ ] µ = maks = dmaks = x = (4.74) Perulangan di baris 1 dijalankan dengan i = 1. Variabel xpre bernilai sama dengan x 1 yaitu 15 setelah menjalankan perintah di baris 2. Ekspresi xpre/µ(1, 1) bernilai 3 dan ekspresi maks(1, 1) bernilai 6 sehingga ekspresi min{max{3, 1}, 6} bernilai 3. Selanjutnya menjalankan perintah di baris 4. Ekspresi dmaks(1), µ(1, 1) dan wkt(1, 1) masing-masing bernilai 4, 5 dan 3 sehingga variabel xpre bernilai 6 yang diperoleh dari 15 +(4/2 5)3. Variabel wkt(1, 2) bernilai 2 setelah menjalankan perintah di baris 5 karena µ(1, 2) = 3 dan maks(1, 2) = 4. Langkah selanjutnya adalah menjalankan perulangan untuk i = 2. Ekspresi pada baris 2 dapat ditulis x 2 + dmaks(2)/2(wkt(1, 1) + wkt(1, 2)). Variabel xpre bernilai 25 karena variabel x 2, dmaks(2), wkt(1, 1) dan wkt(1, 2) masing-masing bernilai 15, 4, 3 dan 2. Variabel wkt(2, 1) bernilai 5 setelah menjalankan perintah pada baris 3 karena µ(2, 1) = 5 dan maks(2, 1) = 6. Perintah pada baris 4 menyebabkan variabel xpre berubah menjadi 10 karena variabel dmaks(2), µ(2, 1) dan wkt(2, 1) masing-masing bernilai 4, 5 dan 5. Variabel wkt(2, 2) bernilai 4 karena µ(2, 2) = 3 dan maks(2, 2) = 4. Matriks wkt berukuran 2 2 dan dapat dituliskan sebagai berikut. [ ] 3 2 wkt = (4.75) 5 4 Selanjutnya didesain algoritma modifikasi perpindahan jalur simulasi jumlah pengguna. Algoritma ini juga tidak didesain dari awal melainkan diperoleh dari Algoritma 4.11 dengan beberapa penyesuaian. Penyesuaian pertama dilakukan pada parameter µ yang menjadi input algoritma. Ukuran matriks µ diubah menjadi 1 2. Selain itu terdapat input tambahan yaitu dmaks. Variabel ini menyatakan maksimum kedatangan pengguna pada suatu jalur dalam 1 satuan waktu. 161

190 Penyesuaian pada ukuran µ mengakibatkan ekspresi µ(2) dan µ(3) masing-masing diubah menjadi µ(1) dan µ(2). Ekspresi µ(1) yang berada pada Algoritma 4.11 menyatakan perkiraan jumlah pengguna yang datang untuk setiap waktu. Dengan menggunakan kedatangan yang berdistribusi uniform maka perkiraan jumlah pengguna yang datang setiap waktu adalah mean batas atas dan batas bawah yaitu dmaks/2. Jadi ekspresi µ(1) diganti dengan dmaks/2 dengan alasan yang telah dijelaskan sebelumnya. Algoritma 4.14 Modifikasi Perpindahan Jalur Simulasi Jumlah Pengguna Input: µ R 1 2 ; x, dmaks N {0}; maks (N {0}) 1 2 ; i N; wkt (N {0}) l 2 Output: wkt (N {0}) l 2 1 xpre x + dmaks/2 2 j i q=1 wkt(j, q) /* hijau */ 2 wkt(i, 1) min {max { xpre/µ(1),1},maks(1)} 3 xpre xpre + (dmaks/2 µ(1)) wkt(i, 1) /* kuning */ 4 wkt(i, 2) min {max { xpre/µ(2),1},maks(2)} Berikutnya ditentukan kompleksitas algoritma perpindahan jalur simulasi jumlah pengguna. Kompleksitas algoritma terdiri dari menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai. Sebelum menghitung banyak kerja, jenis operasi yang dihitung harus ditentukan terlebih dahulu. Jenis operasi yang dihitung adalah perkalian dan operasi yang setara dengan perkalian seperti pembagian. Pada baris 1 dan 3 masing-masing terdapat sebuah operasi perkalian dan pembagian. Jumlah operasi pada kedua baris ini masing-masing dianggap sebanyak satu karena operasi perkalian dan pembagian dilakukan pada sebuah pernyataan (statement). Jadi banyak kerja yang dilakukan Algoritma 4.14 adalah 4. Banyak memori yang dipakai Algoritma 4.14 tergantung variabel tambahan di algoritma tersebut. Pada algoritma modifikasi perpindahan jalur simulasi jumlah pengguna terdapat sebuah variabel tambahan yaitu xpre. Jelas bahwa besar memori yang dipakai variabel ini tidak tergantung input yang diberikan sehingga Algoritma 4.14 bekerja di tempat (work in place). Berikut dijelaskan proses yang dilakukan oleh algoritma modifikasi perpindahan jalur. Contoh 4.5. Misal input Algoritma 4.14 adalah µ = [5, 3], x = 8, dmaks = 4, maks = [6, 4], i = 1 dan variabel wkt yang digunakan sama dengan persamaan (4.75). Perintah pada baris 1 yaitu xpre 8 + 4/2(5 + 4) menyebabkan variabel xpre bernilai 26. Variabel wkt(1, 1) = 6 karena variabel µ(1) dan maks(1) masing-masing bernilai 5 dan 6. Perintah pada baris 3 yaitu 162

191 xpre 26 + (4/2 5)5 menyebabkan nilai variabel xpre berubah menjadi 11. Variabel wkt(1, 2) bernilai 4 karena variabel µ(2) dan maks(2) masingmasing bernilai 3 dan 4. Elemen pada baris pertama matriks wkt menjadi [6, 4]. Matriks wkt yang lengkap dapat ditulis sebagai berikut. [ ] 6 4 wkt = (4.76) 5 4 Selanjutnya dibahas desain algoritma modifikasi simulasi jumlah pengguna di persimpangan. Algoritma ini diperoleh dengan melakukan perubahan pada Algoritma Hal pertama yang diubah adalah input algoritma. Ukuran parameter µ dan σ 2 adalah l 2 karena kedatangan tidak berdistribusi normal. Parameter dmaks yang bertipe vektor dengan elemen sebanyak l digunakan untuk membangkitkan data kedatangan sehingga parameter ini merupakan input algoritma. Perubahan berikutnya dilakukan pada isi algoritma modifikasi perpindahan jalur. Perulangan for pada baris 3 dilakukan untuk q = 1 dan q = 2. Jika lampu lalulintas hijau menyala maka variabel q bernilai 1 dan jika lampu lalulintas kuning menyala maka variabel q bernilai 2. Perubahan ini mengakibatkan ekspresi wkt(r+1, q 1) pada baris 4 disesuaikan menjadi wkt(r+1, q). Ekspresi pada baris 6 yang digunakan untuk membangkitkan jumlah pengguna yang datang diubah menjadi U(0, dmaks(j)). Ekspresi U(0, dmaks(j)) menyatakan bilangan random berdistribusi uniform diskrit dengan batas bawah 0 dan batas atas dmaks(j). Pernyataan pada baris 9 tidak mengalami perubahan karena perintah pada baris ini menyatakan jumlah pengguna yang dilayani berdistribusi normal. Ekspresi r (r + 1) mod l pada baris 13 bertujuan mengubah nilai variabel r yang menunjukkan pergantian jalur yang dilayani. Jumlah perulangan pada while menunjukkan lama simulasi dilakukan. Perulangan pada while dilakukan paling tidak sebanyak T. Jika jumlah perulangan pada while lebih dari T maka data pengguna yang diperoleh juga lebih dari T. Perintah pada baris 15 bertujuan untuk menghilangkan data jumlah pengguna yang tidak dibutuhkan yaitu jumlah pengguna setelah simulasi dilakukan selama T satuan waktu. Hal ini harus dilakukan agar jumlah kolom matriks x sesuai dengan output Algoritma 4.15 yaitu sebanyak T + 1. Berikut merupakan algoritma modifikasi simulasi jumlah pengguna di persimpangan yang lengkap. 163

192 Algoritma 4.15 Modifikasi Simulasi Jumlah Pengguna di Persimpangan Input: µ, σ 2 R l 2 ;x(:, 1),dmaks (N {0}) l ; maks (N {0}) l 2 ; T, l N Output: x (N {0}) l (T+1) 1 t 1; r 0; wkt Algoritma 4.13 (µ,x(:, 1),dmaks, maks, l) 2 while t T do 3 for q = 1 to 2 do 4 for i = 1 to wkt(r + 1, q) do 5 for j = 1 to l do 6 wd U(0, dmaks(j)); x(j, t + 1) max {x(j, t) + wd, 0} 7 end for 8 wb N(µ(r + 1, q), σ 2 (r + 1, q)) 9 x(r + 1, t + 1) max{x(r + 1, t + 1) wb, 0} 10 t t + 1 /* hijau (q = 1) dan kuning (q = 2) */ 11 end for 12 end for 13 wkt Algoritma 4.14 (µ(r + 1, :), x(r + 1, t), dmaks(r + 1), maks(r + 1, :), r + 1, wkt); 14 end while 15 x x(:, 1 : T + 1) r (r + 1) mod l Selanjutnya dihitung kompleksitas dari Algoritma Kompleksitas algoritma terdiri dari menghitung banyak kerja yang dilakukan dan banyak memori yang dipakai. Jenis operasi yang dihitung harus ditentukan terlebih dahulu sebelum menghitung banyak kerja. Jenis operasi yang dihitung adalah membangkitkan bilangan random. Diasumsikan membangkitkan bilangan random berdistribusi normal setara dengan membangkitkan bilangan random berdistribusi uniform sehingga banyak kerja yang dilakukan Algoritma 4.15 sama dengan Algoritma Banyak memori yang dipakai Algoritma 4.15 tergantung variabel tambahan pada algoritma tersebut. Jelas bahwa variabel tambahan pada algoritma ini sama dengan variabel tambahan pada Algoritma 4.12 sehingga kesimpulan yang diperoleh sama yaitu Algoritma 4.15 tidak bekerja di tempat. Contoh 4.6. Persimpangan yang dibahas disini mempunyai 2 jalur sehingga l = 2. Simulasi dilakukan selama 13 satuan waktu sehingga variabel T bernilai 13. Berikut merupakan input lain yang diberikan ke Algoritma [ ] [ ] [ ] [ ] [ ] x = µ = σ = maks = dmaks = (4.77) 164

193 Jumlah baris matriks µ, σ 2 dan maks menunjukkan banyak jalur yang ada di persimpangan. Persimpangan disini mempunyai 2 jalur. Matriks µ dan σ 2 mempunyai 2 kolom. Kolom pertama berisi berisi data keberangkatan saat lampu lalulintas hijau menyala dan kolom kedua berisi data keberangkatan saat lampu lalulintas kuning menyala. Matriks maks terdiri dari 2 kolom. Kolom pertama berisi maksimum lama lampu lalulintas hijau menyala dan kolom kedua berisi maksimum lama lampu lalulintas kuning menyala. Pada baris 1, variabel t dan r masing-masing diberikan nilai 1 dan 0. Perhatikan bahwa input yang diberikan ke Algoritma 4.13 disini sama dengan input yang diberikan di Contoh 4.4 sehingga output yang dihasilkan disini sama dengan output yang dihasilkan pada Contoh 4.4. Berikut merupakan matriks wkt yang dihasilkan pada Contoh 4.4. [ ] 3 2 wkt = (4.78) 5 4 Kondisi pada while dipenuhi karena 1 = t T = 13 selanjutnya menuju ke perulangan for di baris 3. Variabel q diinisialisasi dengan 1 sehingga variabel i dijalankan mulai dari 1 hingga wkt(1, 1) = 3. Untuk perulangan pertama, variabel i bernilai 1. Perintah yang berada di baris 6 yaitu ekspresi x(1, 2) max{15 + 2, 0} menyebabkan x(1, 2) bernilai 17 dan perintah x(2, 2) max{15 + 2, 0} menyebabkan x(2, 2) = 17. Variabel x(1, 2) berubah menjadi 13 setelah menjalankan x(1, 2) max{ , 0}. Jadi pada saat ini jumlah pengguna pada jalur 1 sebanyak 13 dan jumlah pengguna pada jalur 2 sebanyak 17 yang ditulis x(:, 2) = [13, 17] T. Setelah menjalankan perintah pada baris 10 maka nilai variabel t menjadi 2. Perulangan pada baris 4 dijalankan untuk i = 2. Perintah pada baris 6 yaitu ekspresi x(1, 3) max{13 + 4, 0} menyebabkan x(1, 3) = 17 dan perintah x(2, 3) max{17 + 0, 0} tidak mengubah nilai variabel x(2, 3) yaitu 17. Perintah x(1, 3) max{ , 0} mengubah variabel x(1, 3) menjadi 11. Jadi jumlah pengguna pada jalur 1 sebanyak 11 dan jumlah pengguna pada jalur 2 sebanyak 17 yang ditulis x(:, 3) = [11, 17] T. Nilai variabel t berubah menjadi 3 setelah menjalankan perintah pada baris 10. Perulangan pada baris 4 dijalankan untuk i = 3. Perintah pada baris 6 yaitu ekspresi x(1, 4) max{11 + 4, 0} menyebabkan x(1, 4) menjadi 15 dan perintah x(2, 4) max{17+1, 0} menyebabkan x(2, 4) = 18. Perintah x(1, 4) max{ , 0} mengubah variabel x(1, 4) menjadi

194 Jumlah pengguna pada jalur 1 sebanyak 8 dan jumlah pengguna pada jalur 2 sebanyak 18 yang ditulis x(:, 4) = [8, 18] T. Perintah pada baris 10 menyebabkan nilai variabel t berubah menjadi 4. Perulangan pada baris 3 dijalankan untuk q = 2 yang menyatakan lampu lalulintas kuning menyala pada jalur 1. Perulangan variabel i dimulai dari 1 hingga wkt(1, 2) = 2. Perulangan pada baris 4 dijalankan untuk i = 1. Perintah pada baris 6 yaitu ekspresi x(1, 5) max{8 + 4, 0} menyebabkan x(1, 5) = 12 dan perintah x(2, 5) max{18 + 0, 0} tidak mengubah nilai dari variabel x(2, 5) yaitu 18. Perintah x(1, 5) max{ , 0} mengubah variabel x(1, 5) menjadi 9. Jadi pada saat ini terdapat 9 pengguna pada jalur 1 dan 18 pengguna pada jalur 2 yang ditulis x(:, 5) = [9, 18] T. Kemudian menjalankan perintah pada baris 10 sehingga variabel t bernilai 5. Perulangan pada baris 4 dijalankan untuk i = 2. Perintah pada baris 6 yaitu ekspresi x(1, 6) max{9 + 3, 0} menyebabkan x(1, 6) menjadi 12 dan perintah x(2, 6) max{18 + 3, 0} menyebabkan x(2, 6) = 21. Perintah x(1, 6) max{ , 0} mengubah variabel x(1, 6) menjadi 8. Saat ini jumlah pengguna pada jalur 1 sebanyak 8 dan jumlah pengguna pada jalur 2 sebanyak 21. Dengan menggunakan notasi vektor, hasil ini dapat ditulis x(:, 6) = [8, 21] T. Selanjutnya menjalankan perintah pada baris 10 yang menyebabkan nilai variabel t berubah menjadi 6. Kemudian proses dilanjutkan dengan menjalankan Algoritma Perhatikan bahwa input yang diberikan disini sama dengan input yang diberikan ke Algoritma 4.14 pada Contoh 4.5 sehingga variabel wkt yang dihasilkan disini sama dengan variabel wkt yang ada di persamaan (4.76). [ ] 6 4 wkt = (4.79) 5 4 Perintah pada baris 13 menyebabkan nilai variabel r berubah menjadi 1. Perubahan ini menyatakan jalur yang dilayani berikutnya yaitu jalur 2. Kemudian menuju ke kondisi perulangan while pada baris 2. Jelas bahwa kondisi pada while dipenuhi karena 6 = t T = 13. Variabel q diinisialisasi dengan nilai 1 pada baris 3. Perulangan variabel i pada baris 4 dimulai dari 1 hingga wkt(2, 1) = 5. Pertama variabel i diinisialisasi dengan 1. Ingat bahwa nilai variabel t adalah 6. Seperti yang telah dijelaskan sebelumnya maka perulangan pada baris 4 dijalankan untuk i = 1. Perintah pada baris 6 yaitu ekspresi x(1, 7) max{8 + 0, 0} tidak mengubah nilai 166

195 variabel x(1, 7) yaitu 8 dan perintah x(2, 7) max{21+0, 0} tidak mengubah nilai variabel x(2, 7) yaitu 21. Perintah x(2, 7) max{ , 0} mengubah variabel x(2, 7) menjadi 14. Jadi saat t = 7 jumlah pengguna pada jalur 1 dan 2 masing-masing sebanyak 8 dan 14 yang ditulis x(:, 7) = [8, 14] T. Setelah menjalankan perintah pada baris 10 maka nilai variabel t menjadi 7. Perulangan pada baris 4 dijalankan untuk i = 2. Perintah pada baris 6 yaitu ekspresi x(1, 8) max{8 + 0, 0} tidak mengubah nilai variabel x(1, 8) yaitu 8 dan perintah x(2, 8) max{14 + 1, 0} menyebabkan x(2, 8) = 15. Perintah x(2, 8) max{ , 0} mengubah variabel x(2, 8) menjadi 9. Jumlah pengguna pada jalur 1 sebanyak 8 dan jumlah pengguna pada jalur 2 sebanyak 9 yang ditulis x(:, 8) = [8, 9] T. Perintah pada baris 10 menyebabkan nilai variabel t berubah menjadi 8. Perulangan pada baris 4 dijalankan untuk i = 3. Perintah pada baris 6 yaitu ekspresi x(1, 9) max{8+4, 0} menyebabkan x(1, 9) = 12 dan perintah x(2, 9) max{9+0, 0} tidak mengubah nilai variabel x(2, 9) yaitu 9. Perintah x(2, 9) max{ , 0} mengubah variabel x(2, 9) menjadi 3. Jadi jumlah pengguna pada jalur 1 sebanyak 12 dan jumlah pengguna pada jalur 2 sebanyak 3 yang ditulis x(:, 9) = [12, 3] T. Nilai variabel t berubah menjadi 9 setelah menjalankan perintah pada baris 10. Perulangan pada baris 4 dijalankan untuk i = 4. Perintah pada baris 6 yaitu ekspresi x(1, 10) max{12 + 4, 0} menyebabkan x(1, 10) = 16 dan perintah x(2, 10) max{3 + 4, 0} menyebabkan x(2, 10) = 7. Perintah x(2, 10) max{ , 0} mengubah variabel x(2, 10) menjadi 1. Jumlah pengguna pada jalur 1 sebanyak 16 dan jumlah pengguna pada jalur 2 sebanyak 1 yang ditulis x(:, 10) = [16, 1] T. Kemudian menjalankan perintah pada baris 10 sehingga nilai variabel t berubah menjadi 10. Perulangan pada baris 4 dijalankan untuk i = 5. Perintah pada baris 6 yaitu ekspresi x(1, 11) max{16 + 2, 0} menyebabkan x(1, 11) = 18 dan perintah x(2, 11) max{1 + 1, 0} menyebabkan x(2, 11) = 2. Perintah x(2, 11) max{ , 0} mengubah variabel x(2, 11) menjadi 0. Jadi jumlah pengguna pada jalur 1 menjadi 18 dan tidak ada pengguna pada jalur 2 yang ditulis x(:, 11) = [18, 0] T. Selanjutnya menjalankan perintah pada baris 10 sehingga nilai variabel t berubah menjadi 11. Langkah berikutnya adalah menjalankan perulangan di baris 3 yang menyebabkan nilai variabel q berubah menjadi 2. Proses ini menyatakan lampu lalulintas yang menyala pada jalur 2 berubah dari hijau ke kuning. Perulangan variabel i pada baris 4 dimulai dari 1 hingga wkt(2, 2) = 4. Pertama variabel 167

196 i diinisialisasi dengan 1. Perintah pada baris 6 yang dapat ditulis dengan ekspresi x(1, 12) max{18 + 4, 0} menyebabkan x(1, 12) = 22 dan perintah x(2, 12) max{0 + 4, 0} menyebabkan x(2, 12) = 4. Setelah menjalankan x(2, 12) max{ , 0} variabel x(2, 12) berubah menjadi 2. Jadi jumlah pengguna pada jalur 1 sebanyak 22 dan jumlah pengguna pada jalur 2 sebanyak 2 yang ditulis x(:, 12) = [22, 2] T. Setelah menjalankan perintah pada baris 10 maka nilai variabel t menjadi 12. Perulangan pada baris 4 dijalankan untuk i = 2. Perintah pada baris 6 yaitu ekspresi x(1, 13) max{22 + 3, 0} menyebabkan x(1, 13) = 25 dan perintah x(2, 13) max{2 + 4, 0} menyebabkan x(2, 13) = 6. Perintah x(2, 13) max{ , 0} mengubah variabel x(2, 13) menjadi 3. Jumlah pengguna pada jalur 1 sebanyak 25 dan jumlah pengguna pada jalur 2 sebanyak 3 yang ditulis x(:, 13) = [25, 3] T. Kemudian menjalankan perintah pada baris 10 sehingga nilai variabel t menjadi 13. Perulangan pada baris 4 dijalankan untuk i = 3. Perintah pada baris 6 yaitu ekspresi x(1, 14) max{25 + 1, 0} menyebabkan x(1, 14) = 26 dan perintah x(2, 14) max{3 + 1, 0} menyebabkan x(2, 14) = 4. Perintah x(2, 14) max{ , 0} mengubah variabel x(2, 14) menjadi 3. Jadi saat t = 14 jumlah pengguna pada jalur 1 sebanyak 26 dan jumlah pengguna pada jalur 2 sebanyak 3 yang ditulis x(:, 14) = [26, 3] T. Selanjutnya menjalankan perintah pada baris 10 sehingga nilai variabel t menjadi 14. Nilai variabel i berubah menjadi 4 pada perulangan berikutnya. Perintah pada baris 6 yaitu ekspresi x(1, 15) max{26 + 1, 0} menyebabkan x(1, 15) = 27 dan perintah x(2, 15) max{3+3, 0} menyebabkan x(2, 15) = 6. Perintah x(2, 15) max{ , 0} mengubah variabel x(2, 15) menjadi 4. Jadi saat t = 15 jumlah pengguna pada jalur 1 sebanyak 27 dan jumlah pengguna pada jalur 2 sebanyak 4 yang ditulis x(:, 15) = [27, 4] T. Kemudian menjalankan perintah pada baris 10 sehingga nilai variabel t menjadi 15. Proses dilanjutkan dengan menjalankan Algoritma 4.14 seperti terlihat pada baris 13 yang menyebabkan wkt(2, 2) berubah menjadi 3. Perintah pada baris 13 menyebabkan nilai variabel r berubah menjadi 0. Proses ini menyatakan jalur yang akan dilayani adalah jalur 1. Selanjutnya menuju ke kondisi pada perulangan while di baris 2. Jelas kondisi pada while tidak dipenuhi karena 15 = t T = 13 sehingga menuju ke baris 15. Perintah pada baris ini menghapus kolom ke 15 dari matriks x. 168

197 Gambar 4.18 merupakan sketsa grafik perubahan jumlah pengguna terhadap waktu yang dibahas pada Contoh 4.6. Grafik dengan warna biru menyatakan jumlah pengguna pada jalur 1 dan grafik dengan warna merah menyatakan jumlah pengguna pada jalur jumlah pengguna waktu Gambar 4.18 Grafik Perubahan Jumlah Pengguna Terhadap Waktu di Persimpangan Dengan Dua Jalur 169

198 170

199 BAB 5 IMPLEMENTASI DAN EVALUASI Pada bab ini dibahas implementasi algoritma yang didesain pada bab sebelumnya. Bahasa pemrograman yang digunakan untuk implementasi adalah Scilab karena bahasa pemrograman tersebut mempunyai fungsi matematika yang cukup lengkap. Evaluasi dilakukan terhadap hasil yang diperoleh dari simulasi. 5.1 Pengujian Sifat Pure pada Petri net Pada bagian ini dibahas implementasi pengujian sifat pure pada Petri net. Berdasarkan keterangan pada bab sebelumnya Petri net dikatakan pure jika tidak ada place yang menjadi input sekaligus output suatu transisi. Secara matematis, pengujian sifat pure pada Petri net dapat dilakukan dengan menggunakan anggota himpunan arc. Jika terdapat place p i dan transisi t j sedemikian hingga (p i, t j ) A dan (t j, p i ) A maka Petri net tidak bersifat pure atau impure. 1 function pure = ispure ( forward, backward) 2 pure = %t; // i n i s i a l i s a s i 3 if sum( forward. backward) > 0 4 pure = %f ; 5 end 6 endfunction Pengujian secara matematis seperti yang telah dibahas sulit diimplementasikan. Untuk itu harus ditentukan bentuk pengujian lain yang ekivalen. Pengujian ini dilakukan terhadap Petri net yang direpresentasikan dalam matriks forward incidence dan backward incidence. Elemen pada baris ke i kolom ke j matriks backward incidence lebih dari nol jika dan hanya jika terdapat arc dari place p i ke transisi t j. Elemen pada baris ke i kolom ke j matriks forward incidence lebih dari nol jika dan hanya jika terdapat arc dari transisi t j ke place p i. Berdasarkan keterangan sebelumnya dapat disimpulkan place p i merupakan place input sekaligus place output dari transisi t j jika dan hanya jika hasil kali elemen pada baris ke i kolom ke j matriks forward incidence dan backward incidence lebih dari nol. Jika hasil kali semua elemen pada posisi yang sama adalah nol maka Petri net bersifat pure. 171

200 >f = [ 0 ; 1 ] ; b = [ 2 ; 0 ] ; // matriks incidence >ispure ( f, b) // Petri net bersifat pure ans = T Perhatikan bahwa f.*b = [0*2;1*0] = [0;0] sehingga hasil dari fungsi ispure adalah true yang menyatakan Petri net bersifat pure. Contoh berikut adalah Petri net yang tidak bersifat pure. >f = [0 0;1 1 ] ; b = [2 0;1 0 ] ; // matriks insiden >ispure ( f, b) // Petri net tidak bersifat pure ans = F Selanjutnya dibahas implementasi algoritma menentukan transisi yang enabled. Dalam menentukan transisi yang enabled dibutuhkan matriks backward incidence dan keadaan Petri net. Output algoritma ini adalah himpunan transisi yang enabled. Jika tidak ada transisi yang enabled maka algoritma ini menghasilkan himpunan kosong. 5.2 Menentukan Transisi Enabled Algoritma menentukan transisi yang enabled diimplementasikan dalam fungsi findenabled. Input dan output fungsi ini mengacu pada input dan output algoritma menentukan transisi yang enabled. Input fungsi ini adalah backward dan mark yang masing-masing menyatakan matriks backward incidence dan keadaan Petri net. Output fungsi ini adalah idenabled yang secara umum berupa vektor baris. Elemen vektor ini adalah bilangan bulat positif yang menyatakan indeks transisi enabled. Jika tidak ada transisi yang enabled maka fungsi ini menghasilkan vektor kosong. 1 function idenabled = findenabled (backward, mark) 2 idenabled = vectorfind (bool2s (ones (1, size ( backward,2)) 3.. mark >= backward ), ones( size ( backward,1),1), c ) ; 4 endfunction Fungsi findenabled membandingkan setiap kolom matriks backward dengan vektor mark. Proses ini dilakukan dengan membentuk matriks yang berukuran sama dengan matriks backward. Misal matriks ini dinotasikan dengan M. Setiap kolom matriks ini berisi vektor mark. Perbandingan dilakukan antara matriks M dengan matriks backward. Langkah selanjutnya adalah 172

201 mencari kolom dimana semua elemen matriks M lebih dari atau sama dengan matriks backward menggunakan perintah vectorfind. Jika tidak ada kolom yang memenuhi maka perintah vectorfind menghasilkan vektor kosong yang dinotasikan [ ]. Dalam menjalankan fungsi findenabled, matriks backward dan vektor mark harus didefinisikan terlebih dahulu. >b = [1 0 0;0 1 1;0 0 1;0 0 0 ] ; // backward incidence >mark = [ 1 ; 0 ; 0 ; 0 ] ; // marking >iden = findenabled (b, mark) // transisi kesatu enabled iden = 1. Terlihat bahwa transisi yang enabled pada keadaan [1;0;0;0] adalah transisi pertama yang dinotasikan t 1. Jika terdapat banyak transisi enabled maka output dari fungsi findenabled adalah vektor baris yang berisi indeks transisi yang enabled. Jika tidak ada transisi yang enabled maka fungsi ini menghasilkan vektor kosong yang diilustrasikan dalam contoh berikut. >b = [1 0 1;0 1 0;0 1 1;0 0 1 ] ; // backward incidence >mark = [ 0 ; 1 ; 0 ; 0 ] ; // marking >iden = findenabled (b, mark) iden = [ ] Selanjutnya dibahas implementasi dari algoritma berikutnya yaitu pemfirean transisi. Algoritma ini berguna untuk mengetahui keadaan yang terjadi setelah suatu transisi difire. Jelas bahwa transisi yang dapat difire adalah transisi yang enabled. 5.3 Pemfirean Transisi Perubahan keadaan yang terjadi setelah suatu transisi difire dapat dilihat di bagian sebelumnya pada saat membahas representasi Petri net menggunakan matriks. Pada bagian itu disimpulkan keadaan setelah transisi t j difire diperoleh dari keadaan sebelumnya ditambah kolom ke j matriks combined incidence. Ingat matriks combined incidence diperoleh dari matriks forward incidence dikurangi matriks backward incidence sehingga keadaan setelah transisi t j difire diperoleh dari keadaan sebelumnya ditambah kolom ke j matriks forward incidence dikurangi kolom ke j matriks backward incidence. Proses ini diilustrasikan dalam contoh berikut. 173

202 Pada contoh berikut digunakan pendekatan yang terakhir yaitu menggunakan matriks forward incidence dan matriks backward incidence. Alasan menggunakan pendekatan ini dapat dijelaskan sebagai berikut. Matriks combined incidence dapat diperoleh dari matriks forward incidence dan matriks backward incidence sedangkan hubungan sebaliknya tidak berlaku. >f = [0 0 0;1 1 0;1 0 0;0 1 0 ] ; // forward incidence >b = [1 0 1;0 1 0;0 1 1;0 0 1 ] ; // backward incidence >x0 = [ 2 ; 0 ; 0 ; 1 ] ; // keadaan awal >iden = findenabled (b, x0) iden = 1. >x1 = x0 + f (:,1) b ( :, 1 ) ; // pemfirean transisi t1 >x1 // keadaan setelah t1 d i f ire ans = >iden = findenabled (b, x1) iden = >x2 = x1 + f (:,2) b ( :, 2 ) ; // pemfirean transisi t2 >x2 // keadaan setelah t1 dan t2 d ifire ans = Perhatikan bahwa transisi yang difire adalah transisi yang enabled. Penentuan transisi yang enabled menggunakan fungsi findenabled. Proses pemfirean transisi di Petri net cukup sederhana sehingga tidak perlu dibuat fungsi untuk melakukan pemfirean transisi. 5.4 Pengujian Dominasi Pada bagian ini dibahas implementasi algoritma pengujian hubungan dominasi. Input algoritma pengujian dominasi adalah dua keadaan misalnya max dan min. Outputnya adalah himpunan indeks dimana elemen di max lebih besar dari min jika max mendominasi min. Jika tidak terdapat hubungan dominasi antara dua keadaan tersebut maka algoritma ini menghasilkan himpunan kosong. Proses pengujian dominasi ada 2 tahap. Tahap pertama adalah menguji apakah semua elemen di max lebih dari atau sama dengan elemen di min. 174

203 Jika pengujian tahap pertama dipenuhi maka dilanjutkan dengan pengujian berikutnya. Jika pengujian pertama tidak dipenuhi yaitu terdapat elemen di max yang kurang dari elemen di min maka tidak terdapat hubungan dominasi. Pengujian berikutnya adalah mencari indeks dimana elemen di max lebih besar dari min. Jika ada indeks yang memenuhi maka terdapat hubungan dominasi. Jika semua elemen di max sama dengan min maka tidak terdapat hubungan dominasi. 1 function ind = isdominate ( big, small ) 2 ind = [ ] ; // i n i s i a l i s a s i 3 if find ( small > big ) == [ ] // pengujian I 4 ind = find ( small < big ) ; // pengujian II 5 end 6 endfunction Algoritma untuk menguji hubungan dominasi diimplementasikan dalam fungsi isdominate. Input dan output fungsi ini didasarkan pada algoritma pengujian dominasi. Input fungsi isdominate adalah dua vektor kolom yang menyatakan dua keadaan yang diuji. Output fungsi ini adalah vektor baris yang berisi indeks dimana elemen pada kedua vektor tidak sama jika terdapat hubungan dominasi. Jika tidak terdapat hubungan dominasi maka menghasilkan vektor kosong. >x1 = [ 1 ; 0 ; 2 ; 0 ] ; x2 = [ 1 ; 0 ; 1 ; 0 ] ; // definisi keadaan >ind = isdominate (x1, x2) // x1 mendominasi x2 ind = 3. >x1 = [ 0 ; 0 ; 1 ; 1 ] ; x2 = [ 0 ; 1 ; 1 ; 0 ] ; // d efinisi keadaan >ind = isdominate (x1, x2) // x1 tidak mendominasi x2 ind = [ ] Dari contoh sebelumnya dapat disimpulkan keadaan [1;0;2;0] mendominasi[1;0;2;0]. Fungsi isdominate menghasilkan 3 karena elemen ketiga pada vektor pertama lebih besar dari elemen ketiga pada vektor kedua. Keadaan [0;0;1;1] tidak mendominasi [0;1;1;0] karena elemen kedua pada vektor pertama kurang dari elemen kedua pada vektor kedua. Terlihat fungsi isdominate menghasilkan vektor kosong yang dinotasikan [ ]. Fungsi ini merupakan salah satu bagian dari metode membangun coverability tree yang dibahas pada bagian berikutnya. 175

204 5.5 Membangun Coverability Tree Algoritma membangun coverability tree bersifat rekursif sehingga algoritma ini diimplementasikan dalam fungsi rekursif. Fungsi rekursif adalah fungsi yang menjalankan dirinya sendiri. Langkah pertama yang dilakukan dalam mengimplementasikan algoritma ini adalah menentukan representasi coverability tree. Sebuah coverability tree direpresentasikan dalam dua matriks yaitu node tree dan id parent tran. Matriks node tree berisi keadaan pada setiap node di coverability tree. Elemen pada setiap kolom matriks ini menyatakan keadaan di suatu node. Berdasarkan keterangan sebelumnya dapat disimpulkan jumlah baris matriks node tree sama dengan jumlah place di Petri net dan jumlah kolomnya sama dengan jumlah node di coverability tree. Matriks id parent tran menyimpan informasi mengenai parent dan transisi dari setiap node di coverability tree. Informasi suatu node disimpan pada sebuah kolom sehingga jumlah kolom matriks ini sama dengan jumlah node di coverability tree. Matriks id parent tran mempunyai 2 baris. Baris pertama menyimpan informasi parent dan baris kedua menyimpan informasi transisi. Misal algoritma membangun coverability tree diimplementasikan di fungsi buildtree. Langkah selanjutnya adalah menentukan parameter yang dibutuhkan oleh fungsi buildtree. Parameter yang dibutuhkan oleh fungsi ini mengacu pada representasi coverability tree yaitu keadaan, parent dan transisi. Ketiga parameter tersebut masing-masing dinyatakan dalam variabel new node, id parent, id tran. Selain itu dibutuhkan informasi mengenai Petri net yang direpresentasikan dalam matriks forward incidence dan backward incidence. Perhatikan node root tidak mempunyai parent dan keadaan pada node root tidak diperoleh dengan memfire suatu transisi di Petri net. Untuk itu nilai dari id parent dan id tran untuk node root didefinisikan nol karena indeks parent dan transisi di coverability tree dimulai dari 1. Langkah pertama yang dilakukan dalam membangun coverability tree adalah pengujian hubungan dominasi. Pengujian hubungan dominasi dilakukan untuk semua node yang menjadi parent bertingkat dari new node termasuk node root. Proses ini dilakukan dengan fungsi isdominate yang telah dibahas pada bagian sebelumnya. Jika terdapat hubungan dominasi maka fungsi isdominate menghasilkan posisi dimana elemen tidak sama. Elemen keadaan 176

205 new node yang berada di posisi ini diberikan nilai %inf yang menyatakan notasi ω pada algoritma membangun coverability tree. id node = id parent ; while id node = 0 node = node tree ( :, id node ) ; ind = isdominate ( new node, node ) ; new node ( ind ) = %inf ; id node = id parent tran (1, id node ) ; end Setelah melakukan pengujian dominasi, langkah berikutnya adalah mengupdate variabel id parent tran. Proses ini dilakukan dengan menggunakan parameter id parent dan id tran. Variabel id new node berisi indeks dari node yang baru. new data = [ id parent ; id tran ] ; id parent tran = [ id parent tran new data ] ; id new node = size ( id parent tran, 2 ) ; Mencari keberadaan node duplicate adalah proses yang dilakukan berikutnya. Ingat keadaan dari setiap node di coverability tree disimpan di variabel node tree. Jika variabel node tree masih kosong maka new node bukan node duplicate. Jika new node adalah node duplicate maka proses yang dilakukan adalah mengupdate variabel node tree dan segera keluar dari fungsi dengan perintah return. if node tree = [ ] if vectorfind ( node tree, new node, c ) = [ ] node tree = [ node tree new node ] ; // update variabel return ; // new node adalah node duplicate end end Jika new node bukan node duplicate maka variabel node tree juga diupdate. Proses berikutnya adalah menentukan transisi yang enabled pada keadaan new node dengan menggunakan fungsi findenabled yang telah dibahas pada bagian sebelumnya. Variabel child st berisi keadaan setelah transisi enabled yang ke i difire. Fungsi buildtree dijalankan kembali untuk setiap keadaan child st dengan menggunakan parameter new node, id parent dan id tran yang sesuai. 177

206 node tree = [ node tree new node ] ; // update variabel id enabled = findenabled ( backward, new node ) ; for i = 1: length ( id enabled ) c h ild s t = new node + forward (:, id enabled ( i )) backward (:, id enabled ( i ) ) ; [ node tree, id parent tran ] = buildtree ( forward, backward, child st, id new node, id enabled ( i ), node tree, id parent tran ) ; end Variabel yang menyatakan matriks forward incidence, backward incidence dan keadaan awal Petri net harus didefinisikan terlebih dahulu sebelum menjalankan fungsi buildtree. Selain itu variabel node tree dan id parent tran diinisialisasi dengan vektor kosong. Nilai yang diberikan ke parameter new node adalah keadaan awal Petri net sedangkan nilai yang diberikan ke parameter id parent dan id tran adalah 0. Tujuan pemberian nilai awal ini adalah menyatakan keadaan awal sebagai node root. >f = [0 1;0 1;1 0 ] ; b = [1 0;1 0;0 1 ] ; >x0 = [ 1 ; 1 ; 0 ] ; nt = [ ] ; >idpt = [ ] ; [ nt, idpt ] = buildtree ( f,b, x0,0,0, nt, idpt ) idpt = nt = Coverability tree yang diperoleh pada contoh sebelumnya mempunyai 3 node. Keadaan yang dinyatakan oleh ketiga node tersebut masing-masing adalah nt(:,1) = [1;1;0], nt(:,2) = [0;0;1] dan nt(:,3) = [1;1;0]. Node pertama adalah node root karena semua elemen pada kolom pertama matriks idpt bernilai nol. Parent dari node kedua adalah node pertama karena elemen pada baris pertama kolom kedua matriks idpt adalah 1. Keadaan pada node kedua diperoleh dengan memfire transisi pertama karena elemen pada baris kedua kolom kedua matriks idpt adalah 1. Dengan menggunakan cara yang sama diperoleh parent dari node ketiga adalah node kedua dan keadaan pada node ketiga diperoleh dengan memfire transisi kedua. 178

207 >f = [0 1 0;1 0 0;1 0 1;0 0 1 ] ; x0 = [ 1 ; 0 ; 0 ; 0 ] ; >b = [1 0 0;0 1 1;0 0 1;0 0 0 ] ; nt = [ ] ; >idpt = [ ] ; [ nt, idpt ] = buildtree ( f, b, x0,0,0, nt, idpt ) idpt = nt = Inf Inf Inf Inf Coverability tree yang telah dibahas pada bagian ini digunakan untuk melakukan analisis pada Petri net. Analisis pertama yang dibahas adalah keterbatasan (boundedness). Pada bagian selanjutnya dibahas implementasi penentuan batas atas setiap place di Petri net. 5.6 Menentukan Batas Atas Place di Petri net Operasi yang dilakukan untuk menentukan batas atas setiap place di Petri net cukup sederhana. Batas atas place diperoleh dari maksimum token yang disimpan oleh place tersebut untuk semua keadaan di coverability tree. Misal prosedur menentukan batas atas place di Petri net diimplementasikan dalam fungsi findbound. Input fungsi ini adalah matriks yang berisi keadaan setiap node di coverability tree. Matriks ini diperoleh dari fungsi buildtree yang telah dibahas pada bagian sebelumnya. 1 function bound = findbound ( node tree ) 2 bound = max( node tree, c ) ; 3 endfunction Petri net yang dibahas pada contoh ini adalah Petri net antrian sederhana. Langkah yang dilakukan pertama kali adalah mendefinisikan matriks forward incidence, backward incidence dan keadaan awal Petri net. Ketiga variabel yang didefinisikan digunakan untuk menjalankan fungsi buildtree. Fungsi ini bertujuan membangun coverability tree yang menghasilkan matriks node tree dan id parent tran. Matriks node tree digunakan sebagai input fungsi findbound untuk menentukan batas atas setiap place di Petri net. Output fungsi ini adalah vektor kolom dengan elemen sebanyak jumlah place. 179

208 >f = [1 0 0;0 0 1;0 1 0 ] ; b = [0 1 0;0 1 0;0 0 1 ] ; >x0 = [ 0 ; 1 ; 0 ] ; nt = [ ] ; >idpt = [ ] ; [ nt, idpt ] = buildtree ( f,b, x0,0,0, nt, idpt ) idpt = nt = 0. Inf Inf Inf Inf Inf >findbound ( nt ) // place pertama tidak terbatas ans = Inf Perhatikan bahwa place pertama unbounded sedangkan place kedua dan ketiga terbatas (bounded) dengan batas atas 1. Pada bagian selanjutnya dibahas implementasi metode menentukan place yang bounded di Petri net. 5.7 Menentukan Place yang terbatas (bounded) Place yang terbatas adalah place yang mempunyai batas atas berhingga (finite). Penentuan place yang terbatas dapat dilakukan ketika informasi batas atas place telah tersedia. Informasi batas atas place diperoleh dari fungsi findbound yang telah dibahas pada bagian sebelumnya. Jika batas atas place berhingga maka place terbatas dan jika batas atas place tak hingga maka place tak terbatas. 1 function idplace = boundedplace ( node tree ) 2 idplace = find ( findbound( node tree ) < %inf ) ; 3 endfunction Misal metode menentukan place yang bounded diimplementasikan dalam fungsi boundedplace. Proses yang dilakukan oleh fungsi ini adalah mencari place yang batas atasnya berhingga. Input fungsi findbound menjadi input fungsi boundedplace karena fungsi boundedplace menjalankan fungsi findbound. Jadi input fungsi boundedplace adalah matriks yang berisi keadaan setiap node di coverability tree dan outputnya adalah vektor baris yang berisi indeks place yang bounded. Jika tidak ada place yang bounded maka fungsi ini menghasilkan vektor kosong. 180

209 >f = [1 0 0;0 0 1;0 1 0 ] ; idpt = [ ] ; >b = [0 1 0;0 1 0;0 0 1 ] ; x0 = [ 0 ; 1 ; 0 ] ; >nt = [ ] ; [ nt, idpt ] = buildtree ( f, b, x0,0,0, nt, idpt ) ; >boundedplace ( nt ) // place kedua dan ketiga terbatas ans = Coverability tree harus dibangun terlebih dahulu sebelum menjalankan fungsi boundedplace. Hal ini disebabkan fungsi boundedplace membutuhkan input berupa matriks node tree. Matriks tersebut merupakan output dari fungsi buildtree. Perhatikan bahwa hasil yang diperoleh pada contoh ini konsisten dengan hasil yang diperoleh pada contoh di bagian sebelumnya. Pada bagian berikutnya dibahas pengujian keterbatasan pada Petri net, 5.8 Keterbatasan (boundedness) pada Petri net Petri net bersifat terbatas (bounded) ketika semua place pada Petri net tersebut terbatas. Suatu place terbatas jika jumlah token pada place tersebut untuk semua node di coverability tree berhingga. Jika semua node di coverability tree berhingga Petri net terbatas. Pengujian sifat terbatas pada Petri net dapat dilakukan dengan cara mencari notasi ω pada semua keadaan di coverability tree. Jika terdapat notasi ω pada satu atau lebih keadaan maka Petri net tidak terbatas. Jika tidak terdapat notasi ω untuk semua keadaan di coverability tree maka Petri net terbatas. 1 function bounded = ispetrinetbounded ( node tree ) 2 bounded = %t; // i n i s i a l i s a s i 3 if find ( node tree == %inf,1) = [ ] 4 bounded = %f ; 5 end 6 endfunction Input fungsi ispetrinetbounded adalah matriks yang berisi keadaan semua node di coverability tree. Matriks ini dinyatakan dengan parameter node tree. Output fungsi ini bertipe boolean yaitu true atau false. Proses yang dilakukan fungsi ini adalah mencari %inf pada matriks node tree. Jika terdapat notasi %inf pada matriks node tree maka nilai yang dihasilkan oleh fungsi ispetrinetbounded adalah false yang dinotasikan %f. Jika tidak ada 181

210 notasi %f pada matriks node tree maka fungsi ini menghasilkan true yang dinotasikan %t. >f = [0 1;0 1;1 0 ] ; x0 = [ 1 ; 1 ; 0 ] ; >b = [1 0;1 0;0 1 ] ; idpt = [ ] ; >nt = [ ] ; [ nt, idpt ] = buildtree ( f,b, x0,0,0, nt, idpt ) ; >ispetrinetbounded ( nt ) // Petri net terbatas ans = T Coverability tree harus dibangun terlebih dahulu sebelum menjalankan fungsi ispetrinetbounded. Hal ini disebabkan input fungsi ini adalah matriks yang berisi keadaan pada setiap node di coverability tree. Matriks ini merupakan salah satu output fungsi buildtree. >f = [1 0 0;0 0 1;0 1 0 ] ; x0 = [ 0 ; 1 ; 0 ] ; >b = [0 1 0;0 1 0;0 0 1 ] ; idpt = [ ] ; >nt = [ ] ; [ nt, idpt ] = buildtree ( f,b, x0,0,0, nt, idpt ) ; >ispetrinetbounded ( nt ) // Petri net tidak terbatas ans = F Pada bagian selanjutnya dibahas implementasi dari pengujian sifat konservasi pada Petri net. Sifat konservasi berhubungan dengan jumlah token yang konstan pada place yang terbatas untuk semua keadaan yang dapat dicapai dari keadaan awal. 5.9 Pengujian Konservasi (Conservation) Sifat konservasi pada Petri net dapat diuji dengan mencari bobot untuk setiap place yang terbatas (bounded) di Petri net. Pengujian ini dilakukan dengan membentuk sistem persamaan linier seperti telah dibahas pada bab sebelumnya. Setiap persamaan menyatakan suatu keadaan pada coverability tree. Jika terdapat penyelesaian yang tidak trivial maka Petri net memenuhi sifat konservasi. Jika satu-satunya penyelesaian sistem persamaan linier adalah trivial maka Petri net tidak memenuhi sifat konservasi. Dengan menggunakan keterangan sebelumnya dapat disimpulkan pengujian konservasi dapat dilakukan setelah data keadaaan di coverability tree dan place yang terbatas telah tersedia. Kedua informasi tersebut dapat dicari dengan menggunakan fungsi buildtree dan boundedplace yang dibahas pada bagian sebelumnya. 182

211 Pengujian sifat konservasi pada Petri net diimplementasikan dalam fungsi isconservation. Fungsi ini mempunyai dua input yaitu node tree dan idbounded. Parameter node tree menyatakan keadaan pada semua node di coverability tree dan parameter idbounded menyatakan indeks place yang terbatas. Output fungsi ini adalah konservasi yang bertipe boolean. Jika konservasi bernilai true maka Petri net memenuhi sifat konservasi. Jika konservasi bernilai false maka Petri net tidak memenuhi sifat konservasi. 1 function konservasi = isconservation ( node tree, 2 idbounded ) 3 // i n i s i a l i s a s i 4 konservasi = %t; 5 node tree = node tree ; 6 [ brs, klm ] = size ( node tree ) ; 7 node tree = [ node tree ( :, idbounded ) ones( brs, 1 ) ] ; 8 [ x0, kera ] = linsolve ( node tree, zeros( brs, 1 ) ) ; 9 if kera == [ ] & x0 == zeros(klm+1,1) 10 konservasi = %f ; // solusi t r i v i a l 11 end 12 endfunction Fungsi buildtree dan boundedplace harus dijalankan terlebih dahulu sebelum fungsi isconservation. Hal ini disebabkan parameter node tree diperoleh dari fungsi buildtree dan parameter idbounded diperoleh dari fungsi boundedplace. >f = [1 0 0;0 0 1;0 1 0 ] ; x0 = [ 0 ; 1 ; 0 ] ; >b = [0 1 0;0 1 0;0 0 1 ] ; idpt = [ ] ; >nt = [ ] ; [ nt, idpt ] = buildtree ( f, b, x0,0,0, nt, idpt ) ; >idb = boundedplace ( nt ) // idbounded idb = >isconservation (nt, idb ) // s i f a t konservasi dipenuhi ans = T Pada contoh ini sifat konservasi dipenuhi oleh Petri net karena fungsi isconservation menghasilkan true. Jadi terdapat suatu bobot sehingga jumlah token pada place selalu konstan untuk setiap keadaan yang mungkin dicapai dari keadaan awal. Place yang diperhitungkan adalah place yang terbatas. 183

212 Berdasarkan hasil yang diperoleh di contoh sebelumnya dapat disimpulkan terdapat bobot untuk place kedua dan ketiga sehingga jumlah token pada kedua place tersebut selalu konstan untuk semua keadaan yang dapat dicapai dari keadaan awal. Analisis yang dibahas berikutnya adalah coverability keadaan. Di dalam analisis coverability keadaan terdapat pengujian untuk menentukan apakah suatu keadaan mengcover keadaan yang lain. Pada bagian selanjutnya dibahas implementasi pengujian cover antara dua keadaan Pengujian Cover Dua Keadaan Pengujian cover dua keadaan diimplementasikan di fungsi iscovers. Fungsi ini bertujuan menguji dua keadaan sehingga input fungsi ini adalah dua keadaan yang dinotasikan big dan small. Output fungsi iscovers bertipe boolean. Jika keadaan big mengcover small maka fungsi ini menghasilkan true. Jika keadaan big tidak mengcover small maka fungsi iscovers menghasilkan false. 1 function b = iscovers ( big, small ) 2 b = %t; // i n i s i a l i s a s i 3 if find ( small > big ) = [ ] 4 b = %f ; 5 end 6 endfunction Proses yang dilakukan di fungsi iscovers adalah mencari elemen pada keadaan small yang lebih dari keadaan big. Jika terdapat elemen yang memenuhi kondisi itu maka keadaan big tidak mengcover keadaan small. Jika tidak ada elemen yang memenuhi kondisi tersebut maka keadaan big mengcover keadaan small. >x1 = [ %inf ; 1 ; 0 ] ; x2 = [ 3 ; 1 ; 0 ] ; >iscovers (x1, x2) // keadaan x1 mengcover x2 ans = T >x1 = [ %inf ; 0 ; 1 ] ; x2 = [ %inf ; 1 ; 0 ] ; >iscovers (x1, x2) // keadaan x1 tidak mengcover x2 ans = F 184

213 Pada ilustrasi yang pertama keadaan x1 mengcover x2 karena elemen di keadaan x1 lebih besar atau sama dengan x2 di semua posisi. Keadaan x1 tidak mengcover x2 pada ilustrasi berikutnya karena elemen kedua dari keadaan x1 lebih kecil dari x2 di posisi yang sama. Selanjutnya dibahas implementasi dari coverability keadaan. Analisis coverability keadaan digunakan untuk menentukan apakah suatu keadaan coverable dengan menggunakan coverability tree. Jadi sebelum melakukan analisis ini coverability tree harus dibangun terlebih dahulu Pengujian Coverable Pengujian coverable digunakan untuk menentukan suatu keadaan coverable atau tidak. Misal keadaan yang diuji dinyatakan dengan mark. Keadaan mark coverable jika dan hanya jika terdapat keadaan di coverability tree yang mengcover mark. Jika tidak ada keadaan di coverability tree yang mengcover mark maka keadaan mark tidak coverable. Pengujian coverable diimplementasikan ke dalam fungsi iscoverable. Berdasarkan keterangan sebelumnya dapat disimpulkan input dari fungsi ini ada dua yaitu keadaan yang diuji dan semua keadaan pada coverability tree. 1 function ind = iscoverable ( node tree, mark) 2 [n, r ] = size ( node tree ) ; 3 ind = vectorfind (bool2s ( node tree >= ones (1, r ).. 4 mark),ones(n,1), c ) ; 5 endfunction Parameter node tree merupakan hasil dari fungsi buildtree. Fungsi buildtree harus dijalankan terlebih dahulu sebelum fungsi iscoverable seperti telah dibahas pada bagian sebelumnya. >f = [1 0 0;0 0 1;0 1 0 ] ; x0 = [ 0 ; 1 ; 0 ] ; >b = [0 1 0;0 1 0;0 0 1 ] ; idpt = [ ] ; >nt = [ ] ; [ nt, idpt ] = buildtree ( f, b, x0,0,0, nt, idpt ) ; >mark = [ 3 ; 0 ; 1 ] ; // keadaan yang diuji >iscoverable ( nt, mark) // keadaan coverable ans = Jika keadaan yang diuji coverable maka fungsi iscoverable menghasilkan vektor baris yang berisi indeks node di coverability tree yang mengcover 185

214 keadaan yang diuji. Pada contoh ini keadaan [3;1;0] coverable karena terdapat tiga keadaan di coverability tree yang mengcover keadaan tersebut. Jika keadaan yang diuji tidak coverable maka fungsi iscoverable menghasilkan vektor kosong. Suatu keadaan coverable jika dan hanya jika terdapat keadaan di coverability tree yang mengcover keadaan tersebut. Keadaan di coverability tree menyatakan keadaan yang dapat dicapai dari keadaan awal Petri net. Ketika suatu keadaan coverable maka dapat ditentukan urutan pemfirean transisi sehingga diperoleh keadaan yang mengcover keadaan tersebut. Permasalahan ini dibahas pada bagian berikutnya Keadaan Setelah Pemfirean Transisi yang Enabled Misal keadaan yang diuji dinyatakan dengan mark. Proses ini dimulai dengan menguji apakah keadaan awal mengcover mark. Jika ya maka tidak ada transisi yang harus difire. Jika tidak maka dicari transisi yang enabled pada keadaan awal kemudian transisi tersebut difire. Selain keadaan setelah transisi difire, transisi yang difire juga harus disimpan. Proses ini dilakukan berulangulang hingga diperoleh keadaan yang mengcover mark kemudian menghasilkan urutan transisi yang difire untuk mencapai keadaan tersebut. Pada bagian ini dibahas bagaimana memperoleh keadaan berikutnya dan menyimpan transisi yang difire untuk mencapai keadaan tersebut. Proses ini diimplementasikan ke fungsi findchild. Input fungsi ini adalah Petri net yang dinyatakan dengan matriks forward incidence dan backward incidence. Selain itu, fungsi ini membutuhkan keadaan dan urutan transisi yang difire untuk memperoleh keadaan tersebut. Keadaan yang diinputkan boleh berjumlah lebih dari satu yang dilakukan dengan menginputkan matriks. Setiap kolom dari matriks tersebut menyatakan keadaan Petri net. Jelas bahwa jumlah baris sama dengan jumlah place di Petri net dan jumlah kolom menyatakan jumlah keadaan yang diinputkan. Jika keadaan yang diinputkan berjumlah satu maka tran merupakan vektor kolom. Jika keadaan yang diinputkan lebih dari satu maka tran merupakan matriks. Jumlah kolom matriks tran sama dengan jumlah keadaan yang diinputkan. Jumlah baris matriks tran menunjukkan banyaknya transisi yang difire untuk mencapai keadaan di mark dari keadaan awal Petri net. Fungsi ini menghasilkan dua variabel yaitu anakmark dan anaktran. Variabel anakmark merupakan keadaan yang diperoleh setelah pemfirean tran- 186

215 sisi yang enabled pada keadaan mark. Variabel anaktran berisi urutan transisi yang difire untuk mencapai keadaan anakmark dari keadaan awal Petri net. Dapat disimpulkan jumlah baris anaktran satu lebih banyak daripada jumlah baris tran. 1 function [ anakmark, anaktran ] = findchild ( forward, 2 backward, mark, tran ) // lanjutan deklarasi fungsi 3 // i n i s i a l i s a s i, program 4 anakmark = [ ] ; 5 anaktran = [ ] ; 6 [pm, tn ] = size ( forward ) ; // jumlah transisi 7 nmark = size (mark, 2 ) ; // jumlah keadaan 8 for i = 1: tn 9 idenabled = vectorfind (bool2s (ones (1,nmark ).. 10 backward ( :, i ) <= mark),ones(pm,1), c ) ; 11 nenabled = length ( idenabled ) ; 12 anakmark = [ anakmark ones (1, nenabled ).. 13 ( forward ( :, i) backward ( :, i ))+mark ( :, idenabled ) ] ; 14 anaktran = [ anaktran [ tran ( :, idenabled ) ; 15 ones (1, nenabled ).. [ i ] ] ] ; 16 end 17 endfunction Proses yang dilakukan fungsi ini dapat dijelaskan sebagai berikut. Untuk setiap transisi di Petri net, dicari keadaan di mark yang menyebabkan transisi tersebut enabled. Jika ada keadaan di mark yang menyebabkan transisi ini enabled maka pemfirean dilakukan terhadap keadaan tersebut. Keadaan setelah transisi difire disimpan di variabel anakmark dan transisi yang difire ditambahkan ke variabel anaktran. Petri net harus didefinisikan terlebih dahulu sebelum menjalankan fungsi ini. Pendefinisian Petri net dilakukan dengan membuat matriks forward incidence, backward incidence dan keadaan awal. Selain itu variabel tran juga harus didefinisikan. Variabel ini digunakan untuk menyimpan urutan transisi yang difire. Pada keadaan awal tidak ada transisi yang difire sehingga tran diinisialisasi dengan vektor kosong. Keadaan awal Petri net pada permasalahan ini adalah [0;1;0]. >f = [1 0 0;0 0 1;0 1 0 ] ; >b = [0 1 0;0 1 0;0 0 1 ] ; mark = [ 0 ; 1 ; 0 ] ; 187

216 >tran = [ ] ; [ mark, tran ] = findchild ( f,b, mark, tran ) tran = 1. mark = Transisi yang enabled pada keadaan awal adalah transisi pertama. Pemfirean transisi ini menyebabkan keadaan Petri net menjadi [1;1;0]. Jika fungsi findchild dijalankan dengan input variabel f dan b yang sama dengan sebelumnya maka diperoleh hasil berikut. >mark = [ 1 ; 1 ; 0 ] ; >tran = 1; [ mark, tran ] = findchild ( f,b, mark, tran ) tran = mark = Pada bagian berikutnya dibahas penentuan urutan pemfirean transisi. Dalam menentukan urutan pemfirean transisi dibutuhkan penentuan transisi yang enabled pada suatu keadaan dan keadaan setelah transisi tersebut difire. Kedua hal tersebut telah dibahas pada bagian ini dan sebelumnya Penentuan Urutan Pemfirean Transisi Proses menentukan urutan pemfirean transisi diimplementasikan dalam fungsi firingorder. Informasi yang dibutuhkan oleh fungsi ini adalah Petri net dan keadaan yang diuji. Petri net direpresentasikan dalam matriks forward incidence, backward incidence dan keadaan awal. Misal keadaan yang diuji dinyatakan dalam variabel mark. Jadi input fungsi firingorder adalah matriks forward incidence, matriks backward incidence, vektor keadaan awal Petri net dan vektor keadaan yang diuji. Output fungsi ini adalah matriks tran. Setiap kolom dari matriks ini menyatakan suatu urutan pemfirean transisi. Jumlah kolom matriks tran 188

217 menyatakan banyak urutan pemfirean transisi yang berbeda. Jumlah baris matriks ini menunjukkan banyak transisi yang harus difire. Perhatikan bahwa fungsi firingorder dapat menghasilkan urutan transisi ketika keadaan mark yang diinputkan adalah coverable. Di dalam fungsi firingorder, tidak ada proses untuk menyeleksi keadaan mark coverable atau tidak. Jika keadaan mark yang diinputkan tidak coverable maka perulangan di dalam fungsi ini dilakukan terus-menerus sehingga fungsi ini tidak menghasilkan apa-apa. Jadi sebelum menjalankan fungsi ini, keadaan mark yang diinputkan harus diuji terlebih dahulu dengan fungsi iscoverable yang telah dibahas pada bagian sebelumnya. >f = [1 0 0;0 0 1;0 1 0 ] ; b = [0 1 0;0 1 0;0 0 1 ] ; >x0 = [ 0 ; 1 ; 0 ] ; mark = [ 3 ; 0 ; 1 ] ; >firingorder ( f, b, x0, mark) ans = Urutan pemfirean transisi yang dihasilkan oleh fungsi firingorder adalah minimum karena fungsi ini mempertimbangkan semua kemungkinan. Banyak memori yang dibutuhkan oleh fungsi ini cukup besar karena semua kemungkinan keadaan beserta urutan transisinya disimpan di memori. Pada Scilab ada batasan memori paling banyak yang dapat digunakan. Jika banyak memori yang digunakan suatu fungsi melebihi banyak memori maksimum yang diperbolehkan di Scilab maka muncul keterangan bahwa jumlah memori telah melebihi batas maksimum. Batas memori yang diperbolehkan bisa diubah dengan menggunakan fungsi stacksize. Berikut diberikan contoh input fungsi firingorder yang membutuhkan memori lebih banyak dari batas maksimum yang diperbolehkan di Scilab. Petri net dan keadaan yang diuji didefinisikan terlebih dahulu sebelum menjalankan fungsi firingorder. Keadaan yang diuji disimpan dalam variabel mark dan keadaan awal Petri net disimpan dalam variabel x0. >f = [1 0 0;0 0 1;0 1 0 ] ; >b = [0 1 0;0 1 0;0 0 1 ] ; >x0 = [ 0 ; 1 ; 0 ] ; mark = [ 1 6 ; 0 ; 1 ] ; 189

218 >firingorder ( f, b, x0, mark ) ;! error 17 stack size exceeded! (Use stacksize function to increase i t ) Memory used for variables : Intermediate memory needed : Total memory available : at line 20 of function findchild called by : line 20 of function firingorder called by : firingorder ( f,b, x0, mark ) ; Fungsi firingorderbig akan disusun untuk mengatasi permasalahan ini. Proses yang dilakukan oleh fungsi firingorderbig berbeda dengan fungsi firingorder. Fungsi firingorderbig tidak mempertimbangkan semua kemungkinan yang terjadi sehingga tidak ada jaminan bahwa urutan transisi yang diperoleh minimum. Keuntungan menggunakan fungsi firingorderbig adalah kebutuhan memori yang lebih kecil daripada fungsi firingorder. Ada beberapa informasi yang dibutuhkan oleh fungsi firingorderbig yaitu coverability tree, Petri net, keadaan yang diuji dan indeks node di coverability tree yang mengcover keadaan yang diuji. Urutan transisi yang difire mengacu pada lintasan dari node root ke node yang mengcover keadaan yang diuji. Coverability tree dinyatakan dalam variabel node tree dan variabel id parent tran. Petri net dinyatakan dengan matriks forward incidence dan backward incidence yang masing-masing disimpan dalam variabel f dan b. Keadaan awal dan keadaan yang diuji masing-masing disimpan di variabel x0 dan mark. Variabel idnode merupakan vektor yang berisi indeks node di coverability tree yang mengcover mark. Output yang dihasilkan fungsi firingorderbig adalah vektor baris. Vektor ini berisi indeks transisi yang menyatakan urutan transisi yang difire. Indeks transisi merupakan bilangan bulat positif berurutan yang dimulai dari 1. Berikut diberikan contoh penggunaan fungsi firingorderbig untuk menyelesaikan permasalahan sebelumnya. >f = [1 0 0;0 0 1;0 1 0 ] ; b = [0 1 0;0 1 0;0 0 1 ] ; >x0 = [ 0 ; 1 ; 0 ] ; idpt = [ ] ; mark = [ 1 6 ; 0 ; 1 ] ; >nt = [ ] ; [ nt, idpt ] = buildtree ( f,b, x0,0,0, nt, idpt ) ; >idcovers = iscoverable (nt, mark) // mark coverable idcovers =

219 >firingorderbig (nt, idpt, f, b, mark, idcovers (1)) ans = column 1 to column 10 t o Perhatikan bahwa fungsi firingorderbig mampu menyelesaikan permasalahan yang tidak bisa diselesaikan dengan fungsi firingorder Petri net Lampu Lalulintas Implementasi Petri net lampu lalulintas dibahas pada bagian ini. Pembahasan dimulai dari Petri net lampu lalulintas sederhana hingga Petri net lampu lalulintas di persimpangan yang telah direduksi. Pada setiap bagian dikaji bagaimana mengimplementasikan algoritma membangun Petri net yang direpresentasikan dalam matriks forward incidence, backward incidence dan keadaan awal. Implementasi ini juga menghasilkan vektor kolom yang menyatakan nama setiap place dan transisi Petri net. Nama place menggunakan huruf kapital untuk membedakan dengan nama transisi Lampu Lalulintas Sederhana Petri net yang dibahas pertama adalah Petri net lampu lalulintas sederhana. Matriks incidence Petri net ini selalu berukuran 3 3 seperti telah dibahas pada bab sebelumnya. Implementasi matriks forward incidence dan backward incidence mudah karena elemen kedua matriks adalah konstan. Elemen vektor yang menyatakan keadaan awal Petri net juga konstan. >f = [0 0 1;1 0 0;0 1 0] // forward incidence f = >b = eye(3,3) // backward incidence b =

220 >x0 = [ 0 ; 1 ; 0 ] ; x0 // keadaan awal ans = >np = [ M ; H ; K ] ; nt = [ mh ; hk ; km ] ; >np, nt // nama place dan nama transisi ans =!M H K! ans =!mh hk km! Perintah eye(3,3) menyatakan matriks identitas berukuran 3 3 seperti terlihat pada contoh sebelumnya. Variabel np dan nt masing-masing menyatakan nama place dan nama transisi di Petri net. Kedua variabel tersebut merupakan vektor kolom dengan elemen berupa string Lampu Lalulintas dengan Waktu Tunggu Matriks forward incidence dan backward incidence untuk Petri net lampu lalulintas dengan waktu tunggu selalu berukuran 6 6. Elemen kedua matriks tergantung lama masing-masing lampu lalulintas menyala. Hal ini menyebabkan implementasi Petri net pada bagian ini lebih sulit dibandingkan sebelumnya. Langkah pertama yang dilakukan dalam mengimplementasikan permasalahan ini adalah mendefinisikan lama masing-masing lampu lalulintas menyala. Lama lampu lalulintas merah, kuning dan hijau menyala masingmasing disimpan dalam variabel tm, tk dan th. Pada contoh berikut lampu lalulintas merah, kuning dan hijau masing-masing menyala selama 8, 4 dan 6 satuan waktu. Ada beberapa cara yang dapat dilakukan untuk mengakses elemen matriks pada Scilab. Cara pertama dengan menggunakan letak elemen tersebut yang dinyatakan dengan posisi baris dan posisi kolom. Cara kedua dengan menganggap matriks sebagai vektor sehingga letak elemen dinyatakan dengan sebuah bilangan. Elemen yang mempunyai indeks 1 adalah elemen baris pertama kolom pertama. Elemen baris kedua kolom pertama mempunyai indeks 2. Semakin ke bawah indeks elemen semakin besar hingga diperoleh indeks dari elemen baris terakhir kolom pertama. Indeks berikutnya adalah elemen baris pertama kolom kedua dan semakin ke bawah indeks elemen semakin besar. Indeks elemen yang paling besar adalah adalah elemen yang berada pada baris terakhir kolom terakhir. 192

221 >tm = 8; tk = 4; th = 6; f = zeros (6,6); >f (2:14:30) = 1; f ([ ]) = [ th ; tk ;tm] f = >b = zeros (6,6); b (1:14:29) = 1; >b (8:14:36) = [tm; th ; tk ] b = >x0 = zeros (6,1); x0 (3) = th ; x0 // keadaan awal ans = >np = [ M ; BM ; H ; BH ; K ; BK ] ; // nama place >nt = [ mn ; mh ; hn ; hk ; kn ; km ] ; np, nt ans =!M BM H BH K BK! ans =!mn mh hn hk kn km! Ekspresi f(2:14:30) = 1 mempunyai makna yang sama dengan ekspresi f([ ]) = 1. Ekspresi sebelumnya dapat dijabarkan menjadi 3 ekspresi yaitu f(2) = 1, f(16) = 1 dan f(30) = 1. Berdasarkan keterangan sebelumnya maka ketiga ekspresi sebelumnya masing-masing dapat ditulis sebagai f(2,1) = 1, f(4,3) = 1 dan f(6,5) = 1. Ekspresi yang lain misalnya f([ ]) = [th;tk;tm] ekivalen dengan f(9) = th, f(23) = tk dan f(31) = tm. Variabel f dan b pada contoh tersebut masing-masing menyatakan matriks forward incidence dan backward incidence. Pernyataan zeros(6,6) 193

222 digunakan untuk membangun matriks nol berukuran 6 6. Variabel x0 adalah vektor kolom dengan 6 elemen yang menyatakan keadaan awal Petri net. Pernyataan x0 digunakan untuk menampilkan transpos dari x0 yang berbentuk vektor baris. Cara yang sama digunakan untuk menampilkan nama place dan nama transisi. Selanjutnya dibahas implementasi Petri net lampu lalulintas tanpa waktu idle Lampu Lalulintas Tanpa Waktu Idle Implementasi Petri net pada bagian ini serupa dengan sebelumnya. Hal ini disebabkan ukuran matriks forward incidence dan backward incidence selalu 6 6 dan elemen pada kedua matriks tergantung lama masing-masing lampu lalulintas menyala. Jadi urutan langkah yang dilakukan pada bagian ini hampir sama dengan sebelumnya. Langkah pertama yang dilakukan adalah menetapkan lama lampu lalulintas merah, kuning dan hijau menyala dengan memberikan nilai ke variabel tm, tk dan th. Kemudian dilanjutkan dengan mendefinisikan matriks forward incidence, backward incidence, keadaan awal, nama place dan nama transisi seperti terlihat pada contoh berikut. >tm = 8; tk = 4; th = 6; >f = zeros (6,6); f (1:14:29) = 1; f (2:14:30) = 1; >f ([ ]) = [ th ; tk ;tm] // forward incidence f = >b = zeros (6,6); b (1:14:29) = 2; b (7:14:35) = 1; >b (8:14:36) = [tm; th ; tk ] 1 // backward incidence b =

223 >x0 = zeros (6,1); x0 (3) = th ; x0 ans = >np = [ M ; BM ; H ; BH ; K ; BK ] ; // nama place >nt = [ mn ; mh ; hn ; hk ; kn ; km ] ; >np, nt // menampilkan nama place dan transisi ans =!M BM H BH K BK! ans =!mn mh hn hk kn km! Ketiga Petri net yang telah dibahas tidak diimplementasikan dalam fungsi tertentu karena proses yang dilakukan tidak rumit. Pada bagian selanjutnya dibahas implementasi Petri net untuk lampu lalulintas di persimpangan. Perbedaan Petri net yang dibahas berikutnya dengan ketiga Petri net sebelumnya terletak pada ukuran matriks forward incidence dan backward incidence. Ukuran kedua matriks incidence pada bagian selanjutnya tergantung jumlah jalur di persimpangan Lampu Lalulintas di Persimpangan Ukuran matriks incidence untuk Petri net pada bagian ini tergantung jumlah jalur di persimpangan seperti telah disinggung pada bagian sebelumnya. Matriks forward incidence dan backward incidence berukuran 5l 4l. Vektor kolom yang menyatakan keadaan awal Petri net mempunyai 5l elemen dengan l menyatakan jumlah jalur di persimpangan. Algoritma membangun matriks forward incidence, backward incidence dan keadaan awal Petri net diimplementasikan dalam fungsi tlintersection karena proses yang dilakukan lebih rumit daripada sebelumnya. Selain itu fungsi tlintersection juga menghasilkan nama setiap place dan transisi di Petri net. Fungsi ini merupakan implementasi dari Algoritma 4.5 dan Algoritma 4.6. Langkah pertama yang dilakukan dalam mengimplementasikan kedua algoritma adalah menentukan input dan output fungsi tlintersection. Input fungsi ini adalah th dan tk yang merupakan vektor kolom dengan elemen sebanyak jumlah jalur di persimpangan. Output fungsi ini adalah matriks forward incidence, backward incidence, keadaan awal, nama place dan nama transisi yang masing-masing dinyatakan dengan variabel forward, backward, x0, np dan nt. Selanjutnya dibahas proses yang dilakukan oleh 195

224 fungsi tlintersection. Hal pertama yang dilakukan adalah menentukan jumlah jalur di persimpangan dengan menghitung banyak elemen pada variabel th. Proses ini juga bisa dilakukan dengan menghitung banyak elemen pada variabel tk karena banyak elemen yang disimpan variabel th dan tk sama. Matriks forward incidence yang dinyatakan dengan variabel forward diinisialisasi dengan matriks nol menggunakan perintah zeros. Pengisian elemen tidak nol pada matriks ini dilakukan dengan menggunakan sebuah indeks untuk mengakses elemen pada matriks seperti dibahas pada bagian sebelumnya. Indeks elemen dapat ditentukan dengan menggunakan ekspresi pada Algoritma 4.5 dan 4.6 kemudian menentukan pola indeks yang telah diperoleh. Sebagai contoh dipilih ekspresi A f (l+4i 3, 4i 3) 1 yang berada pada baris 6 di Algoritma 4.5. Pada saat i = 1 elemen yang diganti berada pada baris l+1 kolom 1 yang mempunyai indeks l+1. Ketika variabel i bernilai 2, elemen yang diganti berada pada baris l + 5 kolom 5 yang mempunyai indeks (5 1)5l + l + 5 = 21l + 5. Selisih indeks pada iterasi kedua dan pertama adalah 21l + 5 (l + 1) = 20l + 4. Selanjutnya ditunjukkan selisih indeks dua iterasi yang berurutan adalah 20l + 4. Pada saat iterasi ke k yaitu i = k maka elemen yang diganti berada pada baris l + 4k 3 kolom 4k 3 yang mempunyai indeks (4k 4)5l + l + 4k 3. Elemen yang diganti pada iterasi ke k + 1 berada pada baris l + 4k + 1 kolom 4k + 1 yang mempunyai indeks (4k)5l + l + 4k + 1. Selisih indeks pada saat iterasi ke k + 1 dan iterasi ke k adalah 20l + 4. Jadi terbukti bahwa selisih indeks dua iterasi yang berurutan adalah 20l + 4. Dengan menggunakan hasil sebelumnya dapat ditentukan indeks elemen yang diganti pada saat iterasi terakhir yaitu indeks pada iterasi pertama ditambah 20l+4 dikalikan dengan l 1 yang dapat ditulis l+1+(20l+4)(l 1) = 20l 2 15l 3. Perintah di Scilab untuk permasalahan ini ditulis forward(l+1:20*l+4:20*l^2-15*l-3) = 1. Penentuan perintah di Scilab untuk ekspresi yang lain bisa dilakukan dengan cara yang sama dengan sebelumnya. Dalam menjalankan fungsi tlintersection, variabel th dan tk sebaiknya didefinisikan terlebih dahulu. Kedua variabel ini merupakan vektor kolom dengan anggota sebanyak jumlah jalur di persimpangan. Elemen dari variabel th dan tk adalah bilangan bulat positif yang menyatakan lama lampu lalulintas hijau dan kuning menyala pada setiap jalur di persimpangan. Berikut diberikan contoh menjalankan fungsi tlintersection beserta hasil yang diperoleh setelah menjalankan fungsi tersebut. Pada contoh berikut persimpangan terdiri dari 2 jalur. 196

225 >th = [ 6 ; 6 ] ; >tk = [ 4 ; 4 ] ; [ f,b, x0, np, nt ] = t l i n t e r s e c t i o n ( th, tk ) ; >f, b, x0, np, nt // menampilkan hasil f = b = ans = ans =!M1 M2 H1 BH1 K1 BK1 H2 BH2 K2 BK2! ans =! hn1 hk1 kn1 km1 hn2 hk2 kn2 km2! Pada masing-masing jalur, lampu lalulintas hijau menyala selama 6 satuan waktu dan lampu lalulintas kuning menyala selama 4 satuan waktu. Matriks incidence yang terbentuk berukuran Selanjutnya dibahas Petri net lampu lalulintas di persimpangan setelah dilakukan proses reduksi keadaan sehingga jumlah place menjadi lebih kecil. 197

226 Lampu Lalulintas Tereduksi Matriks incidence pada Petri net lampu lalulintas tereduksi berukuran lebih kecil dibandingkan bagian sebelumnya yaitu (l + 4) 4l dengan l menyatakan jumlah jalur di persimpangan. Proses membangun matriks forward incidence, backward incidence dan keadaan awal Petri net lampu lalulintas tereduksi diimplementasikan ke dalam fungsi tlreduced. Pembuatan fungsi ini mengacu pada Algoritma 4.8 dan Algoritma 4.9. Input dan output fungsi tlreduced sama dengan fungsi tlintersection. Faktor yang membedakan kedua fungsi tersebut adalah ukuran masing-masing variabel yang dihasilkan. Proses yang dilakukan untuk menyusun perintah pada fungsi ini serupa dengan fungsi tlintersection sehingga tidak dibahas lagi pada bagian ini. Urutan langkah yang dilakukan dalam menjalankan fungsi ini hampir sama dengan sebelumnya. >th = [ 6 ; 6 ] ; >tk = [ 4 ; 4 ] ; [ f,b, x0, np, nt ] = tlreduced ( th, tk ) ; >f, b, x0, np, nt // menampilkan hasil f = b = ans = ans =!M1 M2 H BH K BK! ans =! hn1 hk1 kn1 km1 hn2 hk2 kn2 km2! 198

227 Perhatikan bahwa dengan menggunakan input yang sama, ukuran matriks forward incidence dan backward incidence yang diperoleh lebih kecil yaitu 6 8. Hal ini mengakibatkan banyak elemen pada vektor keadaan menjadi 6. Pada bagian selanjutnya dibahas simulasi jumlah pengguna di persimpangan dengan menggunakan kedatangan berdistribusi normal dan kedatangan berdistribusi uniform diskrit Simulasi Jumlah Pengguna di Persimpangan Pada bagian ini dibahas implementasi simulasi jumlah pengguna di persimpangan dengan menggunakan dua pendekatan yang berbeda. Pendekatan yang pertama menggunakan kedatangan berdistribusi normal dan pendekatan yang kedua menggunakan kedatangan berdistribusi uniform diskrit. Pendekatan pertama diimplementasikan pada fungsi intersection. Langkah yang dilakukan berikutnya adalah menentukan input yang dibutuhkan dan output yang dihasilkan oleh fungsi tersebut. Input yang dibutuhkan mengacu pada Algoritma 4.12 yaitu data yang bertipe matriks dan wsim yang menyatakan waktu simulasi. Matriks data berisi informasi mengenai keadaan awal, mean, varian dan maksimum lama lampu lalulintas menyala. Informasi ini masing-masing disimpan pada variabel x, µ, σ 2 dan maks di Algoritma Keempat variabel tersebut mempunyai jumlah baris yang sama sehingga bisa digabung untuk membentuk matriks data. Jadi jumlah baris matriks data menunjukkan jumlah jalur yang ada di persimpangan. Jumlah kolom matriks data merupakan jumlah kolom dari variabel x, µ, σ 2 dan maks yaitu 9. Output yang dihasilkan oleh fungsi intersection adalah pgn yang bertipe matriks. Jumlah baris matriks pgn sama dengan jumlah jalur di persimpangan dan jumlah kolomnya sama dengan waktu simulasi. Elemen matriks ini merupakan bilangan bulat taknegatif yang menunjukkan jumlah pengguna di semua jalur untuk setiap waktu. Dalam menjalankan fungsi intersection, matriks x0, mu, sigma2 dan maks didefinisikan terlebih dahulu. Setelah itu keempat matriks digabungkan dalam variabel data. Jumlah jalur di persimpangan tidak perlu didefinisikan karena jumlah baris matriks data menyatakan jumlah jalur. Output fungsi intersection disimpan dalam variabel pgn yang bertipe matriks. Jumlah baris matriks ini menyatakan jumlah jalur di persimpangan yaitu 2. >x0 = [ 1 5 ; 1 5 ] ; mu = [2 5 3;2 5 3 ] ; maks = [6 4;6 4 ] ; >sigma2 = [1 2 1;1 2 1 ] ; data = [ x0 mu sigma2 maks ] ; 199

228 >wsim = 13; pgn = intersection ( data, wsim) pgn = column 1 to column 9 t o Selanjutnya dibahas pendekatan yang kedua yaitu menggunakan kedatangan berdistribusi uniform diskrit. Simulasi jumlah pengguna di persimpangan dengan kedatangan berdistribusi uniform diimplementasikan dalam fungsi intersectionext. Input fungsi ini hampir sama dengan intersection yang telah dibahas yaitu data dan wsim. Perbedaan input kedua fungsi terletak pada jumlah kolom matriks data. Matriks data yang diinputkan pada fungsi intersection mempunyai 9 kolom sedangkan matriks data yang diinputkan pada fungsi intersectionext mempunyai 8 kolom. Ada dua hal yang menyebabkan perbedaan jumlah kolom pada matriks data yaitu jumlah kolom matriks µ dan σ 2 serta terdapat input tambahan pada fungsiintersectionext yaitu vektor dmaks. Output yang dihasilkan oleh fungsi intersectionext sama dengan output yang dihasilkan oleh fungsi intersection yaitu pgn yang bertipe matriks. Jumlah baris matriks pgn menunjukkan jumlah jalur di persimpangan dan jumlah kolomnya menyatakan lama simulasi dilakukan yang masing-masing bernilai 2 dan 13. >x0 = [ 1 5 ; 1 5 ] ; mu = [5 3;5 3 ] ; sigma2 = [2 1;2 1 ] ; >maks = [6 4;6 4 ] ; dmaks = [ 4 ; 4 ] ; >data = [ x0 mu sigma2 maks dmaks ] ; wsim = 13; >pgn = intersectionext ( data, wsim) pgn = column 1 to column 9 t o Pada contoh sebelumnya fungsi intersectionext digunakan untuk mengetahui hasil simulasi jumlah pengguna pada persimpangan dengan 2 jalur 200

229 selama 13 satuan waktu. Input pada contoh ini sama dengan input yang digunakan pada contoh penggunaan fungsi intersection. Pada contoh ini jumlah maksimum pengguna yang datang pada masing-masing jalur adalah 4. Output yang dihasilkan adalah matriks berukuran 2 13 dengan elemen berupa bilangan bulat taknegatif Identifikasi Petri net yang dibuat dengan PIPE Cara pembuatan Petri net di Scilab cukup rumit karena harus mengetahui representasi Petri net dalam matriks dan mengetahui pembuatan matriks di Scilab. Dengan menggunakan representasi grafik maka pembuatan Petri net menjadi lebih mudah. Salah satu perangkat lunak yang menggunakan representasi grafik untuk membangun Petri net adalah Platform Independent Petri net Editor yang disingkat dengan PIPE. Perangkat lunak ini menyimpan Petri net dalam file teks dengan ekstensi xml. Pada bagian ini dibahas bagaimana mengidentifikasi Petri net yang dibuat di PIPE. Salah satu tujuan dari identifikasi adalah membangun matriks incidence dan menentukan keadaan awal. Hal ini dilakukan dengan tujuan memudahkan dalam membuat Petri net dan Petri net yang dibuat dapat dianalisis dan disimulasikan dengan menggunakan fungsi-fungsi yang telah dibuat di Scilab. Proses identifikasi Petri net di PIPE diimplementasikan dalam fungsi readpipe. Input fungsi ini adalah file xml yang dihasilkan oleh PIPE. Output fungsi ini adalah matriks forward incidence, backward incidence, keadaan awal serta nama setiap place dan transisi di Petri net. Nama setiap place dan transisi masing-masing dinyatakan dengan vektor kolom yang mempunyai elemen sebanyak jumlah place dan transisi di Petri net. Elemen dari kedua vektor ini merupakan string. Berikut dituliskan contoh penggunaan fungsi readpipe untuk mengidentifikasi file queue.xml yang dibuat di PIPE. File ini berisi Petri net antrian sederhana yang telah dibahas pada bab sebelumnya. >str =.\queue.xml ; [ f,b, x0, np, nt ] = readpipe ( str ) ; >f, b, x0, np, nt // menampilkan hasil f =

230 b = ans = ans =! I Q B! ans =! a s c! Dari hasil yang diperoleh pada contoh sebelumnya dapat disimpulkan place pertama adalah I, place kedua adalah Q dan place ketiga adalah B. Urutan transisi dimulai dari yang pertama hingga ketiga adalah a, s dan c. Pada keadaan awal Petri net terdapat sebuah token pada place I sedangkan kedua place yang lain tidak mempunyai token Simulasi Petri net berbasis GUI Pada bagian ini dibahas implementasi dari simulasi Petri net dengan menggunakan fasilitas Graphical User Interface (GUI) yang ada di Scilab. Tujuan implementasi dalam bentuk GUI adalah memudahkan pengguna (user) dalam menjalankan program. Simulasi Petri net berbasis GUI diimplementasikan dalam fungsi petrinetsimulation. Dalam melakukan simulasi dibutuhkan informasi mengenai Petri net dengan keadaan awal sehingga input fungsi ini adalah matriks forward incidence, backward incidence dan keadaan awal. Pengguna lebih mudah melihat nama place atau nama transisi daripada indeks place dan indeks transisi yang berupa angka-angka. Nama setiap place dan transisi di Petri net dijadikan input fungsi petrinetsimulation agar pengguna dapat melihat nama place dan transisi. Output fungsi ini adalah keadaan Petri net yang terakhir yaitu saat keluar dari program. >f = [0 0 1;1 0 0;0 1 0 ] ; b = eye (3,3); m = [ 0 ; 1 ; 0 ] ; >np = [ M ; H ; K ] ; nt = [ mh ; hk ; km ] ; >m = petrinetsimulation ( f, b,m, np, nt ) ; Matriks forward incidence, backward incidence, keadaan awal, nama setiap place dan transisi harus didefinisikan terlebih dahulu sebelum menja- 202

231 lankan fungsi petrinetsimulation. Nama setiap place dan transisi masingmasing berbentuk vektor kolom dengan elemen berupa string. Setelah menjalankan fungsi petrinetsimulation seperti pada contoh maka akan muncul tampilan seperti pada Gambar 5.1. Gambar 5.1 Bobot Arc dari Transisi ke Place yaitu Elemen Tidak Nol pada Matriks Forward Incidence Pada Gambar 5.1 terlihat arc Petri net yang berasal dari transisi menuju ke place. Bilangan yang terletak di sebelah kanan merupakan bobot arc. Berdasarkan keterangan pada bab sebelumnya dapat disimpulkan bahwa bobot arc ini merupakan elemen tidak nol pada matriks forward incidence. Matriks forward incidence tidak ditampilkan seluruhnya agar tidak membingungkan pengguna dengan deretan angka-angka. Bobot arc pada Gambar 5.1 dapat diubah. Ingat bobot arc pada Petri net menunjukkan jumlah arc yang menghubungkan place dan transisi sehingga bobot arc merupakan bilangan bulat taknegatif. Jika ingin menghapus arc tertentu maka bobot arc tersebut diubah menjadi nol. Program ini dapat diakhiri dengan menekan tombol cancel. Dengan menekan tombol finish maka informasi bobot arc pada matriks forward incidence disimpan dan proses dilanjutkan ke bagian selanjutnya yaitu matriks backward incidence. Tampilan seperti pada Gambar 5.2 akan muncul setelah tombol finish ditekan. Informasi yang ditampilkan pada matriks backward incidence pada dasarnya hampir sama dengan informasi yang ditampilkan pada matriks forward incidence. Perbedaan keduanya terletak pada jenis arc yang ditampilkan. Matriks forward incidence menampilkan arc yang berasal dari transisi menuju place sedangkan matriks backward incidence menampilkan arc yang berasal dari place menuju transisi. 203

232 Perhatikan keterangan arc yang dituliskan di sebelah kiri bobotnya pada Gambar 5.2. Penulisan M => mh menyatakan arc yang menghubungkan place M ke transisi mh. Gambar 5.2 Bobot Arc dari Place ke Transisi yaitu Elemen Tidak Nol pada Matriks Backward Incidence Tampilan pada Gambar 5.2 hampir sama dengan Gambar 5.1. Perbedaan kedua gambar tersebut terletak pada arah arc seperti telah dibahas sebelumnya. Jika tombol finish ditekan maka informasi bobot arc yang telah dituliskan akan disimpan dan dilanjutkan dengan menentukan keadaan awal Petri net. Keadaan awal Petri net merupakan jumlah token pada setiap place saat inisialisasi. Keadaan pada Petri net juga disebut marking. Tampilan pada Gambar 5.3 menginformasikan keadaan awal Petri net yaitu jumlah token pada setiap place saat inisialisasi. Keadaan awal Petri net dapat diubah dengan menginputkan jumlah token awal pada place yang diinginkan. Ingat jumlah token pada Petri net merupakan bilangan bulat taknegatif. Keadaan awal yang ada di Gambar 5.3 merupakan keadaan awal yang diinputkan sebagai parameter x0 pada fungsi petrinetsimulation. Dengan menekan tombol finish maka informasi keadaan awal Petri net telah diperoleh. Hingga saat ini informasi yang telah diperoleh adalah matriks forward incidence, backward incidence dan keadaan awal Petri net. Simulasi Petri net sudah dapat dilakukan dengan menggunakan ketiga informasi yang telah diperoleh. Langkah pertama yang dilakukan dalam melakukan simulasi Petri net adalah menentukan transisi yang enabled. Jika terdapat transisi yang enabled maka simulasi dapat dilakukan dengan memfire transisi yang enabled. Jika semua transisi tidak enabled maka simulasi tidak bisa dilakukan karena 204

233 tidak ada transisi yang enabled. Pada keadaan ini Petri net mengalami deadlock seperti telah dibahas pada bab sebelumnya. Gambar 5.3 Jumlah Token Awal pada Setiap Place di Petri net Dengan keadaan awal yang telah ditentukan pada langkah sebelumnya dapat ditentukan transisi yang enabled dengan fungsi findenabled. Fungsi ini menghasilkan indeks transisi yang enabled di Petri net. Pada Gambar 5.4 ditampilkan nama transisi yang enabled untuk memudahkan pengguna dalam memilih transisi yang akan difire. Gambar 5.4 Nama Transisi yang Enabled Pada Gambar 5.4 terdapat nama transisi yang enabled, pada kasus ini satu-satunya transisi yang enabled adalah hk. Ketika salah satu transisi yang enabled dipilih kemudian tombol ok ditekan maka akan muncul tampilan keadaan Petri net setelah transisi difire seperti pada Gambar

234 Tampilan berikutnya adalah urutan pemfirean transisi yang pernah dilakukan sebelumnya seperti terlihat pada Gambar 5.5. Selain menampilkan nama transisi, informasi lain yang diperlihatkan adalah perubahan keadaan yang terjadi pada Petri net. Pada bagian atas terdapat urutan place yang digunakan untuk menyatakan vektor keadaan Petri net. Urutan ke nol menyatakan keadaan awal Petri net dan pada saat ini tidak ada transisi yang difire. Transisi yang difire pertama kali adalah hk yang menyebabkan keadaan berubah menjadi [0;0;1]. Gambar 5.5 Urutan Transisi yang Difire Sebelumnya Jika tidak ada transisi yang enabled maka tidak ada transisi yang bisa difire dan Petri net mengalami deadlock. Tampilan yang muncul bukan seperti Gambar 5.4 yang menginformasikan daftar transisi yang enabled melainkan Gambar 5.6 yang menginformasikan bahwa tidak ada transisi yang enabled. Proses dilanjutkan dengan menampilkan matriks forward incidence seperti pada Gambar 5.1 setelah menekan tombol ok. Gambar 5.6 Petri net Mengalami Deadlock Proses ini dilakukan berulang-ulang hingga pengguna menekan cancel atau Petri net dalam kondisi deadlock. Proses mensimulasikan Petri net men- 206

235 jadi permasalahan mudah dengan menggunakan fungsi petrinetsimulation. Ada satu hal yang sulit yaitu membentuk input dari fungsi ini yang terdiri dari matriks forward incidence, backward incidence, keadaan awal, nama place dan nama transisi. Salah satu cara yang mudah dalam membuat Petri net adalah menggunakan PIPE. Pada bagian selanjutnya dibahas simulasi Petri net yang dibuat dari PIPE. Simulasi ini diimplementasikan dengan menggunakan GUI yang disediakan di Scilab Simulasi Petri net yang dibuat dari PIPE Pada bagian ini dibahas implementasi dari simulasi Petri net yang dibuat di PIPE. Proses ini diimplementasikan dalam fungsi pipesimulation. Salah satu tujuan dari implementasi fungsi ini adalah mempermudah pembuatan Petri net. Proses yang dilakukan oleh fungsi ini terdiri dari tiga tahap. Tahap yang pertama adalah meminta pengguna menginputkan file xml berisi Petri net yang dibuat di PIPE. Tahap yang kedua adalah mengidentifikasi file xml yang telah diinputkan dengan menjalankan fungsi readpipe. Tahap yang terakhir adalah mensimulasikan Petri net dengan fungsi petrinetsimulation. Fungsi pipesimulation tidak membutuhkan input dan tidak menghasilkan output sehingga cara menjalankan fungsi ini relatif mudah. Cara menjalankan fungsi ini adalah mengetikkan pipesimulation pada command window di Scilab seperti contoh berikut. >pipesimulation ; // menjalankan fungsi pipesimulation Langkah pertama yang dilakukan adalah menginputkan file xml berisi Petri net yang dibuat dengan PIPE. Tampilan ini mirip dengan tampilan yang muncul ketika memilih suatu file yang akan dibuka menggunakan perangkat lunak tertentu. Proses dilanjutkan dengan menjalankan fungsi petrinetsimulation setelah memilih file xml yang akan disimulasikan. Input fungsi tersebut diperoleh dari identifikasi file xml dengan menggunakan fungsi readpipe yang telah dibahas sebelumnya. Tampilan yang pertama adalah arc yang menghubungkan transisi ke place beserta bobotnya seperti pada Gambar 5.1. Kemudian diteruskan dengan menampilkan arc yang menghubungkan place ke transisi beserta bobotnya. Langkah berikutnya adalah menentukan keadaan awal Petri net yaitu jumlah token pada setiap place saat inisialisasi yang terlihat seperti Gambar

236 Fungsi findenabled dijalankan untuk mengetahui transisi yang enabled pada keadaan awal. Jika tidak ada transisi yang enabled maka kembali ke matriks forward incidence. Jika terdapat satu atau lebih transisi yang enabled maka dilanjutkan dengan menampilkan nama transisi yang enabled seperti pada Gambar 5.4. Pengguna dapat memilih salah satu transisi enabled yang akan difire. Tampilan berikutnya adalah keadaan Petri net setelah transisi telah difire. Rangkaian langkah ini dilakukan terus-menerus hingga pengguna menekan cancel. Proses ini tidak bisa diteruskan ketika Petri net mengalami deadlock. Gambar 5.7 Memilih File xml yang Dibuat dengan PIPE Pada bagian berikutnya dibahas implementasi membangun coverability tree dari Petri net yang berbasis GUI. Salah satu tujuan implementasi ini adalah pengguna dapat mengetahui bentuk coverability tree dengan mudah dan cepat Representasi Grafik dari Coverability Tree Metode membangun coverability tree telah diimplementasikan dalam fungsi buildtree yang telah dibahas pada bagian sebelumnya. Output yang dihasilkan oleh fungsi tersebut adalah coverability tree yang dinyatakan dengan matriks node tree dan id parent tran. Representasi dalam matriks tidak bisa dipahami dengan mudah dan cepat sehingga pada bagian ini dibahas representasi grafik dari coverability tree. Permasalahan ini diimplementasikan dalam fungsi covtree. Input fungsi ini adalah matriks forward incidence, 208

237 backward incidence, keadaan awal dan nama transisi. Nama transisi dijadikan input karena setiap edge pada coverability tree mempunyai bobot sebuah transisi. Langkah pertama yang dilakukan ketika fungsi covtree dijalankan adalah membangun coverability tree dengan menggunakan fungsi buildtree. Fungsi make graph yang sudah disediakan oleh Scilab digunakan untuk membuat representasi grafik dari coverability tree. Matriks forward incidence, backward incidence, keadaan awal dan nama transisi didefinisikan terlebih dahulu sebelum menjalankan fungsi covtree. >f = [0 0 1;1 0 0;0 1 0 ] ; b = [0 1 0;0 1 0;0 0 1 ] ; >x0 = [ 1 ; 0 ; 0 ] ; nt = [ a ; s ; c ] ; >covtree ( f, b, x0, nt ) ; Variabel f dan b masing-masing menyatakan matriks forward incidence dan backward incidence. Vektor kolom yang berisi keadaan awal Petri net dinyatakan dalam variabel x0. Variabel nt merupakan vektor kolom yang berisi nama setiap transisi di Petri net. Gambar 5.8 Coverability Tree Petri net Antrian Sederhana Gambar 5.8 yaitu representasi grafik dari coverability tree untuk Petri net antrian sederhana akan muncul setelah fungsi covtree dijalankan. Notasi Inf pada Scilab menyatakan takhingga. Pada coverability tree notasi yang 209

238 digunakan untuk menyatakan takhingga adalah ω sehingga notasi ω pada coverability tree dinyatakan dengan Inf pada Scilab. Perhatikan bahwa coverability tree pada Gambar 5.8 sama dengan coverability tree pada Gambar Node yang terletak di paling atas merupakan node root. Di bawah setiap node terdapat keadaan yang dinyatakan oleh node tersebut dan pada setiap edge terdapat nama transisi yang menjadi bobot dari edge tersebut. Dalam menjalankan fungsi covtree, matriks forward incidence, backward incidence, keadaan awal dan nama transisi didefinisikan terlebih dahulu. Pendefinisian empat hal tersebut di Scilab dapat digantikan dengan mengidentifikasi Petri net yang dibuat di PIPE. Hal ini dilakukan agar pengguna lebih mudah dalam membangun coverability tree dari Petri net. Proses membangun coverability tree dari Petri net yang dibuat di PIPE diimplementasikan dalam fungsi covpipe. Fungsi ini tidak membutuhkan input dan tidak menghasilkan output sehingga fungsi covpipe dapat dijalankan dengan mengetikkan nama fungsi di Scilab. >covpipe ; Langkah pertama yang dilakukan di fungsi covpipe adalah menentukan file xml berisi Petri net yang dibuat di PIPE. File xml yang dipilih kemudian diidentifikasi menggunakan fungsi readpipe. Output yang diperoleh dari fungsi readpipe digunakan sebagai input untuk fungsi covtree. Pada bagian selanjutnya dibahas implementasi simulasi jumlah pengguna di persimpangan berbasis GUI. Implementasi ini merupakan pengembangan dari fungsi intersection dan intersectionext yang telah dibahas pada bagian sebelumnya Simulasi Jumlah Pengguna Berbasis GUI Matriks input yang dibutuhkan seperti mean, varian dan kondisi awal didefinisikan terlebih dahulu sebelum menjalankan fungsi intersection dan intersectionext. Latar belakang pembuatan fungsi di bagian ini adalah pendefinisian matriks input dengan ukuran yang sesuai cukup menyulitkan dan menyita waktu. Pada bagian ini pendefinisian matriks input yang berbasis GUI untuk fungsi intersection dan intersectionext masing-masing diimplementasikan dalam fungsi intersectiongui dan intersectionguiext. Diharapkan dengan menggunakan fungsi yang berbasis GUI, pengguna menjadi lebih mudah dalam menjalankan kedua fungsi tersebut. 210

239 Cara menjalankan fungsi intersectiongui dan intersectionguiext cukup mudah yaitu menuliskan nama fungsi pada command window. Hal ini dapat dilakukan karena kedua fungsi tersebut tidak membutuhkan input dan tidak menghasilkan output. >intersectiongui ; // kedatangan distribusi normal >intersectionguiext ; // kedatangan d i stribusi uniform Langkah pertama yang dilakukan oleh fungsi intersectiongui dan intersectionguiext adalah menentukan jumlah jalur di persimpangan dan waktu simulasi dilakukan. Tampilan yang muncul di layar seperti yang terlihat di Gambar 5.9. Gambar 5.9 Menginputkan Jumlah Jalur dan Waktu Simulasi Waktu simulasi bisa diinputkan bersama-sama dengan jumlah jalur karena nilai dan ukuran waktu simulasi tidak tergantung jumlah jalur. Matriks input tidak bisa diinputkan bersama-sama dengan jumlah jalur karena ukuran matriks input tergantung jumlah jalur di persimpangan. Proses selanjutnya adalah menginputkan matriks input dengan ukuran yang sesuai dengan jumlah jalur di persimpangan. Jumlah data yang harus diinputkan pada fungsi intersectiongui sebanyak 9 yaitu kondisi awal, mean kedatangan, varian kedatangan, mean keberangkatan ketika lampu lalulintas hijau menyala, varian keberangkatan ketika lampu lalulintas hijau menyala, maksimum lama lampu lalulintas hijau menyala, mean keberangkatan ketika lampu lalulintas kuning menyala, varian keberangkatan ketika lampu lalulintas kuning menyala dan maksimum lama lampu lalulintas kuning menyala. Jumlah nilai yang diinputkan untuk masingmasing data sebanyak jumlah jalur di persimpangan. Gambar 5.10 digunakan 211

240 untuk menginputkan data keadaan awal, mean kedatangan dan varian kedatangan. Jumlah nilai yang diinputkan untuk masing-masing data sebanyak 2 karena persimpangan mempunyai 2 jalur. Nilai untuk masing-masing jalur dipisahkan dengan tanda titik koma karena variabel yang digunakan untuk menyimpan setiap data merupakan vektor kolom. Jumlah data yang harus diinputkan pada fungsi intersectionguiext sebanyak 8. Data mean kedatangan dan varian kedatangan dihapus dan diganti dengan data maksimum kedatangan. Gambar 5.10 Menginputkan Data Kondisi Awal, Mean Kedatangan dan Varian Kedatangan pada Masing-Masing Jalur Nilai yang diinputkan untuk fungsi intersectiongui secara lengkap sebagai berikut. Pada kondisi awal terdapat 15 pengguna pada masing-masing jalur. Mean kedatangan dan varian kedatangan untuk jalur 1 masing-masing adalah 2 dan 1. Nilai mean kedatangan dan varian kedatangan pada jalur 2 sama dengan jalur 1. Pada saat lampu lalulintas hijau menyala pada jalur 1 atau jalur 2 maka mean keberangkatan pengguna pada masing-masing jalur sebesar 5 dengan varian 2. Ketika lampu lalulintas kuning menyala pada jalur 1 maka mean keberangkatan pengguna sebesar 3 dengan varian 1. Nilai mean keberangkatan dan variannya saat lampu lalulintas kuning menyala di jalur 2 sama dengan jalur 1. Lama maksimum lampu lalulintas hijau menyala pada jalur 1 dan jalur 2 masing-masing adalah 6 satuan waktu. Lama lampu lalulintas kuning menyala pada jalur 1 dan jalur 2 masing-masing adalah 4 satuan waktu. Fungsi intersectiongui menghasilkan grafik perubahan pengguna pada setiap jalur untuk waktu tertentu seperti terlihat pada Gambar Sumbu x menyatakan waktu dan sumbu y menyatakan jumlah pengguna. Gra- 212

241 fik yang berwarna biru merupakan jumlah pengguna pada jalur 1 dan grafik yang berwarna hijau merupakan jumlah pengguna pada jalur 2. Gambar 5.11 Simulasi Jumlah Pengguna dengan Kedatangan Berdistribusi Normal Grafik yang dihasilkan oleh fungsi intersectionguiext hampir sama dengan Gambar 5.11 sehingga tidak ditampilkan disini. Jumlah pengguna di setiap jalur pada setiap waktu dapat diketahui dengan menggunakan kedua fungsi yang telah dibahas. Lama masing-masing lampu lalulintas menyala di setiap jalur tidak bisa diperoleh dengan menggunakan kedua fungsi tersebut Simulasi Lampu Lalulintas di Persimpangan Pada bagian ini dibahas simulasi lampu lalulintas di persimpangan. Hal ini bertujuan mengetahui jumlah pengguna pada masing-masing jalur dan lama masing-masing lampu lalulintas menyala pada setiap jalur di persimpangan. Ada dua macam implementasi yang dibahas pada bagian ini yaitu kedatangan berdistribusi normal dan kedatangan berdistribusi uniform. Kedatangan berdistribusi normal diimplementasikan dalam fungsi lightsgui. Input fungsi ini hampir sama dengan input fungsi intersection yaitu data, wsim dan indlampu. Parameter input data dan wsim yang digunakan disini sama dengan parameter input yang digunakan pada fungsi intersection. 213

242 Jumlah maksimum lampu lalulintas yang ditampilkan sebanyak 42. Persimpangan yang disimulasi boleh mempunyai lebih dari 42 jalur sehingga tidak semua lampu lalulintas dapat ditampilkan. Parameter input indlampu digunakan untuk mengatur lampu lalulintas di jalur mana yang ditampilkan. Variabel indlampu merupakan vektor yang berisi indeks jalur pada persimpangan. Ingat indeks jalur pada persimpangan dimulai dari 1. Ketiga input didefinisikan terlebih dahulu sebelum menjalankan fungsi lightsgui. >x0 = [ 1 5 ; 1 5 ] ; mu = [2 5 3;2 5 3 ] ; maks = [6 4;6 4 ] ; >sigma2 = [1 2 1;1 2 1 ] ; data = [ x0 mu sigma2 maks ] ; >wsim = 13; lightsgui ( data, wsim, 1 : 2 ) ; Ekspresi 1:2 digunakan untuk membentuk vektor baris dengan elemen 1 hingga 2 yang dapat diganti dengan[1 2]. Gambar 5.12 merupakan keadaan lampu lalulintas dan jumlah pengguna setelah simulasi selesai dilakukan. Bilangan di atas lampu lalulintas menunjukkan indeks jalur di persimpangan. Bilangan yang terletak pada lampu lalulintas yang menyala menyatakan sisa waktu lampu lalulintas tersebut menyala. Jumlah pengguna di setiap jalur dinyatakan dalam bilangan di bawah lampu lalulintas. Gambar 5.12 Simulasi Lampu Lalulintas di Persimpangan dengan Kedatangan Berdistribusi Normal Gambar 5.12 menyatakan setelah 13 satuan waktu terdapat 10 pengguna pada jalur 1 dan 9 pengguna pada jalur 2. Lampu lalulintas hijau di jalur 1 akan menyala selama 4 satuan waktu dan lampu lalulintas merah di jalur 2 akan menyala selama 6 satuan waktu. Berdasarkan keterangan sebelumnya dapat disimpulkan lampu lalulintas kuning di jalur 1 akan menyala selama 2 satuan waktu. Simulasi lampu lalulintas dengan kedatangan berdistribusi uniform diimplementasikan dalam fungsi lightsguiext. Input fungsi ini sama dengan 214

243 fungsi lightsgui yaitu data, wsim dan indlampu. Perbedaan terletak pada ukuran matriks data yang diinputkan. Matriks data yang diinputkan pada fungsi ini sama dengan matriks yang menjadi input fungsi intersectionext. Variabel data, wsim dan indlampu didefinisikan terlebih dahulu sebelum menjalankan fungsi ini. >x0 = [ 1 5 ; 1 5 ] ; mu = [5 3;5 3 ] ; sigma2 = [2 1;2 1 ] ; >maks = [6 4;6 4 ] ; dmaks = [ 4 ; 4 ] ; >data = [ x0 mu sigma2 maks dmaks ] ; wsim = 13; >lightsguiext ( data, wsim, 1 : 2 ) ; Pada contoh sebelumnya variabel indlampu bernilai [1 2] yaitu vektor baris dengan dua elemen. Gambar 5.13 menyatakan keadaan persimpangan setelah simulasi dilakukan selama 13 satuan waktu. Makna setiap bilangan pada gambar tersebut sama dengan makna bilangan pada Gambar 5.12 sehingga tidak dibahas lagi pada bagian ini. Gambar 5.13 Simulasi Lampu Lalulintas di Persimpangan dengan Kedatangan Berdistribusi Uniform Dengan menggunakan kedua fungsi yang telah dibahas pada bagian ini, informasi mengenai lama lampu lalulintas menyala dapat dilihat. Hal yang merepotkan adalah mendefinisikan matriks yang menjadi input dari fungsi lightsgui atau lightsguiext. Pada bagian berikutnya dibahas bagaimana implementasi pembuatan fungsi yang berbasis GUI untuk mendefinisikan input dari kedua fungsi tersebut. Diharapkan dengan menggunakan implementasi ini maka proses yang dilakukan untuk mensimulasikan lampu lalulintas di persimpangan menjadi lebih sederhana dan lebih mudah. Pendefinisian input untuk fungsi lightsgui diimplementasikan dalam fungsi lightsimulation dan pendefinisian input untuk fungsi lightsguiext diimplementasikan dalam fungsi lightsimulationext. 215

244 5.22 Simulasi Lampu Lalulintas Berbasis GUI Fungsi lightsimulation dan lightsimulationext tidak membutuhkan input dan tidak menghasilkan output sehingga cara menjalankan kedua fungsi tersebut cukup mudah. Kedua fungsi tersebut dapat dijalankan dengan mengetikkan nama kedua fungsi tersebut pada command window. >lightsimulation ; // kedatangan d i stribusi normal >lightsimulationext ; // kedatangan d istribusi uniform Proses yang dilakukan oleh kedua fungsi tersebut hampir sama sehingga pada bagian ini dibahas fungsi lightsimulation saja. Perbedaan fungsi lightsimulation dan lightsimulationext terletak pada pembuatan matriks data. Hal ini pernah terjadi sebelumnya yaitu saat mengimplementasikan fungsi intersectiongui dan intersectionguiext. Cara yang digunakan pada bagian ini sama dengan cara yang digunakan pada saat mengimplementasikan kedua fungsi tersebut. Gambar 5.14 Menginputkan Jumlah Lampu Lalulintas yang Ditampilkan Urutan langkah yang dilakukan oleh fungsi lightsimulation hampir sama dengan fungsi intersectiongui dan urutan langkah yang dilakukan oleh fungsi lightsimulationext hampir sama dengan intersectionguiext. Langkah yang pertama adalah menginputkan jumlah jalur di persimpangan dan lama simulasi dilakukan. Selanjutnya memasukkan informasi yang diperlukan misalnya keadaan awal, mean kedatangan, varian kedatangan dan lain lain. Tampilan yang digunakan pada kedua langkah ini sama dengan tampilan yang digunakan oleh fungsi intersectiongui dan intersectionguiext. Langkah berikutnya adalah menentukan jumlah lampu lalulintas yang ditampilkan di layar seperti terlihat pada Gambar Jumlah lampu lalu- 216

245 lintas yang ditampilkan harus kurang dari atau sama dengan 42 buah. Ingat jumlah lampu lalulintas yang ditampilkan tidak harus sama dengan jumlah jalur di persimpangan. Jumlah jalur di persimpangan boleh lebih dari 42 dengan resiko tidak semua lampu lalulintas bisa ditampilkan. Gambar 5.15 Memilih Lampu Lalulintas yang Ditampilkan Proses selanjutnya adalah menentukan lampu lalulintas pada jalur mana yang ditampilkan. Tampilan yang muncul di layar untuk proses ini terlihat pada Gambar Ingat indeks jalur pada persimpangan dimulai dari 1. Gambar 5.15 menyatakan lampu lalulintas yang ditampilkan adalah lampu lalulintas pada jalur 1 dan jalur 2. Tampilan yang muncul di layar terlihat seperti Gambar 5.12 dan Gambar Selanjutnya dilakukan evaluasi terhadap hasil simulasi jumlah pengguna pada persimpangan dengan menggunakan kedatangan berdistribusi normal dan uniform diskrit Evaluasi Hasil Simulasi Pada bagian ini dibahas evaluasi dari hasil simulasi jumlah pengguna di persimpangan yang telah diimplementasikan sebelumnya. Evaluasi ini meliputi waktu komputasi, jumlah maksimum pengguna dan mean pengguna pada setiap jalur di persimpangan. Data mean pengguna dan jumlah maksimum pengguna yang diperoleh dari simulasi dapat digunakan untuk menentukan kestabilan sistem. Simulasi dilakukan sebanyak 32 kali dengan input yang sama agar hasil yang diperoleh mendekati kebenaran. Simulasi yang pertama dilakukan adalah simulasi jumlah pengguna di persimpangan dengan kedatangan berdistribusi normal. 217

246 Kedatangan Berdistribusi Normal Pada simulasi yang pertama input yang diberikan sama dengan input yang diberikan pada saat contoh penggunaan fungsi intersection pada bagian sebelumnya. Persimpangan terdiri dari 2 jalur dengan mean dan varian kedatangan pada masing-masing 2 dan 1. Mean dan varian pelayanan saat lampu lalulintas hijau menyala masing-masing bernilai 5 dan 2. Mean dan varian saat lampu lalulintas kuning menyala masing-masing bernilai 3 dan 1. Maksimum lama lampu lalulintas hijau dan kuning menyala selama 6 dan 4 satuan waktu. Pada keadaan awal terdapat 15 pengguna pada setiap jalur. Langkah pertama yang dilakukan adalah mendefinisikan variabel yang digunakan sebagai input. Variabel ini terdiri dari x0, mu, sigma2, maks dan wsim. Variabel wsim pada simulasi ini menyatakan jumlah iterasi waktu. Variabel maks berisi maksimum lama lampu lalulintas menyala. >x0 = [ 1 5 ; 1 5 ] ; mu = [2 5 3;2 5 3 ] ; maks = [6 4;6 4 ] ; >sigma2 = [1 2 1;1 2 1 ] ; wsim = 5 10ˆ5; Variabel yang telah didefinisikan kemudian digunakan sebagai input untuk fungsi intersection. Input fungsi intersection adalah data dan wsim. Variabel data dapat didefinisikan dengan menggunakan variabel yang telah didefinisikan sebelumnya yaitu x0, mu, sigma2 dan maks. >data = [ x0 mu sigma2 maks ] ; >pgn = intersection ( data, wsim ) ; Hasil yang ingin diperoleh adalah mean jumlah pengguna dan maksimum jumlah pengguna. Fungsi untuk menghitung mean dan maksimum sudah tersedia di Scilab sehingga tidak perlu membuat program terlebih dahulu. Fungsi mean digunakan untuk mencari mean dan fungsi max digunakan untuk mencari maksimum. >meanpgn = mean(pgn (:,1:300000), c ) ; >maxpgn = max(pgn, c ) ; Contoh sebelumnya bertujuan mencari mean jumlah pengguna untuk lama simulasi satuan waktu dan menghitung maksimum jumlah pengguna untuk lama simulasi satuan waktu. Variabel meanpgn dan maxpgn merupakan vektor kolom dengan elemen sebanyak 2. Elemen pertama menyatakan informasi untuk jalur pertama dan elemen kedua menyatakan informasi untuk jalur kedua. Pada simulasi ini nilai mean jumlah pengguna dan maksimum jumlah pengguna dihitung setiap kelipatan 10 5 satuan waktu. 218

247 Urutan langkah yang digunakan untuk melakukan simulasi sama dengan sebelumnya sehingga pada bagian berikutnya urutan langkah tidak dibahas secara lengkap. Hal yang dibahas adalah input yang diberikan dan evaluasi hasil yang diperoleh dari simulasi. Tabel 5.1 Mean Jumlah Pengguna pada Simulasi Pertama dengan Kedatangan Berdistribusi Normal Lama Sim Jalur Jalur Nilai yang terdapat pada Tabel 5.1 merupakan mean dari hasil simulasi sebanyak 32 kali. Diharapkan dengan simulasi dilakukan sebanyak 32 kali maka hasil yang diperoleh cukup akurat sehingga kesimpulan yang diperoleh mendekati kebenaran. Terlihat pada Tabel 5.1 bahwa nilai mean jumlah pengguna tidak mengalami banyak perubahan. Kenyataan ini dapat digunakan sebagai dasar untuk menyimpulkan bahwa sistem stabil. Jika nilai mean semakin lama semakin besar maka dapat disimpulkan sistem tidak stabil. Nilai mean saat lama simulasi satuan waktu merupakan perkiraan mean jumlah pengguna pada setiap waktu. Selanjutnya dihitung maksimum jumlah pengguna pada setiap jalur untuk lama simulasi yang berbeda-beda berdasarkan simulasi yang telah dilakukan sebelumnya. Tujuan dilakukan hal ini adalah menentukan perkiraan maksimum jumlah pengguna pada setiap jalur. Tabel 5.2 Maksimum Jumlah Pengguna pada Simulasi Pertama dengan Kedatangan Berdistribusi Normal Lama Sim Jalur Jalur Tabel 5.2 merupakan maksimum jumlah pengguna yang diperoleh dari simulasi yang pertama. Jelas bahwa nilai maksimum dari jumlah pengguna untuk waktu simulasi yang lama selalu lebih dari atau sama dengan nilai maksimum dari jumlah pengguna untuk waktu simulasi yang sebentar. Perhatikan bahwa penambahan nilai maksimum jumlah pengguna secara umum semakin kecil untuk waktu yang semakin lama. Fakta ini menunjukkan bahwa nilai maksimum jumlah pengguna konvergen. Waktu yang dibutuhkan untuk melakukan simulasi selama satuan waktu adalah detik. 219

248 Mean Keberangkatan Ketika Lampu Hijau Menyala Simulasi yang kedua bertujuan mengetahui pengaruh mean keberangkatan saat lampu lalulintas hijau menyala terhadap mean jumlah pengguna dan maksimum jumlah pengguna. Input untuk simulasi yang kedua sama dengan simulasi yang pertama kecuali mean keberangkatan saat lampu lalulintas hijau menyala pada kedua jalur yang bernilai 8. Hasil simulasi yang kedua akan dibandingkan dengan hasil simulasi pertama. >x0 = [ 1 5 ; 1 5 ] ; mu = [2 8 3;2 8 3 ] ; maks = [6 4;6 4 ] ; >sigma2 = [1 2 1;1 2 1 ] ; wsim = 5 10ˆ5; Perintah di atas digunakan untuk mendefinisikan variabel input untuk fungsi intersection. Perhatikan variabel input yang digunakan pada simulasi ini sama dengan sebelumnya. Langkah berikutnya sama dengan bagian sebelumnya sehingga tidak dibahas di bagian ini. Tabel 5.3 berisi informasi mean jumlah pengguna dari hasil simulasi. Tabel 5.3 Mean Jumlah Pengguna pada Simulasi Kedua dengan Kedatangan Berdistribusi Normal Lama Sim Jalur Jalur Nilai pada Tabel 5.3 lebih kecil daripada nilai di Tabel 5.1 sehingga dapat disimpulkan peningkatan nilai mean keberangkatan saat lampu lalulintas hijau menyala menyebabkan nilai mean jumlah pengguna berkurang. Mean pengguna pada Tabel 5.3 tidak mengalami banyak perubahan sehingga sistem stabil. Berikutnya diteliti pengaruh peningkatan nilai mean keberangkatan saat lampu lalulintas hijau menyala terhadap maksimum jumlah pengguna pada jalur 1 dan jalur 2. Tabel 5.4 Maksimum Jumlah Pengguna pada Simulasi Kedua dengan Kedatangan Berdistribusi Normal Lama Sim Jalur Jalur Berdasarkan nilai yang terdapat pada Tabel 5.4 maka diperoleh kesimpulan peningkatan mean keberangkatan saat lampu lalulintas hijau menyala menyebabkan maksimum jumlah pengguna pada jalur 1 dan jalur 2 220

249 mengalami penurunan. Jadi dari simulasi yang kedua diperoleh kesimpulan bahwa peningkatan mean keberangkatan saat lampu lalulintas hijau menyala menyebabkan mean jumlah pengguna dan maksimum jumlah pengguna berkurang. Waktu yang dibutuhkan untuk melaksanakan simulasi selama satuan waktu adalah detik. Perbandingan simulasi pertama dan simulasi kedua dapat dilakukan menggunakan grafik selain menggunakan tabel seperti sebelumnya. Jumlah grafik yang diperoleh sebanyak 2 yaitu grafik jumlah pengguna pada jalur pertama dan grafik jumlah pengguna pada jalur kedua. Pada Gambar 5.16 grafik jumlah pengguna pada jalur pertama terletak di atas dan grafik jumlah pengguna pada jalur kedua terletak di bawah. Grafik yang berwarna biru menyatakan jumlah pengguna pada simulasi yang pertama dan grafik yang berwarna hijau menyatakan jumlah pengguna pada simulasi yang kedua. Simulasi jumlah pengguna dilakukan selama 100 satuan waktu. Gambar 5.16 Perbandingan Jumlah Pengguna Simulasi yang Pertama dan Kedua Terlihat pada Gambar 5.16 bahwa jumlah pengguna pada simulasi yang kedua hampir selalu kurang dari jumlah pengguna pada simulasi yang pertama. Kenyataan ini dapat digunakan sebagai dasar untuk menyimpulkan mean jumlah pengguna pada simulasi yang kedua kurang dari mean jumlah pengguna pada simulasi yang pertama. 221

250 Jumlah Jalur di Persimpangan Pada bagian ini diteliti pengaruh penambahan jalur pada mean jumlah pengguna dan maksimum jumlah pengguna. Dengan mengetahui kedua informasi tersebut diharapkan kestabilan sistem dapat diketahui. Simulasi jumlah pengguna dilakukan pada persimpangan yang mempunyai 3 jalur. >x0 = [ 1 5 ; 1 5 ; 1 5 ] ; mu = [2 5 3;2 5 3;2 5 3 ] ; >sigma2 = [1 2 1;1 2 1;1 2 1 ] ; maks = [6 4;6 4;6 4 ] ; >wsim = 5 10ˆ5; Jumlah jalur di persimpangan sebanyak 3 sehingga matriks yang diinputkan mempunyai 3 baris. Berikut merupakan mean jumlah pengguna yang diperoleh dari simulasi dengan input yang telah didefinisikan sebelumnya. Tabel 5.5 Mean Jumlah Pengguna pada Simulasi Ketiga dengan Kedatangan Berdistribusi Normal Lama Sim Jalur 1 Jalur 2 Jalur , , , , , , , , , , , , , , , Dari Tabel 5.5 terlihat mean jumlah pengguna pada setiap jalur semakin lama semakin besar sehingga mean tidak menuju ke nilai tertentu atau tidak konvergen. Jadi sistem tidak stabil. Tabel 5.6 Maksimum Jumlah Pengguna pada Simulasi Ketiga dengan Kedatangan Berdistribusi Normal Lama Sim Jalur 1 Jalur 2 Jalur , , , , , , , , , , , , , , , Nilai maksimum jumlah pengguna pada masing-masing jalur semakin lama semakin besar seperti terlihat pada Tabel 5.6. Kenyataan ini menunjukkan maksimum jumlah pengguna tidak konvergen ke suatu nilai. Hasil ini 222

251 sesuai dengan kesimpulan bahwa sistem tidak stabil. Waktu yang dibutuhkan untuk melakukan simulasi selama satuan waktu adalah detik. Kesimpulan yang diperoleh pada bagian ini adalah penambahan jalur pada persimpangan dapat menyebabkan sistem menjadi tidak stabil. Tidak dapat disimpulkan setiap penambahan jalur menyebabkan sistem menjadi tidak stabil. Hal ini disebabkan kestabilan sistem dipengaruhi oleh nilai parameternya. Parameter pada sistem ini merupakan data pada setiap jalur di persimpangan. Hasil simulasi dapat direpresentasikan dalam grafik dengan menggunakan fungsi intersectiongui yang telah dibahas pada bagian sebelumnya. Terlihat dari Gambar 5.17 bahwa pada setiap periode tidak semua pengguna bisa terlayani dan semakin lama jumlah pengguna yang tidak terlayani semakin besar. Kenyataan ini dapat digunakan sebagai dasar untuk menentukan bahwa sistem tidak stabil. Gambar 5.17 mempunyai tiga grafik yang masingmasing menyatakan jumlah pengguna pada setiap jalur di persimpangan. Gambar 5.17 Simulasi Jumlah Pengguna dengan Kedatangan Berdistribusi Normal Pada bagian berikutnya dibahas cara menstabilkan sistem dengan mengubah parameternya. Parameter yang diubah adalah mean keberangkatan saat lampu lalulintas hijau menyala pada setiap jalur. 223

Penjadwalan Pelayanan di PLN dengan Menggunakan Petri Net dan Aljabar Max-Plus

Penjadwalan Pelayanan di PLN dengan Menggunakan Petri Net dan Aljabar Max-Plus Prosiding Seminar Nasional FMIPA Universitas Negeri Surabaya ISBN : 978-62-17146--7 Surabaya 24 November 212 Penjadwalan Pelayanan di PLN dengan Menggunakan Petri Net dan Aljabar Max-Plus Abstrak 1 Dwina

Lebih terperinci

Jl. Ir. M. Putuhena, Kampus Unpatti, Poka-Ambon ABSTRACT

Jl. Ir. M. Putuhena, Kampus Unpatti, Poka-Ambon   ABSTRACT Jurnal Barekeng Vol. 6 No. 1 Hal. 23 30 (2012) APLIKASI PETRI NET PADA SISTEM PEMBAYARAN TAGIHAN LISTRIK PT. PLN (Persero) RAYON AMBON TIMUR (The Application of Petri Net in Electricity Bill Payment System

Lebih terperinci

MODEL PETRI NET SISTEM PELAYANAN IGD RUMAH SAKIT

MODEL PETRI NET SISTEM PELAYANAN IGD RUMAH SAKIT MODEL PETRI NET SISTEM PELAYANAN IGD RUMAH SAKIT Oleh: Sri Rejeki Puri Wahyu Pramesthi Abstrak : Salah satu contoh antrian yang sering kita jumpai di dalam kehidupan sehari-hari, yakni antrian pelayanan

Lebih terperinci

PENJADWALAN KEBERANGKATAN KERETA API DI JAWA TIMUR DENGAN MENGGUNAKAN MODEL PETRINET DAN ALJABAR MAX-PLUS

PENJADWALAN KEBERANGKATAN KERETA API DI JAWA TIMUR DENGAN MENGGUNAKAN MODEL PETRINET DAN ALJABAR MAX-PLUS PENJADWALAN KEBERANGKATAN KERETA API DI JAWA TIMUR DENGAN MENGGUNAKAN MODEL PETRINET DAN ALJABAR MAX-PLUS AHMAD AFIF 1, SUBIONO 2 Institut Teknologi Sepuluh Nopember Surabaya, Institut Teknologi Sepuluh

Lebih terperinci

Pemodelan Sistem Pelayanan Penerbitan Surat Izin Mengemudi (SIM) Menggunakan Petri Net

Pemodelan Sistem Pelayanan Penerbitan Surat Izin Mengemudi (SIM) Menggunakan Petri Net echnology Science and Engineering Journal, Volume No June 7 E-ISSN: 59-6 Pemodelan Sistem Pelayanan Penerbitan Surat Izin Mengemudi (SIM) Menggunakan Petri Net Nur ini S. Program Studi Pendidikan Matematika

Lebih terperinci

Model Rantai Pasok Menggunakan Petri Net dan Aljabar Max Plus dengan Mempertimbangkan Prioritas Transisi

Model Rantai Pasok Menggunakan Petri Net dan Aljabar Max Plus dengan Mempertimbangkan Prioritas Transisi Model Rantai Pasok Menggunakan Petri Net dan Aljabar Max Plus dengan Mempertimbangkan Prioritas Transisi Shofiyatul Mufidah a, Subiono b a Program Studi Matematika FMIPA ITS Surabaya Jl. Arief Rahman Hakim,

Lebih terperinci

DIAGRAM UNIFIED MODELLING LANGUAGE UNTUK MEMODELKAN LAYANAN AUTOMATED TELLER MACHINE DENGAN PETRI NET

DIAGRAM UNIFIED MODELLING LANGUAGE UNTUK MEMODELKAN LAYANAN AUTOMATED TELLER MACHINE DENGAN PETRI NET Jurnal Barekeng Vol. 7 No. 1 Hal. 9 14 (2013) DIAGRAM UNIFIED MODELLING LANGUAGE UNTUK MEMODELKAN LAYANAN AUTOMATED TELLER MACHINE DENGAN PETRI NET DORTEUS LODEWYIK RAHAKBAUW Staf Jurusan Matematika FMIPA

Lebih terperinci

Rancangan dan analisis penjadwalan distribusi pada rantai pasok bahan bakar minyak menggunakan Petri Net

Rancangan dan analisis penjadwalan distribusi pada rantai pasok bahan bakar minyak menggunakan Petri Net Rancangan dan analisis penjadwalan distribusi pada rantai pasok bahan bakar minyak menggunakan Petri Net dan Aljabar Max-Plus Widdya P. Sierliawati, Subiono Widdya P. Sierliawati 1 *, Subiono 2 Institut

Lebih terperinci

MODEL PETRI NET TAK BERWAKTU PADA SISTEM PRODUKSI (BATCH PLANT) DAN SIMULASINYA DENGAN PIPE2

MODEL PETRI NET TAK BERWAKTU PADA SISTEM PRODUKSI (BATCH PLANT) DAN SIMULASINYA DENGAN PIPE2 MODEL PETRI NET TAK BERWAKTU PADA SISTEM PRODUKSI (BATCH PLANT) DAN SIMULASINYA DENGAN PIPE2 Siti Komsiyah Mathematics & Statistics Department, School of Computer Science, Binus University Jl. K.H. Syahdan

Lebih terperinci

PEMODELAN HYBRID SINTESIS PADA AUTOMATED MANUFACTURING SYSTEM (AMS) DENGAN MENGGUNAKAN PETRI NET

PEMODELAN HYBRID SINTESIS PADA AUTOMATED MANUFACTURING SYSTEM (AMS) DENGAN MENGGUNAKAN PETRI NET Jurnal Barekeng Vol 6 No 2 Hal 1 6 (2012) PEMODELAN HYBRID SINTESIS PADA AUTOMATED MANUFACTURING SYSTEM (AMS) DENGAN MENGGUNAKAN PETRI NET DORTEUS LODEWYIK RAHAKBAUW Staf Jurusan Matematika FMIPA UNPATTI

Lebih terperinci

Aljabar Maxplus dan Aplikasinya : Model Sistem Antrian

Aljabar Maxplus dan Aplikasinya : Model Sistem Antrian J. Math. and Its Appl. ISSN: 829-605X Vol. 6, No., May 2009, 49 59 Aljabar Maxplus dan Aplikasinya : Model Sistem Antrian Subiono Jurusan Matematika FMIPA ITS, Surabaya subiono2008@matematika.its.ac.id

Lebih terperinci

PRA-PEMPROSESAN DATA LUARAN GCM CSIRO-Mk3 DENGAN METODE TRANSFORMASI WAVELET DISKRIT

PRA-PEMPROSESAN DATA LUARAN GCM CSIRO-Mk3 DENGAN METODE TRANSFORMASI WAVELET DISKRIT TUGAS AKHIR - ST 1325 PRA-PEMPROSESAN DATA LUARAN GCM CSIRO-Mk3 DENGAN METODE TRANSFORMASI WAVELET DISKRIT ANGGREINI SUPRAPTI NRP 1305 100 005 Dosen Pembimbing Dr. Sutikno, S.Si, M.Si JURUSAN STATISTIKA

Lebih terperinci

PENERAPAN HYBRID SINTESIS PETRI NET DALAM SISTEM MANUFAKTUR

PENERAPAN HYBRID SINTESIS PETRI NET DALAM SISTEM MANUFAKTUR PENERAPAN HYBRID SINTESIS PETRI NET DALAM SISTEM MANUFAKTUR Dorteus L Rahakbauw 1, Subiono 2 1 Mahasiswa Magister Jurusan Matematika FMIPA ITS 2 Dosen Jurusan Matematika FMIPA ITS Surabaya, 60111 Email

Lebih terperinci

Laporan Fakta Analisis, Penyusunan Rencana Tata Ruang Wilayah Provinsi Maluku,

Laporan Fakta Analisis, Penyusunan Rencana Tata Ruang Wilayah Provinsi Maluku, Johnson, R., A., and Wichren, D., W., 2002, Applied Multivariate Statistical Analysis, 5 th Edition, Prentice Hall International Inc., New Jersey Karson, M., J., 1982, Multivariate Statistical Methods,

Lebih terperinci

BAB II MODEL KOMPUTASI FINITE STATE MACHINE. Pada Bab II akan dibahas teori dasar matematika yang digunakan

BAB II MODEL KOMPUTASI FINITE STATE MACHINE. Pada Bab II akan dibahas teori dasar matematika yang digunakan BAB II MODEL KOMPUTASI FINITE STATE MACHINE Pada Bab II akan dibahas teori dasar matematika yang digunakan dalam pemodelan sistem kontrol elevator ini, yaitu mengenai himpunan, relasi, fungsi, teori graf

Lebih terperinci

MASALAH VEKTOR EIGEN MATRIKS INVERS MONGE DI ALJABAR MAX-PLUS

MASALAH VEKTOR EIGEN MATRIKS INVERS MONGE DI ALJABAR MAX-PLUS MASALAH VEKTOR EIGEN MATRIKS INVERS MONGE DI ALJABAR MAX-PLUS Farida Suwaibah, Subiono, Mahmud Yunus Jurusan Matematika FMIPA Institut Teknologi Sepuluh Nopember Surabaya,, e-mail: fsuwaibah@yahoo.com

Lebih terperinci

APLIKASI PETRI NET PADA SISTEM PELAYANAN PASIEN RAWAT JALAN PESERTA ASKES DI RUMAH SAKIT UMUM DAERAH DR. HAULUSSY AMBON

APLIKASI PETRI NET PADA SISTEM PELAYANAN PASIEN RAWAT JALAN PESERTA ASKES DI RUMAH SAKIT UMUM DAERAH DR. HAULUSSY AMBON APLIKASI PETRI NET PADA SISTEM PELAYANAN PASIEN RAWAT JALAN PESERTA ASKES DI RUMAH SAKIT UMUM DAERAH DR. HAULUSSY AMBON Filiany S. Tutupary 1, Yopi A. Lesnussa 2 Jurusan Matematika Universitas Pattimura

Lebih terperinci

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort Setia Negara B. Tjaru (13508054) Program Studi Teknik Informatika ITB Bandung e-mail: if18054@students.if.itb.ac.id ABSTRAK Makalah ini

Lebih terperinci

TUGAS AKHIR SM 1330 GRUP ALTERNATING A. FARIS UBAIDILLAH NRP Dosen Pembimbing Dr. Subiono, MS.

TUGAS AKHIR SM 1330 GRUP ALTERNATING A. FARIS UBAIDILLAH NRP Dosen Pembimbing Dr. Subiono, MS. TUGAS AKHIR SM 1330 GRUP ALTERNATING A. FARIS UBAIDILLAH NRP 1202 100 043 Dosen Pembimbing Dr. Subiono, MS. JURUSAN MATEMATIKA Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Teknologi Sepuluh Nopember

Lebih terperinci

BAB IV PEMBAHASAN. Pada penelitian ini akan dibandingkan antara aplikasi teori graf fuzzy dan

BAB IV PEMBAHASAN. Pada penelitian ini akan dibandingkan antara aplikasi teori graf fuzzy dan BAB IV PEMBAHASAN Pada penelitian ini akan dibandingkan antara aplikasi teori graf fuzzy dan teori aljabar max-plus dalam pengaturan lampu lalu lintas di simpang empat Beran Kabupaten Sleman Provinsi Daerah

Lebih terperinci

Aplikasi Graf Fuzzy dan Aljabar Max-Plus untuk Pengaturan. Lampu Lalu Lintas di Simpang Empat Beran Kabupaten Sleman

Aplikasi Graf Fuzzy dan Aljabar Max-Plus untuk Pengaturan. Lampu Lalu Lintas di Simpang Empat Beran Kabupaten Sleman Aplikasi Graf Fuzzy dan Aljabar Max-Plus untuk Pengaturan Lampu Lalu Lintas di Simpang Empat Beran Kabupaten Sleman Provinsi Daerah Istimewa Yogyakarta Oleh: Arifudin Prabowo Kurniawan 13305144011 ABSTRAK

Lebih terperinci

TESIS APLIKASI FRAKTAL PADA POLA PENGELOMPOKAN DISTRIBUSI PARTIKEL UNTUK MENENTUKAN TEKSTUR TANAH

TESIS APLIKASI FRAKTAL PADA POLA PENGELOMPOKAN DISTRIBUSI PARTIKEL UNTUK MENENTUKAN TEKSTUR TANAH TESIS APLIKASI FRAKTAL PADA POLA PENGELOMPOKAN DISTRIBUSI PARTIKEL UNTUK MENENTUKAN TEKSTUR TANAH Linda Agustin Sugondho 1203.201.002 PROGRAM STUDI MAGISTER JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU

Lebih terperinci

Studi Penerapan Bus Sekolah di Jombang Menggunakan Aljabar Max-Plus

Studi Penerapan Bus Sekolah di Jombang Menggunakan Aljabar Max-Plus Studi Penerapan Bus Sekolah di Jombang Menggunakan Aljabar Max-Plus Nahlia Rakhmawati Dosen Pendidikan Matematika STKIP PGRI Jombang rakhmanahlia.stkipjb@gmail.com ABSTRAK Pada penelitian ini dirancang

Lebih terperinci

PEMBENTUKAN MODEL PETRI NET DAN ALJABAR MAX-PLUS PADA ALUR PELAYANAN NASABAH BANK

PEMBENTUKAN MODEL PETRI NET DAN ALJABAR MAX-PLUS PADA ALUR PELAYANAN NASABAH BANK PEMBENTUKAN MODEL PETRI NET DAN ALJABAR MAX-PLUS PADA ALUR PELAYANAN NASABAH BANK SKRIPSI untuk memenuhi sebagian persyaratan guna memperoleh derajat Sarjana S-1 Program Studi Matematika diajukan oleh

Lebih terperinci

BAB 2 LANDASAN TEORI. Koordinasi kerja biasanya lebih sering digunakan dalam proses bisnis logistik.

BAB 2 LANDASAN TEORI. Koordinasi kerja biasanya lebih sering digunakan dalam proses bisnis logistik. BAB 2 LANDASAN TEORI 2.1 Sistem Koordinasi Kerja Koordinasi kerja biasanya lebih sering digunakan dalam proses bisnis logistik. Namun, ada juga yang menggunakannya untuk masalah logistik di kantor. Tujuan

Lebih terperinci

TUGAS AKHIR SM 1330 PELABELAN SUPER EDGE GRACEFUL PADA WHEEL GRAPH WICAK BUDI LESTARI SOLICHAH NRP

TUGAS AKHIR SM 1330 PELABELAN SUPER EDGE GRACEFUL PADA WHEEL GRAPH WICAK BUDI LESTARI SOLICHAH NRP TUGAS AKHIR SM 1330 PELABELAN SUPER EDGE GRACEFUL PADA WHEEL GRAPH WICAK BUDI LESTARI SOLICHAH NRP 1203 109 025 Dosen Pembimbing Drs. CHAIRUL IMRON, MIkomp JURUSAN MATEMATIKA Fakultas Matematika dan Ilmu

Lebih terperinci

NILAI EIGEN DAN VEKTOR EIGEN MATRIKS TERREDUKSI DALAM ALJABAR MAKS-PLUS BESERTA APLIKASINYA

NILAI EIGEN DAN VEKTOR EIGEN MATRIKS TERREDUKSI DALAM ALJABAR MAKS-PLUS BESERTA APLIKASINYA NILAI EIGEN DAN VEKTOR EIGEN MATRIKS TERREDUKSI DALAM ALJABAR MAKS-PLUS BESERTA APLIKASINYA oleh BUDI AGUNG PRASOJO M0105001 SKRIPSI ditulis dan diajukan untuk memenuhi sebagian persyaratan memperoleh

Lebih terperinci

PENENTUAN JADWAL PRODUKSI PADA SISTEM PRODUKSI TIPE ASSEMBLY DI PERUSAHAAN ROTI GANEP SOLO MENGGUNAKAN ALJABAR MAKS-PLUS

PENENTUAN JADWAL PRODUKSI PADA SISTEM PRODUKSI TIPE ASSEMBLY DI PERUSAHAAN ROTI GANEP SOLO MENGGUNAKAN ALJABAR MAKS-PLUS PENENTUAN JADWAL PRODUKSI PADA SISTEM PRODUKSI TIPE ASSEMBLY DI PERUSAHAAN ROTI GANEP SOLO MENGGUNAKAN ALJABAR MAKS-PLUS oleh GALIH GUSTI SURYANING AKBAR M0111039 SKRIPSI ditulis dan diajukan untuk memenuhi

Lebih terperinci

PENGGUNAAN ALJABAR MAX PLUS DAN PETRI NET PADA PENJADWALAN PEMESANAN SUKU CADANG KOMPONEN MESIN KAPAL

PENGGUNAAN ALJABAR MAX PLUS DAN PETRI NET PADA PENJADWALAN PEMESANAN SUKU CADANG KOMPONEN MESIN KAPAL TESIS - SM 142501 PENGGUNAAN ALJABAR MAX PLUS DAN PETRI NET PADA PENJADWALAN PEMESANAN SUKU CADANG KOMPONEN MESIN KAPAL FARAH AZIZAH NRP 1214201029 DOSEN PEMBIMBING Dr. Subiono, M.S. PROGRAM MAGISTER JURUSAN

Lebih terperinci

APLIKASI PEWARNAAN GRAF PADA PENGATURAN LAMPU LALU LINTAS

APLIKASI PEWARNAAN GRAF PADA PENGATURAN LAMPU LALU LINTAS APLIKASI PEWARNAAN GRAF PADA PENGATURAN LAMPU LALU LINTAS Muhammad Farhan 13516093 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung

Lebih terperinci

Prediksi Indeks Saham Syariah Indonesia Menggunakan Model Hidden Markov

Prediksi Indeks Saham Syariah Indonesia Menggunakan Model Hidden Markov JURNAL SAINS DAN SENI POMITS Vol. 6, No.2, (2017) 2337-3520 (2301-928X Print) A 39 Prediksi Indeks Saham Syariah Indonesia Menggunakan Model Hidden Markov Risa Septi Pratiwi Daryono Budi Utomo Jurusan

Lebih terperinci

Perbandingan Algoritma Golub Kahan dan QR Simetri untuk Dekomposisi Nilai Singular

Perbandingan Algoritma Golub Kahan dan QR Simetri untuk Dekomposisi Nilai Singular J. Math. and Its Appl. ISSN: 1829-605X Vol. 3, No. 1, May 2006, 19 25 Perbandingan Algoritma Golub Kahan dan QR Simetri untuk Dekomposisi Nilai Singular Dieky Adzkiya, E. Apriliani, Bandung A.S. Jurusan

Lebih terperinci

SISTEM LINEAR DALAM ALJABAR MAKS-PLUS

SISTEM LINEAR DALAM ALJABAR MAKS-PLUS SISTEM LINEAR DALAM ALJABAR MAKS-PLUS oleh ANITA NUR MUSLIMAH M01009009 SKRIPSI ditulis dan diajukan untuk memenuhi sebagian persyaratan memperoleh gelar Sarjana Sains Matematika JURUSAN MATEMATIKA FAKULTAS

Lebih terperinci

PERBANDINGAN HASIL PEMODELAN ARTIFICIAL NEURAL NETWORKS DAN KERNEL SMOOTHING PADA DATA REGRESI NON LINIER

PERBANDINGAN HASIL PEMODELAN ARTIFICIAL NEURAL NETWORKS DAN KERNEL SMOOTHING PADA DATA REGRESI NON LINIER TUGAS AKHIR - ST 1325 PERBANDINGAN HASIL PEMODELAN ARTIFICIAL NEURAL NETWORKS DAN KERNEL SMOOTHING PADA DATA REGRESI NON LINIER ADITYA HIDAYAT JATI NRP 1302100044 Dosen Pembimbing Dra. Kartika Fitriasari,

Lebih terperinci

KECEPATAN PEJALAN KAKI PADA SIMPANG BERSINYAL DI RUAS JALAN SUDIRMAN, BANDUNG ABSTRAK

KECEPATAN PEJALAN KAKI PADA SIMPANG BERSINYAL DI RUAS JALAN SUDIRMAN, BANDUNG ABSTRAK KECEPATAN PEJALAN KAKI PADA SIMPANG BERSINYAL DI RUAS JALAN SUDIRMAN, BANDUNG Disusun Oleh: R. Pandu Riezky Raharjo NRP: 0721068 Pembimbing: Tan Lie Ing, S.T., M.T ABSTRAK Jalan Sudirman merupakan salah

Lebih terperinci

KAJIAN MODEL HIDDEN MARKOV KONTINU DENGAN PROSES OBSERVASI ZERO DELAY DAN APLIKASINYA PADA HARGA GABAH KERING PANEN T A M U R I H

KAJIAN MODEL HIDDEN MARKOV KONTINU DENGAN PROSES OBSERVASI ZERO DELAY DAN APLIKASINYA PADA HARGA GABAH KERING PANEN T A M U R I H KAJIAN MODEL HIDDEN MARKOV KONTINU DENGAN PROSES OBSERVASI ZERO DELAY DAN APLIKASINYA PADA HARGA GABAH KERING PANEN T A M U R I H SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2009 PERNYATAAN MENGENAI

Lebih terperinci

SIFAT RUANG METRIK TOPOLOGIS SKRIPSI. Oleh : Deki Sukmaringga J2A

SIFAT RUANG METRIK TOPOLOGIS SKRIPSI. Oleh : Deki Sukmaringga J2A SIFAT RUANG METRIK TOPOLOGIS SKRIPSI Oleh : Deki Sukmaringga J2A 307 002 PROGRAM STUDI MATEMATIKA JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS DIPONEGORO SEMARANG 2011 SIFAT

Lebih terperinci

PENENTUAN WAKTU PRODUKSI TERCEPAT PADA SISTEM MESIN PRODUKSI JAMU DI PT. PUTRO KINASIH DENGAN ALJABAR MAX-PLUS

PENENTUAN WAKTU PRODUKSI TERCEPAT PADA SISTEM MESIN PRODUKSI JAMU DI PT. PUTRO KINASIH DENGAN ALJABAR MAX-PLUS PENENTUAN WAKTU PRODUKSI TERCEPAT PADA SISTEM MESIN PRODUKSI JAMU DI PT. PUTRO KINASIH DENGAN ALJABAR MAX-PLUS oleh CAESAR ADHEK KHARISMA M0109017 SKRIPSI ditulis dan diajukan untuk memenuhi sebagian persyaratan

Lebih terperinci

SIMULASI ARUS LALU LINTAS DENGAN CELLULAR AUTOMATA

SIMULASI ARUS LALU LINTAS DENGAN CELLULAR AUTOMATA SIMULASI ARUS LALU LINTAS DENGAN CELLULAR AUTOMATA SKRIPSI Oleh Abduh Riski NIM 071810101005 JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS JEMBER 2011 SIMULASI ARUS LALU

Lebih terperinci

PENGGUNAAN ALJABAR MAXPLUS DALAM PEMBENTUKAN MODEL MATEMATISPADA SISTEM PENJADWALAN PRAKTIKUM LABORATORIUM

PENGGUNAAN ALJABAR MAXPLUS DALAM PEMBENTUKAN MODEL MATEMATISPADA SISTEM PENJADWALAN PRAKTIKUM LABORATORIUM βeta p-issn: 285-5893 / e-issn: 2541-458 http://jurnalbeta.ac.id Vol. 8 No. 1 (Mei) 215, Hal. 66-78 βeta 215 PENGGUNAAN ALJABAR MAXPLUS DALAM PEMBENTUKAN MODEL MATEMATISPADA SISTEM PENJADWALAN PRAKTIKUM

Lebih terperinci

PENERAPAN LOGIKA FUZZY MENGGUNAKAN SISTEM INFERENSI METODE TSUKAMOTO PADA PENGATURAN LAMPU LALU LINTAS DI PEREMPATAN MANDAN KABUPATEN SUKOHARJO

PENERAPAN LOGIKA FUZZY MENGGUNAKAN SISTEM INFERENSI METODE TSUKAMOTO PADA PENGATURAN LAMPU LALU LINTAS DI PEREMPATAN MANDAN KABUPATEN SUKOHARJO PENERAPAN LOGIKA FUZZY MENGGUNAKAN SISTEM INFERENSI METODE TSUKAMOTO PADA PENGATURAN LAMPU LALU LINTAS DI PEREMPATAN MANDAN KABUPATEN SUKOHARJO oleh KARTIKA DEWAYANI M0112048 SKRIPSI ditulis dan diajukan

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI 4 BAB 2 LANDASAN TEORI 2.1 Pengertian Kemacetan Kemacetan adalah situasi atau keadaan tersendatnya atau bahkan terhentinya lalu lintas yang disebabkan oleh banyaknya jumlah kendaraan melebihi kapasitas

Lebih terperinci

Prediksi Indeks Saham Syariah Indonesia Menggunakan Model Hidden Markov

Prediksi Indeks Saham Syariah Indonesia Menggunakan Model Hidden Markov A39 Prediksi Indeks Saham Syariah Indonesia Menggunakan Model Hidden Markov Risa Septi Pratiwi dan Daryono Budi Utomo Departemen Matematika, Fakultas Matematka dan Ilmu Pengetahuan Alam, Institut Teknologi

Lebih terperinci

PERKEMBANGAN FORMULA ARUS JENUH DI DELAPAN SIMPANG BERSINYAL KOTA BANDUNG

PERKEMBANGAN FORMULA ARUS JENUH DI DELAPAN SIMPANG BERSINYAL KOTA BANDUNG PERKEMBANGAN FORMULA ARUS JENUH DI DELAPAN SIMPANG BERSINYAL KOTA BANDUNG Florian Yohanes NRP: 0721023 Pembimbing: Dr. Budi Hartanto Susilo, Ir., M.Sc. ABSTRAK Pesatnya pertumbuhan jumlah kendaraan bermotor

Lebih terperinci

Struktur Hirarkis Jalur Kereta Api SDT Menggunakan Petri Net dan Aljabar Max-Plus

Struktur Hirarkis Jalur Kereta Api SDT Menggunakan Petri Net dan Aljabar Max-Plus Struktur Hirarkis Jalur Kereta Api SDT Menggunakan Petri Net dan Aljabar Max-Plus Tri Utomo 1, Subiono 2 1 Institut Teknologi Sepuluh Nopember Surabaya, Three1st@gmail.com 2 Institut Teknologi Sepuluh

Lebih terperinci

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum Arieza Nadya -- 13512017 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung,

Lebih terperinci

PENERAPAN ALJABAR MAKS-PLUS PADA PENJADWALAN SISTEM PRODUKSI HARIAN UMUM SOLOPOS DI PT. SOLO GRAFIKA UTAMA

PENERAPAN ALJABAR MAKS-PLUS PADA PENJADWALAN SISTEM PRODUKSI HARIAN UMUM SOLOPOS DI PT. SOLO GRAFIKA UTAMA PENERAPAN ALJABAR MAKS-PLUS PADA PENJADWALAN SISTEM PRODUKSI HARIAN UMUM SOLOPOS DI PT. SOLO GRAFIKA UTAMA oleh ARIF MUNTOHAR M0111012 SKRIPSI ditulis dan diajukan untuk memenuhi sebagian persyaratan memperoleh

Lebih terperinci

PEMODELAN SISTEM PENJADWALAN PRAKTIKUM LABORATORIUM MENGGU- NAKAN ALJABAR MAXPLUS (STUDI KASUS DI STMIK BUMIGORA MATARAM)

PEMODELAN SISTEM PENJADWALAN PRAKTIKUM LABORATORIUM MENGGU- NAKAN ALJABAR MAXPLUS (STUDI KASUS DI STMIK BUMIGORA MATARAM) PEMODELAN SISTEM PENJADWALAN PRAKTIKUM LABORATORIUM MENGGU- NAKAN ALJABAR MAXPLUS (STUDI KASUS DI STMIK BUMIGORA MATARAM) Uswatun Hasanah 1, Neny Sulistianingsih 2, 1,2 Dosen STMIK Bumigora, Jalan Ismail

Lebih terperinci

PERBANDINGAN HASIL KLASIFIKASI ANALISIS DISKRIMINAN DAN JARINGAN SYARAF TIRUAN

PERBANDINGAN HASIL KLASIFIKASI ANALISIS DISKRIMINAN DAN JARINGAN SYARAF TIRUAN TUGAS AKHIR - ST 1325 PERBANDINGAN HASIL KLASIFIKASI ANALISIS DISKRIMINAN DAN JARINGAN SYARAF TIRUAN ANANG SETIYO BUDI NRP 1303 100 060 Dosen Pembimbing Dra. Kartika Fitriasari, M.Si Adatul Mukarromah,

Lebih terperinci

Pemodelan Jadwal Keberangkatan Pesawat Transit di Bandara Dengan Menggunakan Aljabar Maxplus

Pemodelan Jadwal Keberangkatan Pesawat Transit di Bandara Dengan Menggunakan Aljabar Maxplus Pemodelan Jadwal Keberangkatan Pesawat Transit di Bandara Dengan Menggunakan Aljabar Maxplus Dyah Arum Anggraeni 1, Subchan 2, Subiono 3 Institut Teknologi Sepuluh Nopember, Surabaya dyaharumanggraeni@gmail.com

Lebih terperinci

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM ANALISIS ALGORITMA Analisis Masalah dan Running Time Disusun Oleh: Adam Mukharil Bachtiar Teknik Informatika UNIKOM adfbipotter@gmail.com AGENDA PERKULIAHAN DEFINISI MASALAH f x = a 0 + a n cos nπx +

Lebih terperinci

PEMODELAN SISTEM PENDULUM TERBALIK GANDA DAN KARAKTERISASI PARAMETER PADA MASALAH REGULASI OPTIMAL HASBY ASSIDIQI

PEMODELAN SISTEM PENDULUM TERBALIK GANDA DAN KARAKTERISASI PARAMETER PADA MASALAH REGULASI OPTIMAL HASBY ASSIDIQI PEMODELAN SISTEM PENDULUM TERBALIK GANDA DAN KARAKTERISASI PARAMETER PADA MASALAH REGULASI OPTIMAL HASBY ASSIDIQI SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2008 PERNYATAAN MENGENAI TESIS DAN

Lebih terperinci

SIMULASI LAJU PERTUMBUHAN PENJUALAN AUTOMOTIF DENGAN METODE EKSPONENSIAL DAN GUI MATLAB DI JAWA TIMUR

SIMULASI LAJU PERTUMBUHAN PENJUALAN AUTOMOTIF DENGAN METODE EKSPONENSIAL DAN GUI MATLAB DI JAWA TIMUR SIMULASI LAJU PERTUMBUHAN PENJUALAN AUTOMOTIF DENGAN METODE EKSPONENSIAL DAN GUI MATLAB DI JAWA TIMUR Yopi Andry Lesnussa Jurusan Matematika Universitas Pattimura yopi_a_lesnussa@yahoo.com Abstrak Laju

Lebih terperinci

ABSTRAK. Untuk menjaga keteraturan di jalan raya dibuat rambu-rambu lalu lintas. Salah satu

ABSTRAK. Untuk menjaga keteraturan di jalan raya dibuat rambu-rambu lalu lintas. Salah satu iv ABSTRAK Untuk menjaga keteraturan di jalan raya dibuat rambu-rambu lalu lintas. Salah satu rambu tersebut adalah lampu lalu lintas. Namun seringkali terjadi kemacetan pada persimpangan jalan karena

Lebih terperinci

APLIKASI ALJABAR MAKS-PLUS PADA SISTEM PENJADWALAN KERETA REL LISTRIK (KRL) JABODETABEK

APLIKASI ALJABAR MAKS-PLUS PADA SISTEM PENJADWALAN KERETA REL LISTRIK (KRL) JABODETABEK APLIKASI ALJABAR MAKS-PLUS PADA SISTEM PENJADWALAN KERETA REL LISTRIK (KRL) JABODETABEK oleh AHMAD DIMYATHI M0111003 SKRIPSI ditulis dan diajukan untuk memenuhi sebagian persyaratan memperoleh gelar Sarjana

Lebih terperinci

SEMINAR TUGAS AKHIR. Aplikasi Aljabar Max-Plus Pada Pemodelan Dan Penjadwalan Busway Yang Diintegrasikan Dengan Kereta Api Komuter

SEMINAR TUGAS AKHIR. Aplikasi Aljabar Max-Plus Pada Pemodelan Dan Penjadwalan Busway Yang Diintegrasikan Dengan Kereta Api Komuter SEMINAR TUGAS AKHIR Aplikasi Aljabar Max-Plus Pada Pemodelan Dan Penjadwalan Busway Yang Diintegrasikan Dengan Kereta Api Komuter OLEH: Kistosil Fahim DOSEN PEMBIMBING: Dr. Subiono, M.Sc Subchan, M.Sc.,PhD

Lebih terperinci

ANALISIS SISTEM ANTREAN PADA PELAYANAN PASIEN BPJS RUMAH SAKIT MATA DR. YAP YOGYAKARTA SKRIPSI

ANALISIS SISTEM ANTREAN PADA PELAYANAN PASIEN BPJS RUMAH SAKIT MATA DR. YAP YOGYAKARTA SKRIPSI ANALISIS SISTEM ANTREAN PADA PELAYANAN PASIEN BPJS RUMAH SAKIT MATA DR. YAP YOGYAKARTA SKRIPSI Diajukan kepada Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Negeri Yogyakarta untuk Memenuhi

Lebih terperinci

SIMULASI NUMERIK ARUS LALU LINTAS PADA JARINGAN JALAN MENGGUNAKAN METODE GODUNOV

SIMULASI NUMERIK ARUS LALU LINTAS PADA JARINGAN JALAN MENGGUNAKAN METODE GODUNOV SIMULASI NUMERIK ARUS LALU LINTAS PADA JARINGAN JALAN MENGGUNAKAN METODE GODUNOV Erwin Budi Setiawan 1, Dede Tarwidi 2, Ilyana Fadhilah 3 1,2,3 Jurusan Ilmu Komputasi Universitas Telkom, Bandung 1 erwinbudisetiawan@telkomuniversity.ac.id,

Lebih terperinci

Aplikasi Graf Berarah dan Pohon Berakar pada Visual Novel Fate/Stay Night

Aplikasi Graf Berarah dan Pohon Berakar pada Visual Novel Fate/Stay Night Aplikasi Graf Berarah dan Pohon Berakar pada Visual Novel Fate/Stay Night Ratnadira Widyasari 13514025 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung,

Lebih terperinci

SKRIPSI. Shofyan Imam Wahyudi NIM

SKRIPSI. Shofyan Imam Wahyudi NIM PENDISTRIBUSIAN BARANG DENGAN MENGGUNAKAN ALGORITMA PRIM SKRIPSI Diajukan untuk Memenuhi Persyaratan Penyelesaian Program Sarjana Sains Jurusan MatematikaFakultas Matematika dan Ilmu Pengetahuan Alam Universitas

Lebih terperinci

ALOKASI RESOURCE SEBAGAI PERBAIKAN PRODUKSI MENGGUNAKAN HOLONIC MANUFACTURING SYSTEM, PETRI NET DAN ALJABAR MAX-PLUS

ALOKASI RESOURCE SEBAGAI PERBAIKAN PRODUKSI MENGGUNAKAN HOLONIC MANUFACTURING SYSTEM, PETRI NET DAN ALJABAR MAX-PLUS ALOKASI RESOURCE SEBAGAI PERBAIKAN PRODUKSI MENGGUNAKAN HOLONIC MANUFACTURING SYSTEM, PETRI NET DAN ALJABAR MAX-PLUS Moses L. Singgih 1 dan Nila Nurlina 2 1,2 Laboratorium Sistem Manufaktur,Jurusan Teknik

Lebih terperinci

EKSPLORASI MASALAH LOGARITMA DISKRET PADA FINITE FIELD ( ) Y A N A

EKSPLORASI MASALAH LOGARITMA DISKRET PADA FINITE FIELD ( ) Y A N A EKSPLORASI MASALAH LOGARITMA DISKRET PADA FINITE FIELD ( ) Y A N A SEKOLAH PASCA SARJANA INSTITUT PERTANIAN BOGOR BOGOR 2009 PERNYATAAN MENGENAI TUGAS AKHIR DAN SUMBER INFORMASI Dengan ini saya menyatakan

Lebih terperinci

Karakterisasi Nilai Eigen, Vektor Eigen, dan Eigenmode dari Matriks Tak Tereduksi dan Tereduksi dalam Aljabar Max-Plus

Karakterisasi Nilai Eigen, Vektor Eigen, dan Eigenmode dari Matriks Tak Tereduksi dan Tereduksi dalam Aljabar Max-Plus Karakterisasi Nilai Eigen, Vektor Eigen, dan Eigenmode dari Matriks Tak Tereduksi dan Tereduksi dalam Aljabar Max-Plus Himmatul Mursyidah (1213 201 001) Dosen Pembimbing : Dr. Subiono, M.S. Program Magister

Lebih terperinci

Perbandingan Algoritma Dijkstra Dan Algoritma Ant Colony Dalam Penentuan Jalur Terpendek

Perbandingan Algoritma Dijkstra Dan Algoritma Ant Colony Dalam Penentuan Jalur Terpendek Perbandingan Algoritma Dijkstra Dan Algoritma Ant Colony Dalam Penentuan Jalur Terpendek Finsa Ferdifiansyah NIM 0710630014 Jurusan Teknik Elektro Konsentrasi Rekayasa Komputer Fakultas Teknik Universitas

Lebih terperinci

BAB I PENDAHULUAN. 1.1 Latar Belakang Masalah

BAB I PENDAHULUAN. 1.1 Latar Belakang Masalah BAB I PENDAHULUAN 1.1 Latar Belakang Masalah Sistem kejadian dinamik diskrit (discrete-event dynamic system) merupakan sistem yang keadaannya berubah hanya pada titik waktu diskrit untuk menanggapi terjadinya

Lebih terperinci

ANALISIS KEPADATAN LALU LINTAS DI PERLIMAAN JALAN (STUDI KASUS DI JALAN SOEKARNO HATTA-TLOGOSARI- SUPRIYADI-MEDOHO)

ANALISIS KEPADATAN LALU LINTAS DI PERLIMAAN JALAN (STUDI KASUS DI JALAN SOEKARNO HATTA-TLOGOSARI- SUPRIYADI-MEDOHO) ANALISIS KEPADATAN LALU LINTAS DI PERLIMAAN JALAN (STUDI KASUS DI JALAN SOEKARNO HATTA-TLOGOSARI- SUPRIYADI-MEDOHO) Ignatia Yolanda, Kartono, Sunarsih Program Studi Matematika FSM Universitas Diponegoro

Lebih terperinci

Penerapan Pewarnaan Graf dalam Alat Pemberi Isyarat Lalu Lintas

Penerapan Pewarnaan Graf dalam Alat Pemberi Isyarat Lalu Lintas Penerapan Pewarnaan Graf dalam Alat Pemberi Isyarat Lalu Lintas Mikhael Artur Darmakesuma - 13515099 1 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung,

Lebih terperinci

PERSOALAN OPTIMASI FAKTOR KEAMANAN MINIMUM DALAM ANALISIS KESTABILAN LERENG DAN PENYELESAIANNYA MENGGUNAKAN MATLAB

PERSOALAN OPTIMASI FAKTOR KEAMANAN MINIMUM DALAM ANALISIS KESTABILAN LERENG DAN PENYELESAIANNYA MENGGUNAKAN MATLAB PERSOALAN OPTIMASI FAKTOR KEAMANAN MINIMUM DALAM ANALISIS KESTABILAN LERENG DAN PENYELESAIANNYA MENGGUNAKAN MATLAB TUGAS AKHIR Sebagai Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Pertambangan Oleh:

Lebih terperinci

KAJIAN MODEL MIKROSKOPIK DAN MODEL KINETIK LALU LINTAS KENDARAAN DAN SIMULASINYA DESYARTI SAFARINI TLS

KAJIAN MODEL MIKROSKOPIK DAN MODEL KINETIK LALU LINTAS KENDARAAN DAN SIMULASINYA DESYARTI SAFARINI TLS KAJIAN MODEL MIKROSKOPIK DAN MODEL KINETIK LALU LINTAS KENDARAAN DAN SIMULASINYA DESYARTI SAFARINI TLS SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2009 PERNYATAAN MENGENAI TESIS DAN SUMBER INFORMASI

Lebih terperinci

PENYELESAIAN MASALAH STURM-LIOUVILLE DARI PERSAMAAN GELOMBANG SUARA DI BAWAH AIR DENGAN METODE BEDA HINGGA

PENYELESAIAN MASALAH STURM-LIOUVILLE DARI PERSAMAAN GELOMBANG SUARA DI BAWAH AIR DENGAN METODE BEDA HINGGA PENYELESAIAN MASALAH STURM-LIOUVILLE DARI PERSAMAAN GELOMBANG SUARA DI BAWAH AIR DENGAN METODE BEDA HINGGA oleh FIQIH SOFIANA M0109030 SKRIPSI ditulis dan diajukan untuk memenuhi sebagian persyaratan memperoleh

Lebih terperinci

BASIS RUANG VEKTOR EIGEN SUATU MATRIKS ATAS ALJABAR MAX-PLUS

BASIS RUANG VEKTOR EIGEN SUATU MATRIKS ATAS ALJABAR MAX-PLUS BASIS RUANG VEKTOR EIGEN SUATU MATRIKS ATAS ALJABAR MAX-PLUS oleh PUNDRA ANDRIYANTO M0109057 SKRIPSI ditulis dan diajukan untuk memenuhi sebagian persyaratan memperoleh gelar Sarjana Sains Matematika FAKULTAS

Lebih terperinci

Pendeteksian Kemacetan Lalu Lintas dengan Compute Unified Device Architecture (CUDA)

Pendeteksian Kemacetan Lalu Lintas dengan Compute Unified Device Architecture (CUDA) Pendeteksian Kemacetan Lalu Lintas dengan Compute Unified Device Architecture (CUDA) LAPORAN TUGAS AKHIR Disusun sebagai syarat kelulusan tingkat sarjana oleh: Muhammad Ismail Faruqi / 13503045 PROGRAM

Lebih terperinci

FINITE STATE MACHINE / AUTOMATA

FINITE STATE MACHINE / AUTOMATA FINITE STATE MACHINE / AUTOMATA BAHASA FORMAL Dapat dipandang sebagai entitas abstrak, yaitu sekumpulan string yang berisi simbol-simbol alphabet Dapat juga dipandang sebagai entitasentitas abstrak yang

Lebih terperinci

PENGGUNAAN ALJABAR MAXPLUS DALAM PEMBENTUKAN MODEL MATEMATISPADA SISTEM PENJADWALAN PRAKTIKUM LABORATORIUM

PENGGUNAAN ALJABAR MAXPLUS DALAM PEMBENTUKAN MODEL MATEMATISPADA SISTEM PENJADWALAN PRAKTIKUM LABORATORIUM Jurnal Pendidikan Matematika βeta Vol. 8 No.1 (Mei) 2015; Hal. 75-88; ISSN 2085-5893; Beta 2015 Beta tersedia online pada: http://ejurnal.iainmataram.ac.id/index.php/beta PENGGUNAAN ALJABAR MAXPLUS DALAM

Lebih terperinci

IMPLEMENTASI PENENTUAN MINIMUM SPANNING TREE (MST) DENGAN MENGGUNAKAN ALGORITMA PRIM

IMPLEMENTASI PENENTUAN MINIMUM SPANNING TREE (MST) DENGAN MENGGUNAKAN ALGORITMA PRIM IMPLEMENTASI PENENTUAN MINIMUM SPANNING TREE (MST) DENGAN MENGGUNAKAN ALGORITMA PRIM SKRIPSI Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains RUDI SURENDRO 041421011 Departemen

Lebih terperinci

KAJIAN KINERJA LALU LINTAS SIMPANG CILEUNYI TANPA DAN DENGAN FLYOVER

KAJIAN KINERJA LALU LINTAS SIMPANG CILEUNYI TANPA DAN DENGAN FLYOVER KAJIAN KINERJA LALU LINTAS SIMPANG CILEUNYI TANPA DAN DENGAN FLYOVER TUGAS AKHIR SEBAGAI SALAH SATU SYARAT UNTUK MENYELESAIKAN PENDIDIKAN SARJANA TEKNIK DI PROGRAM STUDI TEKNIK SIPIL oleh DUTO NUSWANTOKO

Lebih terperinci

BAB 3 ANALISIS DAN PERANCANGAN SISTEM. meneruskan keinginan ayahnya untuk mengembangkan usaha yang telah dirintis

BAB 3 ANALISIS DAN PERANCANGAN SISTEM. meneruskan keinginan ayahnya untuk mengembangkan usaha yang telah dirintis BAB 3 ANALISIS DAN PERANCANGAN SISTEM 3.1 Latar Belakang PT. Cahaya Olo Mas 3.1.1 Sejarah Organisasi Berdirinya PT Cahaya Olo Mas diawali oleh Bapak Rinaldy Tjahaja yang ingin meneruskan keinginan ayahnya

Lebih terperinci

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus. Waktu komputasi (dalam detik) Kompleksitas Algoritma Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus. Kemangkusan algoritma

Lebih terperinci

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM) KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM) Andi Kurniawan Dwi Putranto / 3508028 Program Studi Teknik Informatika, Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung Jln. Ganesha

Lebih terperinci

KEKONVERGENAN NET DAN SUBNET PADA RUANG TOPOLOGIS. Oleh : FATKHAN YUDI RIANSA J2A Skripsi

KEKONVERGENAN NET DAN SUBNET PADA RUANG TOPOLOGIS. Oleh : FATKHAN YUDI RIANSA J2A Skripsi KEKONVERGENAN NET DAN SUBNET PADA RUANG TOPOLOGIS Oleh : FATKHAN YUDI RIANSA J2A 006 019 Skripsi Diajukan sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains pada Jurusan Matematika Fakultas

Lebih terperinci

PENJADWALAN PEMANDU WISATA DI KERATON KASUNANAN SURAKARTA DENGAN MENGGUNAKAN ALJABAR MAX-PLUS

PENJADWALAN PEMANDU WISATA DI KERATON KASUNANAN SURAKARTA DENGAN MENGGUNAKAN ALJABAR MAX-PLUS PENJADWALAN PEMANDU WISATA DI KERATON KASUNANAN SURAKARTA DENGAN MENGGUNAKAN ALJABAR MAX-PLUS oleh ADITYA WENDHA WIJAYA M0109003 SKRIPSI ditulis dan diajukan untuk memenuhi sebagian persyaratan memperoleh

Lebih terperinci

Aplikasi Graf pada Persoalan Lintasan Terpendek dengan Algoritma Dijkstra

Aplikasi Graf pada Persoalan Lintasan Terpendek dengan Algoritma Dijkstra Aplikasi Graf pada Persoalan Lintasan Terpendek dengan Algoritma Dijkstra Adriansyah Ekaputra 13503021 Program Studi Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung Abstraksi Makalah

Lebih terperinci

UNIVERSITAS BINA NUSANTARA SIMULASI KINEMATIKA LENGAN ROBOT INDUSTRI DENGAN 6 DERAJAT KEBEBASAN

UNIVERSITAS BINA NUSANTARA SIMULASI KINEMATIKA LENGAN ROBOT INDUSTRI DENGAN 6 DERAJAT KEBEBASAN UNIVERSITAS BINA NUSANTARA Jurusan Sistem Komputer Skripsi Sarjana Komputer Semester Genap tahun 2003/2004 SIMULASI KINEMATIKA LENGAN ROBOT INDUSTRI DENGAN 6 DERAJAT KEBEBASAN Andy Rosady 0400530056 Riza

Lebih terperinci

BAB I PENDAHULUAN Latar Belakang Masalah

BAB I PENDAHULUAN Latar Belakang Masalah BAB I PENDAHULUAN 1.1. Latar Belakang Masalah Sistem kejadian diskrit (Discrete-Event System) merupakan suatu sistem yang state space nya berbentuk diskret, sistem yang keadaannya berubah hanya pada waktu

Lebih terperinci

BAB III ANALISA DAN PERANCANGAN SISTEM

BAB III ANALISA DAN PERANCANGAN SISTEM BAB III ANALISA DAN PERANCANGAN SISTEM 3.1 ANALISIS SISTEM LALU LINTAS Pemahaman tentang sistem yang akan dirancang sangat diperlukan sebelum perangkat lunak dibangun. Pembangunan perangkat lunak dimulai

Lebih terperinci

: Tempat Parkir, Graph, Lintasan Terpendek, Petri Net, Algoritma Djigstra

: Tempat Parkir, Graph, Lintasan Terpendek, Petri Net, Algoritma Djigstra PEMODELAN JALUR TEMPAT PARKIR MENGGUNAKAN PETRI NET Yulinda Bilondatu, Hj. Novianita Achmad, M.Si, Nurwan S.Pd, M.Si ABSTRAK Yulinda Bilondatu. Pemodelan jalur tempat parkir Menggunakan Petri Net SKRIPSI.

Lebih terperinci

BAB I PENDAHULUAN. ini berpengaruh pula pada pembuatan alat-alat canggih, yaitu alat yang

BAB I PENDAHULUAN. ini berpengaruh pula pada pembuatan alat-alat canggih, yaitu alat yang BAB I PENDAHULUAN 1.1. Latar Belakang Kemajuan teknologi dibidang elektronika dewasa ini berkembang sangat cepat dan memberikan pengaruh besar di setiap aspek kehidupan.hal ini berpengaruh pula pada pembuatan

Lebih terperinci

Penjadwalan dan Alokasi Resource

Penjadwalan dan Alokasi Resource JURNAL TEKNIK, (2014) 1-6 1 Penjadwalan dan Alokasi Resource Sebagai Perbaikan Produksi Dengan Holonic Manufacturing System, Petri Net dan Aljabar Max- Plus (Studi kasus: Perusahaan Boiler) Nila Nurlina,

Lebih terperinci

PENENTUAN ARUS JENUH DAN WAKTU HILANG DENGAN METODE IRISAN PADA SIMPANG BERSINYAL IR.H.JUANDA-DIPATIUKUR ABSTRAK

PENENTUAN ARUS JENUH DAN WAKTU HILANG DENGAN METODE IRISAN PADA SIMPANG BERSINYAL IR.H.JUANDA-DIPATIUKUR ABSTRAK PENENTUAN ARUS JENUH DAN WAKTU HILANG DENGAN METODE IRISAN PADA SIMPANG BERSINYAL IR.H.JUANDA-DIPATIUKUR Wretifa Rekanada Syifa NRP : 0821025 Pembimbing : Silvia Sukirman, Ir. ABSTRAK Arus jenuh didefinisikan

Lebih terperinci

PENERAPAN ALGORITMA GENETIKA PADA PENYELESAIAN CAPACITATED VEHICLE ROUTING PROBLEM

PENERAPAN ALGORITMA GENETIKA PADA PENYELESAIAN CAPACITATED VEHICLE ROUTING PROBLEM PENERAPAN ALGORITMA GENETIKA PADA PENYELESAIAN CAPACITATED VEHICLE ROUTING PROBLEM (CVRP) UNTUK DISTRIBUSI SURAT KABAR KEDAULATAN RAKYAT DI KABUPATEN SLEMAN SKRIPSI Diajukan Kepada Fakultas Matematika

Lebih terperinci

ANALISIS EIGENPROBLEM MATRIKS SIRKULAN DALAM ALJABAR MAX-PLUS

ANALISIS EIGENPROBLEM MATRIKS SIRKULAN DALAM ALJABAR MAX-PLUS ANALISIS EIGENPROBLEM MATRIKS SIRKULAN DALAM ALJABAR MAX-PLUS Maria Ulfa Subiono 2 dan Mahmud Yunus 3 Institut Teknologi Sepuluh Nopember Surabaya 23 e-mail: ulfawsrejo@yahoo.com subiono28@matematika.its.ac.id

Lebih terperinci

PENDEKATAN ALGORITMA PEMROGRAMAN DINAMIK DALAM MENYELESAIKAN PERSOALAN KNAPSACK 0/1 SKRIPSI SRI RAHAYU

PENDEKATAN ALGORITMA PEMROGRAMAN DINAMIK DALAM MENYELESAIKAN PERSOALAN KNAPSACK 0/1 SKRIPSI SRI RAHAYU PENDEKATAN ALGORITMA PEMROGRAMAN DINAMIK DALAM MENYELESAIKAN PERSOALAN KNAPSACK 0/1 SKRIPSI SRI RAHAYU 060823001 PROGRAM STUDI SARJANA MATEMATIKA DEPARTEMEN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN

Lebih terperinci

ITERATIVE LEARNING CONTROL UNTUK PLANT NONLINEAR DENGAN FASE NONMINIMUM TESIS. IBNU HADI NIM : Program Studi Matematika

ITERATIVE LEARNING CONTROL UNTUK PLANT NONLINEAR DENGAN FASE NONMINIMUM TESIS. IBNU HADI NIM : Program Studi Matematika ITERATIVE LEARNING CONTROL UNTUK PLANT NONLINEAR DENGAN FASE NONMINIMUM TESIS Karya tulis sebagai salah satu syarat untuk memperoleh gelar Magister dari Institut Teknologi Bandung Oleh IBNU HADI NIM :

Lebih terperinci

Pendeteksian Deadlock dengan Algoritma Runut-balik

Pendeteksian Deadlock dengan Algoritma Runut-balik Pendeteksian Deadlock dengan Algoritma Runut-balik Rita Wijaya - 13509098 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132,

Lebih terperinci

KALIBRASI DOSIMETER FILM UNTUK PEMANTAUAN DOSIS RADIASI DENGAN MENGGUNAKAN JARINGAN SYARAF TIRUAN

KALIBRASI DOSIMETER FILM UNTUK PEMANTAUAN DOSIS RADIASI DENGAN MENGGUNAKAN JARINGAN SYARAF TIRUAN TESIS SF 092006 KALIBRASI DOSIMETER FILM UNTUK PEMANTAUAN DOSIS RADIASI DENGAN MENGGUNAKAN JARINGAN SYARAF TIRUAN Betty Rahayuningsih NRP. 1108201004 Dosen Pembimbing Dr. Melania Suweni Muntini,MT PROGRAM

Lebih terperinci

PENENTUAN JALUR ALTERNATIF UNTUK MENGHINDARI KEMACETAN LALU LINTAS DENGAN MENGGUNAKAN ALGORITMA DIJKSTRA (Studi Kasus: Simpang Empat Waspada Medan)

PENENTUAN JALUR ALTERNATIF UNTUK MENGHINDARI KEMACETAN LALU LINTAS DENGAN MENGGUNAKAN ALGORITMA DIJKSTRA (Studi Kasus: Simpang Empat Waspada Medan) PENENTUAN JALUR ALTERNATIF UNTUK MENGHINDARI KEMACETAN LALU LINTAS DENGAN MENGGUNAKAN ALGORITMA DIJKSTRA (Studi Kasus: Simpang Empat Waspada Medan) SKRIPSI DIKY LAMHOT FRANS FELI SIAHAAN 100803070 DEPARTEMEN

Lebih terperinci

LAPORAN KERJA PRAKTEK PT. INDOTEKNIK.COM

LAPORAN KERJA PRAKTEK PT. INDOTEKNIK.COM LAPORAN KERJA PRAKTEK PT. INDOTEKNIK.COM Disusun Oleh : FIKRI JAMALULLAIL 41912010084 Dosen Pembimbing : Drs. Budi Waluyo, M.Sn, JURUSAN DESAIN PRODUK FAKULTAS DESAIN DAN SENI KREATIF UNIVERSITAS MERCU

Lebih terperinci

Aplikasi Pewarnaan Graf Pada Pengaturan Warna Lampu Lalu Lintas

Aplikasi Pewarnaan Graf Pada Pengaturan Warna Lampu Lalu Lintas Aplikasi Pewarnaan Graf Pada Pengaturan Warna Lampu Lalu Lintas Andreas Dwi Nugroho (13511051) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha

Lebih terperinci

Teori Ramsey pada Pewarnaan Graf Lengkap

Teori Ramsey pada Pewarnaan Graf Lengkap Teori Ramsey pada Pewarnaan Graf Lengkap Muhammad Ardiansyah Firdaus J2A 006 032 Skripsi Diajukan sebagai syarat untuk memperoleh gelar Sarjana Sains pada Program Studi Matematika PROGRAM STUDI MATEMATIKA

Lebih terperinci

PENENTUAN WAKTU KEDATANGAN PESAWAT DI BANDAR UDARA HUSEIN SASTRANEGARA BANDUNG DENGAN SISTEM PERSAMAAN LINEAR ATAS ALJABAR MAKS-PLUS

PENENTUAN WAKTU KEDATANGAN PESAWAT DI BANDAR UDARA HUSEIN SASTRANEGARA BANDUNG DENGAN SISTEM PERSAMAAN LINEAR ATAS ALJABAR MAKS-PLUS PENENTUAN WAKTU KEDATANGAN PESAWAT DI BANDAR UDARA HUSEIN SASTRANEGARA BANDUNG DENGAN SISTEM PERSAMAAN LINEAR ATAS ALJABAR MAKS-PLUS oleh CASILDA REVA KARTIKA M0112021 SKRIPSI ditulis dan diajukan untuk

Lebih terperinci