Raster Analysis to Produce a Larger Extent in Arcgis

If you have a problem like this (picture below when you create a new map, for example distance from specifik line or polygon), you are new in ArcGis 😀 like me.

It’s ok, back to euclidean distance toolbox there are environment button that you have to fill.

You have to fill the processing extent to other map that cover the rectangle of it e.g Bekasi city. Thanks to someone that give the solution in the link here.

Do not stop here, you also have to fill in raster analysis form filling Bekasi city as analysis of mask in order to get the exact match like the result below.

Map Digitalization Using ArcGIS

In the last post we have learned how to create digitalize map from scanned map of open space. Now we are going to try creating a digitalize map of flood zone in bekasi city, Indonesia. Fortunately some blogger has upload the scanned flood zone, such as link here. Many sources for downloading Bekasi city shapefile e.g here. Officially you can buy thematic map on bakosurtanal site.

Of course you should have Bekasi City shapefile that have already been digitized. The bekasi city map can be download here. Start your ArcGIS with new project and open bekasi city shapefile. You have to match the shapefile to flood zone. The pdf file have to be converted first into image. If you do not have the conversion tool to image you can use online version e.g link here.

Add shapefile from menu/icon and chose the image to be matched with the bekasi city region shapefile. Some image may be contain band_1, band_2, and band_3, but others may just one image. You have to activate georeferencing menu toolbar.

Choose at least two point from image that match the shapefile. Arcgis will automatically match the two maps. And now we start to draw the flood region. Use zoom to layer for helping you finding point to match.

I think the map we have just drawn is very important, especially for someone who want to buy or build house in Bekasi city. No one want water in his/her house 😀. I have lived in the location shown below for 2 years and now move to another place, of course without terrible flood.

Menentukan Satu Titik Apakah di Dalam Beberapa Region

Jika pada tulisan yang lalu untuk satu region dengan instruksi inpoly dapat diketahui apakah titik tersebut di dalam atau di luar region, ternyata mengalami error ketika region yang diambil dari shapefile lebih dari satu dengan dibatasi oleh beberapa koordinat kosong “NaN”.

Salah satu fungsi Matlab yang bisa mengatasi masalah ini adalah fungsi inpolygon. Fungsi ini berbeda dengan fungsi inpoly yang hanya satu region dan harus diunduh dulu karena tidak tersedia di Matlab. Pada fungsi bawaan Matlab, Inpolygon, region tidak dinyatakan dalam satu variabel melainkan menjadi dua sumbu yaitu sumbu x yang dinyatakan dengan xv dan sumbu y yang dinyatakan dengan yv, seperti dari sumber tulisan ini.

Jika polygon yang anda miliki di ekspor dalam format kolom (baris menyatakan point) maka harus di convert dengan fungsi transpose. Saya memiliki region jalan dan danau kota bekasi dengan format baris, maka saya harus konversi menjadi format kolom kemudian memisahkan menjadi dua (xv dan yv).

  • >> xv=transpose(y(:,1));
  • >> yv=transpose(y(:,2));

Dua kode di atas adalah membuat variabel x dan y dari region. Berikutnya kita akan mengecek apakah suatu titik, misalnya rumah sakit di kab bekasi apakah terletak di jalan, sungai atau danau? .. (pertanyaan yg aneh .. he he). Kita impor lokasi rumah sakit dulu:

  • >> data2=impor(‘xxxxxxx.shp’);
  • >> y2=transpose([data2.X;data2.Y]);
  • >> tes=transpose(y2);
  • >> inpolygon(tes(1,:),tes(2,:),xv,yv)
  • ans =
  • 0 0 0 0 0 0 0 0 0 0 0 0

Variabel yang akan diuji ditranspose dan diberi nama tes, kemudian dicek dengan fungsi inpolygon. Hasilnya bener kan .. tidak ada rumah sakit yang berada di jalan, sungai atau danau. Kayak kurang kerjaan aja ya. Tapi itu berguna untuk program penataan ruang (pabrik, geografi, dll). Mengapa bangsa eropa maju, ya mungkin karena “They think everyting”. O iya, untuk melihat region di Matlab dengan toolbox “mapview“, masukan koordinatnya. Penggunaan secara detail dapat dilihat di tulisan sebelumnya.

