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