Menyelesaikan masalah “Architecture Mismatch Driver & Application” ketika mengakses Database di Matlab

Melanjutkan postingan yang lalu tentang problematika explore database di Matlab yang melibatkan versi 64 atau 32 bit. Masalah incompatible ini sepertinya tidak direspon dengan baik. Baik oleh Windows maupun Matlab. Sepertinya ada sedikit “paksaan” bagi pengguna versi 32 bit untuk beralih ke versi 64 bit. Padahal banyak yang masih menerapkan versi 32 bit di sistem yang sedang berjalan.

Install Microsoft Access Versi 64 Bit

Pengguna Matlab 64 bit sepertinya sudah harus beralih ke versi 64 bit untuk semua hal yang terlibat dengan Matlab (environment), seperti OS dan sistem basis data-nya. Jika tidak maka akan muncul peringatan adanya ketidaksesuaian dari sisi arsitektur antara driver ODBC dan aplikasi. Perbedaan arsitektur merupakan perbedaan yang tidak sepele dalam suatu sistem perangkat lunak.

Repotnya untuk Microsoft Access, tidak bisa langsung memasang yang 64 bit tanpa meng-uninstall versi yang sebelumnya. Perlu diperhatikan jika ada visio versi 32 bit, windows meminta uninstall juga. Jadi kalau sayang dengan visio yang 32 bit atau tidak punya installer visio yang 64 bit, sebaiknya difikirkan terlebih dahulu, atau siapkan dulu visio versi 64 bitnya.

Tadinya saya masih ragu, jangan-jangan ketika uninstall yang 32 bit dan install yang 64 bit tetap saja database tidak bisa diakses Matlab 64 bit, tetapi ternyata Alhamdulillah bisa. Mungkin ini bisa menjawab pertanyaan dari pembeli buku saya tentang database di Matlab yang tidak bisa terkoneksi dengan access karena beda versi “bit”nya. Oiya, jangan khawatir, semua settingan di office 32 bit yang lalu tetap otomatis terbawa di versi 64 bit yang baru.

Mengecek Koneksi Database di Matlab

Ketika sudah menginstall versi 64 bit, pastikan di ODBC yang 64 bit terisi driver dan platform-nya yang baru (64 bit). Selalu gunakan driver untuk kedua versi access (*.mdb dan *.accdb). Pastikan ketika mengklik Configure… tida ada pesan “architecture mismatch ..” lagi.

Tambahkan satu User DSN baru dan coba buka dengan Matlab 64 bit. Setelah mengetik dexplore di command window Matlab, cari ODBC yang baru saja dibuat. Pastikan database yang dibuat dengan Access dapat dilihat isinya.

Sekian dulu info singkat ini, semoga bermanfaat dan semoga pula naskah tentang data spasial dan bigdata dengan Matlab dapat rampung secepatnya.

Waterfall, Iteration, atau Metode Extreem/Agile dalam Menulis dan Revisi

Bagi rekan-rekan yang berkecimpung dalam dunia IT pasti mengenal metode waterfall, iteration atau Extreem/Agile. Metode-metode tersebut diterapkan dalam perancangan perangkat lunak dan analisa & disain. Namun demikian, saya kerap menerapkannya dalam menulis, baik buku, paper imiah, maupun sekedar postingan di blog. Di antara metode-metode tersebut, manakah yang cocok dengan Anda? Mungkin postingan ini bisa sedikit membantu.

Waterfall

Waterfall artinya air terjun. Jadi metode ini menggunakan prinsip air terjun yang jatuh dari atas ke bawah. Menulis dengan metode waterfall berarti menulis secara cepat, tanpa memperhatikan tata bahasa, mengikuti ide yang ada di kepala. Ketika selesai 100% barulah proses editing dimulai. Kesalahan-kesalahan kecil, salah ketik (typo), maupun salah komposisi (letak kalimat dan paragraf) diperbaiki setelah semua ide dituangkan dalam tulisan. Banyak tips dan trik menulis yang saya terima menganjurkan metode ini, sangat cocok sebagai pemula yang terkadang “bengong” ketika di depan laptop. Fokus menuangkan ide menjadi dasar utama, apalagi bagi pemula yang jarang menulis. Re-writing menjadi wajib bagi yang menerapkan metode ini.

Kelebihan waterfall yang mengalirkan tulisan dengan lincah terkadang menyulitkan penulis buku yang tebal. Tidak mungkin lagi mengecek tulisan dari awal. Bayangkan saja berapa waktu yang dibutuhkan untuk mengecek lagi. Skimming mungkin bisa, tetapi jika mengecek dengan teliti hingga di level tata bahasa, sangat memberatkan, kecuali memang ada bagian yang mengoreksinya. Presiden RI pertama, Ir. Soekarno, pun dalam kata pengantar buku “di bawah bendera revolusi” disebutkan bahwa ketika beliau menulis buku tersebut (kumpulan tulisan) mengatakan tidak sempat lagi membaca ulang kembali apa yang ditulisnya. Kemungkinan besar beliau menggunakan metode iterasi, yang merupakan perbaikan dari metode waterfall dalam perancangan sistem.

Iteration

Metode iterasi menerapkan perulangan (iterasi) dalam proses pembuatannya. Ide-nya adalah merubah sesuatu ketika masih sederhana lebih mudah dibanding jika sudah kompleks. Termasuk juga mengoreksinya dan mengujinya. Tentu saja mengecek perbab lebih enak dibanding per-buku. Ketika menulis disertasi, yang paling melelahkan adalah ketika mengoreksi seluruh isi disertasi. Metode iterasi ini digunakan dengan cara ketika selesai satu bab, langsung koreksi bab yang baru saja ditulis. Terkadang bukan hanya satu bab, satu paragraf pun langsung dikoreksi ketika selesai dibuat. Terkadang kesalahan logika bisa ditemukan sebelum terlanjur, misalnya ternyata paragraf yang baru ditulis salah tempat atau kurang cocok di bab/sub-bab yang sedang digarap.