Membuat Shapefile Kecamatan dari Kabupaten (Clipping)

Salah satu keterampilan terpenting dari pengguna GIS adalah kemampuan membuat satu peta dari data peta yang tersedia. Misalnya kita diminta membuat peta kecamatan bekasi selatan dari peta kota bekasi maka kita harus sanggup membuatnya, bisa dengan ArcGIS, ArcView atau aplikasi GIS lainnya. Di sini kita coba dengan ArcGIS.

Langkah pertama adalah siapkan shapefile kota bekasi, dilanjutkan dengan membuat satu project baru atau “menumpang” dari project yang ada. Proses yang dilakukan adalah clipping kota bekasi dengan pengguntingan pada kecamatan bekasi selatan.

Setelah peta kota bekasi dibuka, buka data dengan klik kanan di table of content pilih open attribut table. Sorot kecamatan yang akan diclip. Berikutnya adalah masuk ke menu clip yang berada di menu geoprocessing.

Isi baik input features dan clip features dengan shapefile yang sama. Tentu saja jangan lupa men-select di table kecamatan bekasi selatan, kalo tidak ya akan menghasilkan sama dengan shapefile kota bekasi (tidak ada yang digunting). Jika sudah tekan OK, tunggu hingga selesai dan pastikan tidak ada warning pertanda ada yang salah. Semoga bermanfaat.

 

Mengidentifikasi Pola Citra dengan Jaringan Syaraf Tiruan

Sebelum membahas identifikasi perlu diketahui ada dua jenis pengecekan suatu citra yaitu identitikasi (identification) dan pencocokan (verification). Pada sistem pencocokan prinsipnya sama dengan mengecek password, misalnya mengecek tanda tangan, sistem akan membandingkan identitas orang yang malakukan tanda tangan dengan citra tanda tangannya. Mirip ketika mau log-in, kita memasukan user id dan kemudian password, tetapi di sini passwordnya diganti dengan sidik jari, tanda tangan, retina, dll. Tetapi sistem identifikasi sedikit lebih rumit karena sistem tidak diberitahu identitas yang melakukan biometrik. Sistem harus mengetahui siapa pemilik citra yang ditangkap sistem. Jadi ketika kita ingin memasuki gedung yang diberi pengaman sistem identifikasi, pengguna hanya memberikan sidik jari, retina, tanda tangan, dan biometrik lainnya yang biasanya non-destruktif (kalo kesetrum mungkin sedang sial aja .. he he).

Untuk identifikasi tanda tangan dibutuhkan pengolahan citra sebelum masuk ke sistem identifikasi. Untuk belajar sebaiknya kita coba sistem yang sederhana misalnya membedakan angka 1,2, dan 3 saja dan tanpa pengolahan citra, alias kita beri tahu langsung vektornya. Gambar berikut ini menunjukan angka 1, 2, dan 3 di pixel berukuran 5×3.

Angka satu di sini menunjukan adanya pola sementara nol tidak. Data tersebut data utama yang akan ditraining dengan Jaringan Syaraf Tiruan (JST). Tentu saja jika hanya data itu yang diberikan, hasilnya kurang bagus karena sistem membutuhkan data lain untuk menjaga masukan yang agak menyimpang misalnya gambar di bawah untuk angka 1.

Untuk angka-angka yang lain, coba buat sendiri deviasinya. Kalo tanda tangan, untuk training user diminta melakukan beberapa tanda tangan, karena kebetulan hampir tidak mungkin melakukan tanda tangan beberapa kali hasilnya sama persis.

Langkah pertama adalah membuat vektor tanda tangan, caranya adalah mengkonversi matriks tanda tangan menjadi vektor dengan fungsi reshape di Matlab. Buka command window, kita coba untuk angka satu terlebih dahulu.

  • >> satu=[0 1 0;0 1 0;0 1 0;0 1 0;0 1 0]
  • satu =
  • 0 1 0
  • 0 1 0
  • 0 1 0
  • 0 1 0
  • 0 1 0
  • >> satu=reshape(satu,1,15)
  • satu =
  • Columns 1 through 12
  • 0 0 0 0 0 1 1 1 1 1 0 0
  • Columns 13 through 15
  • 0 0 0

