Optimalisasi Multiobjektif

Biasanya dalam optimalisasi, fungsi yang akan dicari nilai optimalnya hanya berjumlah satu. Fungsi tersebut dikenal dengan nama fungsi objektif (objective function) atau beberapa peneliti lebih senang dengan istilah fungsi kriteria (criteria function). Tetapi di lapangan kebanyakan fungsi objektif lebih dari satu, sehingga perlu penanganan untuk mengoptimalkan fungsi-fungsi tersebut, yang dikenal dengan istilah optimalisasi multiobjective (multiobjective optimization).

Salah satu teknik yang sering dan mudah digunakan adalah dengan pembobotan, atau dikenal dengan istilah aggregating function. Besar bobot di tiap-tiap fungsi objektif perlu diriset terlebih dahulu, atau dengan menanyakan kepada para pakar di bidangnya. MIsalnya kita memiliki dua fungsi:

Coba gunakan Matlab untuk melihat grafik dua fungsi objektif tersebut. Tampak adanya kontradiksi. Di sinilah peran penanganan multiobjektif.


x=-10:0.1:10;
y1=x.^2+6;
plot(x,y1,'r')
grid on
hold
%Current plot held
y2=-(x.^2)+12;
plot(x,y2,'b')

Tampak kedua fungsi bertolak belakang. Di sini misalnya kita sudah memiliki bobot masing-masing untuk fungsi 1 dan 2 berturut-turut 0.7 dan 0.3. Maka untuk optimalisasi kita butuh satu fungsi baru, yang nantinya digunakan sebagai fungsi objektif pada algoritma optimasi yang dipilih. Tambahkan 2 kode baru lanjutan dari yang di atas.


yobj=0.7*y1+0.3*y2;
plot(x,yobj,'k')

Nah kita tinggal mengoptimalkan fobj yang berwarna hitam tersebut dengan metode yang Anda sukai, misalnya algoritma genetika. Ketik optimtool(‘ga’). Nah, di sini perlu membuat m-file yang berisi fungsi objektif. Ketik sembarang nama, misalnya “fungsi” di command window isi coding berikut:

Masukan nama fungsi tersebut diawali dengan @ di bagian “fitness function”. Di bagian “Plot Function” ceklis pada best fitness dan best individualnya agar lebih interaktif ketika Matlab memprosesnya. Tekan “Start” jika dirasa sudah siap. Oiya, jangan lupa “Number of Variables” diisi, tentu saja satu variabel yang terlibat “x”.

Perhatikan di bagian hasil, diperoleh titik 0.001 sebagai titik optimal dengan fitness 7.8. Sekian, semoga bisa menginspirasi.

Iklan

Mengunduh Peta Wilayah Indonesia

Ketersediaan data spasial wilayah Indonesia saat ini tidak perlu dikhawatirkan lagi karena kita sudah memiliki website khusus wilayah Indonesia, dengan kebijakan satu peta. Berbeda dengan ketika saya riset saat kuliah, dulu agak kerepotan untuk mengunduh shapefile peta wilayah di Indonesia. Jika ada, terkadang berbayar, kecuali Anda mujur memperoleh unduhan gratis dari orang yang men-share peta-nya.

Geospasial Untuk Negeri

Situs ini merupakan situs resmi milik pemerintah untuk mengunduh informasi mengenai seluruh wilayah Indonesia. Untuk mengunduhnya Anda perlu mendaftar (register) terlebih dahulu. Prosesnya tidak terlalu lama, hanya sedikit mengetik informasi kita di form yang disediakan. Ada tiga langkah yang diperlukan, antara lain:

Buat “username” disertai dengan password. Sertakan email valid yang fungsinya untuk konfirmasi. Email yang diisikan tidak harus email resmi, boleh gmail, yahoo, dan email gratisan lainnya. Jika sudah, klik “lanjut” di pojok kanan bawah, untuk masuk ke “step 2”.

Langkah kedua berisi informasi mengenai pekerjaan kita. Isi saja apa adanya, dilanjutkan dengan menekan tombol “Lanjut” jika sudah selesai.