Jika seluruh tulisan selesai dibuat, mengoreksi tulisan yang dibuat dengan metode iterasi ini lebih cepat dan mudah dibanding mengoreksi tulisan yang dibuat dengan waterfall yang masih banyak salah di sana sini. Bahkan bisa hanya dengan “skimming”. Tentu saja konsep re-writing tetap diterapkan walau menulis menggunakan metode iterasi.

Extreem/Agile

Pernah dalam satu semester saya mengikuti kuliah web development dengan ruby and rails. Metode yang digunakan adalah dengan extreem/agile. Metode ini berfokus menghasilkan satu aplikasi dengan cepat. Berbeda dengan iterasi yang hanya perulangan beberapa milestoon/tahap dalam waterfall, extreem/agile menggabungkan beberapa tahap dalam proses pengembangannya. Ketika proses pembuatan proyek, ada fasilitas bantu yang berupa testing. Jadi testing dapat dilakukan sebelum software selesai dibuat. Metode ini bisa cepat karena dibuat “keroyokan” dengan alat bantu versioning. Rollback ketika new version gagal dengan mudah dan aman dilakukan.

Dalam hal menulis, banyak alat bantu yang bisa digunakan. Misalnya spelling and grammar check yang tersedia di wordprocessing yang digunakan. Aplikasi seperti grammarly terkadang bisa mendeteksi bukan hanya salah ketik, melainkan juga tata bahasa (singular, plural, atau completion). Satu tool yang saat ini mutlak diperlukan dalam publikasi ilmiah adalah cek plagiarisme. Beberapa software bisa digunakan untuk itu, seperti turnitin, plagscan, smallseotools, dll (lihat post sebelumnya). Untuk menulis “keroyokan”, penerapan cloud seperti google drive/one drive bisa juga diterapkan, termasuk menu review di mirosoft word.

Mungkin ide dalam postingan ini aneh bagi Anda, tetapi di jaman “disruption” yang melibatkan multi/interdisiplin dalam berbagai bidang, penerapan satu metode di luar domain ilmu sudah biasa dilakukan. Yang background-nya IT, tidak ada salahnya menerapkan metode-metode orang IT untuk hal-hal tertentu. Siapa yang “rigid”/kaku/radikal siap-siap akan ditinggalkan.

Unified Process (UP) dan Unified Modeling Language (UML)

Untuk UML kita sering mendengarnya, terutama bagi mahasiswa jurusan ilmu komputer, teknik informatika, ataupun sistem informasi. Sementara UP, sepertinya jarang terdengar, terkadang kurikulum pun tidak memasukannya. Biasanya UP dipisahkan dengan UML karena UP merupakan bagian dari proses perancangan perangkat lunak. Terkadang juga masuk dalam materi analisa dan disain sistem informasi.

Untuk informasi mengenai apa itu UP bisa dilihat di internet, misalnya wikipedia yang sepertinya akurat, sesuai dengan teori yang ada. Untuk yang ingin detilnya bisa lihat rujukan buku milik Jim Arlow (Arlow & Neustadt, 2005) atau karangan Craig Larman (Larman, 2005).

Lalu hubungannya apa UP dengan UML? Sebelumnya ada istilah Rational Unified Process (RUP) yang merupakan benchmark IBM untuk menggambarkan proses perancangan perangkat lunak. Untuk menghindari penamaan pabrikan/vendor, tri-amigos: Ivar Jacobson, James Rumbaugh dan Grady Booch menerbitkan buku khusus UP. Mereka merupakan para pencetus UML, tool untuk penggambaran dan pemodelan sistem berbasis obyek. Jadi UP itu pemodelan dan framework proses sementara UML hasil dari prosesnya (masih dalam bentuk blue-print).

UP bersifat iteratif yang tiap iterasi terdiri dari tahapan-tahapan sebagai berikut, untuk menghafalnya disingkat IEKT:

  • Incepsi: penentuan tujuan-tujuan (life cycle objectives)
  • Elaborasi: pembuatan arsitektur sistem
  • Konstruksi: kapasitas dan kemampuan sistem dibentuk
  • Transisi: produk siap uji

Buku Arlow membahas keempat tahapan UP tersebut yang dikombinasikan dengan waterfall (requirements, analisis, disain, implementasi dan testing, disingkat RADIT). Bentuknya di tiap-tiap RADIT ada IEKT dari UP. Namun ada juga yang sebaliknya, di tiap IEKT-nya UP ada RADIT. Namun yang dibahas di buku adalah yang bentuk pertama. Sementara itu ketika melihat buku Larman yang cukup tebal, ternyata UP hanya sampai Elaborasi. Tidak ada konstruksi dan transisi. Belum sempat saya baca sampai sana, hanya saja ada elaborasi-1, elaborasi-2. Bukunya cukup tebal dengan bahasa Java sebagai ilustrasinya.

Sempat saya baca juga dalam satu kolom khusus dalam buku Larman, bahwa tidak ada peluru perak (istilahnya senjata pamungkas pembunuh vampir) dalam bentuk tools atau teknik perancangan perangkat lunak, dikatakan oleh Dr. Frederick Brookes (lihat buku Mythical Man-month). Jadi kalau ada yang bilang suatu teknik itu ampuh untuk segala bentuk sistem, dipastikan tidak mungkin alias gombal, baik yg mengatakan itu dosen ataupun sales CASE (alat bantu pembuatan software). Tetap saja jika pengguna tidak memahami konsep Object Oriented akan kesulitan menggunakan CASE jenis apapun (dibahas di buku: “Death by UML Fever” karangan Booch). Seperti biasa, tiap buku berbeda-beda pahamnya, seperti post yang lalu bahwa beberapa buku analisa disain/rekayasa perangkat lunak (Pressman, 2001; Sommerville, 2007) masih mentolerir menggunakan non-object programming dengan UML. Tidak ada salahnya juga menggunakan model lain yg bukan standar UML untuk penggambaran sistem berbasis objek asal bermaksud memperjelas pembacaan model (Fowler, 2004). Tetapi alangkah idealnya jika sistem yg dirancang dengan UML berbasis object. Selamat ber-UML.

Reference

Arlow, J., & Neustadt, I. (2005). UML 2 and the Unified Process (Second). United States: Pearson Education Limited.

Fowler, M. (2004). UML Distilled (3rd ed.). United States: Pearson.