Perhatikan fungsi reshape di atas, matriks 5×3 diubah menjadi 1×15 dimana 15 dari perkalian 3×5 (masukan angka 3, kali dan angka 5 di calculator iphone 6 Anda, nanti keluar deh angka 15 .. he he). Lakukan untuk tiga deviasi dari angka satu di gambar atas. Lakukan juga hal yang sama untuk angka 2 dan angka 3. Bagaimana jika tanpa deviasi? Ya bisa saja, tapi yang namanya belajar/training membedakan monyet dengan bukan monyet aja ga bisa kan trainingnya dengan gambar monyet saja, harus dengan gambar yang lain, bisa dengan foto teman anda, atau foto anda juga boleh. Ok, kita beri label saja monyet, eh angka satu, dua, dan tiga berturut-turut 1,2,3 walau boleh saja 0, 10, 20. Tetapi supaya gampang mengenali yang pertama saja. Supaya cepat, ok 2 dan 3 untuk training tidak perlu deviasi. Angka satu dengan tiga deviasi. Secara prinsipnya adalah gambar berikut:

Kolom terakhir merupakan label/target, sementara vector1 sampai 3 berukuran 1×15. Buka lagi command window, lakukan cara yang sama dengan variabel satu di atas, beri nama saja berikutnya dengan satua, satub, satuc, dua, dan tiga.

  • >> satua=reshape(satua,1,15);
  • >> satub=reshape(satub,1,15);
  • >> satuc=[0 0 1;0 0 1;0 1 0;0 1 0;0 1 0];
  • >> dua=[1 1 1;0 0 1;1 1 1;1 0 0;1 1 1];
  • >> tiga=[1 1 1;0 0 1;0 1 1;0 0 1;1 1 1];
  • >> satua=reshape(satua,1,15);
  • >> satub=reshape(satub,1,15);
  • >> satuc=reshape(satuc,1,15);
  • >> dua=reshape(dua,1,15);
  • >> tiga=reshape(tiga,1,15);
  • >> datalatih=[satu;satua;satub;satuc;dua;tiga];
  • >> target=[1;1;1;1;2;3];

Latih dengan toolbox JST di Matlab dimana data pelatihannya datalatih dan targetnya target. Format di nntool sedikit berbeda dengan data di atas dimana kolom jadi baris dan baris jadi kolom. Gunakan newdatalatih dan newtarget di toolboxnya.

  • >> newdatalatih=transpose(datalatih);
  • >> newtarget=transpose(target);

Oke, kita cek hasilnya yuukk. O iya, kalo masih bingung utak-atik toolbox JST (nntool) bisa dibuka di link sebelumnya, gampang kok. Kita uji dengan angka satu, dua dan tiga.

  • >> tessatu=transpose(satu);
  • >> sim(network1,tessatu)
  • ans =
  • 1.0000
  • >> tesdua=transpose(dua);
  • >> sim(network1,tesdua)
  • ans =
  • 2.0000
  • >> testiga=transpose(tiga);
  • >> sim(network1,testiga)
  • ans =
  • 1.5786
  • >> tessatua=transpose(satua);
  • >> sim(network1,tessatua)
  • ans =
  • 1.0000

Gimana .. ada yang ngaco ga? … ternyata, A D A. Angka tiga dites kok keluarnya 1,58 (saya beri warna merah). Makanya ngajarin bedain monyet atau bukan jangan hanya data monyet saja yang dilatih. Ok, selamat berpusing-pusing ria yang dapat skripsi atau tesis tentang identifikasi tanda tangan ya (jadi inget kerjaan saya dulu) ..

Jika Anda bisa membuat pengolahan citra di bawah ini berarti sudah siap nih untuk sistem identifikasi pola .. Gambar di bawah ini hasil keluaran angka dua (lihat bagian putihnya, karena angka 1 berwarna putih dan angka nol berwarna hitam).

