TESIS SM2310
MEMBANGUN MODEL PETRI NET
LAMPU LALULINTAS DAN SIMULASINYA
DIEKY ADZKIYA NRP. 1205 201 009 DOSEN PEMBIMBING Dr. Subiono M.S PROGRAM MAGISTER JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT TEKNOLOGI SEPULUH NOPEMBER
SURABAYA 2008
TESIS SM2310
MEMBANGUN MODEL PETRI NET
LAMPU LALULINTAS DAN SIMULASINYA
DIEKY ADZKIYA NRP. 1205 201 009 DOSEN PEMBIMBING Dr. Subiono M.S PROGRAM MAGISTER JURUSAN MATEMATIKAFAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT TEKNOLOGI SEPULUH NOPEMBER
SURABAYA 2008
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
oleh : Dieky Adzkiya Nrp. 1205 201 009
Tanggal Ujian : 31 Juli 2008 Periode Wisuda : September 2008
Disetujui oleh:
1. Dr. Subiono M.S (Pembimbing)
NIP: 131 413 442
2. Drs. Hariyanto M.Si (Penguji)
NIP: 131 124 884
3. Drs. Sulistiyo MT (Penguji)
NIP: 131 651 249
4. Drs. I Gusti Ngurah Rai Usadha M.Si (Penguji) NIP: 131 846 103
Direktur Program Pascasarjana
Prof. Dr. Ir. Suparno MSIE NIP. 130 532 035
MEMBANGUN MODEL PETRI NET LAMPU LALULINTAS DAN SIMULASINYA
Nama Mahasiswa : Dieky Adzkiya
NRP : 1205 201 009
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 men-cantumkan waktu tunggu di persimpangan dengan jumlah jalur sebarang da-lam bentuk algoritma. Petri net yang dibangun kemudian dianalisis dan di-reduksi. Analisis Petri net meliputi keterbatasan (boundedness), konservasi (conservation) dan coverability keadaan. Reduksi bertujuan mengurangi di-mensi ruang keadaan.
Jumlah place dan transisi Petri net lampu lalulintas di persimpangan masing-masing sebanyak 5ℓ dan 4ℓ dengan ℓ menyatakan jumlah jalur di per-simpangan. Sifat Petri net adalah terbatas (bounded ), tidak konservatif dan banyak keadaan yang coverable berhingga. Reduksi keadaan menyebabkan jumlah place Petri net menjadi ℓ + 4 tetapi tidak mengubah sifatnya.
Distribusi normal dan uniform digunakan untuk mendekati jumlah ke-datangan pengguna di persimpangan. Jumlah keke-datangan 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.
MODELING TRAFFIC LIGHTS USING PETRI NET AND ITS SIMULATION
By : Dieky Adzkiya
Student Identity Number : 1205 201 009
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 bounded-ness, 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 5ℓ place and 4ℓ transition with ℓ 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 ℓ + 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.
KATA PENGANTAR
Segala puji bagi Allah SWT yang telah memberikan karunia-Nya berupa kekuatan iman serta kesehatan sehingga penulis dapat menyele-saikan tesis dengan judul
“Membangun Model Petri net Lampu Lalulintas dan Simulasinya”
sesuai dengan keinginan dan tepat waktu. Keinginan penulis adalah membuat laporan dengan LATEX 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.
Semoga Allah SWT membalas segala budi baik yang telah diberikan kepada penulis dengan limpahan rahmat dan hidayah. Dalam menyusun la-poran 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 pe-nulis. Saran dan kritik demi perbaikan di masa datang akan sangat penulis hargai.
Surabaya, Agustus 2008
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 . . . 1
1.1 Latar Belakang . . . 1
1.2 Rumusan Masalah . . . 3
1.3 Batasan Masalah . . . 3
1.4 Tujuan dan Manfaat . . . 3
BAB 2 KAJIAN PUSTAKA DAN TEORI DASAR . . . 5
2.1 Notasi dan Definisi . . . 5
2.2 Tanda Petri net dan Ruang Keadaan . . . 8
2.3 Dinamika Petri net . . . 16
2.4 Representasi Petri net Menggunakan Matriks . . . 23
2.5 Analisis Model Sistem Event Diskrit Tak Berwaktu . . . 27
2.5.1 Liveness dan Deadlocks . . . 28
2.5.2 Coverability Tree . . . 30
2.5.2.1 Definisi Coverability Tree . . . 36
2.5.2.2 Menentukan parent bertingkat . . . 39
2.5.2.3 Menguji hubungan dominasi . . . 45
2.5.2.4 Mencari Keberadaan Node Duplicate . . . 49
2.5.2.5 Membangun Coverability Tree . . . 53
2.5.3 Keterbatasan (boundedness) . . . 62
2.5.4 Konservasi (conservation) . . . 67
2.5.5 Coverability Keadaan . . . 70
BAB 3 METODA PENELITIAN . . . 75
3.1 Tahap-tahap Penelitian . . . 75
3.2 Diagram Alir Penelitian . . . 76
BAB 4 PETRI NET DAN SIMULASI PENGGUNA . . . 77
4.2 Petri net Lampu Lalulintas Sederhana . . . 78
4.2.1 Matriks Incidence . . . 80
4.2.2 Coverability Tree . . . 81
4.2.3 Konservasi . . . 82
4.3 Petri net Lampu Lalulintas Dengan Waktu Tunggu . . . 82
4.3.1 Matriks Incidence . . . 85
4.3.2 Coverability Tree . . . 86
4.3.3 Konservasi . . . 89
4.4 Petri net Lampu Lalulintas Tanpa Waktu Idle . . . 90
4.4.1 Matriks Incidence . . . 93
4.4.2 Coverability Tree . . . 95
4.4.3 Konservasi . . . 97
4.5 Petri net Lampu Lalulintas di Persimpangan . . . 98
4.5.1 Matriks Incidence . . . 104
4.5.2 Coverability Tree . . . 109
4.5.3 Konservasi . . . 118
4.6 Reduksi Keadaan Petri net Lampu Lalulintas . . . 121
4.6.1 Matriks Incidence . . . 124
4.6.2 Coverability Tree . . . 128
4.6.3 Konservasi . . . 137
4.7 Simulasi Jumlah Pengguna di Persimpangan . . . 140
4.7.1 Kedatangan Berdistribusi Normal . . . 142
4.7.2 Kedatangan Berdistribusi Uniform . . . 158
BAB 5 IMPLEMENTASI DAN EVALUASI . . . 171
5.1 Pengujian Sifat Pure pada Petri net . . . 171
5.2 Menentukan Transisi Enabled . . . 172
5.3 Pemfirean Transisi . . . 173
5.4 Pengujian Dominasi . . . 174
5.5 Membangun Coverability Tree . . . 176
5.6 Menentukan Batas Atas Place di Petri net . . . 179
5.7 Menentukan Place yang terbatas (bounded ) . . . 180
5.8 Keterbatasan (boundedness) pada Petri net . . . 181
5.9 Pengujian Konservasi (Conservation) . . . 182
5.10 Pengujian Cover Dua Keadaan . . . 184
5.11 Pengujian Coverable . . . 185
5.12 Keadaan Setelah Pemfirean Transisi yang Enabled . . . 186
5.14 Petri net Lampu Lalulintas . . . 191
5.14.1 Lampu Lalulintas Sederhana . . . 191
5.14.2 Lampu Lalulintas dengan Waktu Tunggu . . . 192
5.14.3 Lampu Lalulintas Tanpa Waktu Idle . . . 194
5.14.4 Lampu Lalulintas di Persimpangan . . . 195
5.14.5 Lampu Lalulintas Tereduksi . . . 198
5.15 Simulasi Jumlah Pengguna di Persimpangan . . . 199
5.16 Identifikasi Petri net yang dibuat dengan PIPE . . . 201
5.17 Simulasi Petri net berbasis GUI . . . 202
5.18 Simulasi Petri net yang dibuat dari PIPE . . . 207
5.19 Representasi Grafik dari Coverability Tree . . . 208
5.20 Simulasi Jumlah Pengguna Berbasis GUI . . . 210
5.21 Simulasi Lampu Lalulintas di Persimpangan . . . 213
5.22 Simulasi Lampu Lalulintas Berbasis GUI . . . 216
5.23 Evaluasi Hasil Simulasi . . . 217
5.23.1 Kedatangan Berdistribusi Normal . . . 218
5.23.1.1 Mean Keberangkatan Ketika Lampu Hijau Me-nyala . . . 220
5.23.1.2 Jumlah Jalur di Persimpangan . . . 222
5.23.1.3 Mean Keberangkatan Ketika Lampu Hijau Me-nyala . . . 224
5.23.1.4 Mean Kedatangan . . . 225
5.23.1.5 Lama Lampu Kuning Menyala . . . 226
5.23.1.6 Lama Lampu Hijau Menyala . . . 227
5.23.1.7 Keadaan Awal . . . 229
5.23.2 Kedatangan Berdistribusi Uniform . . . 230
5.23.2.1 Mean Keberangkatan Ketika Lampu Hijau Me-nyala . . . 231
5.23.2.2 Jumlah Jalur di Persimpangan . . . 233
5.23.2.3 Mean Keberangkatan Ketika Lampu Hijau Me-nyala . . . 234
5.23.2.4 Maksimum Kedatangan . . . 235
5.23.2.5 Lama Lampu Kuning Menyala . . . 236
5.23.2.6 Lama Lampu Hijau Menyala . . . 237
5.23.2.7 Keadaan Awal . . . 239
BAB 6 PENUTUP . . . 241
6.2 Saran . . . 241
LAMPIRAN A SOURCE CODE . . . 243
A.1 File ispure.sci . . . 243
A.2 File findenabled.sci . . . 243
A.3 File isdominate.sci . . . 244
A.4 File buildtree.sci . . . 244
A.5 File findbound.sci . . . 245
A.6 File boundedplace.sci . . . 246
A.7 File ispetrinetbounded.sci . . . 246
A.8 File isconservation.sci . . . 246
A.9 File iscovers.sci . . . 247
A.10 File iscoverable.sci . . . 247
A.11 File findchild.sci . . . 247
A.12 File firingorder.sci . . . 248
A.13 File firingorderbig.sci . . . 249
A.14 File tlintersection.sci . . . 252
A.15 File tlreduced.sci . . . 254
A.16 File intersection.sci . . . 255
A.17 File intersectionext.sci . . . 258
A.18 File readpipe.sci . . . 260
A.19 File petrinetsimulation.sci . . . 264
A.20 File pipesimulation.sci . . . 270
A.21 File treeposition.sci . . . 271
A.22 File covtree.sci . . . 272
A.23 File covpipe.sci . . . 274
A.24 File intersectiongui.sci . . . 275
A.25 File intersectionguiext.sci . . . 279
A.26 File lightsgui.sci . . . 284
A.27 File lightsguiext.sci . . . 291
A.28 File lightsimulation.sci . . . 299
A.29 File lightsimulationext.sci . . . 305
A.30 File buildmacros.sce . . . 310
A.31 File loadmacros.sce . . . 310
A.32 File builder.sce . . . 311
A.33 File loader.sce . . . 311
LAMPIRAN B HASIL SIMULASI . . . 313
DAFTAR GAMBAR
2.1 Petri net Sederhana . . . 6
2.2 Petri net dengan Transisi yang Tidak Mempunyai Place Input 7 2.3 Contoh Transisi yang Tidak Enabled . . . 9
2.4 Contoh Transisi yang Enabled . . . 10
2.5 Keadaan Awal Petri net . . . 12
2.6 Sebelum Transisi t1 Difire . . . 17
2.7 Sesudah Transisi t1 Difire . . . 18
2.8 Keadaan Awal Petri net Bertanda . . . 20
2.9 Keadaan Petri net Setelah Transisi t1 Difire . . . 21
2.10 Keadaan Petri net Setelah Transisi t1 Difire Kemudian t2 . . . 22
2.11 Keadaan Petri net Setelah Transisi t1 Difire Kemudian t3 . . . 22
2.12 Transisi dengan Liveness Berbeda-beda . . . 29
2.13 Keadaan Awal Petri net . . . 30
2.14 Coverability Tree untuk Petri net di Gambar 2.13 . . . 31
2.15 Keadaan Awal Petri net . . . 32
2.16 Sebagian Coverability Tree Petri net di Gambar 2.15 . . . 32
2.17 Representasi Hingga Coverability Tree di Gambar 2.16 . . . . 35
2.18 Input Algoritma 2.10 adalah idparent = 0 dan idtran = 0 . . 56
2.19 Input Algoritma 2.10 adalah idparent = 1 dan idtran = 1 . . 57
2.20 Input Algoritma 2.10 adalah idparent = 2 dan idtran = 2 . . 58
2.21 Input Algoritma 2.10 adalah idparent = 3 dan idtran = 1 . . 59
2.22 Input Algoritma 2.10 adalah idparent = 4 dan idtran = 2 . . 59
2.23 Algoritma dijalankan dengan Menggunakan Input idparent = 4 dan idtran = 3 . . . 60
2.24 Input Algoritma 2.10 adalah idparent = 2 dan idtran = 3 . . 61
2.25 Petri net Antrian Sederhana . . . 62
2.26 Coverability Tree untuk Petri net Antrian Sederhana . . . 64
3.1 Diagram Alir Penelitian . . . 76
4.1 Petri net Antrian Sederhana . . . 78
4.2 Petri net Sederhana untuk Satu Lampu Lalulintas . . . 79
4.3 Coverability Tree untuk Petri net di Gambar 4.2 . . . 82
4.4 Petri net yang Mengandung Informasi Lama Lampu Lalulintas Menyala . . . 83
4.6 Keadaan Petri net yang Menyatakan Semua Lampu Lalulintas
Padam . . . 90
4.7 Petri net Lampu Lalulintas Tanpa Waktu Idle . . . 91
4.8 Coverability Tree untuk Petri net di Gambar 4.7 . . . 96
4.9 Model Persimpangan Sederhana . . . 99
4.10 Modifikasi Model Petri net Sebelumnya . . . 100
4.11 Hubungan Place Merah dengan Transisi pada Jalur yang Lain 101 4.12 Modifikasi Petri net untuk Menyatakan Perubahan Jalur . . . 101
4.13 Petri net untuk Dua Lampu Lalulintas . . . 102
4.14 Coverability Tree untuk Petri net di Gambar 4.13 . . . 110
4.15 Hasil Reduksi Keadaan pada Petri net Lampu Lalulintas di Per-simpangan dengan Dua Jalur . . . 122
4.16 Coverability Tree untuk Petri net di Gambar 4.15 . . . 129
4.17 Grafik Perubahan Jumlah Pengguna Terhadap Waktu di Per-simpangan dengan Dua Jalur . . . 158
4.18 Grafik Perubahan Jumlah Pengguna Terhadap Waktu di Per-simpangan Dengan Dua Jalur . . . 169
5.1 Bobot Arc dari Transisi ke Place yaitu Elemen Tidak Nol pada Matriks Forward Incidence . . . 203
5.2 Bobot Arc dari Place ke Transisi yaitu Elemen Tidak Nol pada Matriks Backward Incidence . . . 204
5.3 Jumlah Token Awal pada Setiap Place di Petri net . . . 205
5.4 Nama Transisi yang Enabled . . . 205
5.5 Urutan Transisi yang Difire Sebelumnya . . . 206
5.6 Petri net Mengalami Deadlock . . . 206
5.7 Memilih File xml yang Dibuat dengan PIPE . . . 208
5.8 Coverability Tree Petri net Antrian Sederhana . . . 209
5.9 Menginputkan Jumlah Jalur dan Waktu Simulasi . . . 211
5.10 Menginputkan Data Kondisi Awal, Mean Kedatangan dan Va-rian Kedatangan pada Masing-Masing Jalur . . . 212
5.11 Simulasi Jumlah Pengguna dengan Kedatangan Berdistribusi Normal . . . 213
5.12 Simulasi Lampu Lalulintas di Persimpangan dengan Kedatangan Berdistribusi Normal . . . 214
5.13 Simulasi Lampu Lalulintas di Persimpangan dengan Kedatangan Berdistribusi Uniform . . . 215
5.15 Memilih Lampu Lalulintas yang Ditampilkan . . . 217 5.16 Perbandingan Jumlah Pengguna Simulasi yang Pertama dan
Ke-dua . . . 221 5.17 Simulasi Jumlah Pengguna dengan Kedatangan Berdistribusi
DAFTAR TABEL
5.1 Mean Jumlah Pengguna pada Simulasi Pertama dengan Keda-tangan Berdistribusi Normal . . . 219 5.2 Maksimum Jumlah Pengguna pada Simulasi Pertama dengan
Kedatangan Berdistribusi Normal . . . 219 5.3 Mean Jumlah Pengguna pada Simulasi Kedua dengan
Keda-tangan Berdistribusi Normal . . . 220 5.4 Maksimum Jumlah Pengguna pada Simulasi Kedua dengan
Ke-datangan Berdistribusi Normal . . . 220 5.5 Mean Jumlah Pengguna pada Simulasi Ketiga dengan
Keda-tangan Berdistribusi Normal . . . 222 5.6 Maksimum Jumlah Pengguna pada Simulasi Ketiga dengan
Ke-datangan Berdistribusi Normal . . . 222 5.7 Mean Jumlah Pengguna pada Simulasi Keempat dengan
Keda-tangan Berdistribusi Normal . . . 224 5.8 Maksimum Jumlah Pengguna pada Simulasi Keempat dengan
Kedatangan Berdistribusi Normal . . . 224 5.9 Mean Jumlah Pengguna pada Simulasi Kelima dengan
Keda-tangan Berdistribusi Normal . . . 225 5.10 Maksimum Jumlah Pengguna pada Simulasi Kelima dengan
Ke-datangan Berdistribusi Normal . . . 226 5.11 Mean Jumlah Pengguna pada Simulasi Keenam dengan
Keda-tangan Berdistribusi Normal . . . 227 5.12 Maksimum Jumlah Pengguna pada Simulasi Keenam dengan
Kedatangan Berdistribusi Normal . . . 227 5.13 Mean Jumlah Pengguna pada Simulasi Ketujuh dengan
Keda-tangan Berdistribusi Normal . . . 228 5.14 Maksimum Jumlah Pengguna pada Simulasi Ketujuh dengan
Kedatangan Berdistribusi Normal . . . 228 5.15 Mean Jumlah Pengguna pada Simulasi Kedelapan dengan
Ke-datangan Berdistribusi Normal . . . 229 5.16 Maksimum Jumlah Pengguna pada Simulasi Kedelapan dengan
Kedatangan Berdistribusi Normal . . . 230 5.17 Mean Jumlah Pengguna pada Simulasi Pertama dengan
5.18 Maksimum Jumlah Pengguna pada Simulasi Pertama dengan Kedatangan Berdistribusi Uniform . . . 231 5.19 Mean Jumlah Pengguna pada Simulasi Kedua dengan
Keda-tangan Berdistribusi Uniform . . . 232 5.20 Maksimum Jumlah Pengguna pada Simulasi Kedua dengan
Ke-datangan Berdistribusi Uniform . . . 232 5.21 Mean Jumlah Pengguna pada Simulasi Ketiga dengan
Keda-tangan Berdistribusi Uniform . . . 233 5.22 Maksimum Jumlah Pengguna pada Simulasi Ketiga dengan
Ke-datangan Berdistribusi Uniform . . . 234 5.23 Mean Jumlah Pengguna pada Simulasi Keempat dengan
Keda-tangan Berdistribusi Uniform . . . 235 5.24 Maksimum Jumlah Pengguna pada Simulasi Keempat dengan
Kedatangan Berdistribusi Uniform . . . 235 5.25 Mean Jumlah Pengguna pada Simulasi Kelima dengan
Keda-tangan Berdistribusi Uniform . . . 236 5.26 Maksimum Jumlah Pengguna pada Simulasi Kelima dengan
Ke-datangan Berdistribusi Uniform . . . 236 5.27 Mean Jumlah Pengguna pada Simulasi Keenam dengan
Keda-tangan Berdistribusi Uniform . . . 237 5.28 Maksimum Jumlah Pengguna pada Simulasi Keenam dengan
Kedatangan Berdistribusi Uniform . . . 237 5.29 Mean Jumlah Pengguna pada Simulasi Ketujuh dengan
Keda-tangan Berdistribusi Uniform . . . 238 5.30 Maksimum Jumlah Pengguna pada Simulasi Ketujuh dengan
Kedatangan Berdistribusi Uniform . . . 238 5.31 Mean Jumlah Pengguna pada Simulasi Kedelapan dengan
Ke-datangan Berdistribusi Uniform . . . 239 5.32 Maksimum Jumlah Pengguna pada Simulasi Kedelapan dengan
Kedatangan Berdistribusi Uniform . . . 239 B.1 Mean Simulasi Pertama di Jalur 1 Berdistribusi Normal . . . . 313 B.2 Mean Simulasi Pertama di Jalur 2 Berdistribusi Normal . . . . 314 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 . . 316 B.6 Mean Simulasi Kedua di Jalur 1 Berdistribusi Normal . . . 317 B.7 Mean Simulasi Kedua di Jalur 2 Berdistribusi Normal . . . 318
B.8 Maksimum Simulasi Kedua di Jalur 1 Berdistribusi Normal . . 319 B.9 Maksimum Simulasi Kedua di Jalur 2 Berdistribusi Normal . . 320 B.10 Waktu Komputasi Simulasi Kedua Berdistribusi Normal . . . 320 B.11 Mean Simulasi Ketiga di Jalur 1 Berdistribusi Normal . . . 321 B.12 Mean Simulasi Ketiga di Jalur 2 Berdistribusi Normal . . . 322 B.13 Mean Simulasi Ketiga di Jalur 3 Berdistribusi Normal . . . 323 B.14 Maksimum Simulasi Ketiga di Jalur 1 Berdistribusi Normal . . 324 B.15 Maksimum Simulasi Ketiga di Jalur 2 Berdistribusi Normal . . 325 B.16 Maksimum Simulasi Ketiga di Jalur 3 Berdistribusi Normal . . 326 B.17 Waktu Komputasi Simulasi Ketiga Berdistribusi Normal . . . 326 B.18 Mean Simulasi Keempat di Jalur 1 Berdistribusi Normal . . . 327 B.19 Mean Simulasi Keempat di Jalur 2 Berdistribusi Normal . . . 328 B.20 Mean Simulasi Keempat di Jalur 3 Berdistribusi Normal . . . 329 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 . . 332 B.25 Mean Simulasi Kelima di Jalur 1 Berdistribusi Normal . . . . 333 B.26 Mean Simulasi Kelima di Jalur 2 Berdistribusi Normal . . . . 334 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 . . . 336 B.30 Mean Simulasi Keenam di Jalur 1 Berdistribusi Normal . . . . 337 B.31 Mean Simulasi Keenam di Jalur 2 Berdistribusi Normal . . . . 338 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 . . 340 B.35 Mean Simulasi Ketujuh di Jalur 1 Berdistribusi Normal . . . . 341 B.36 Mean Simulasi Ketujuh di Jalur 2 Berdistribusi Normal . . . . 342 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 . . 344 B.40 Mean Simulasi Kedelapan di Jalur 1 Berdistribusi Normal . . 345 B.41 Mean Simulasi Kedelapan di Jalur 2 Berdistribusi Normal . . 346 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
B.45 Mean Simulasi Pertama di Jalur 1 Berdistribusi Uniform . . . 349 B.46 Mean Simulasi Pertama di Jalur 2 Berdistribusi Uniform . . . 350 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 . . 352 B.50 Mean Simulasi Kedua di Jalur 1 Berdistribusi Uniform . . . . 353 B.51 Mean Simulasi Kedua di Jalur 2 Berdistribusi Uniform . . . . 354 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 . . . 356 B.55 Mean Simulasi Ketiga di Jalur 1 Berdistribusi Uniform . . . . 357 B.56 Mean Simulasi Ketiga di Jalur 2 Berdistribusi Uniform . . . . 358 B.57 Mean Simulasi Ketiga di Jalur 3 Berdistribusi Uniform . . . . 359 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 . . . 362 B.62 Mean Simulasi Keempat di Jalur 1 Berdistribusi Uniform . . . 363 B.63 Mean Simulasi Keempat di Jalur 2 Berdistribusi Uniform . . . 364 B.64 Mean Simulasi Keempat di Jalur 3 Berdistribusi Uniform . . . 365 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 . . . . 369 B.70 Mean Simulasi Kelima di Jalur 2 Berdistribusi Uniform . . . . 370 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 . . . 372 B.74 Mean Simulasi Keenam di Jalur 1 Berdistribusi Uniform . . . 373 B.75 Mean Simulasi Keenam di Jalur 2 Berdistribusi Uniform . . . 374 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 . . 376 B.79 Mean Simulasi Ketujuh di Jalur 1 Berdistribusi Uniform . . . 377 B.80 Mean Simulasi Ketujuh di Jalur 2 Berdistribusi Uniform . . . 378 B.81 Maksimum Simulasi Ketujuh di Jalur 1 Berdistribusi Uniform 379
B.82 Maksimum Simulasi Ketujuh di Jalur 2 Berdistribusi Uniform 380 B.83 Waktu Komputasi Simulasi Ketujuh Berdistribusi Uniform . . 380 B.84 Mean Simulasi Kedelapan di Jalur 1 Berdistribusi Uniform . . 381 B.85 Mean Simulasi Kedelapan di Jalur 2 Berdistribusi Uniform . . 382 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
DAFTAR ALGORITMA
2.1 Mencari Transisi Enabled . . . 10 2.2 Alternatif Penentuan Transisi Enabled . . . 14 2.3 Pemfirean Transisi . . . 19 2.4 Himpunan Parent Bertingkat . . . 39 2.5 Modifikasi Parent Bertingkat . . . 43 2.6 Pengujian Dominasi . . . 45 2.7 Pengujian Sederetan Dominasi . . . 47 2.8 Perbandingan Keadaan . . . 49 2.9 Pencarian Node . . . 51 2.10 Membangun Coverability Tree . . . 54 2.11 Menentukan Batas Atas Setiap Place di Petri net . . . 65 2.12 Pengujian Cover . . . 71 2.13 Pengujian Coverable . . . 73 4.1 Petri net Lampu Lalulintas Sederhana . . . 80 4.2 Petri net Lampu Lalulintas Dengan Waktu Tunggu . . . 84 4.3 Petri net Lampu Lalulintas Tanpa Waktu Idle . . . 92 4.4 Petri net Lampu Lalulintas di Persimpangan . . . 104 4.5 Forward Incidence Petri net Lampu Lalulintas di Persimpangan 106 4.6 Backward incidence Petri net Lampu Lalulintas di Persimpangan 108 4.7 Petri net Lampu Lalulintas Tereduksi . . . 123 4.8 Forward Incidence Petri net Lampu Lalulintas Tereduksi . . . 125 4.9 Backward Incidence Petri net Lampu Lalulintas Tereduksi . . 127 4.10 Tahap Inisialisasi Simulasi Jumlah Pengguna . . . 147 4.11 Perpindahan Jalur Simulasi Jumlah Pengguna . . . 150 4.12 Simulasi Jumlah Pengguna di Persimpangan . . . 152 4.13 Modifikasi Tahap Inisialisasi Simulasi Jumlah Pengguna . . . . 160 4.14 Modifikasi Perpindahan Jalur Simulasi Jumlah Pengguna . . . 162 4.15 Modifikasi Simulasi Jumlah Pengguna di Persimpangan . . . . 164
BAB 1
PENDAHULUAN
Pada bab ini dibahas latar belakang penelitian yang membahas hasil penelitian dan uraian kegiatan yang telah dilakukan. Berdasarkan uraian ter-sebut, dirumuskan masalah yang diteliti beserta batasan-batasan yang digu-nakan. 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 peng-guna 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 pe-layanan 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 se-belumnya (De Schutter dkk, 1998) telah mengindentifikasi permasalahan ini sebagai kontrol optimum untuk meminimumkan jumlah pengguna yang me-nunggu 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 Pre-dictive 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.
Perubahan lampu lalulintas yang menyala adalah event dan lampu la-lulintas yang menyala pada masing-masing jalur adalah keadaan. Jelas bahwa jumlah semua keadaan yang mungkin adalah berhingga. Berdasarkan kete-rangan 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 mensimula-sikan 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 diba-has bagaimana membangun coverability tree dari Petri net. Coverability tree digunakan untuk menganalisis sifat-sifat Petri net. Aspek yang dianalisis me-liputi keterbatasan (boundedness), konservasi (conservation) dan coverability keadaan.
Pada bagian berikutnya dibahas implementasi dari algoritma yang telah dibahas menggunakan Scilab. Implementasi secara garis besar menca-kup simulasi Petri net, analisis Petri net dan membangun Petri net lampu lalulintas. Petri net dibuat terlebih dahulu sebelum melakukan analisis. Pen-definisian 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 represen-tasi 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 persim-pangan diimplementasikan menggunakan Scilab. Ada dua pendekatan yang digunakan dalam simulasi ini yaitu kedatangan berdistribusi normal dan ke-datangan berdistribusi uniform diskrit (Allen, 2003). Hasil yang diperoleh dari simulasi berupa mean jumlah pengguna dan maksimum jumlah pengguna. Ke-dua informasi tersebut dapat digunakan untuk menentukan kestabilan sistem. Lama setiap lampu lalulintas menyala dapat diketahui dengan simulasi lampu lalulintas pada beberapa jalur di persimpangan.
1.2
Rumusan Masalah
Permasalahan yang dibahas dalam penelitian ini adalah.
1. Berapa jumlah place pada model Petri net lampu lalulintas di persim-pangan dengan jumlah jalur sebarang.
2. Berapa jumlah place pada Petri net lampu lalulintas di persimpangan setelah direduksi.
3. Bagaimana mensimulasikan perubahan jumlah pengguna pada masing-masing 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 se-bagai 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 per-simpangan.
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 men-jadi 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 co-verability 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 1960-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 masing-masing 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 out-put dari transisi.
Definisi 2.1 (Cassandras, 1993). Petri net adalah 4-tuple (P, T, A, w) dengan
• P : himpunan berhingga place, P = {p1, p2, . . . , pn},
• T : himpunan berhingga transisi, T = {t1, t2, . . . , tm},
• 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 ha-rus berupa himpunan berhingga melainkan bisa berupa himpunan takhingga
terhitung (countable sets). Pada hampir semua kasus yang rumit dapat di-modelkan 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 membe-rikan 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(tj) dan O(tj) yang masing-masing menyatakan himpunan place input
dan output ke transisi tj. Secara matematis definisi tersebut dapat ditulis
menjadi persamaan berikut (Cassandras, 1993).
I(tj) = {pi : (pi, tj) ∈ A}
O(tj) = {pi : (tj, pi) ∈ A}
(2.1)
Notasi yang sama dapat digunakan untuk mendeskripsikan input dan output transisi untuk place pi sebagai berikut.
I(pi) = {tj : (tj, pi) ∈ A}
O(pi) = {tj : (pi, tj) ∈ 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 pi ke transisi tj berarti pi ∈ I(tj). Jika bobot arc dari
place pi ke transisi tj adalah k ditulis w(pi, tj) = k maka terdapat k arc dari
place pi ke transisi tj atau sebuah arc dengan bobot k.
p1 t1 p2
Gambar 2.1 Petri net Sederhana
Contoh 2.1. Perhatikan Petri net pada Gambar 2.1. Terdapat dua place pada Petri net tersebut yaitu p1 dan p2 ditulis P = {p1, p2}. Untuk menyatakan
bahwa terdapat sebuah transisi yaitu t1maka ditulis T = {t1}. Arc dinyatakan
kedua menyatakan tujuan misalnya arc dari place p1ke transisi t1ditulis (p1, t1)
dan (t1, p2) menyatakan arc dari transisi t1 ke place p2. Secara lengkap ditulis
A = {(p1, t1), (t1, p2)}. Bobot arc dari place p1 ke transisi t1 adalah dua
yaitu w(p1, t1) = 2 dan bobot dari transisi t1 ke place p2 adalah satu yaitu
w(t1, p2) = 1. Pada contoh ini I(t1) = {p1} dan O(t1) = {p2}.
Terlihat pada Contoh 2.1 bahwa bobot arc dari place p1 ke transisi
t1 adalah 2 dan digambarkan dengan dua buah arc. Bobot arc dari transisi t1 ke place p2 adalah satu. Transisi tidak harus mempunyai place input dan
place output seperti transisi t1 pada Gambar 2.1. Kadang transisi tidak
mem-punyai place input. Ini berarti event yang dinyatakan oleh transisi tersebut tidak membutuhkan kondisi untuk dapat terjadi. Transisi t2 pada Petri net
Contoh 2.2 tidak mempunyai place input.
p1 t1 p2 t2
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 tran-sisi yang masing-masing dapat ditulis P = {p1, p2} dan T = {t1, t2}. Arc
dinyatakan dengan pasangan berurutan misalnya arc dari place p1 ke transisi
t1 dinotasikan dengan (p1, t1). Jumlah arc pada Petri net tersebut sebanyak 4
yang ditulis A = {(p1, t1), (t1, p2), (p2, t1), (t2, p2)}. Berikut merupakan bobot
pada masing-masing arc
w(p1, t1) = 2, w(t1, p2) = w(p2, t1) = w(t2, p2) = 1 (2.3)
Terlihat dari Gambar 2.2 bahwa I(t1) = P , yang menyatakan bahwa semua
place pada Petri net merupakan input dari transisi t1. Jelas bahwa himpunan
O(t1) = {p2} = O(t2) dan I(t2) = ∅ karena tidak ada place yang menjadi
input dari transisi t2.
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 mempu-nyai place yang menjadi input sekaligus output untuk suatu transisi. Secara formal ditulis
∄ pi ∈ P, tj ∈ T ∋ {(pi, tj), (tj, pi)} ⊆ 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 p2 adalah place input dan output
untuk transisi t1.
2.2
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 me-kanisme 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 tak-negatif yang menyatakan jumlah token yaitu x = [x(p1), x(p2), . . . , x(pn)]T.
Jumlah elemen x sama dengan banyak place di Petri net. Elemen ke-i pada vektor ini merupakan jumlah token pada place pi, x(pi) ∈ {0, 1, 2, . . . }.
Definisi 2.4 (Cassandras, 1993). Petri net bertanda (marked ) adalah 5-tuple (P, T, A, w, x0) dimana (P, T, A, w) adalah Petri net dan x0 adalah penanda
awal
Selanjutnya Petri net bertanda cukup disebut Petri net. Seperti pemo-delan 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(p1), x(p2), . . . , x(pn)]T
Perhatikan bahwa jumlah token pada place adalah sebarang bilangan bulat taknegatif, tidak harus terbatas (bounded ). Secara umum jumlah pe-nanda 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.
Un-tuk 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 tj ∈ T pada Petri net bertanda
enabled jika
x(pi) ≥ w(pi, tj), ∀pi ∈ I(tj) (2.5)
Gambar 2.3 merupakan contoh transisi yang tidak enabled. Jelas bahwa I(t1) = {p1}, x(p1) = 1 dan w(p1, t1) = 2 seperti yang terlihat pada
Gambar 2.3 Transisi t1 tidak enabled karena 1 = x(p1) < w(p1, t1) = 2.
•
p1 t1
2
p2
Gambar 2.3 Contoh Transisi yang Tidak Enabled
Transisi t1 enabled jika jumlah token pada place p1 lebih dari atau
sama dengan 2. Terlihat pada Petri net Gambar 2.4 bahwa x(p1) = 2 sehingga
transisi tj enabled maka jumlah token pada place pi paling sedikit sebesar
bobot arc yang menghubungkan pi ke tj. Kenyataan ini sesuai dengan definisi
transisi enabled yang telah dituliskan sebelumnya.
••
p1 t1
2 •
p2
Gambar 2.4 Contoh Transisi yang Enabled
Berdasarkan keterangan sebelumnya didesain algoritma untuk menen-tukan 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 himpu-nan 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(pi) ≥ w(pi, tuji) diuji untuk 1 ≤ i ≤ |P | pada perulangan
while. Jika saat keluar dari perulangan ini i ≤ |P | maka x(pi) < w(pi, tuji)
se-hingga place pi 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 = {p1, p2, . . . , pn}, T, w, x
Output: En/* himpunan transisi enabled */ 1 En ← ∅ /* inisialisasi */
2 for all tuji ∈ T do 3 i ← 1
4 while x(pi) ≥ w(pi, tuji) and i ≤ |P | do 5 i ← i + 1 6 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
belum tentu benar. Pengujian algoritma yang efektif dilakukan dengan meng-hitung 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 menyata-kan bahwa fungsi T (n) anggota dari O(f (n)) tidak ditulismenyata-kan 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 n0
sede-mikian hingga T (n) ≤ c f (n) untuk semua n > n0.
Selanjutnya dibahas bagaimana menggunakan Definisi 2.7 untuk me-nentukan 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 di-tentukan n0 agar pertidaksamaan 3n + 9 ≤ 4n dipenuhi untuk setiap n > n0.
Jelas bahwa pertidaksamaan sebelumnya dipenuhi untuk n = 9, 10, 11, . . . se-hingga diperoleh n0 = 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 n0 yang menyebabkan pertidaksamaan dipenuhi. Hal ini dapat
diilustra-sikan dengan memilih T (n) = n2 dan f (n) = 3n. Misal dipilih c = 1 maka
pertidaksamaan n2 ≤ 3n dipenuhi untuk 1 ≤ n ≤ 3. Secara umum berapapun
nilai c yang dipilih maka tidak pertidaksamaan n2 ≤ 3cn tidak berlaku untuk
n > 3c sehingga dapat disimpulkan fungsi 3n tidak mendominasi n2.
Dalam menghitung banyak kerja yang dilakukan algoritma, harus di-tentukan jenis operasi yang dihitung. Operasi yang dihitung adalah operasi utama atau operasi dengan kompleksitas yang besar yaitu operasi yang ter-diri 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
input yang menyebabkan banyak kerja Algoritma 2.1 paling besar. Jelas bahwa operasi x(pi) ≥ w(pi, tuji) dilakukan untuk setiap transisi di Petri net yang
ter-lihat 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 se-mua 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 se-lain banyak kerja yang dilakukan adalah banyak memori (memory) yang pakai algoritma seperti telah dijelaskan sebelumnya. Banyak memori yang di-pakai algoritma merupakan banyak memori yang didi-pakai variabel tambahan. Variabel tambahan adalah semua variabel dalam algoritma selain variabel in-put dan outin-put. 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 bahan sehingga variabel tambahan ditentukan terlebih dahulu. Variabel tam-bahan 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).
• p1 p2 p3 p4 t1 t2 t3
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 p1, p2, p3
anggota yaitu t1, t2 dan t3 yang ditulis T = {t1, t2, t3}. Pada contoh berikut
Algoritma 2.1 digunakan untuk menentukan transisi yang enabled saat keadaan awal x0 = [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(p1) = 1 = w(p1, t1) dan 1 = i ≤ |P | = 4 sehingga pernyataan pada
baris 4 bernilai benar dan variabel i bernilai 2. Place p2 tidak mempunyai
token dan tidak ada arc dari p2 ke t1 menyebabkan x(p2) = 0 = w(p2, t1) 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(pi) ≥ w(pi, t1) 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. Pernya-taan 5 = i > |P | = 4 bernilai benar sehingga variabel En = {t1} setelah
menjalankan baris 8. Hal ini menyatakan transisi t1 enabled.
Selanjutnya diproses transisi kedua. Sama dengan sebelumnya yaitu variabel i diisi nilai 1 kemudian menuju ke perulangan while. Tidak ada arc dari p1 ke t2 menyebabkan x(p1) ≥ w(p1, t2) 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(p2) w(p2, t2) = 1 sehingga
pernyataan di while bernilai salah. Kenyataan 2 = i≯ |P | = 4 menyebabkan kondisi pada baris 7 tidak terpenuhi. Hal ini menunjukkan bahwa transisi t2
tidak enabled.
Transisi yang diproses berikutnya adalah transisi ketiga. Nilai variabel i diinisialisasi 1. Jelas bahwa tidak ada arc dari place p1ke t3 sehingga
pernya-taan di while bernilai benar dan nilai variabel i berubah menjadi 2. Kenyapernya-taan bahwa 0 = x(p2) w(p2, t3) = 1 mengakibatkan pernyataan pada baris 4
ber-nilai salah. Variabel En tetap yaitu En = {t1} karena 2 = i ≯ |P | = 4. Jadi
outputnya adalah En = {t1} yang menyatakan bahwa pada keadaan awal
terdapat satu transisi yang enabled yaitu t1.
Algoritma 2.1 menentukan suatu transisi enabled dengan menguji ke-berlakuan 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 keberla-kuan pertidaksamaan (2.5) untuk setiap place input dari transisi tersebut. Untuk place yang lain pertidaksamaan (2.5) pasti dipenuhi. Diharapkan de-ngan menggunakan pendekatan ini, banyak kerja yang dilakukan untuk menen-tukan 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 ifx(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 2.1.
Selanjutnya menentukan kompleksitas Algoritma 2.2 yaitu menghi-tung 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 di-hitung sama dengan algoritma sebelumnya yaitu operasi perbandingan. Ope-rasi perbandingan yang dimaksud berada pada baris 5. Berikutnya ditentu-kan input yang menyebabditentu-kan kemungkinan terburuk terjadi. Untuk meng-uji suatu transisi tmeng-uji ∈ 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 tran-sisi sehingga input yang menyebabkan banyak kerja yang dilakukan paling besar sama dengan sebelumnya yaitu keadaan Petri net dengan semua tran-sisi enabled. Dengan input ini algoritma tersebut melakukan kerja sebanyak P
t∈T |I(t)| yang ditulis W (|A|, T ) =
P
t∈T |I(t)| = O(|A|). Jelas bahwa
ba-nyak kerja yang dilakukan oleh Algoritma 2.2 lebih kecil atau sama dengan Algoritma 2.1 yaitu P
t∈T |I(t)| ≤ |P | × |T | karena himpunan place input
se-tiap transisi merupakan himpunan bagian dari himpunan place di Petri net yang ditulis I(t) ⊆ P, ∀t ∈ T . Persamaan P
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 tam-bahan 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 algo-ritma 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 ke-adaan awal x0 = [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 t1. Variabel isenabled diinisialisasi dengan true pada baris 3.
Jelas bahwa I(t1) = {p1} dan x(p1) = 1 = w(p1, t1) 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 {t1}.
Proses dilanjutkan dengan menguji transisi t2. Place input dari
tran-sisi t2 adalah p2 yang ditulis I(t2) = {p2}. Kondisi pada baris 5 terpenuhi
karena 0 = x(p2) < w(pi, tj) = 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 t3. Place input dari transisi ini
adalah p2 dan p3 yang ditulis I(t3) = {p2, p3}. Kondisi pada baris 5 dipenuhi
untuk place p2 dan p3 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(pi) < w(pi, t3) = 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 {t1}.
Berdasarkan pembahasan sebelumnya maka banyak kerja yang dila-kukan 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 keru-mitan permasalahan yang ingin diselesaikan.
Pada bagian berikutnya dibahas bagaimana mekanisme perubahan ke-adaan pada Petri net. Mekanisme ini berperan penting dalam proses pemo-delan 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 men-jalankan 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 se-banyak bobot arc yang menghubungkannya. Berdasarkan Definisi 2.6 maka
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, x0) yaitu f : {0, 1, 2, . . . }n×T → {0, 1, 2, . . . }nterdefinisi
untuk transisi tj ∈ T jika dan hanya jika
x(pi) ≥ w(pi, tj), ∀pi ∈ I(tj) (2.6)
Jika f (x, tj) terdefinisi maka ditulis x′ = f (x, tj), dimana
x′(pi) = x(pi) − w(pi, tj) + w(tj, pi), i = 1, 2, . . . , n (2.7)
Kondisi (2.6) menjamin fungsi perubahan keadaan hanya didefinisi-kan untuk transisi yang enabled. Fungsi perubahan keadaan didasardidefinisi-kan pada struktur Petri net. Keadaan berikutnya yang didefinisikan pada (2.7) secara eksplisit tergantung dari fungsi bobot pada setiap input dan output pada tran-sisi.
Berdasarkan (2.7), jika pi adalah place input untuk transisi tj, maka
token pada place pi berkurang sebanyak bobot arc dari pi ke tj. Sebaliknya
jika piadalah place output dari transisi tj maka token pada place pibertambah
sebesar bobot arc dari tj ke pi. Mungkin pi adalah place input dan output
dari transisi tj sehingga menurut (2.7) token pada place piberkurang sebanyak
w(pi, tj) dan bertambah sebanyak w(tj, pi).
Perhatikan bahwa jumlah token pada Petri net bertanda tidak tetap. Jelas dari (2.7) bahwa mungkin w(tj, pi) > w(pi, tj) sehingga token yang
di-tambahkan pada place pi lebih banyak daripada yang diambil ketika transisi
tj difire. Secara umum token pada Petri net mungkin habis setelah beberapa
kali pemfirean atau jumlahnya bertambah menuju takhingga.
••
p1 t1
2 •
p2
Gambar 2.6 Sebelum Transisi t1 Difire
Berikut dibahas proses pemfirean Petri net pada Gambar 2.6 dan keadaan Petri net setelah terjadi pemfirean transisi.
Contoh 2.5. Inisialisasi jumlah token pada p1 dan p2 masing-masing adalah
2 dan 1 sehingga penanda awal Petri net adalah x0 = [x(p1), x(p2)]T = [2, 1]T.
Arc dari p1 ke t1 mempunyai bobot 2 ditulis w(p1, t1) = 2.
Jelas bahwa x(p1) = 2 ≥ w(p1, t1) sehingga transisi t1 enabled dan
dapat difire. Untuk memfire transisi t1 dibutuhkan dua token dari place p1
sehingga token di place tersebut habis dan sebuah token ditambahkan di place p2. Penanda Petri net berubah menjadi x′ = [0, 2]T setelah transisi t
1 difire
dan bisa ditulis x′ = f (x
0, t1). Transisi t1 tidak enabled karena tidak ada token
pada place p1. Pada keadaan ini tidak ada transisi yang enabled karena Petri
net pada Gambar 2.6 mempunyai sebuah transisi yaitu t1.
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.
p1 t1
2 ••
p2
Gambar 2.7 Sesudah Transisi t1 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 to-ken 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).
De-ngan 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 T erhubung.
Berikut merupakan algoritma pemfirean transisi menggunakan pen-dekatan yang dibahas sebelumnya.
Algoritma 2.3 Pemfirean Transisi Input: x, tf ∈ T
Output: x′ = f (x)/* keadaan setelah transisi tf difire */
1 x′ ← x; T erhubung ← I(tf ) ∪ O(tf )/* inisialisasi */ 2 for all pt ∈ T erhubung 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 al-goritma 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 dijalan-kan sebanyak jumlah anggota dari himpunan I(tf ) ∪ O(tf ) dengan tf adalah transisi yang difire. Jelas bahwa gabungan himpunan place input dan him-punan place output dari transisi tf adalah himhim-punan bagian dari himhim-punan 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 t1. Pada contoh berikut Algoritma 2.3 digunakan untuk mengetahui keadaan setelah transisi t1 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 t1 adalah p1 dan place outputnya adalah p2 dan p3 yang
masing-masing ditulis I(t1) = {p1} dan O(t1) = {p2, p3}. Pernyataan pada
baris 3 dijalankan yaitu x′(p
1) = x(p1) − w(p1, t1) + w(t1, p1) = 1 − 1 + 0 = 0
dengan variabel pt = p1 sehingga variabel x′ menjadi [0, 0, 0, 0]T. Selanjutnya
Untuk pt = p2 diperoleh x′(p2) = x(p2) − w(p2, t1) + w(t1, p2) = 0 − 0 + 1 = 1.
Dengan cara yang sama diperoleh x′(p
3) = x(p3) − w(p3, t1) + w(t1, p3) untuk
pi = p3 sehingga x′(p3) = 0 − 0 + 1 = 1. Jadi keadaan Petri net setelah transisi
t1 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(p1), x(p2), . . . , x(pn)]T ditulis x [p1, p2, . . . , pn]T dan untuk menyatakan
[w(p1, tj), w(p2, tj), . . . , w(pn, tj)]T dapat ditulis w [p1, p2, . . . , pn]T, tj 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]Tdef = [x(p′1), x(p′2), . . . , x(p′n1)]T w [p′ 1, p′2, . . . , p′n]T, t def = [w(p′ 1, t), w(p′2, t), . . . , w(p′n, t)]T (2.8)
Untuk memperjelas penggunaan Definisi 2.9, berikut dibahas penggu-naan notasi vektor pada permasalahan pemfirean transisi. Tujuan penggupenggu-naan notasi vektor adalah mempersingkat penulisan.
•• p1 p2 p3 p• 4 t1 t2 t3
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 t1
adalah p1 sedangkan place outputnya adalah p2 dan p3 yang dapat dinotasikan
dan p3 sedangkan p2 dan p4 merupakan place outputnya yang dapat ditulis
I(t2) = {p2, p3} dan O(t2) = {p2, p4}. Transisi t3 mempunyai place input p1,
p3 dan p4 tetapi tidak mempunyai place output, yaitu I(t3) = {p1, p3, p4} dan
O(t3) = ∅.
Keadaan awal Petri net adalah x0 = [x(p1), x(p2), x(p3), x(p4)]T yaitu
x0 = [2, 0, 0, 1]T. Terlihat pada Gambar 2.8 bahwa satu-satunya transisi yang
enabled adalah t1, karena transisi tersebut hanya membutuhkan sebuah
to-ken dari place p1 dan token pada place p1 berjumlah dua, yaitu x(p1) = 2.
Jelas bahwa 2 = x(p1) ≥ w(p1, t1) = 1 sehingga transisi t1 memenuhi
per-samaan (2.6). Transisi t2 tidak enabled karena tidak ada token pada place
p2 dan p3 yang dapat ditulis 0 = x [p2, p3]T
< w [p2, p3]T, t2
= 1. No-tasi 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 t3 tidak enabled karena
[2, 0, 1]T = x [p
1, p3, p4]T
w [p1, p3, p4]T, t3 = 1.
Ketika transisi t1 difire maka sebuah token diambil dari place p1 dan
sebuah token ditambahkan ke place p2 dan p3 seperti pada Gambar 2.9.
Per-samaan (2.7) juga dapat digunakan untuk mengetahui keadaan berikutnya.
• p1 • p2 • p3 • p4 t1 t2 t3
Gambar 2.9 Keadaan Petri net Setelah Transisi t1 Difire
Keadaan Petri net menjadi x1 = 1 seperti terlihat pada Gambar 2.9.
Transisi t1 enabled karena ada satu token di p1, ditulis x(p1) = 1 = w(p1, t1).
Kondisi x [p2, p3]T = 1 = w [p2, p3]T, t2 menyebabkan transisi t2 enabled.
Pemfirean dapat dilakukan pada transisi t3 karena terdapat token pada place
p1, p3 dan p4, yaitu x [p1, p3, p4]T
= 1 = w [p1, p3, p4]T, t3. Jadi pada
keadaan ini semua transisi enabled karena semua place sudah terisi token. Selanjutnya misal transisi t2 difire. Pada setiap place input dari
tran-sisi t2, token dikurangi satu. Dalam hal ini pada place p2 dan p3 sehingga
kedua place tersebut tidak mempunyai token. Place output dari transisi t2
kembali mempunyai sebuah token. Ingat bahwa place p2 adalah place input
sekaligus place output dari transisi t2 yang ditulis p2 ∈ I(t2) ∩ O(t2). Selain
place p2, place output dari transisi t2 adalah place p4 sehingga pada place
ter-sebut ditambahkan sebuah token. Jumlah token yang berada pada place p4
bertambah menjadi dua.
Keadaan Petri net menjadi x2 = [1, 1, 0, 2]T yang ditunjukkan oleh
Petri net pada Gambar 2.10. Transisi t1 tetap enabled karena place p1
mem-punyai sebuah token dan arc yang menghubungkan place p1 ke transisi t1
mempunyai bobot satu yang dapat ditulis x(p1) = 1 = w(p1, t1). Tidak
adanya token pada place p3 menyebabkan transisi t2 dan t3 tidak enabled.
Hal ini dapat ditulis sebagai [1, 0]T = x [p 2, p3]T w [p2, p3]T, t2 = 1 dan.[1, 0, 2]T = x [p 1, p3, p4]T
w [p1, p3, p4]T, t3 = 1. Jadi pada keadaan
ini satu-satunya transisi yang enabled adalah t1.
• p1 • p2 p3 •• p4 t1 t2 t3
Gambar 2.10 Keadaan Petri net Setelah Transisi t1 Difire Kemudian t2
Mari kembali ke keadaan x1 yaitu Petri net pada Gambar 2.9
di-mana semua transisi enabled. Jika sebelumnya transisi yang difire adalah t1
maka sekarang transisi t3 difire. Token pada setiap place input dari transisi
t3 dikurangi satu yaitu pada place p1, p3 dan p4. Perhatikan bahwa tidak ada
place output dari transisi t3. Keadaan ini juga dinotasikan dengan x2 karena
pemfirean sudah dilakukan dua kali sejak keadaan x0.
p1 • p2 p3 p4 t1 t2 t3
Gambar 2.11 Keadaan Petri net Setelah Transisi t1 Difire Kemudian t3
Keadaan Petri net pada Gambar 2.11 menjadi x2 = [0, 1, 0, 0]T.