Larman, C. (2005). Applying UML and Patterns (3rd ed.). United States: Pearson.

Pressman, R. S. (2001). Software Engineering – A Practitioner’s Approach (Fifth Edit). New York: McGraw Hill.

Sommerville, I. (2007). Software Engineering – Eighth Edition. London: Pearson Education Limited.

 

Membaca Lebih dari Satu Buku

Buku teks atau buku ajar ada bermacam-macam. Ada yang berupa kumpulan penulis-penulis yang membahas topik tertentu (book chapter atau book section), ada pula yang hanya beberapa penulis membahas seluruh topik di suatu buku (buku teks). Sementara itu kebanyakan buku teks dibuat dalam bentuk kompilasi, yaitu kumpulan informasi yang berasal dari beragam sumber buku. Nah, kompilasi ini yang kerap saya jadikan patokan untuk menulis buku, karena lebih mudah. Ada juga jenis buku yang lain yaitu buku terjemahan, yang isinya hanya mengalih-bahasakan dari bahasa asing (biasanya bahasa Inggris) ke bahasa Indonesia tanpa menambah atau mengurangkan isinya. Hak cipta pun masih dipegang oleh buku sumber.

Bacalah

Membaca memang menjadi keharusan seorang pengajar karena informasi selalu berubah, apalagi dunia IT. Dalam kesehariannya terkadang ada debat antara satu dosen dengan dosen lainnya mengenai topik tertentu yang terkadang berimbas kepada siswa yang menjadi bimbingan tugas akhir, skripsi, atau pun tesis. Korban utamanya adalah si mahasiswa yang bingung harus mengikuti siapa? Pembimbing ataukah penguji. Untuk itu sebaiknya berpatokan kepada standar yang ada. Postingan kali ini saya mencoba membahasnya dalam dunia rekayasa perangkat lunak, khususnya UML.

Konflik Akademik

Sering saya menjumpai dosen-dosen yunior yang memang kebanyakan ahli dalam coding atau programming. Mungkin karena kesehariannya berasal dari instruktur lab yang naik pangkat jadi dosen. Terus terang ada manfaatnya karena mereka lebih mengetahui seluk beluk dan kesulitan yang dihadapi oleh mahasiswa yang kuliah IT. Masalah muncul ketika memasuki dunia akademis yang penuh dengan ilmu-ilmu baru yang selalu berkembang. Dosen yunior itu harus mempelajari perkembangan yang terjadi saat ini dan tidak kaku dan bersikukuh dengan bahasa pemrograman atau metode perancangan program yang dikuasainya. Lebih parah lagi, banyak juga yang merasa lebih jago dalam programming sehingga menganggap para dosen senior tidak tahu menahu prakteknya. Boleh saja beranggapan seperti itu, dan saya pun senang belajar dari mereka para dosen junior (sering disebut generasi milenial/generasi y). Sebenarnya malah menguntungkan para dosen-dosen senior.

Terus Membaca dan Belajar

Membaca buku-buku UML terkadang tidak ada habisnya. Muncul buku-buku baru yang terkadang membuat pusing jika kita tidak mampu memfilter-nya. Namun hanya membaca satu buku juga berbahaya karena membuat pembaca berfikiran sempit dan hanya memandang kebenaran dari satu sudut pandang saja, yaitu buku yang dia baca.

Misalnya pertama kali saya membaca satu buku yang khusus membahas UML, seluruh diagram dibahas. Namun di buku yang lain, dikatakan tidak semua developer menggunakan diagram UML, misalnya hanya diagram kelas, object, dan sequence. Tetapi buku yang lain yang berorientasi analisa disain menganggap diagram kelas dan use case lah yang penting, karena tidak semua stakeholder memahami pemrograman yang cocok dengan diagram sequence. Bahkan saya membaca satu buku khusus yang hanya membahas style yang baik dalam menggambar UML, misalnya ketika menggambar use case diagram, user di sebelah kiri dan admin di sebelah kanan dengan di tengah-tengahnya use case, unik juga. Tetapi bermanfaat juga sih, mengingat banyak siswa yang menggambar use case diagram acak adut, walaupun benar tetapi sulit dicerna.

Ribut terus berlanjut ketika ada yang membaca satu buku pemrograman berorientasi obyek yang menganggap UML harus diterapkan dalam pemrograman berbasis obyek saja. Pemrograman tanpa kelas tidak boleh menggunakan UML. Korbannya tidak lain adalah mahasiswa yang menjadi bimbingannya yang terkadang harus mengikuti outline yang disediakan kampus. Jika dosen itu membaca buku yang lain, dia mungkin akan berubah fikiran karena UML tidak harus untuk pemrograman berorientasi obyek, walaupun memang idealnya untuk berbasis object. Bahkan UML sendiri tidak melarang menggunakan diagram-diagram lainnya selama menambah kejelasan rancangan yang dibuatnya, terutama dalam komunikasi dengan user ataupun stakeholder.

Membaca Buku dengan Tema yang Berbeda

UML sangat berkaitan dengan tema-tema lainnya seperti rekayasa perangkat lunak dan analisa dan disain sistem. Beberapa buku rujukan utama software engineering uniknya sampai saat ini masih mengajarkan metode waterfall yang oleh kebanyakan pengembang saat ini banyak kelemahannya. Tetapi tetap saja 40% metode yang dipakai saat ini oleh pengembang menggunakan waterfall yang lebih mudah walaupun beresiko. Memang struktur yang jelas waterfall cocok dengan time frame perkuliahan. Namun, metode terkini yang bercirikan iterasi dan agile/extreem harus juga diperkenalkan.