Oiya, kalo bisa gunakan Matlab 7 sepertinya lebih ampuh. Bukan Cuma tanda tangan, bisa juga mengenali grafik lho, lihat di sini.

Mengenal Streetdirectory Untuk Melihat Penataan Ruang di Suatu Wilayah

Melanjutkan tulisan yang lalu yang bercerita seputar pembuatan data vektor dari google maps di sini saya temukan cara mudah untuk mengetahui tipe lahan suatu bangunan. Sebenarnya dengan google maps bisa lewat bantuan tag/pin yang telah dibuat orang lain, tetapi kebanyakan kurang akurat. Sementara data resmi tata ruang hanya bersifat global seperti lahan kosong, perumahan, sawah, dan sejenisnya. Jika saya akan membagi menjadi komersil, sekolah dasar/menengah, tempat ibadah dan lain-lain terpaksa harus mencari data resmi di instansi yang berkaitan, misalnya untuk sekolah dapat dilihat di situs kemendikbud ini. Namun sayangnya hampir semua sembarangan mengisi menu “MAP”-nya. Masih belum jelas siapa yang ditugasi untuk mengarahkan lokasi, jika yang bertugas adalah staf dari pengelola situs, tentu saja kesulitan, termasuk saya sendiri ketika ingin mencari lokasi pastinya.

Untungnya ketika iseng-iseng browsing di internet, saya menemukan situs streetdirectory yang berisi lokasi-lokasi bisnis, rumah sakit, dan peruntukan lahan spesifik lainnya. Tentu saja dapat dijadikan bahan referensi jika ingin membuat data vektor sendiri dengan arcview/gis.

Sangat menarik dan walaupun hanya lokasi-lokasi global dan penting saja, di kemudian hari bisa saja suatu saat akan lengkap dengan sistem partisipatif dari para pengguna (crowd source).

Mengintegrasikan Google Map / Earth di ArcGIS

Di ArcGIS terdapat fasilitas basemap (postingan yang lalu) yang berfungsi menampilkan tampilan rupa bumi, topografi serta jalan. Fasilitas ini sangat membantu siapa saja yang bermaksud me-real kan map yang dibuat. Ketika saya mencoba membuat peta titik-titik tertentu, ternyata ketika melewati daerah yang saya kenali saya sadar bahwa peta basemap tersebut tertinggal sekitar hampir 10-an tahun. Terpaksa saya mencari cara untuk mengintegrasikan peta terbaru, minimal seperti Google Earth/Map.

Searching di google pertama kali langsung masuk ke milisnya ESRI, vendor ArcGIS, langsung diarahkan ke Arc2Earth, yang ternyata banyak komentar bahwa trial, alias berbayar jika puas dan ingin menggunakan fasilitas itu selamanya. Akhirnya nyasarlah saya ke blog-nya Mas Arif, yang menyarankan menggunakan Arcbrutile. Akhirnya setelah mengunduh versi terbarunya, saya coba instalasi.

Seperti biasa ucapan selamat datang. Dilanjutkan dengan mengarahkan instalasi di folder tujuan, yang bisa kita klik “Next” saja untuk mengikuti lokasi defaultnya. Instalasi berjalan terus dan tunggu saja sampai selesai, sambil minum coklat atau apa saja.

Pastikan instalasi selesai dan ada kabar baik bahwa registrasi telah selesai dilakukan secara otomatis oleh Arcbrutile. Sepertinya versi sebelumnya tidak langsung registrasi, berbeda dengan versi 0.5.

Apakah berefek di ArcGIS, kita coba aja langsung. Jujur saja, waktu nulis ini sambil nginstal kok. Buka ArcGIS Anda. Ketika ArcGIS terbuka, sepertinya tidak ada perubahan di menu dan icon-nya. Masuk ke menu Customize dan ternyata Arcbutile sudah masuk dan menempel di ArcGIS. Dimanakah “Customize”? Utak-atik sendirilah di menu.

Wah, banyak sekali pilihan peta online yang bisa ditempel. Oiya, jangan lupa koneksikan laptop Anda ke jaringan internet, karena peta yang akan kita buka itu online, buka internet ya .. sekali lagu buuukaaa.