Jika telah mengisi form ini, di bagian kanan bawah akan muncul tombol “Selesai” yang artinya kita telah selesai mengisi seluruh form yang ada. Selanjutnya buka email Anda dan pastikan ada email dari application.support@big.go.id. Tekan tombol “Verifikasi Email”.

Selanjutnya Anda sudah bisa login ke situs geospasial Indonesia. Silahkan masuk ke wilayah yang ingin Anda unduh, misalnya kabupaten Bekasi.

Untuk mengunduh suatu wilayah, cukup arahkan mouse ke lokasi tersebut. Secara otomatis nanti wilayah tersebut akan menyala. Oiya, sebelumnya masuk terlebih dahulu ke nemu “Dowload” – “Peta per Wilayah”.

Setelah itu pastikan muncul peta Indonesia. Arahkan menggunakan mouse ke wilayah yang ingin diunduh. Untuk zoom in/out gunakan schrol pada mouse Anda. Silahkan login terlebih dahulu sebagai syarat untuk mengunduh.

Pilih 25k ketika ada form yang muncul di dekat wilayah tersebut. Jika sudah diklik maka Anda akan siap mengunduh file rar wilayah tersebut.

Tekan simbol unduh di dekat wilayah tersebut. Simpan di tempat yang Anda inginkan dan pastikan hasil download bisa diekstrak. Saya cukup tercengang karena bukan hanya peta wilayah yang tersedia, peta tematik lainnya seperti niaga, industri, danau, sungan, bahkan kabel listrik pun tersedia .. cek cek cek. Gambar di bawah setelah dibuka dengan ArcGIS disertai modifikasi pada label tertentu di peta. Kenapa tidak dari dulu dibuatnya ya, padahal waktu kuliah dulu nyari-nyari informasi tersebut.

 

Menambah Artikel di ORCID

