BAB II. KAJIAN PUSTAKA DAN KERANGKA PEMIKIRAN
B. Teori Yang Mendukung
1 n
dmn , dimana m adalah jumlah perjalanan kereta dan n adalah jumlah tugas dalam tiap perjalanan tersebut.
B. Teori Yang Mendukung
Berikut ini dipaparkan teori-teori yang berkenaan dengan tema penelitian dalam tesis ini. Penulis memaparkan dasar-dasar teori yang memiliki relevansi cukup dalam pemodelan penjadwalan kereta otomatis. Penulis memaparkannya dalam urutan, sehingga konteksnya dengan penelitian ini tetap fokus.
Secara khusus, penelitian ini terfokus dengan Constraint Logic Programming (CLP), sebagai alat bantu pemodelan. Namun karena CLP ini memiliki beberapa aspek yang berbeda, maka penulis membaginya ke dalam tiga bagian. Ketiga bagian itu adalah pertama Sistem Pakar itu sendiri sebagai pendahuluan, lalu Constraint Programming (CP), Logic Programming (LP), dan terakhir adalah CLP yang merupakan gabungan antara CP dan LP. Kemudian penulis mengakhiri dengan teori tentang Pemodelan Simulasi, dan sedikit informasi tentang perkeretaapian di Indonesia yang memiliki kaitan erat dengan tesis ini.
(Oliveira & Smith, 2000)
1. Sistem Pakar
Tema penelitian ini berkaitan dengan masalah Kecerdasan Buatan atau Artificial
Intelligence, sehingga perlu diberikan pengantar tentang Kecerdasan buatan. Sumber
yang dipakai untuk masalah ini adalah buku rujukan utama dalam perkuliahan, yaitu “Artificial Intelligence: A Modern Approach” (Russel & Norvig, 1995).
Kecerdasan Buatan memiliki dua dimensi yang saling berkombinasi, yaitu pertimbangan (rasionality) dan perilaku (behaviour). Dua sisi ekstrem untuk pertimbangan adalah: pertimbangan yang rasional dan pertimbangan yang seperti manusia (yang melingkupi banyak hal dan tidak hanya masalah rasional). Dua sisi ekstrem untuk perilaku adalah: berpikir (think) dan bertindak (act).
Dua dimensi dengan masing-masing nilai ekstremnya ini dikombinasikan menjadi empat definisi dasar dari Kecerdasan Buatan (Gambar 11), yaitu:
1. Berpikir seperti manusia. 2. Bertindak seperti manusia.
3. Berpikir rasional. 4. Bertindak rasional.
Hal selanjutnya yang perlu dipaparkan adalah tentang konsep agen (agent), yaitu sesuatu yang memiliki kemampuan untuk mengindera (perceiving) melalui sensor-sendornya untuk memahami lingkungan (environment) di sekitarnya, dan mampu untuk bertindak (acting) di lingkungan itu dengan bantuan alat (effector atau actuator).
Agen rasional (rational agent) adalah agen yang memiliki kemampuan untuk memaksimalkan nilai yang diharapkan (expected value), berdasarkan penginderaan atas lingkungan di sekitarnya. Agen rasional ini bekerja secara mandiri atau autonomous, dan memiliki sifat eksplorasi dan belajar.
Untuk merancang sebuah agen rasional, maka dia harus memiliki lingkungan kerja yang disingkat dengan PEAS. PEAS adalah:
(Russel & Norvig, 1995)
• Performance measure atau ukuran-ukuran yang digunakan dalam menganalisa.
• Environment atau lingkungan tempatnya melakukan eksplorasi.
• Actuator atau alat bantu untuk bertindak.
• Sensor atau pengindera.
Lingkungan adalah hal yang utama dipertimbangkan dalam merancang agen, karena agen menganalisa lingkungan yang ada di sekitarnya, dan bertindak di dalam lingkungan itu juga. Untuk itu perlu beberapa dimensi lingkungan yang harus diketahui, yang digunakan untuk menganalisa sifat-sifat dari lingkungan. Dimensi lingkungan tersebut adalah:
1. Observable atau dapat diamati.
2. Deterministic atau keadaan selanjutnya dapat diketahui berdasarkan keadaan saat ini.
3. Episodic atau berjangka waktu tertentu, dimana setiap episode memiliki independensi dan tidak memiliki ketergantungan.
4. Static atau lingkungannya tidak berubah dengan berjalannya waktu. Lawan dari
static adalah dynamic.
5. Discrete atau dapat dipilah-pilah dengan jelas dan terdefinisi keadaannya. Lawan dari discrete adalah continous.
Kondisi lingkungan yang paling ideal untuk merancang agen adalah semua dimensi (Russel & Norvig, 1995)
yang disebutkan diatas, yaitu: observable, deterministic, episodic, static, dan discrete. Kondisi tersulit untuk merancang agen adalah lawan dari kondisi ideal, yaitu:
unobeservable, non-deterministic, non-episodic, dynamic, dan continous.
Agen terbagi menjadi empat jenis dasar, diurutkan berdasarkan keumumannya: 1. Simple reflex agent yaitu agen yang bertindak langsung berdasarkan lingkungan
yang diinderanya.
2. Reflex agent with state yaitu agen yang bertindak berdasarkan lingkungan yang diinderanya, dan dengan pengetahuan internal tentang kondisi lingkungannya. 3. Goal-based agent yaitu tingkatan lanjutan dari reflex agent with state, karena
agen ini juga bertindak dengan tujuan tertentu (tidak hanya digerakkan karena lingkungan yang diinderanya dan pengetahuan internal tentang kondisi lingkungannya).
4. Utility-based agent yaitu goal-based agent yang bisa memberikan derajat atas tujuannya, dan menentukan keputusan atas beberapa pilihan yang ada.
2. Constraint Satisfaction Problem (CSP)
Constraint Satisfaction Problem (CSP) atau Masalah Pemenuhan Batasan
(selanjutnya akan disebut dengan CSP) adalah sebuah persamaan atau formulasi matematis atas suatu sistem. Bedanya dengan formulasi matematis pada umumnya yang menjabarkan suatu sistem dengan membuat rumus eksak dari sistem tersebut, maka CSP tidak demikian. CSP cukup mendefisinikan formulasi matematis suatu sistem, dengan menjabarkan batasan-batasannya saja.
Keuntungan utama dengan adanya formulasi matematis dengan menggunakan CSP, maka sistem tidak perlu didekati dan dimodelkan dengan eksak. Sehingga sistem bisa dijabarkan dengan sederhana, tanpa perlu dicari dengan pasti “bagaimana” dan “cara”, sebagaimana pemodelan pada umumnya (Muhyi, 2008).
CSP (Russel & Norvig, 1995) didefinisikan sebagai satu set peubah X1, X2, ..., Xn
kemungkinan nilai-nilai dari domain Di yang tidak kosong (nonempty). Setiap batasan
Ci merupakan subset dari beberapa peubah dan memungkinan untuk memiliki kombinasi nilai dari peubah-peubah tersebut.
Keadaan (state) dari persamaan ini didefinisikan dengan pemberian nilai (assignment) ke semua atau sebagian dari varibel-varibel tersebut. Sebuah pemberian nilai bila tidak menyelisihi semua batasan yang ada, dikatakan sebagai konsiten (consistent) atau pemberian nilai yang benar (valid assignment). Apabila semua peubah tersebut telah memiliki valid assignment, maka CSP ini dikatakan memiliki solusi (solution). Terkadang CSP juga memiliki objective function (fungsi tujuan) yang membutuhkan nilai maksimum, nilai minimum, atau nilai tertentu.
3. Constraint Programming
Constraint Programming atau Pemrograman Batasan (selanjutnya disebut dengan
CP) adalah tataran implementatif atau aplikatif untuk penghitungan atau komputasi dari CSP. Bila CSP merupakan suatu konsep pemodelan sistem, maka CP merupakan mesin pencari solusi dari persamaan CSP yang ada.
Secara definisi, CP merupakan ilmu yang mempelajari tentang komputasi matematis untuk CSP (Barták, 1999). CP menerapkan beberapa teknik dalam pencarian (searching) solusi dari formula CSP, di antaranya yang digunakan adalah:
1. Systematic search. 2. Consistency techniques. 3. Constraint propagation.
4. Stochastic and heuristic algorithm.
Karena CP merupakan studi tentang komputasi matematis, maka sudah tentu di dalamnya terdapat derajat ketelitian dan kesalahan. CP bukan merupakan sebuah jawaban yang mutlak dan pasti atas CSP, karena solusi suatu persamaan CSP yang diperoleh dengan menggunakan sebuah metode CP selalu ada tingkat kesalahan yang diabaikan atau dianggap normal.
4. Logic Programming
Logic Programming atau Pemrograman Logika (selanjutnya disebut sebagai LP)
berbeda dengan paradigma atau pola pikir pemrograman pada umumnya. LP memiliki akar studi dari pembuktian teori (theorm proving), dimana LP mengambil gagasan dari pembuktian kesimpulan atau logika (deduction) (Apt & Wallace, 2007).
LP sangat erat kaitannya dengan implementasi bahasa pemrograman yang digunakan. Ada beberapa bahasa pemrograman yang muncul, seiring dengan perkembangan studi LP itu sendiri. Bahasa yang paling akhir dan paling banyak digunakan untuk LP adalah Prolog, yang mana Prolog ini sendiri memiliki beberapa varian atau beberapa versi. Versi Prolog yang melandasi semua variannya biasanya disebut dengan Prolog murni atau pure Prolog.
Prolog memiliki beberapa istilah atau terminologi (term) khusus dalam mendeskripsikan LP. Istilah-istilah tersebut dibagi menjadi dua kategori: istilah dasar (base term) dan istilah gabungan (compound term). Yang termasuk dalam istilah dasar adalah:
1. Variable adalah susunan teks alfanumerik (huruf dan angka), yang dimulai dengan huruf kapital (up case) atau garis bawah (underscore).
2. Number adalah susunan angka numerik.
3. Atom adalah susunan teks alfanumerik yang dimulai dengan huruf kecil (low
case) atau susunan karakter yang dilingkupi oleh tanda petik tunggal (').
Istilah gabungan adalah suatu istilah yang terdiri dari nama fungsi (functor) dan parameter-parameter argumennya (arguments). Konstanta (constant) di Prolog dapat berupa number atau atom. Selain itu ada satu istilah (term) lagi yang disebut dengan
ground term, yaitu istilah yang tidak terdapat peubah (variable) di dalamnya.
Kemudian ada beberapa konsep dasar dari Prolog, yang menjadikannya sebuah bahasa pemrograman logika yang sempurna. Konsep-konsep tersebut adalah:
1. Atomic goal atau tujuan atomik, yang berbentuk seperti fungsi yang memiliki predikat (predicate) dan sejumlah argumen, yang jumlahnya disebut dengan
aritas (arity). Sebagai contoh adalah p(a,b), yang predikatnya adalah p dan memiliki nilai aritas 2, dan biasa ditulis dengan p/2.
2. Fact atau fakta, yang merupakan tujuan atomik yang diakhiri dengan titik (.). Sebagai contoh adalah:
p(a,b).
3. Query yang terdiri dari beberapa tujuan atomik, yang diakhiri dengan titik (.). 4. Rule atau aturan, yang terdiri dari kepala (head) yang berupa tujuan atomik,
diikuti dengan tanda “:-” dan diakhiri dengan tubuh (body) yang berupa query. Sebagai contoh adalah sebagai berikut:
p(a,b) :- q(a), r(b).
5. Clause atau klausa yang dapat berupa fakta atau aturan.
6. Procedure atau prosedur adalah sejumlah klausa yang memiliki predikat sama. Setiap prosedur memiliki definisi (definition) dari predikatnya. Contohnya adalah:
p(a,b).
p(b,Y) :- q(Y), r(Y,c).
7. Program atau program Prolog, adalah kumpulan sejumlah prosedur, yang pada akhirnya dapat dikatakan bahwa sebuah program Prolog adalah sekumpulan klausa.
Prolog menggunakan logika implikasi dalam operasinya, dan hal ini yang membedakan Prolog dengan bahasa pemrograman lainnya. Selebihnya dari itu, Prolog juga seperti bahasa pemrograman lainnya, yang dapat melakukan operasi aritmatika, memiliki perulangan, percabangan, dan sebagainya.
Namun Prolog tetap memiliki ciri tersendiri, karena penerapan logika implikasi tersebut. Untuk dapat memahami dengan baik bagaimana Prolog bekerja, dapat membaca buku “Constraint Logic Programming using ECLiPSe” (Apt & Wallace, 2007) atau “Logic Programming with PROLOG” (Bramer, 2005).
5. Constraint Logic Programming
Constraint Logic Programming (CLP) atau Pemrograman Logika Batasan (yang
selanjutnya akan disebut sebagai CLP), adalah penggabungan antara CP dengan LP. Hal ini digunakan karena ada beberapa kasus persamaan matematika yang dapat didekati dengan CP, namun masih kurang tepat karena beberapa keterbatasan. Dan keterbatasan tersebut dapat dilengkapi dengan LP, sehingga digabungkan antara CP dengan LP.
Sebagai contoh dapat penulis utarakan sedikit hal ini dengan kasus penjadwalan kereta. Secara sederhana dapat dipahami bahwa masalah penjadwalan suatu kereta untuk berangkat dan tiba di suatu tempat, dapat dipenuhi dengan pemodelan CP. Namun jika keretanya berjumlah lebih dari satu, maka akan sulit menerapkan urutan tersebut dalam CP (meskipun tidak mustahil untuk dilakukan). Sementara untuk masalah urutan, dapat dengan sederhana diterapkan dengan pemodelan LP.
CLP lebih merupakan implementasi dari masalah CP dan LP, sehingga bukan merupakan teori yang baru dalam masalah komputasi. CLP pada umumnya melekat dengan suatu aplikasi (software) komputer tertentu. Dalam tesis ini, penulis menggunakan aplikasi ECLiPSe (Apt & Wallace, 2007) yang dapat menerapkan CLP dengan baik.
6. Sistem Perkeretaapian di Indonesia
Sistem perkeretaapian di Indonesia memiliki sejarah yang panjang, mulai dari masa perjuangan kemerdekaan hingga saat tulisan ini dibuat. Pondasi pertama yang resmi dibuat tentang sistem perkeretaapian adalah dikeluarkannya UU (Undang-Undang) No. 13/1992.
Dari UU No. 13/1992 ini kemudian turun beberapa peraturan perundangan penting lain yang berkaitan dengan sistem perkeretaapian di Indonesia, antara lain adalah:
1. PP (Peraturan Pemerintah) No. 69/1998 tentang Prasarana dan Sarana Kereta Api.
3. Keputusan Menteri Perhubungan KM No. 22/2003 tentang Pengoperasian Kereta Api.
Selanjutnya, UU No. 13/1992 digantikan dengan UU No. 23/2007, yang pada dasarnya mengganti beberapa pasal pada UU sebelumnya tentang monopoli kereta api yang dihapuskan, dan beberapa perbaikan definisi tentang kereta api.
Meskipun UU No. 13/1992 ini sudah dihapuskan, namun peraturan dan perundangan di bawahnya (PP dan KM), masih berlaku dan belum ada penggantinya. Bahkan beberapa kebijakan baru dibuat dengan menggunakan PP dan KM lama itu, antara lain adalah:
1. Instruksi Menteri Perhubungan IM No. 2/2007 tentang Peningkatan Pengoperasian Kereta Api.
2. Peraturan Menteri Perhubungan KM No. 7/2009 tentang Tarif Angkutan Orang dengan Kereta Api Kelas Ekonomi.
3. Peraturan Menteri Perhubungan tentang Penyelenggaraan Kewajiban Pelayanan Publik Angkutan Kereta Api Pelayanan Kelas Ekonomi, yang selalu dibuat untuk tiap tahun anggaran (yang sudah dibuat adalah KM No. 26/2008 untuk Tahun Anggaran 2008 dan KM No. 41/2009 untuk tahun Anggaran 2009).
Semua peraturan dan perundangan inilah yang mendasari sistem perkeretaapian di Indonesia. Dari semua peraturan dan perundangan yang ada ini, ada beberapa yang pokok yang berkaitan dengan tesis ini, yaitu:
1. UU No. 23/2007. 2. PP No. 69/1998. 3. PP No. 81/1998.
4. Keputusan Menteri Perhubungan KM No. 22/2003.
Beberapa kesimpulan dari keempat peraturan dan perundangan yang berkaitan dengan penelitian dalam tesis ini adalah:
• Pemenuhan persyaratan dan spesifikasi teknis perkeretaapian (PP No. 69/1998). • Kewajiban untuk mengangkut seluruh penumpang (PP No. 81/1998 pasal 12). • Persyaratan kecepatan maksimum 30 km/jam saat memasuki stasiun (dan
beberapa kasus dengan kecepatan maksimum 40 km/jam atau 60 km/jam) dan memulai perjalanan (Keputusan Menteri Perhubungan KM No. 22/2003).