Banyak hal-hal lain yang bisa kita pelajari dengan membaca lebih dari satu buku baik tema yang sejenis maupun tema lain yang memang saling berkaitan, misalnya pemrograman berorientasi obyek, rekayasa perangkat lunak, analisa dan disain sistem, pemrograman terstruktur, dan lain-lain. Untuk dunia akademik sendiri mau tidak mau harus menyampaikan seluruh informasi kepada siswa didik. Misalnya, untuk UML sebaiknya tidak hanya diagram-diagram yang sering digunakan di industri, melainkan wajib memberikan informasi secara total, walaupun terkadang membuat pusing baik mahasiswa maupun dosen (biasanya dilimpahkan pusingnya lewat tugas mahasiswa). Juga terkadang harus menghindari produk-produk dari vendor tertentu saja. Menggunakan software open source bisa jadi alternatif. Juga, antara dosen junior dan senior sebaiknya kompak dan saling bekerja sama sehingga bisa memberi ilmu dengan baik kepada siswa didik dan juga meningkatkan kinerja risetnya yang saat ini kita sudah berhasil mengalahkan Thailand dan sedikit lagi Singapura. Selanjutnya tinggal menghadapi Malaysia yang hampir dua kali jumlah publikasinya.

Sengaja saya tidak memberikan sitasi postingan ini karena memang untuk contoh kasus saja yang kemungkinan terjadi untuk tema perkuliahan yang lain. Mungkin pembaca, yang lebih senior dan expert, tidak sependapat dan bisa berbagi pengalaman. Semoga bermanfaat.

Menghitung Keluaran Fuzzy

Jika sebelumnya telah dibahas perhitungan keluaran JST, sekarang akan kita coba bahas perhitungan keluaran Fuzzy, atau sering disebut Fuzzy Inference System (FIS). Mungkin soal ujian akhir mata kuliah AI & Neuro-Fuzzy berikut ini bisa dijadikan pelajaran bagaimana menghitung keluaran FIS. Terutama bagaimana menghitung besar fungsi keanggotaannya.

SOAL:

In a simple fuzzy-servo control of a DC motor, only relative position error is used to calculate for the required relative average voltage of PWM signal from motor driver. Assume relative position error and relative average voltage of PWM signal, both varying from –1 to 1, are classified into 5 levels; Negative Big (NB), Negative Small (NS), Zero (Z), Positive Small (PS), and Positive Big (PB), when membership functions are shown in the below figures.

Tentukan Relative Average Voltage (RAV) ketika relative position error (RPE) menjadi 0.2, asumsikan fuzzy inference rule mengikuti hubungan berikut ini:

Relative Position Error         NB NS Z PS PB

Relative Average Voltage     PB PS Z NS NB

JAWAB:

Berdasarkan soal, relative position error yang 0.2 dijumlahkan secara grafis dan dihubungkan dengan rule yang disebutkan dalam soal.

Gambar di bagian atas, garis tebal 0.2 tidak memotong NB dan dengan demikian tidak ada nilai PB di sebelah kanan (menurut rule NB rpe= PB rav). Garis tebal 0.2 berikutnya memotong NS di titik vertikal lalu diarahkan ke grafik kanan membentuk luasan gambar PS yang diarsir (menurut rule NS rpe = PS rav). Dan diteruskan hingga fungsi keanggotaan RPE terakhir (paling kanan) yaitu PB.

Berikutnya dijumlah luasan RAV dari atas ke bawah membentuk gabungan bangun segitiga dan persegipanjang. Untuk menghitung luas dan titik berat perlu mengetahui luas tiap komponen serta titik berat dari bangun segitiga dan persegipanjang.

Hasilnya kira-kira sebagai berikut.

Titik Berat (Center of Gravity) berdasarkan rumus adalah ∑ (area x titik berat) / ∑ (area) akan menghasilkan titik berat itu sendiri. Cukup rumit juga menghitung manual, apalagi jika fungsi keanggotaannya bukan garis lurus melainkan gauss atau bell. Tetapi untuk prakteknya ya tidak dihitung manual. Gunakan saja fuzzy di Matlab untuk mengecek jawaban jika ingin berlatih. Bagaimana untuk rule yang memiliki operasi AND dan OR? Mudah saja, AND ambil yang terkecil, sementara OR ambil yang terbesar dari fungsi keanggotaan yang dioperasikan (AND atau OR).

Jadi lebih ribet menghitung Fuzzy dibanding JST menurut saya. Semoga bermanfaat.

The Unified Process

Bagi mahasiswa komputer yang sudah atau sedang mengerjakan skripsi/tugas akhir pasti mengenal istilah SDLC, singkatan dari System Development Life Cycle, standar pembuatan perangkat lunak. Kemunculan metode ini diperuntukan untuk standar pembuatan perangkat lunak tanpa iterasi. Tentu saja memiliki kelemahan, tetapi cukup baik untuk standar, apalagi standar kelulusan mahasiswa. Mahasiswa mengajukan proposal, bimbingan, pembuatan kode program, sidang dan lulus dah.

SDLC biasanya digunakan untuk pembuatan software konvensional yang terstruktur dan belum berbasis objek. Sementara untuk perancangan software berbasis objek, salah satu standar yang terkenal adalah Unified Process (UP) yang menggunakan visualisasi diagram Unified Modeling Language (UML) dan saat ini menjadi momok menjengkelkan mahasiswa TI/SI karena diagramnya yang cukup banyak untuk diingat: use case, class, dan teman-temannya.

Mempelajari UML sendiri sangat sulit tanpa mempraktekan langsung lewat proses pembuatan perangkat lunak, sering diistilahkan dengan Software Development Process (SDP) atau Software Engineering Process (SEP), walaupun kebanyakan praktisi IT enggan disebut engineer dan lebih suka dibilang developer .. he he yakni kaum yang kerjanya mengkonversi kebutuhan (requirement) menjadi (software).

Di awal UP sering disebut Unified Software Development Process (USDP) tetapi karena mungkin kepanjangan oleh salah satu pencetus UML, Ivar Jacobson, cukup disebut UP. Implementasi pertamanya adalah dilakukan oleh Ericsson (dikenal dengan ericsson approach) di IBM atau dengan istilah terkenalnya Rational Unified Process (RUP).

Ok, cukup panjang membahas hal ini. Butuh satu buku khusus yang sedang saya kerjakan untuk coba diterbitkan, melanjutkan buku terdahulu. Jika ingin mempelajari lebih detil, baca buku khusus UML yang banyak bertebaran baik di toko buku maupun internet, terutama dengan bahasa pengantar bahasa Inggris. Jadi kalau kalian sulit memahami pembahasan UML dengan bahasa Indonesia bisa mendownload yang berbahasa Inggris yang lebih mudah (eh .. kebalik ya).

