Thursday, October 25, 2012

Menjadi Seorang Dijkstra

Mata kuliah Perencanaan Jaringan Telekomunikasi ET6282, adalah sebuah mata kuliah yg inti dari perkuliahannya adalah agar seorang telecommunication engineer bisa merumuskan seperti apa jaringan telekomunikasi yang paling OPTIMUM secara: beban trafik, jarak antar kota (node), dan estimasi biaya ketika penerapan. Sebetulnya sih udah hanya segitu, tapi ternyata kenyataannya ribet bgt!

Berawal dari kesialan tidak datang di pertemuan kuliah minggu pertama, berujung pada pembagian kelompok yang tidak adil dimana saya sendirian sedangkan sisa yang lain bertiga semua. Pembagian kelompok tersebut adalah untuk mengerjakan Tugas Besar yang dikerjakan selama setengah semster yang dicicil dari awal-awal kuliah hingga UTS. Tugas besar tersebut adalah "lakukan perencanaan jaringan telekomunikasi suatu daerah". Nantinya akan dilampirkan kebutuhan trafik, jumlah kota, jarak antar kota, dllnya ttg daerah tersebut. Kesialan pembagian kelompok tadi ternyata tidak hanya sampai situ. Tiap minggu tiap kelompok harus mempresentasikan mengenai alogaritma atau method yg akan tiap kelompok pakai pada langkah2 perencanaan untuk mencapai tugas besar tersebut. Diakhir, alogaritma yang sudah dipilih dan dipresentasikan diawal tersebut harus dipakai oleh kita untuk menyelesaikan suatu masalah yang terjadi.

Kalau dibandingkan dengan jurusan lain, misalnya di Teknik Kimia, saya pernah dengar dari seorang teman ada yang namanya Rancang Pabrik. Tugas besarnya adalah merancang suatu pabrik secara berkelompok dan tiap deadline waktu tertentu harus mengumpulkan laporan dari hasil bagi-bagi tiap langkah/proses yang harus dilakukan. Ternyata dua mata kuliah ini sama. Percis! Hanya beda konteks, kalau ini adalah urusan teknik telekomunikasi, kalau itu adalah urusan teknik kimia. Kalau ini harus diselesaikan dalam setengah semester, kalau itu untuk satu semester. Bedanya lagi, "laporan" pada rancang pabrik diganti menjadi "presentasi" pada makul PJT ini.

Agar tujuan utama mata kuliah PJT tadi bisa tercapai ada langkah-langkah yang perlu dilakukan. Diawali dengan forecasting, lalu clustering, dan chaining. Berikut ini akan saya jabarkan satu persatu secara singkat.

1. Forecasting
Inti dari proses forecasting adalah kita meramalkan tentang kebutuhan masa depan dari suatu daerah.
Dari penambahan populasinya, beban trafik kini dan nanti, sampai trend teknologi jaringan aksesnya. Peramalan itu semua akan menghasilkan gambaran kasar dari kebutuhan telekomunikasi suatu daerah sehingga tergambar untuk jaringan back bonenya harus menggunakan apa? seberapa besar kapasitasnya sehingga kebutuhan masa depan bisa terpenuhi? seperti apa topologi networknya? lalu teknologi jaringan aksesnya seperti apa? wimax? LTE? optik? dan trend selanjutnya apa?
Pada bagian ini, saya terpaksa memilih Causal Forecasting (sebab akibat), suatu cara peramalan yang bukan merupakan time series*. Walau hasil peramalannya seharusnya akan lebih akurat dari model time series, sebetulnya metode peramalan ini cukup susah mengingat variabel yang perlu dihitung menjadi banyak dan rumusannyapun menjadi rumit. Lalu kenapa saya memilih ini? alasannya simple, karena aneka model time series lainnya sudah dipilih oleh kelompok-kelompok yang lain dan juga arahan sayang si pak dosen yg bilang  "noval tar jgn yg time series ya, udah kebanyakan. harus beda sama yang lain". Entah apa maksudnya sang dosen menyuruh saya harus beda sendiri dari yang lain, walau diapun tahu kalau kelompok saya hanya sendirian.  Terlepas apa alasannya, terpaksalah saya mengambil model peramalan yang ribet -___-