Orcid (https://orcid.org) merupakan situs identifikasi peneliti yang berisi nomor dan identitas lainnya. Salah satunya adalah artikel-artikel yang telah dipublikasi. Masuk terlebih dahulu ke situs ORCID dan jika belum punya akun, silahkan register terlebih dahulu.

Setelah masuk akan muncul informasi seperti pekerjaan, pendidikan, dan publikasi. Link dapat dishare agar orang lain bisa melihat CV kita lengkap. Misalnya link ORCID saya ini.

A. Menambahkan Secara Manual

Di bagian atas artikel-artikel, dapat diklik beberapa metode penambahan publikasi, seperti DOI, BIBTEX, dan salah satunya adalah “add manually”. Biasanya jurnal-jurnal lokal ber-ISSN belum memiliki DOI jadi harus dimasukan secara manual.

Masukan informasi mengenai tulisan yang akan didaftarkan ke ORCID Anda. Isian yang ada tanda bintangnya wajib ada. Jika sudah tekan “add to list” di bagian bawah.

Pastikan isian baru muncul di daftar publikasi.

B. Dengan DOI

Jurnal internasional atau jurnal nasional terakreditasi, dari Sinta 1 sampai 6 pasti memiliki DOI. Karena wajib memiliki DOI, misalnya jurnal yang saya kelolo ini (Jurnal Piksel). Persiapkan DOI yang akan Anda daftarkan ke daftar publikasi ORCID Anda, misalnya dari Scopus saya, ada tulisan yang belum dimasukan dengan DOI: 10.30534/ijatcse/2019/4381.52019.

Kembali masuk ke daftar list artikel di ORCID, tekan add lewat DOI. Masukan DOI ketika diminta.

Setelah diklik “retrieve work details” informasi mengenai judul, nama jurnal, akan muncul. Tekan “add to list” ketika sudah yakin informasi-informasi lainnya.

Jika ingin mengintegrasikan ORCID ID ke Scopus silahkan lihat tautan berikut. Sekian semoga bermanfaat.

Mengaktifkan Spatial Analysis untuk Mengatasi ERROR 010096: There is No Spatial Analysist License

Terkadang ketika memanipulasi data spasial, khususnya Euclidean Distance, muncul pesan kesalahan seperti di bawah ini.

Untuk mengatasinya mudah saja. Buka “Extension” pada jendela “Customize”.

Buka kembali salah satu toolbox “Spatial Analyst”, misalnya Euclidean Distance. Pastikan toolbox sudah bisa dijalankan. Sebenarnya maksud ArcGIS mendisable spatial analysis agar tidak terlalu memberatkan penggunaan ArcGIS jika tidak sedang menggunakan Spatial Analysis. Semoga bermanfaat.

Mempersiapkan Data dan Training Model ANFIS, JST dan SVM

Dalam machine learning dikenal beberapa jenis data antara lain: data training dan data testing. Terkadang data training dipisah menjadi data training dan target. Dalam prakteknya, data training menggunakan sebagaian prosentase dengan sisanya dijadikan data tasting untuk pengujian model.

Excel dapat digunakan untuk mempersiapkan data training walaupun memiliki beberapa keterbatasan dalam mengelola “big data”. Untuk data yang tidak terlalu besar, aplikasi bawaan ms office ini cukup dapat diandalkan.

Walaupun cross validation banyak diterapkan saat ini, tetapi dengan 80% data training dan sisanya untuk testing (20%) sudah cukup untuk mengukur akurasi model yang dirancang. Sebagai contoh data training berikut dapat digunakan, dengan data latihnya. Berikut langkah proses mempersiapkan data training dan data testing.

1. ANFIS

Untuk ANFIS data training dan target digabung menjadi satu. Formatnya karena sudah sesuai dengan format pentabelan di Excel maka cukup menyiapkan data training saja. Gunakan dua kode ini untuk mengimport data dengan Matlab.

  • load(‘data.dat’);
  • load(‘testing.dat’);

Untuk ANFIS, fungsi “anfisedit” disediakan Matlab untuk melatih ANFIS lewat data yang ada. Karena isian sudah dalam bentuk DAT maka sebenarnya dua kode di atas hanya digunakan nanti untuk testing dan training lewat model lainnya seperti JST, SVM, dll.

Pastikan training data muncul dengan tiga kelas sesuai dengan data (kelas 1, 2 dan 3). Berikutnya “Generate FIS” diklik untuk meramu FIS yang masih kosong.

Angka 3 di atas berarti ada 3 komponen MF di tiap input. Jumlah angka yang muncul menandakan jumlah masukan, di sini ada empat input yang merupakan variabel penentu output. Tipe MF ada banyak, di sini akan digunakan “trimf” yang paling sederhana (linear). Gunakan saja defaultnya (3 komponen di tiap inputan), yang merepresentasikan kondisi “low”, “medium”, dan “high”. Output gunakan saja konstan. ANFIS hanya tersedia di jenis fuzzy “Sugeno”. Tekan “Struktur” di sisi kanan untuk melihat sekilas Network yang siap dilatih.

Berikutnya masuk ke panel “Train FIS” untuk melatih Network. Ada dua pilihan pembelajaran: hybrid dan backpropagation. Gunakan saja “hybrid”. Berikut merupakan hasil training dengan 3 epoch (mirip iterasi).

Error tampak di layar utama (sekitar 0.1445). Simpan hasil pelatihan lewat “File” – “Export” – Pilih file.

Setelah nama fuzzy diisi (berekstensi *.fis) maka model siap diuji dengan data testing yang sudah ada. Misalnya diberi nama “anfisiris.fis”. Untuk testing gunakan kode berikut ini:

  • anfisiris=readfis(‘anfisiris.fis’);
  • prediksi=evalfis(testing(:,1:4);
  • tes=testing(:,1:4)
  • hasil=evalfis(tes,anfisiris)

Terakhir adalah menghitung akurasi dengan cara prosentase MAPE (Mean Average Percentage Error)-nya:

Jika dibandingkan maka akan tampak beberapa yang error, misalnya di sini ada satu yang error, jadi nilai MAPE-nya= 1/39 *100 = 2,56 %. Atau akurasinya = 100-2,56 = 97,44%. Sedangkan jika ingin mengetahui prediksi mana saja yang tidak akurat dapat menggunakan matriks confusion.

  • target=testing(:,5);
  • target=transpose(target);
  • prediksi=transpose(round(hasil));
  • c=confusionmat(target,prediksi)
  • c =
  • 13 0 0
  • 0 13 0
  • 0 1 12

Cara membaca matriks confusion adalah sebagai berikut. Kolom merupakan prediksi sementara baris adalah aktualnya (dalam hal ini sama dengan target (testing di kolom kelima). Fungsi “round” ditambahkan pada hasil untuk mencari kelas prediksi terdekat, misalnya 2.7 dikategorikan kelas “3”. Diagonal pada matriks confusion menyatakan akurasi. Perhatikan di baris kedua kolom ketiga, di sini harusnya 13 tetapi berisi 12 karena ada satu prediksi 3 (baris ketiga) tetapi kenyataannya 2 (kolom kedua).

2. Neural Networks (Jaringan Syaraf Tiruan)

JST perlu memisahkan data training dengan target (labelnya). Selain itu, formatnya juga berbeda dengan data pada ANFIS, dimana variabel berdasarkan baris. Untuk itu perlu modifikasi data yang ada berdasarkan “data.dat” dan “testing.dat”. Berikut ini kode untuk data training dan targetnya.

  • load(‘data.dat’);
  • load(‘testing.dat’);
  • datalatih=data(:,1:4);
  • datalatih=transpose(datalatih);
  • target=data(:,5);
  • target=transpose(target);

Coba cek dengan fungsi “size”, pastikan jumlah baris merepresentasikan jumlah variabel, sementara jumlah kolom merepresentasikan jumlah data. Berikutnya buat JST kosong dan latih.

  • network=newff(datalatih,target,[81 81]);
  • network=train(network,datalatih,target);

Perlu disiapkan data untuk testing.

  • tesdata=testing(:,1:4);
  • tesdata=transpose(tesdata);
  • targettes=testing(:,5);
  • targettes=transpose(targettes);

Selanjutnya menggunakan fungsi “sim” untuk memprediksi.

  • hasil=sim(network,tesdata);
  • aktual=targettes;
  • prediksi=round(hasil);
  • c=confusionmat(aktual,prediksi);
  • c =
  • 13 0 0 0
  • 0 11 2 0
  • 0 4 6 3
  • 0 0 0 0

Dari matriks confusion di atas dapat diketahui precision-nya (atau dikenal juga dengan nama MAPE). Caranya adalah membandingkan total yang benar (angka di sisi diagonal) dengan total data testing.

  • 13+11+6
  • ans =
  • 30
  • ans/39
  • ans =
  • 0.7692

Akurasi yang dihasilkan (MAPE) adalah 76.92%.

3. Support Vector Machine (SVM)

SVM hanya memisahkan dua kelas yang berbeda. Jika ada lebih dari dua kelas, maka perlu modifikasi dengan menggunakan lebih dari satu garis pemisah. Salah satu tekniknya adalah membuat pohon keputusan. Misalnya ada tiga kelas (kelas 1, kelas 2 dan kelas 3) maka perlu dibuat tiga garis pemisah, misalnya kita beri nama svm1, svm2 dan svm3.

  • svm1, pemisah antara kelas 1 dan kelas 2
  • svm 2, pemisah antara kelas 1 dan kelas 3, dan
  • svm 3, pemisah antara kelas 2 dan kelas 3

 

(source: link)

Selanjutnya, dibuat logika if-else untuk mengarahkan garis pemisah yang sesuai (atau dengan teknik lain yang sesuai). Berikut ini salah satu contohnya:

  • test1=svmclassify(svm1,datatesting)
  • if test1==1
  • test2=svmclassify(svm2,datatesting)
  • if test2==1
  • class=’1′
  • else
  • class=’3′
  • end
  • else
  • test3=svmclassify(svm3,datatesting)
  • if test3==2
  • class=’2′
  • else
  • class=’3′
  • end
  • end

Untuk membuat garis pemisah, Matlab menyediakan fungsi “svmtrain”. Jika ingin membuat garis pemisah antara kelas 1 dan kelas 2 (svm1) diperlukan data latih yang memiliki kelas 1 dan kelas 2 (tanpa menyertakan kelas 3) disertai dengan group-nya (dalam JST dikenal dengan istilah target).

  • svm1=svmtrain(train,group)

Di sini “train” merupakan data gabungan kelas 1 dan kelas 2, begitu pula “group” merupakan kelas yang sesuai dengan “train”. Gunakan excel untuk memilah-milah antara kelas 1 dengan kelas lainnya untuk membuat svm2, dan svm3.