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.

Monday, October 8, 2012

Mr S dan Abdallah

Saya punya seorang dosen S2 di jurusan Elektro ITB (telekomunikasi), namanya Mr S. Dia seseorang yg terkenal mempunyai dedikasi tinggi thd perkuliahan. Beda dengan dosen lainnya yg cenderung banyak "proyek" dan jarang masuk kuliah sehingga dirindukan oleh murid-murid, dia selalu datang tepat waktu walaupun rumahnya terbilang jauh, yaitu di Bandung Ujungberung, suatu ujung belahan bumi bagian Bandung Timur. Bahkan dia pun pada tiap semester sudah membooking slot Senin jm7-9 untuk salah satu matakuliah yang dia ajar. Dia pun memberlakukan aturan "datang telat nilai berkurang", sebuah aturan yang membuat mahasiswa jaman sekarang geleng-geleng kepala. Aturan yang bagaikan petir di pagi hari di hari Senin jam 7-9 pagi. Dengan ketepatan waktunya dan perhitungan nilainya yg benar2 exact sesuai rumus yg sudah dia bikin, maka nyaris tidak ada mahasiswa yg berani mendebatnya ketika urusan nilai sudah keluar.

Saya punya seorang teman mahasiswa S2 di jurusan Elektro (telekomunikasi) ITB, namanya Abdallah. Dia seseorang yg berkulit putih bermuka arab yg berkewarganegaraan Libya. Dia termasuk salah seorang yg selalu dibuli-buli oleh salah seorang dosen kami, Mr S. Sang dosen yg menurut sebagian orang cukup egois dan gamau kalah dalam beradu argumen pernah mempermasalahkan dia yg tidak lancar berbahasa Indonesia. Tidak sampai disitu, nilai TOEFLnya yang sebetulnya cukup tinggi dia sebut "ah itukan cuma TOEFL, orang Jepang juga TOEFLnya gede2 tp gabisa ngomong". Untungnya sang Abdallah tidak mengerti perkataan sang dosen sehingga ketika mahasiswa lainnya tertawa terbahak-bahak, dia pun hanya bisa ikut tertawa tanpa mengerti apa yang menjadi bahan tertawaan. Tiap kali dia bertanya pun, sang dosen (yg sebetulny kurang mengerti apa yg ditanyakan karena keterbatasannya dalam berbahasa Ingris) biasanya mejawab dengan memepermasalahkan pertanyaannya terlebih dahulu. Baru setelah diluruskan oleh mahsiswa lain ttg maksud pertanyaan sang Abdallah, baru sang dosen menjawab tepat sambil tetap menjaga gengsinya yg "gamau disbut kalah".

Dibalik semua itu, sang Abdalah yang sehari-hari hanya bisa menyebut "punten", "cisitu", dan senyuman sebagai bahasa tubuhnya ketika menghadapi percakapan seseorang, ternyata menyimpan suatu kisah sedih yang mendalam yang seharusnya apabila orang lain tahu, tak mungkin orang lain menjadikan ia sebagai bahan buli-buli.

Suatu ketika saya mencoba bercakap-cakap dengannya (sebisa saya) menggunakan bahasa Inggris. Sambil mengajak makan ke kantin bengkok, saya terus menanyakan ttg latar belakang dia karena sy memang tertarik dengan keberaniannya yang berani berpetualang sendirian dari Libya ke rimba raya Indonesia walau tidak mengerti sama sekali ttg bahasa Indonesia. Kekaguman saya terhadapnya seolah-olah sedang mewawancarai alien yang turun ke bumi. suatu fenomena yang sangat ajaib untuk saya saksikan. Sesampainya di kantin bengkok, dy pun bercerita ttg keluarganya di Libya sana. Dia mempunyai sebuah keluarga harmonis dari seorang ayah, ibu, dan seorang adik perempuan berusia kurang dr 10th. Lanjut cerita, ternyata keluarganya yang tinggal di Libya sana mengalami suatu musbah. Beberapa bulan silam di Libya terjadi konflik pemegang kekuasaan yang membuat ketidakstabilan politik dan militer sekaligus ketidakamanan yang terjadi disana. Pemberontakan dan perang lokal yg terjadi disana ternyata membuat sebuah bom jatuh di dekat rumah tinggal keluarga Abdallah dan menewaskan ayah dan ibunya. Adik perempuannya yg masih kecilpun depresi berat akibat kejadian itu. Saya sendiri pun shock berat ketika mendengar cerita itu keluar dari mulut sang Abdallah. Saya langsung membayangkan apabila musibah itu terjadi di keluarga saya, mungkin sy tidak bisa setegar dia. Langsung juga terbayang Mr S yang selama ini sering sekali membuli-buli dia. "oh, kalau saja dia tahu apa yang menimpa sang Abdallah, mana berani dia melakukan bullying" pikirku.

Semoga engkau tetap tegar hai Abdallah, dan semoga engkau menjadi seorang Abdi Allah yang sesungguhnya sesuai dengan namamu. Aaaamiiin..