2. Clustering
Pada kali ini saya gamau kalah cepat oleh kelompok lain. Dari awal dibuka "lelang" alogaritma apa yg tiap kelompok akan gunakan, saya sudah memboking alogaritma klustering yang menurut saya paling mudah dipresentasikan dan dipraktekkan. Tak peduli hasil klusteringnya bagus atau buruk, efisien atau tidak, efektif atau tidak, yang penting presentasinya mulus dan prakteknya gampang, pikirku saat itu. Saya memilih Graph Method Clustering suatu metode klustering berdasarkan gambar yang biasa dipakai untuk EST** membedakan bagian DNA di genetika. Tak lupa PCA algorithm*** yang saya tambahakan agar ketika prakteknya menjadi sangat mudah. Ketika saya lihat kelompok lain, entah kenapa mereka kebanyakan mengambil metoda klustering yang ribet. Efeknya ketika presentasi dan ditanya ini itu kebanyakan bingung menjawabnya. Dan saya bisa tersenyum lebar karena sesuai perkiraan, presentasi saya mulus :D Tapi diakhir presentasi sang dosen bertanya "noval yakin metoda klustering ini bisa noval pake buat prakteknya?" lalu tanpa pikir panjang saya jawab dengan yakin, "InsyaAllah bisa pak :)". Lalu sang dosen kembali mengulang pertanyaannya sampai tiga kali dan sayapun tetap pada jawaban saya semula. Sikap sang dosen yang terlihat mencurigakan tersebut baru saya sadari belakangan bahwa ada kekurangan dari metoda klustering yang saya pilih dan akibatnya FATAL (nanti diceritain dibawah).

3. Chaining
Langkah kali ini ternyata tidak sesimple yang dikira. menghabiskan berminggu-minggu pesentasi karena penjabarannya memang banyak. Dari masalah chaining klasik seperti Travelling Salesman Problem yang umumnya dipecahkan dengan Dijkstra Algorithm****, chaining dengan topologi ring, star, mesh, sampai aneka macam spanning tree dengan variabel beban linear (satu variabel) sampai yang nonlinear (multi variabel). Ditambahkan juga penghitungan akhirnya untuk mendapatkan nilai optimum dari aneka variabel yang perlu dihitung tersebut. Karena memang keterbatasan alogaritma yang sudah ditemukan, tiap kelompok akibatnya ada yang bahan presentasinya sama. Dan sialnya kelompok yang presentasinya diakhir diarahkan untuk membuat alogaritma sendiri untuk bahan presentasinya. WTF! Sang dosen memang memotivasi mahasiswanya untuk menemukan sendiri alogaritma lain pada masalah TSP atau spanning tree karena memang sampai saat ini belum ditemukan cara paling efisien dan paling singkat untuk menemukan solusi dari chaining dengan level multi variabel ini. Sebagai sedikit gambaran, misal pada spanning tree, apabila jumlah kota yang perlu dihubungkan adalah n, maka jumlah kemungkinan spanning tree yang bisa dibuat ada sebanyak n^(n-2). Oke keliatannya simple, kalau kotanya ada 3 maka ada 3 kemungkinan spanning tree yang bisa dibuat. Tapi keterusannya, kalau misal kotanya ada 4, ternyata kemungkinannya menjadi 16. Kalau kotanya ada 5 kemungkinannya menjadi 125. WOW!! suatu exponensial yang luar biasa. Karena belum ada alogaritma yang bisa menentukan topologi spanning tree yang menghasilkan nilai optimasi maksimum, maka satu-satunya cara mendapatkan nilai optimum untuk spanning tree multi variabel adalah dengan menghitung tiap kemungkinan spanning tree. Bisa anda bayangkan jumlah yang harus dihitung? belum lagi apabila jumlah variabel bebanya banyak (dan memang pada kenyataannya pasti lebih dari satu), misal: beban trafik dan jarak antar kota. Dari dua variabel saja hitungan untuk mendapatkan optimasi maksimumnya sudah super ribet. Apalagi kalau 3 variabel, maka harus ada matrix 3 dimensi yang dibuat -____-. Belum lagi perhitungan chaining untuk dua daerah yang sebelumnya sudah ada topologi masing-masing (interkoneksi). Bagaiana cara menggabungkannya agar mendapatkan optimasi maksimum? itu yang termasuk dikaji di langkah ini.
Pada bagian inipun untuk presentasi, akhirnya hanya dibatasi dengan masalah 6 kota dan 2 variabel (beban trafik dan jarak kota) sehinggal matrix yang harus diselesaikan adalah matrix 6X6 dengan 6^(6-2) kemungkinan spanning tree. Tapi tetep, ngitung nilai optimasi dari satu kemungkinan aja udh panjang banget, apalagi kalo harus semuanya?? Untungnya sang dosen membolehkan kita memilih bentuk spanning tree yang sudah lazim seperti star dan ring sebagai perbandingan dgn cara yang kita pilih sehingga cukup dihitung 3 kemungkinan dari 6^(6-2) kemungkinan yang ada dan kemungkinan adanya interkoneksi dari 6 kota tersebut.