Basis Data di Matlab

Tahun 2000 merupakan tahun perkenalan saya dengan Matlab. Dosen pengajar pengenalan pengaturan (dulu namanya mekanisme servo dan kontrol) rencananya akan memberikan seminar khusus di kampus. Sayangnya ternyata acara itu karena satu lain hal di-cancel. Rencananya saya akan menggunakan software itu untuk tugas akhir saya dalam mensimulasikan sistem suspensi. Apa boleh buat, terpaksa belajar sendiri.

Setelah membuka-buka Matlab ternyata banyak fasilitas-fasilitas menarik yang bisa diexplore, apalagi waktu itu Matlab 6 sudah muncul. Versi ini jauh lebih menarik dibanding Matlab 5, versi sebelumnya. Dari kedokteran, sains, bahkan ekonomi pun bisa memanfaatkan Matlab, walaupun orang informatika waktu itu kurang menyukai karena “terlalu mudah” atau “hanya mengandalkan toolbox” dibanding dengan bahasa c++, visual basic, pascal (sekarang Delphi) yang lebih laris dipasaran dan banyak dipakai pengembang. Efeknya, buku-buku terbitan Matlab waktu itu masih amat langka, ditambah lagi waktu itu internet masih barang mahal dibanding sekarang. Tapi bagi pengembang metode (bukan terapan) Matlab sangat menarik karena dengan cepat bisa mengeksekusi metode-metode rumit buatannya, karena kelamaan jika terlalu berfokus ke coding. Salah satu kelemahan Matlab sehingga dijauhi pengembang waktu itu adalah sulit diterapkan ke sistem basis data (DBMS). Sempat membuka sampel penggunaan basis data ternyata basis data yang digunakan tersimpan dalam format “mat” khusus Matlab, tidak dengan Access, MySql, dan sejenisnya. Untuk menghubungkannya harus mengkonversi dari DBMS tersebut ke Excel atau “dat” file agar bisa dimanipulasi Matlab.

Dengan Matlab saya banyak menerima dana hibah penelitian dari DIKTI untuk mengutak-atik Soft Computing dengan metode-metode terbarunya baik penerapan atau memodifikasi metode tersebut. Dari Jaringan Syaraf Tiruan hingga Algoritma genetika sudah saya gunakan, hingga akhirnya saya dipaksa melibatkan DBMS karena data yang besar (big data) dengan ukuran dua giga byte ke atas. Apalagi jika data yang akan dimanipulasi real time yang harus berubah-ubah terus. Untungnya Matlab 7 sudah memberikan fasilitas menghubungkan Matlab dengan basis data, waktu itu saya menggunakan ruby on rail sebagai interface yang menampilkan hasil manipulasi genetic algorithms ke web lewat PostgreSQL

Karena banyak yang menanyakan cara menghubungkan Matlab dengan DBMS, plus pemrograman visualnya (GUI) akhirnya saya tulis ke dalam buku yang baru terbit Februari 2016 kemarin.

Entah sudah tersedia di toko-toko buku terdekat atau belum saat ini. Kebanyakan pembeli menggunakan situs online dari penerbit informatika, link-nya berikut ini. Ada beberapa contoh kasus seperti enkripsi sederhana terhadap database, pengolahan citra digital (digital image processing) dan clustering dengan Fuzzy C-Mean. Kali ini saya menambahkan dengan CD. DBMS yang saya gunakan adalah Microsoft Access sebagai perwakilan aplikasi desktop dan MySQL sebagai perwakilan aplikasi berbasis Web dengan ODBC sebagai jembatan penghubung dari Matlab ke DBMS lewat windows.

Untuk membuat buku yang sempurna mungkin membutuhkan waktu yang cukup panjang, sementara para mahasiswa yang sedang menyelesaikan tugas akhir/skripsi/tesis dikejar waktu, ada baiknya buku yang ringkas dan sesuai kebutuhan tersedia di pasaran. Semoga bermanfaat, Amiin.

Algoritma Genetika dengan Toolbox Matlab

Genetic Algorithms (GAs) digunakan untuk mencari nilai optimal (maksimum atau minimum) suatu fungsi. Fungsi itu dikenal dengan istilah fitness function, atau ada juga yang menyebutnya fungsi objektif. Sebelumnya optimasi dilakukan dengan cara matematis, kalau kita inget-inget lagi pelajaran SMA dengan menurunkan suatu persamaan dan disamadengankan dengan nol. Tetapi masalah muncul jika persamaan itu memiliki banyak nilai optimal, karena nilai optimal akan terjebak dalam lokal optimum. Contohnya adalah fungsi rastrigin dari Matlab yang memiliki banyak jebakan local minimum dan hanya ada satu global optimum (kayak tempat telor ya).

Ok, kita coba mengoptimasikan satu fungsi objektif dari penanya: y = 2*x(1)+3*x(2)+4*x(3)+4*x(4). Dengan constraint: 10<x(1)<20, 30<x(2)<40, 50<x(3)<60, 70<x(4)<80. Kayaknya susah. Sebelumnya, buat terlebih dahulu fungsinya di m-file. Praktisnya ketik saja edit fungsi jika kita mau membuat fungsi objektif itu bernama fungsi. Tekan “yes” jika ada pesan bahwa tidak ada m-file bernama “fungsi”. Berarti fungsi bernama fungsi itu tidak dimiliki oleh bahasa built-in bawan Matlab. Ketik fungsi y di atas di m-file editor yang baru saja terbuka.

Kok Cuma gitu? Ya iyalah, coba tes dengan x1, x2, x3, dan x4 berturut-turut 1,2,3, dan 4 di command window dengan mengetik y=fungsi([1 2 3 4]). Jawabannya harus 36 dan tidak ada pesan error. Oiya, ini harus benar, karena jika sampai sini tidak berhasil mengikuti ya dijamin ga bakal bisa terus ke algoritma genetik, tapi kalo hanya ingin membaca saja ya rapopo.

Seperti biasa, cara termudah mengoperasikan Matlab adalah dengan menggunakan toolbox yang tersedia. Untuk GAs, karena masuk dalam kategori optimization toolbox, gunakan fungsi optimtool di command window.

