BAB 2
LANDASAN TEORI
2.1. Itenerary Planing Service
Automatic Itenerary Planning merupakan sebuah proses perancangan perjalanan yang mengubah proses pengumpulan informasi perjalanan yang dilakukan secara manual menjadi secara otomatis dengan memanfaatkan perkembangan jumlah website yang menyediakan tarif penerbangan maupun penginapan (Jakkilinki. et al. 2007). Hal ini dilakukan dengan menghapuskan proses dimana pengguna harus mengakses beberapa website, dan menggantikannya dengan melakukannya secara otomatis. Sehingga pengguna tidak perlu direpotkan dengan mengakses banyak website. Selain itu,
Automatic Itenerary Planning merupakan sebuah NP-Complete Problem yang terkenal, dimana tidak terdapat waktu polynomial yang tepat (Chen, 2006).
2.2. Algoritma Greedy
Algoritma Greedy merupakan sebuah algoritma yang dapat menentukan sebuah jalur terpendek antara node-node yang akan digunakan dengan mengambil secara terus-menerus dan menambahkan jalur yang akan dilewati. Berikut ini adalah tahapan yang akan dilakukan dalam algoritma greedy (Robin,1991) :
1. Kelompokkan semua jalur.
2. Pilih jalur yang terpendek kemudian masukkan kedalam himpunan solusi. 3. Tentukan apakah sudah ada N jalur pada solusi, Jika tidak, ulangi kembali
Dalam membentuk solusi, algoritma greedy pada setiap langkahnya akan mengambil pilihan yang merupakan optimum local atau pilihan yang sesuai dengan spesifikasi pembuat algoritma. Dengan pengambilan pilihan yang sesuai yang didapat optimum global atau sesuai dengan keinginan pembuat algoritma. Pada setiap langkah algoritma greedy, kita akan mendapatkan optimum local. Bila algoritma berakhir maka diharapkan optimum local akan menjadi optimum global. Sehingga sebenarnya algoritma greedy mengasumsikan bahwa optimum local ini merupakan bagian dari
optimum global. Berikut adalah pseudo-code algoritma greedy:
proceduregreedy(input C: himpunan_kandidat;
output S : himpunan_solusi)
{ menentukan solusi optimum dari persoalan optimasi dengan algoritma
greedy
Masukan: himpunan kandidat C
Keluaran: himpunan solusi S
}
Deklarasi
x : kandidat;
Algoritma:
S{} { inisialisasi S dengan kosong }
while (belum SOLUSI(S)) and (C {} ) do
xSELEKSI(C); { pilih sebuah kandidat dari C}
C C - {x} { elemen himpunan kandidat berkurang satu }
if LAYAK(S {x}) then
SS {x}
endif
endwhile
2.3. Application Programming Interface (API)
Application Programming Interface (API) merupakan sekumpulan fungsi, perintah dan protokol yang dapat digunakan dalam pengembangan perangkat lunak. Seiring dengan berkembangnya teknologi, API tidak saja digunakan untuk sebuah perangkat lunak, tetapi dapat digunakan antar perangkat lunak, hal ini biasa disebut dengan
public API. Public API sendiri memungkinkan pengembang perangkat lunak menggunakan fungsi ataupun perintah yang terdapat pada sebuah perangkat lunak sehingga terjadi hubungan antar aplikasi. Dewasa ini, banyak website yang menyediakan Public API, salah satunya adalah Google. Google sendiri menyedikan beberapa Public API. Salah satunya adalah Costum Search API. Costum Search API menggunakan notasi JSON dalam menerima query dari sebuah aplikasi dan mengirimkan hasil pencaharian. Sehingga pengguna dapat menampilkan dan melakukan pencaharian melalui proses pemograman (Mueller, 2004). Hal ini mengakibatkan pencaharian tidak memerlukan interaksi langsung antara pengguna perangkat lunak dengan mesin pencaharian.
1. Tourism Public API
Seperti telah dijelaskan bahwa API dapat digunakan oleh banyak pengembang dalam menggunakan secara bersama-sama beberapa fungsi ataupun informasi tersimpan yang dimiliki, beberapa kelompok usaha juga memberikan bantuan mengenai informasi perjalanan. Dalam beberapa penelitian terdahulu (Chen et. al, 2015), menggunakan layanan Yahoo Travel dan Google Flight Search& Maps dalam membentuk grap dari Point of Interest (POI) tempat wisata. Beberapa API yang dapat digunakan dalam katagori tourism adalah sebagai berikut :
a. Yahoo Travel
Yahoo Travel menyediakan berbagai macam informasi, mulai dari jadwal penerbangan, jadwal bus (US/EU), pelayaran, restauran, dan juga hotel. Akan tetapi mereka hanya menyediakan sarana informasi saja, seperti informasi hotel dan informasi penerbangan, Yahoo Travel menggunakan bantuan dari situs hipmunk.com. Terlepas dari hal tersebut, Yahoo Travel
b. Google Flight Search
Google Flight Search merupakan sebuah platform yang disediakan oleh Google untuk membantu pengguna google dalam mencari informasi mengenai hotel dan penerbangan. Untuk pencaharian penerbangan Google Flight Search akan menampilkan penerbangan yang tersedia sesuai dengan tanggal yang telah ditentukan oleh pengguna. Akan tetapi Google Flight Search bukanlah sebuah platform untuk melakukan pemesanan tiket secara online, hal ini dapat dilihat apabila pengguna memilih penerbangan yang ada, maka pengguna akan diarahkan ke situs maskapai penerbangan yang bersangkutan.
c. Expedia Affiliate Network (EAN)
Kelompok EAN merupakan sebuah jaringan yang membantu para pengembang untuk mendapatkan informasi mengenai penerbangan, hotel. Sistem EAN bekerja melalui sistem afiliasi dimana pengguna API akan memperoleh komisi dari setiap pemesanan tiket yang telah terjadi. (Chavanne, 2015)
d. Tiket.com
Tiket.com merupakan sebuah perusahaan yang berasal dari Indonesia yang bergerak pada bidang penjualan tiket, tidak hanya tiket penerbangan ataupun hotel, tiket.com juga menyediakan penjualan terhadap tiket konser. Sama seperti EAN tiket.com juga menerapkan sistem afikliasi dalam penggunaan API mereka. Tiket.com menyediakan format keluaran API dalam bentuk XML, JSON dan serialized PHP. Tiket.com juga menyediakan sarana pembayaran tanpa pengembang harus melakukan deposit.
2.4. Framework
Framework adalah sebuah struktur konseptual dasar yang digunakan untuk memecahkan sebuah permasalahan, bahkan isu-isu kompleks yang ada. Sebuah
Framework hanya menjadi sebuah konstruksi dasar yang menopang sebuah konsep
atau sistem yang bersifat “essential support” (penting tapi bukan komponen utama). Salah satu alasan mengapa orang menggunakan framework terutama dalam membangun sebuah aplikasi adalah kemudahan yang ditawarkan. Dengan menggunakan framework kita dapat langsung fokus kepada business process yang dihadapi tanpa harus berfikir banyak masalah struktur aplikasi, standar coding dan lain-lain. Dalam hal ini adalah framework PHP yang memiliki daftar perintah / fungsi dasar PHP, hal-hal sebagai penunjang lainnya seperti koneksi database, validasi form, GUI, dan keamanan, yang telah disediakan oleh framework PHP. Salah satu framework PHP adalah codeigniter.
Framework CodeIgniter adalah sebuah framework aplikasi web yang bersifat
open source digunakan untuk membangun aplikasi php dinamis. Tujuan utama pengembangan CodeIgniter adalah untuk membantu developer untuk mengerjakan aplikasi lebih cepat daripada menulis semua code dari awal. CodeIgniter menyediakan berbagai library yang dapat mempermudah dalam pengembangan (Wardana, 2010).
CodeIgniter merupakan sebuah framework berbasis MVC yang dimana terdapat 3 komponen yaitu model, view dan controller. Berikut ini adalah penjelasan komponen tersebut.
1. Model
Objek model adalah bagian dari aplikasi yang mengimplementasi logika untuk domain data aplikasi. Umumnya, objek model digunakan untuk mengambil data dari database atau menyimpan data ke database. Model pada CodeIgniter
adalah sebuah kelas php yang berfungsi untuk menangani data. Data tersebut bukan hanya dari database tetapi juga bisa dari File Text, Web Service atau layanan-layanan data lainnya. Sebuah model sebenarnya tidak harus
meng-extend class Model. Kelas model di-extend ketika hendak menggunakan fitur
database pada CodeIgnitersaja. Semua Model harus diletakkan di dalam
folderapplication/models.Agar dapat menggunakan model maka kita harus me-load model tersebut. Adapun perintah yang dapat digunakan untuk
me-load sebuah model adalah :
$this->load->model('Model_name');
Ketika sudah berhasil me-load sebuah model maka model tersebut akan menjadi sebuah property. Melalui property itulah Anda akan menggunakan semua fungsi yang ada di dalam model (perhatikan baris ke 2 pada contoh diatas get_data adalah fungsi didalam kelas Model_name).
2. View
View adalah komponen yang menampilkan antarmuka untuk pengguna
(user interface, UI) aplikasi. Antarmuka ini dibuat berdasarkan data dari
model. View hanyalah sebuah halaman webatau bagian dari halaman web, seperti sebuah header, footer, sidebar, dan lain-lain. Bahkan, View bisa menjadi fleksibel karena view dapat dimasukkan ke dalam view yang lain jika dibutuhkan. Untuk memanggil file view dapat digunakan fungsi seperti berikut ini (perhatikan baris 12):
$this->load->view('nama_view');
Nama_view adalah nama file view Anda. Dan file tersebut harusdiletakkan di dalam folder application/view.
3. Controller
Controller merupakan komponen yang digunakan untuk menangani interaksi pengguna, bekerja dengan model, dan memilih view mana yang digunakan untuk merender data. Controller dapat dikatakan sebagaijantung dari suatu aplikasi, karena controller menentukan bagaimana permintaan HTTP yang harus ditangani. Sebuah kelas Controller adalah sebuah file yang terletak di dalam folder application/controllerdan memiliki nama file yang sama dengan nama kelasnya dan dikaitkan dengan URL.
Segmen-segmen pada URL pada codeigniter mencerminkan Controller
yang dipanggil. Contohnya, kita akan membuat sebuah aplikasi hello codeigniter yang sederhana. Aplikasi tersebut akan diletakkan di folder hello dari htdoc anda, sehingga anda dapat mengaksesnya dengan membuka url http://localhost/hello. Perhatikan URL berikut ini:
http://localhost/hello/index.php/blog/
Pada contoh di atas, CodeIgniter akan berusaha untuk menemukan sebuah
kebrowser. Contohnya membuat sebuah controller sederhana sehingga dapat melihat apa yang terjadi. Dengan menggunakan teks editor, buatlah file
bernama blog.phpdi dalam folder application/controller. Setelah itu buatlah sebuah kelas Blog yang merupakan turunan dari kelas CI_Controller.
1. <?php if ( ! defined('BASEPATH'))
2. exit('No direct script access allowed');
3.
4. class Blog extends CI_Controller {
5.
6. function __construct()
7. {
8. parent::__construct();
9. }
10.
11. function index()
12. {
13. echo "Haloo.. saya adalah contoh codeigniter
pertama";
14. }
15.
16. }
17. /* End of file Blog.php */
18. /* Location:
./application/controllers/blog.php */
Jika kita melakukannya dengan benar, maka akan tampak tulisan “Hello.. sayaadalah contoh CodeIgniter pertama”. Ketentuan penamaan class (baik
Gambar 2.1 Struktur Framework Codeigniter (Wardana, 2010)
2.5. Unifield Modelling Language (UML)
UML adalah keluarga notasi grafis didukung oleh model-model tunggal, yang membantu pendeskripsian dan desain sistem perangkat lunak, khususnya sistem yang dibangun menggunakan pemrograman berorientasi objek (Insap, 1996) Definisi ini merupakan definisi sederhana. Pada kenyataannya, pendapat orang tentang UML berbeda satu sama lain. Hal ini dikarenakan oleh sejarahnya sendiri dan perbedaan persepsi tentang apa yang membuat sebuah proses rancangan bangun perangkat lunak menjadi efektif.
UML lahir dari penggabungan banyak bahasa pemrograman grafis berorientasi objek yang berkembang pesat pada akhir 1980-an dan awal 1990-an UML merupakan standar yang relatif terbuka yang dikontrol oleh Object Management Group (OMG), sebuah konsorsium terbuka yang terdiri dari banyak perusahaan. OMG dibentuk untuk membuat standar-standar yang mendukung interoperabilitas, khususnya interoperabilitas sistem berorientasi objek. OMG mungkin lebih dikenal dengan standar-standar CORBA (Common Object Request Broker Architecture).
UML sebagai blueprint menyampaikan suatu keutuhan. Blueprint dibuat oleh seorang desainer yang pekerjaannya membuat desain yang detail untuk dikodekan oleh seorang programmer. Desain tersebut harus cukup lengkap, dalam artian seluruh
CONTROLLER
MODEL
VIEW
Web request
Get data Update
Data
keputusan desain telah dijabarkan dan programmer harus dapat mengikutinya secara langsung tanpad perlu berpikir keras. Desainer bisa jadi orang yang sama dengan
programmer, tetapi biasanya desainer adalah developer yang senior.
UML menyediakan 13 diagram untuk memodelkan aplikasi berorientasi objek, yaitu Use Case Diagram, Activity Diagram, Class Diagram, Object Diagram, Statechart Diagram, Composite Structure Diagram, Sequence Diagram, Communication Diagram, Interview Overview, Component Diagram, Timming Diagram, Deployment Diagram. Untuk memodelkan sistem ini penulis menggunakan 2 diagram, yaitu Use Case Diagram yang digunakan untuk menggambarkan fungsional sistem dan Activity Diagram digunakan untuk menggambarkan proses sistem.
2.5.1. Activity Diagram
Activity diagram adalah teknik untuk menggambarkan logika prosedural, proses bisnis dan jalur kerja. Dalam beberapa hal, diagram ini memainkan peran mirip sebuah diagram alir, tetapi perbedaan prinsip antara diagram ini dan notasi diagram alir adalah diagram ini mendukung behavior paralel. Activity diagram telah mengalami beberapa perubahan paling besar selama telah dikembangkan versi-versi UML, jadi tidaklah mengejutkan jika activity diagram telah dikembangkan secara signifikan dan diubah lagi dalam UML 2. Dalam UML 1, activity diagram dianggap sebagai kasus khusus state diagram. Hal ini menyebabkan banyak masalah bagi pengguna yang memodelkan jalur kerja, yang mana cocok dikerjakan oleh activity diagram. Dalam UML 2, ikatan tersebut dihilangkan.
dan dibayar. Anda dapat menampilkannya dengan join sebelum action menutup pesanan. Dengan sebuah join, aliran keluar dilakukan hanya jika seluruh aliran masuk telah mencapai join, Anda dapat menutup pesanan tersebut hanya jika Anda telah menerima pembayaran dan mengantarkan barang. Berikut sebuah contoh yang sederhana pada activity diagram :
Gambar 2.2 Contoh Activity Diagram
2.6. Penelitian Terdahulu
Beberapa penelitian terdahulu yang berkaitan dengan Itinerary Planning Service
adalah Gang Chen (2014), Automatic Itinerary Planning For Traveling Services. yang membangun aplikasi Itenerary Planning Service dengan menggunakan metode
Greedy, Chen (2014) telah melakukan penelitian dengan berbagai pendekatan untuk dapat membuat sebuah automatic itinenary plannig.Pendekatan yang dilakukan dalam penelitian tersebut, dengan membagi proses-proses dalam dua tahap. Tahap Pertama merupakan tahapan membuatan rencana perjalanan untuk satu hari, dan pada tahap kedua melakukan perkira-kiraan (Approximation). Untuk tahap pertama, dilakukan penerapan Paralel Proccessing dengan memanfaatkan Map Reduced Framework
(Hadoop) untuk menciptakan berbagai macam pilihan rencana perjalanan untuk satu hari. Sedangkan pada tahap kedua dilakukan pengubahan dari Team Oriented Problem
Mengisi Username
menjadi set-packing problem, sehingga Chen, et al. dapat menyelesaikan rencana perjalanan untuk N-hari dengan pendekatan perkira-kiraandalam melakukan pencarian rute tujuan wisata, penelitian lain yang berkaitan dengan Itenerary planning service
adalah Konstantinos G (2008), Algorithms For Itinerary Planning In Multimodal Transportation Networks, yang membangun aplikasi Itenerary Planning Service
dalam melakukan pencarian rute transportasi, Jakkilinki, et al. (2007) merupakan salah satu penelitian terdahulu dalam topik pembuatan rencana perjalanan secara otomatis, mereka memanfaatkan teknologi XML, dan semantic web, untuk menciptakan sebuah graph point-of-interests dari sebuah tempat wisata di Australia. Niemann, et al. (2008) melakukan penelitian mengenai pencarian hotel dengan menggunakan teknologi web semantik. Dalam penelitian yang dilakukan Niemann dkk menggunakan beberapa skenario, dimana skenario tersebut diantaranya sebagai
Tourist (perjalanan sendiri), Family (tiga malam di london, dengan perjalanan dengan menggunakan mobil), Bussiness Trip (pebisnis lakik-laki), Bussiness Trip (pebisnis wanita). Niemann, et al. menggunakan profil dari pelaku perjalanan untuk mendapatkan hotel yang tepat.
Untuk keterangan lain mengenai penelitian terdahulu yang berkaitan dengan
itenerary planning services pada Tabel 2.1 berikut.
Tabel 2.1 Penelitian terdahulu penawaran perjalanan untuk rentang waktu tertentu berdasarkan kriteria pengguna.
profilling terhadap pengguna. Dengan memanfaatkan semantic web, dilakukan pencaharian hotel berdasarkan lokasi dan POI.
3. Connecting Destinations with Ontology- Based e-Tourism Planner
Jakkilinki (2007)