Tianditu, cuma sampai skala 1:500.000. Strava error, tidak bisa dibuka. MapQuest, open aeralmap juga sama dengan Tianditu skala maksimalnya, walaupun lebih besar yaitu 1:200,000 tetapi tentu saja tidak memuaskan. Mapbox, cukup baik untuk jalan sih, cuma untuk rumah max 1:20,000, tampak sumarecon bekasi dalam tahap pembangunan. Tetapi untuk melihat rumah ya kurang jelas.

Dan yang terbaik untuk melihat rumah paling baik adalah Bing – Aerial, dengan skala maksimal 1:250. Hanya saja ya itu, tertinggal beberapa tahun dibanding Google Earth. Sayangnya di Arcbrutile tidak ada Google Earth.

Kalo gitu kita cari lagi fasilitas embedded yang menampilkan foto satelite terbaru seperti pada google earth/map. Syukur-syukur ada fasilitas Street View-nya dan tentu saja .. yang gratis. Gambar di bawah memperlihatkan peta satelit yang dihubungkan dengan peta jalan, dan ternyata klop, asal projection-nya diset sama.

Membuat Data Vektor di ArcGIS

Jauh berbeda denga ArcView jika ingin menambahkan satu layer peta dengan menu Theme, di ArcGIS kita harus membuka ArcCatalog yang mirip explore. Di lokasi folder (harus dikoneksikan dulu dengan “connect to folder ..”) klik kanan dan pilih new dan shapefile. Ribet dah ..

Berikutnya lebih rumit lagi dan harus belajar terlebih dulu sistem proyeksi yang ada di dunia. Di bekasi sendiri saya memilih UTM di bagian south dan zona 48s, agar kompak dengan basemap dari google. Mengapa harus sama, ya supaya matching antara data vektor dengan data poligon atau rasternya sendiri.

Bagus juga sih, ada pilihan bentuk gambar untuk data vektornya, rumah, gedung dan lain sebagainya. Jadi bisa membentuk titik-titik dengan simbol yang manis. Akhirnya ketemu deh penggunaan lahan berdasarkan jenis tipe peruntukannya. Sedikit ribet tetapi ternyata nyaman juga kalau sudah terbiasa dengan ArcGIS.

Melihat Perkembangan Landuse dengan Google Earth Pro

Bagi yang memiliki ketertarikan dengan tata kelola penggunaan lahan, ada kabar gembira. Google earth sudah menyediakan fasilitas berupa riwayat perkembangan lahan sejak dari tahun 2001. Google earth pro saat ini sudah bisa diinstal gratis di komputer Anda.

Jika dulu, dengan google earth dari internet, kita bisa mengetahui penggunaan lahan dari citra satelit secara gratis, kini dengan fasilitas historical imagery kita dapat mendata perkembangan wilayah sejak dulu hingga saat ini. Manfaatnya adalah kita dapat memprediksi jumlah gedung, rumah, taman, lahan terbuka, dan lain-lain untuk beberapa tahun ke depan dengan regresi sederhana. Jumlahnya pun cukup akurat hanya saja datanya harus kita kumpulkan sendiri dengan melihat langsung dari image yang diberikan google. Tetapi menurut saya itu lebih akurat dibanding data resmi karena “human error” sekaligus bisa juga tentu saja untuk mengoreksi data tersebut jika kita miliki. Ini adalah stadion kebanggaan orang Bekasiiiiiiiii, saat ini:

Bandingkan dengan di tahun 2003, terutama di bagian atas, yaitu Sumarecon yang masih hijau. Semoga tulisan ini sedikit bermanfaat. Bagi saya sih amat sangat bermanfaat .. he he.

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.

Creating a Region for Constraint in ArcView

This is an example to create a region drawing from ArcView/ArcGis. Open the ArcView and do these steps:

Because we will draw a region, we will use polygon as a basis of our theme. The window will be appeared everytime we create new theme.

After clicking “OK” you must save and give the name for this new region, e.g “boundaryshp”. Now we start a new boundary polygon as a constraint of our Multiobjective Evolutionary Algorithms (MOEAs). For example we draw the region like figure in dark red color below:

Then we export it to matlab (of course in matlab we say read/impor). Use this script in command window to read the boundary region. But, firstly we have to save.

  • data=shaperead(‘boundaryshp.shp’)

This will retrieve a shapefile. But we have to mine the coordinates, using:

  • y=data.Y;
  • x=data.X;

You can use mapviewer to open that region in Matlab. Import from workspace after mapviewer appear.

You have to select X and Y coordinates. In our example y and x.

If you do not find any problems, your region will appear like this … meauwww !!

So, we’ve just believed that our spatial data was exported to matlab workspace. The last part is convert the spatial data into coordinates according to our requirements. As an information, the shapefile have row-based style, so we have to transpose them.

  • y=transpose([data.X;data.Y]);
  • y
  • y =
  • 1.0e+006 *
  • 0.7192 9.3096
  • 0.7194 9.3096
  • 0.7196 9.3099
  • 0.7199 9.3102
  • 0.7204 9.3103
  • 0.7205 9.3102
  • 0.7202 9.3100
  • 0.7202 9.3099
  • 0.7202 9.3096
  • 0.7199 9.3098
  • 0.7197 9.3095
  • 0.7198 9.3092
  • 0.7197 9.3091
  • 0.7196 9.3094
  • 0.7194 9.3096
  • 0.7193 9.3095
  • 0.7192 9.3096
  • NaN NaN
  • 0.7192 9.3096
  • 0.7192 9.3096
  • 0.7192 9.3096
  • 0.7192 9.3096
  • NaN NaN

Note: May be I rather bad in creating some region, there are two NaN that actually only one pair. It must be there are two closed region on that shapefile.

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);

Peramalan dengan Jaringan Syaraf Tiruan

Jaringan syaraf tiruan (jst) sering juga dijadikan sarana untuk meramalan. Berbeda dengan fitting yang mengandalkan variabel-variabel input, peramalan hanya mengandalkan data berdasarkan deretan waktu (time series). Dan seperti time series lainnya, jumlah data sangat menentukan kualitas peramalannya, walaupun dua data bisa meramalkan data ketiga tetapi tentu saja kalah akurat dibanding meramalkan data ke 1001 dari 1000 data.

Misal saya memiliki data tiga tahun, kemudian saya susun menjadi bentuk seperti ini dimana matriks berisi dua baris dengan baris pertama tahun pertama dan baris kedua tahun kedua. Sementara tahun ketiga saya jadikan target pelatihan.

Dengan membuka toolbox JST (ketik nntool di command window) kita rakit JST untuk dilatih dengan target pelatihan tahun ketiga:

Masukan variabel-variabel masukan dan target di jendela nntool. Buat JST dengan jumlah neuron sesuai keinginan, lakukan training.

Begitu pula JST-nya, buat saja dengan mengklik tombol ‘new’ di jendela network designer. Atau bisa juga menggunakan fungsi di command window tanpa toolbox (fungsi newff).

Jika sudah, dobel klik pada network1 untuk melakukan proses training. Pilih lagi input dan target datanya, lakukan simulasi, dan tunggu sesaat hingga proses pelatihan selesai.

Hasilnya jangan lupa disimpan untuk memprediksi tahun keempat. Bagaimana memprediksi tahun keempat? Gunakan saja tahun kedua dan tahun ketiga sebagai input, maka JST akan memprediksi tahun keempat berdasar pelatihan sebelumnya.

Kemudian lakukan simulasi dengan fungsi sim dari Matlab. Gunakan network1 yang telah di ekspor dari proses pelatihan sebelumnya. Gunakan kode berikut di command window, maka prediksi tahun keempat selesai, akurasi tentu saja bisa diuji jika Anda punya data tahun keempat yang sesungguhnya.

Tentu saja dua data untuk meramalkan data ketiga kurang baik, seperti halnya anda memprediksi kurs dollar terhadap rupiah hanya dengan dua data, karena belum tentu rupiah terus melemah, bisa saja menguat jika data pelatihannya banyak. Tetapi yang namanya ramalan ya belum tentu benar kan?

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);

Â