Setelah memilih jenis optimasinya (GAs), isi nama fungsi didahului @, jumlah variabel (4 variabel) dan perhatikan teknik mengisi bound yang sesuai persoalan. Di bagian kanan masih ada sebenarnya, tapi ga wajib. Centang pada isian plotting pada best fitness dan best individual sehingga ketika tombol “Start” ditekan, proses optimasi akan disertai pergerakan grafik yang interaktif. Oiya, tolong dicek benar atau tidak kalau itu nilai minimum. He he .. kayaknya ga perlu pake GAs saya juga bisa nebak, ya pasti batas bawah lah jawabannya (10, 30, 50, dan 70) soalnya fungsi kuadrat (membesar terus). Coba ganti fungsi yang lain.

Mengolah Data dengan Metode Analtytic Hierarchy Process (AHP)

Dulu sempat mengambil mata kuliah Decision Support System (DSS) dan memperoleh materi khusus AHP dan sekarang ternyata “butuh lagi”. Ketika membuka lagi folder-folder lama dan ternyata masih ada. Sayang softwarenya tidak bisa diinstal di laptop saya karena versi yang sekarang windows 64 bit. Untung ada yang “share” program aplikasi tersebut di internet, ya sudah saya “pinjam”.

AHP biasanya dipergunakan untuk memilih pilihan yang tepat dari kriteria-kriteria tertentu. Tetapi disertasi saya hanya membutuhkan berapa bobot yang tepat untuk menentukan goal-nya nanti, tidak dengan AHP melainkan algoritma tertentu. Oke lah, saya sebar kuesioner ke beberapa responden yang mengerti masalah urban, lingkungan, atau optimasi pengalokasian lahan. Kuesioner dibuat dengan menggunakan google form.

Buka expert choice dilanjutkan dengan memberi nama project yang akan dibuat di software tersebut. AHP ini idenya dicetuskan oleh Saaty dan Vargas tahun 2000, silahkan unduh sendiri jurnalnya. Berikutnya adalah kita masukan variabel-variabel pendukung keputusan di menu edit (Ctrl-H).

Setelah variabel-variabelnya dimasukan, isi data hasil kuesioner ke expert choice untuk mengetahui berapa bobot yang diperoleh berdasarkan jawaban dari responden. Berikutnya adalah mengisi data dari hasil kuesioner yang disebar. Tekan simbol 3:1 untuk mengisi pairwise comparison.

Isi satu persatu dengan hati-hati karena excel hasil jawaban dari google form kurang rapi dan dikhawatirkan jawaban tertukar. Biasanya agar tidak tertukar saya mengurutkan variabel dan tiap pergantian variabel saya batasi dengan warna.

Pilih responden yang mengisi kuesionar dengan benar sesuai dengan formatnya. AHP melarang nilai konsistensi yang kurang dari 0.1. Konsistensi bisa saja terjadi jika banyak variabel yang terlibat. Maksud dari konsistensi adalah misal jika A > B dan B > C maka C > A tentu saja tidak konsisten, walaupun bisa saja terjadi (wanita berani dengan kucing, kucing berani dengan tikus, tetapi wanita takut dengan tikus, misalnya). Klik simbol ABC, maka kita akan menemukan skala, dan sebaiknya kuesioner menyesuaikan dengan skala ini.

Jadi jika responden menjawab very strong, maka kita pilih nilai 7, equal nilainya satu, dan seterusnya. Jawab untuk satu responden hingga menghasilkan skor di bawah ini misalnya.

residential

Perhatikan konsistensinya lebih besar dari 0.1, tetapi jangan khawatir, ini masih responden pertama, kita masukan responden yang lainnya. Tetapi dicatat saja, jika konsistensi akhir di atas 0.1 maka responden ini menjadi kandidat untuk tidak diikutsertakan. Jangan lupa, arah skornya ke kanan apa ke kiri (tulisan angka BERWARNA MERAH atau HITAM), karena salah geser, ke arah lawannya. Lanjutkan hingga seluruh responden dimasukan. Klik simbol participant terlebih dahulu (gambar dua orang) di bagian menu, tambahkan berapa responden yang akan dimasukan ke expert choice.

Pilih participant yang akan dimasukan skor hasil kuesionernya. Pilih P2 di bagian menu participant. Lanjutkan dengan mengisi data seperti langkah sebelumnya. Untuk responden kedua, nilai agak mendingan (konsistensi 0.17).

residential

Combine data Anda baik (both data and judgment) untuk menghasilkan total bobot seperti gambar di atas. Dan coba jangan sampai inconsistency di atas 0.1, jika lebih buang yang scor inconsistency-nya buruk (tapi jangan utak-atik data ya, karena melanggar prinsip riset ilmiah – namanya fabrikasi). Karena Expert choice, maka tidak perlu data sampel yang banyak, tetapi yang mengisi adalah pakar di bidangnya.

Prediksi dengan Jaringan Syaraf Tiruan (Dasar-dasar)

Jaringan Syaraf Tiruan (JST) merupakan metode komputasi yang meniru perilaku kerja otak makhluk hidup dalam merespon masukan. Dengan data berupa variabel-variabel masukan, JST memproses kemudian menghasilkan output tertentu sesuai dengan proses pembelajaran sebelumnya. JST telah banyak diterapkan di berbagai bidang antara lain:  kedokteran, keuangan, sistem kontrol, data mining, dan lain-lain. Lalu muncul pertanyaan, apakah bisa juga digunakan untuk prediksi?

Secara filosofis karena JST adalah usaha untuk meniru otak, maka tentu saja diharapkan dapat digunakan untuk prediksi karena otak kita juga bisa memprediksi sesuatu kan? Situs yang cukup baik menurut saya dalam menjelaskan peramalan dengan JST adalah berikut ini. Atau berikut penjelasannya bagi yang malas baca tulisan panjang ditambah bahasa Inggris pula.

Sebelumnya kita bahas terlebih dahulu JST yang tidak digunakan untuk meramal (forecast), misalnya penentuan harga baru berdasarkan jumlah penjualan dan pesanan. Jika penjualan meningkat dan pesanan meningkat sekian, maka harga baru naik sekian. Jika penjualan menurun dan pesanan menurun sekian maka harga baru turun sekian. Jadi JST akan menerima masukan jumlah penjualan periode tertentu dan berapa pesanan baru, maka JST akan menyarankan untuk menaikan atau menurunkan harga dengan prosentase tertentu berdasarkan informasi data yang lalu. Jadi jika perusahaan tersebut ditinggal oleh manajer pemasaran karena gaji kecil, ga dapet THR, ga dihargai, dll, manajer baru tinggal memakai data lama untuk mengambil keputusan ke depan.

Sementara itu peramalan menggunakan data lama sebagai variabel masukan, biasanya periodik, perbulan atau pertahun, yang tentu saja banyak (tidak hanya satu tahun/bulan). Untuk kasus penentuan harga barang, JST bisa digunakan untuk meramalkan kenaikan harga di masa yang akan datang. Termasuk variabel-variabel yang sebelumnya jadi masukan juga bisa diramal untuk ikut andil memprediksi yang dikenal dengan istilah variabel intervensi (intervening). Berikut satu ilustrasi yang cukup baik dari referensi yang disebutkan di awal.

Jika diperhatikan ada lima input untuk memprediksi satu keluaran. Tentu saja jumlah input harus tetap, jika ketika pelatihan ada lima tahun sebelumnya untuk memprediksi, maka JST akan error jika hanya empat atau tiga masukan yang tersedia. Salah satu kehebatan JST dibanding regressi yang lain adalah dengan mudah dapat ditambah variabel intervensi seperti gambar berikut. Kalau di kasus contoh sebelumnya misalnya jumlah penjualan dan pesanan baru yang masuk.

Disebutkan bahwa jumlah variabel intervensi (intervention indicator) jangan terlalu banyak karena akan mengganggu masukan yang lain yang utama (data history periode yang lampau). Untuk penerepannya dapat Anda lihat di postingan saya yang lain. Untuk yang lagi skripsi atau tesis tentang peramalan, tetap semangat !!!

Referensi:

Writing Genetic Algorithms in Matlab

Genetic Algorithms (GAs) toolbox is available when we install Matlab, but some cases need special treatment to our system. It may be related to constraint, and may be combination to other algorithms. Some students when doing their thesis or project need some manipulations to the algorithms. There are many books give additional source code for GAs. But the main source for me is an internet. We can find a lot of source code in Matlab by using a simple google. For example sivanandam in his book give a code in matlab but there are so many additional script that must be available first in order to make our code running well. One site that may be important to GAs user is here. One simple GAs may be need some m-file scripts like this.

Of course you can just type “optimtool” in command window, and choose GAs as your basis of optimization. But understanding something inside it I think very important, how selection, crossover, etc. so we can manipulate them for giving better efficiency, accuracy and speed.

Mencari Pareto Front dengan Kode Matlab

Lanjutan dari postingan terdahulu. Setelah surfing di internet, akhirnya ketemu juga program untuk menentukan titik pareto front di titik-titik hasil optimisasi di situs ini. Kode-nya dibuat oleh Yi Cao dari Cranfield University pada tahun 2007 yang lalu. Sayangnya gabungan hex file dengan m-file. Letakan dalam satu folder setelah diekstrak, dan jalankan kode ini di command window:

  • X = rand(100,2);
  • front = paretofront(X);
  • hold on;
  • plot(X(:,1),X(:,2),’.’);
  • plot(X(front, 1) , X(front, 2) , ‘r.’);
  • hold off
  • grid on
  • xlabel(‘X_1’);
  • ylabel(‘X_2’);
  • title(‘Pareto Front of a set of random points’);

Prinsipnya adalah, fungsi paretofront akan mencari titik-titik pareto dimana tidak ada titik lain yang kedua fungsi objektif lebih kecil dari titik tersebut (kalau hanya satu masih diperbolehkan). Pada grafik, titik-titik yang merupakan pareto front diplot berwarna merah.

Note: Untuk mencari optimasi maximum tinggal mengalikan X dengan -1 di fungsi paretofront

  • front = paretofront(X*-1);

Membuka Model yang Tersimpan di ArcGIS

Memang kalau sudah bermain di level aplikasi, banyak keanehan-keanehan yang terjadi yang memang disebabkan oleh keterbatasan manusia dalam membuat suatu aplikasi. Tidak mungkin aplikasi dibentuk dengan sempurna. Hanya tuhanlah yang sempurna, begitu juga dengan aplikasi ArcGIS. Tidak mungkin bisa memuaskan semua penggunanya. Salah satu servis terbaru di ArcGIS yang sangat membantu para perancang untuk mempresentasikan hasil olahnya adalah “MODEL”. Di sini tiap proses direpresentasikan dalam bentuk block diagram. Setelah dibentuk, model bisa dijalankan dengan menekan tombol run.

Tetapi karena masih awam, sudah capek-capek membuat model ketika di-close, saya kesulitan memanggilnya karena sudah terbiasa dengan mendobel klik file-nya. Repotnya lagi, terkadang kita tidak tahu dimana lokasi filenya. Oiya, ArcGIS memiliki aturan, kita harus memasukan direktori kerja kita via Arc Catalog, di sanalah file-file kita tersimpan, yang secara default di folder “user”, C:\Users\toshiba064\Documents\ArcGIS. Untuk membukanya dapat dilakukan dengan cara membuka arc catalog, cari file yang disimpan.

Setelah itu, jangan klik “Open” karena model tidak terlihat, melainkan pilih “Edit”. Di situlah yang menurut saya anehnya, biasanya sih klik open seperti pada Matlab. Tampak proses reclassify, clip serta raster to polygon dengan weighted sum untuk menghasilkan nilai optimal. Apa itu? Ya belajar pelan-pelan dulu ArcGIS untuk optimasinya.

Simple Pareto Front dengan Matlab (Multiobjective)

Kalau dulu multi objective diselesaikan dengan memberi bobot terhadap tiap-tiap fungsi objektif atau dengan hierarki, saat ini teknik tersebut mulai ditinggalkan dan diganti dengan non-dominate objectif atau dikenal dengan istilah pareto, yang diusulkan pertama kali oleh pareto pada tahun 1896. Jadi kita tidak memaksakan memberi bobot terhadap fungsi-fungsi objektif dan memberikan range tertentu terhadap hasil optimasi. Range tersebut makin luas makin baik (wide spread). Misalnya penjelasan yang dapat dilihat di situs ini, kita coba jalankan dengan Matlab.

Ada dua fungsi objektif yang akan dicari nilai optimalnya (biasanya nilai minimum). Perhatikan dua grafik ini yang memiliki dua nilai minimum tergantung fungsi mana yang digunakan.

Untuk melakukan optimasi terhadap dua objektif fungsi di atas (fungsi garis merah dan garis biru). Sebelumnya buka matlab editor untuk membuat satu fungsi baru dengan mengetik di command window:

>>edit simple_multiobjective

Ternyata Matlab sudah membuatkan fungsi tersebut, sepertinya untuk demonstrasi optimasi multiobjektif. Untuk mengoptimasinya, fungsi yang digunakan di Matlab adalah gamultiobj. Ketik atau copas kode ini ke command window:

  • FitnessFunction = @simple_multiobjective;
  • numberOfVariables = 1;
  • [x,fval] = gamultiobj(FitnessFunction,numberOfVariables);

Di sini disebutkan jumlah variabel 1, yaitu x saja. Kemudian di sebelah kiri sama dengan ada x dan fval sebagai hasil dari optimasinya. Untuk melihat isinya dapat kita ketik di command window x dan fval tersebut. Apa hasilnya?

Hasilnya adalah matlab memberikan beberapa hasil optimasi (berupa range) kombinasi dari cenderung optimal di fungsi satu hingga ke optimal di fungsi dua. Ketik di command window untuk melihat grafiknya:

>> plot(fval(:,1),fval(:,2),’*’)

Hasilnya berupa grafik pareto dari nilai optimal dua fungsi tersebut. Di sini bobot bervariasi dari kecenderungan ke fval pertama hingga ke fval kedua. Fval adalah nilai optimal fungsi-fungsi fitness nya.

Bagaimana jika tiga fungsi objektif? Tentu saja kalau ingin divisualisasikan nanti berupa grafik tiga dimensi. Bagaimana jika empat objektif? Seperti disertasi saya, tentu saja sulit digambarkan. Matlab juga menyediakan visualisasi yang bagus (running ketika program berjalan) dengan memasukan kode di command windows sebagai berikut:

  • A = []; b = [];
  • Aeq = []; beq = [];
  • lb = -1.5;
  • ub = 0;
  • x = gamultiobj(FitnessFunction,numberOfVariables,A,b,Aeq,beq,lb,ub);
  • options = gaoptimset(‘PlotFcns’,{@gaplotpareto,@gaplotscorediversity});
  • gamultiobj(FitnessFunction,numberOfVariables,[],[],[],[],lb,ub,options);

 

Bikin Buku Lagi .. “Pemrograman Database dengan Matlab”

Menganggur saat bulan puasa ternyata enak juga buat menulis. Saat berada di “dunia” sendiri tiba-tiba adzan maghrib pertanda waktu berbuka puasa. Setelah berbuka, refresh lagi, dan siap meracik tulisan lagi. Setelah lebaran, jadilah satu buku “Pemrograman Basis Data dengan Matlab”. Belum tentu itu judulnya karena terkadang penerbit menyarankan untuk mengganti judul dengan judul yang menarik dari sisi pemasaran. Begitulah, harus terjadi kerjasama yang baik antara penulis dengan pemasaran, jika tidak, sudah dapat dipastikan buku tersebut tidak laku.

Sebenarnya buku yang sedang direview oleh penerbit (semoga lolos) tersebut berawal dari pertanyaan-pertanyaan di blog ini. Lalu muncul ide bagaimana jika dibuat dalam satu paket buku beserta contoh-contoh aplikasinya. Apalagi banyak yang masih sangsi bahwa Matlab bisa menghasilkan aplikasi yang terhubung dengan basis data seperti bahasa-bahasa yang lain seperti visual basic, java, dan bahasa pemrograman visual lainnya. Matlab selama ini dipuji karena tangguh di sisi komputasi. Bukan tangguh sih sebenarnya, tetapi mudah dan user friendly. Jadi jika bisa mengelola database, maka perancang bisa dengan baik menghubungkan komputasi teknis, soft computing, data mining, dengan basis data yang dimiliki. Database Management System (DBMS) yang dipilih adalah Microsoft Access sebagai perwakilan DBMS desktop dan MySQL untuk DBMS berbasis web. Sepertinya cukup karena keduanya merupakan DBMS yang paling banyak digunakan saat ini, terutama mahasiswa.

Untuk contoh aplikasi, dipilih kasus-kasus yang sering dijadikan tugas akhir (skripsi atau thessis) para mahasiswa yaitu data mining dengan clustering, enkripsi database, pengolahan citra, yang dirakit tentu saja dengan GUI. Tulisan diakhiri dengan lampiran-lampiran yaitu pembuatan executable program dan teori dasar struktur data di Matlab yang sangat penting karena proses perpindahan dari DBMS ke Matlab untuk diproses dan sebaliknya.

Seperti biasa, operasi dasar pada pemrograman basis data dipelajari yang dikenal dengan istilah CRUID (create, read, update, insert, dan delete). Pembuatan grafik setelah proses clustering dan pengolahan citra digital yang kemudian disimpan ke database dibahas dengan sederhana. Jika tombol “clustering” ditekan maka tiap record di database data langsung terupdate masuk kluster yang mana (kluster 0 atau 1). Tentu saja Anda bisa mengembangkan menjadi lebih dari dua kluster. Tanda tangan yang tadinya image kini dirubah menjadi biner (0 dan 1) yang bermanfaat untuk mengurangi kapasitas penyimpanan (dibandingkan penyimpanan dalam bentuk image utuh) yang biasanya diterapkan di perbankan.

Sepertinya pengolahan data dengan notepad atau excel yang bersifat offline dari database sudah mulai diganti dengan sistem yang online karena perubahan data terjadi secara cepat dengan jumlah yang besar (big data). Semoga buku seharga beberapa bungkus rokok tersebut segera terbit (whee lah …). Amiin.