Beres dengan semua langkah yang sudah dijabarkan, beralih ke problematika nyata!
Untuk permasalahan tugas besar ini sang dosen akhirnya memberikan persoalan:
"Rancang jaringan dari 12 kota yang perlu dihubungkan"
Dilampirkan juga batasan-batasan dan segala kemungkinan yang wajib dihitungnya berupa:
- hitung optimasi apabila tidak ada kluster
- hitung optimasi ketika dibuat sistem kluster dengan anggota masing-masing kluster max 5 kota
- tampilkan kemungkinan topologi star dan ring pada tiap kluster dan nilai optimasinya
- bandingkan dengan topologi hasil alogaritma buatan sendiri yang dipresentasikan
- hitung optimasi inter kluster dengan topologi star atau ring atau buatan sendiri!

dilampirkan matrix trafik T dari keduabelas kota tersebut seperti gambar dibawah


Dari awal saya sudah kaget, "12 kota meeeeeen!!!!!" bakal ada 12^(12-2) kemungkinan spanning tree, gimana ngitungnya?? Tapi ternyata kekagetan saya tidak berhenti sampai disitu, ketika memulai pengerjaan (yang pastinya diawali dengan forecasting dan clustering) pun saya sudah bingung. Envy melihat kelompok lain kerjasama bertiga, sedangkan saya hanya sendirian pun sudah sangat menjatuhkan mental. Akhirnya saya coba kerjakan dan menghitung samapai akhir mendapat nilai optimasi dan perbandingannya dengan topologi yg lazim digunakan.

Ternyata setelah dipresentasikan, nilai optimasinya masih SANGAT JAUH dari suatu ukuran optimal. Masalahnya adalah karena ada kelompok lain yang bisa menemukan nilai yang jauh lebih bagus. Saya ulik-ulik lagi di bagian chainingnya agar bisa mendapatkan yang lebih oke, dan setelah mendapatkan nilai baru, ternyata masih kalah oleh nilai optimasi kelompok lain. @_@ udah bingung bgt itu, soalnya ngitung satu kemungkinan topologi spanning tree baru aja brarti bakal ngitung panjaaaaaaaang bgt ampe juga berubah ke interkoneksi dari klusternya -___-

Setelah merenung panjang,ternyata sumber masalahnya adalah JAUH SEBELUM CHAINING, yaitu ketika melakukan clustering. Karena menggunakan PCA, maka saya (dengan brutalnya) menghilangkan variabel (yang jelas-jelas sangat berpengaruh untuk penentuan optimasi) sehingga hasil klusteringnya walau memang gampang tetapi sungguh jauh dari hasil yang baik. Akibatnya langkah selanjutnya sebagus apapun menjadi sia-sia.

sampailah ke kesimpulan dari yang sudah saya alami ini:

"sebagus apapun proses chainingnya, apabila metode clusteringnya salah, pasti tidak akan menghasilkan nilai optimasi yang baik." -gopal 2012
dan juga
"jangan tergiur dengan proses instan yang mudah. sungguh kekurangan dibaliknya adalah sangat banyak!" -gopal 2012
Maka kerjakanlah sesuatu sesuai dengan RUKUNnya, tertib dari forecasting, clustering, dan chaining secara sungguh-sungguh dan jangan mau tawaran-tawaran instan yang menyebabkan kita keluar dari nilai rukun tersebut.

dan deadline tubes ini pun diperpanjang sampai Sabtu, 27 Oktober 2012 karena kebanyakan kelompok mengalami kesusahan yang sama dalam mengerjakannya.

dan entah kenapa di waktu yang sempit ini saya masih sempet2nya nulis blog, padahal masih ada perhitungan yang masih jauh dari selesai dan presentasi sekaligus laporan yang belum dibikin -__-

dan saya mulai berpikir, sebetulnya ini bisa banget dijadiin topik tesis bahkan sampai desertasi sekalian, sampai saya bisa selevel seorang Dijkstra yang menemukan alogaritma baru yang bisa membuat perubahan besar pada umat manusia. oh...



*Time series adalah metoda peramalan yang hanya berdasarkan pada histori sebelumnya

**EST (Expressed Sequence Tag) adala salah satu cara untuk merepresentasikan cara paling luas dalam menuliskan partisi-partisi dari gen

***PCA (Principal Component Analysis) algorithm adalah metode mereduksi jumlah variabel yang menentukan proses klustering. Misal pada koordinat kartesian XY adlah dengan menghilangkan satu dimensinya sehingga titik-titik yang ada bisa di plot ke salah satu dimensi saja dan bisa dilihat yang mana yang dekat yang mana yang jauh untuk dibuat klusternya.

****Dijkstra algorithm adalah alogaritma yang dipakai untuk menemukan rute terpendek dari seseorang yang akan melewati semua kota. Permasalahan ini biasa disebut Travelling Salesman Problem. Lebih lanjutnya alogaritma ini dipakai di banyaaaaak artificial intelegence dari games-games dengan level komputer yang berbeda-beda, misal pada permainan catur atau balap mobil.

No comments: