Dibuat oleh :
22318012 Hidayat
22318016 Ahmad Setiawan
22318003 Warni Multi
PENDAHULUAN
Inversi resistivitas adalah satu contoh dari invresi dari sebuah persamaan diferensial parsial
eliptik. Karena persamaan diferensial parsial eliptik umum di dalam banyak sistem fisik, kode
memiliki peran pendidikan. Bekerja dengan inversi resistivitas dapat membantu peneliti
memahami elemen yang dibutuhkan untuk jenis lainnya dari masalah inversi nonlinier.
Khususnya, banyak persamaan dalam sains kebumian, misalnya persamaan maxwell,
persamaan gelombang akustik dan persamaan aliran air permukaan, membagi sifat-sifat
umum permasalahan resistivitas. Banyak komponen dari sebuah kode penulis kembangkan
bisa dengan mudah dirubah/konversi untuk membantu menyelesaikan masalah-masalah
inversi yang berhubungan dengan persamaan-persamaan ini.
Penulis telah mengembangkan sebuah kode inversi 3D berbasis MATLAB, yang sepenuhnya
terbuka dan mudah dibaca. Apalagi, ini sangat fleksibel dalam hal geometri akuisisi dan
aturan. Kode ini cukup efisien untuk memecahkan masalah inversi ukuran yang menengah.
penulis telah mengoptimalkan kode sebanyak mungkin, sambil berusaha untuk
mempertahankan keterbacaan dan kegunaan. Namun demikian, penulis telah membuat sedikit
pilihan yang membuat kode berjalan lebih pelan dalam beberapa kasus praktis. penulis
memilih untuk menjaga penerapannya seluas mungkin. Khususnya, pendekatan penulis untuk
menyortir pasangan sumber dan penerima tidak memperhitungkan pasangan yang tumpang
tindih yang terjadi dengan geometri akuisisi tradisional. Jika pengguna mau, kode dengan
mudah dimodifikasi untuk meningkatkan efisiensi untuk masalah-masalah yang spesifik.
Disini penulis menghadirkan teori dibalik algoritma forward dan inversi, menggambarkan
rincian terkait tentang implementasi dan menghadirkan dua contoh sintetis yang
menunjukkan kegunaan dari kode ini.
TEORI
Dalam bagian ini dikembangkan teori algoritma pemodelan kedepan dan inversi yang
digunakan dalam paket perangkat lunak kami. Selain itu, dijelaskan kerangka umum untuk
menyelesaikan masalah-masalah pemodelan kedepan dan inversi secara numerik. Rincian
spesifik implementasi MATLAB di gambarkan dalam bagian berikutnya.
Masalah permodelan kedepan
Persamaan-persamaan pengaturan
Dengan kondisi batas yang sesuai. Persamaan 1 adalah persamaan differensial parsial yang
menghubungkan medan potensial (φ) dengan arus input (I), dari dipole melewati struktur
konduktivitas medium (σ). Disini rs+ dan rs- adalah lokasi sumber arus positif dan negatif dan
δ(r-rs) adalah fungsi delta dirac, dipusatkan di lokasi sumber arus.
Disini, D dan G adalah matriks mewakili divergensi 3D dan operator gradien. S(σ) adalah
matriks diagonal yang berisi nilai konduktivitas. U adalah vektor yang berisi potensial. A(σ)
adalah matriks operator forward lengkap dan q adalah vektor yang berisi lokasi sumber arus
positif dan negatif. Dari persamaan 2, kita bisa lihat jika kita ingin memprediksi tegangan
untuk model konduktivitas yang diberikan kita harus menyelesaikan persamaan berikut :
Persamaan 3 menghasilkan potensial dimana-mana dalam volume 3D. Namun, data kita
adalah bagian dari potensial-potensial dan jadinya kita menetapkan sebuah matriks proyeksi
Q untuk pemilihan titik-titik data daru volume. Hasil-hasil dalam persamaan berikut ini untuk
menghitung data dari model forward.
Parameterisasi masalah pemodelan kedepan
Operator finite different D dan G diterapkan diseluruh ruang model, termasuk sel batas. Ini
memberlakukan kondisi batas tanpa flux di sisi ruang model. Kita telah menggunakan kondisi
batas (boundary condition) ini karena ini adalah sebuah konsekuensi dari diskritisasi yang
dipilih, secara numerik ini sangat efisien untuk dipecahkan dan efeknya meluruh dengan nilai
1/r. Selanjutnya , skema diskritisasi grid variabel memungkinkan kita untuk mendorong
batas-batas jauh dari daerah yang kami minati tanpa membuat model yang sangat besar.
Melalui serangkaian perkalian matriks jarang, kita dapat membuat dan menyimpan operator
model forward A(σ). Kita catat bahwa BC yang diberlakukan operator forward yang
dihasilkan memiliki ruang nol konstan, misalnya solusinya non-unik karena ini bisa digeser
dengan sebuah konstanta. Untuk menghindari masalah ini , kita tetapkan baris pertama
matriks A dengan nol, kecuali lokasi A(1,1), dimana kita menetapkan nilai 1/ΔV dimana ΔV
adalah volume sel. Ini menentukan potensial di dalam sel ini menjadi nol dan menghilangkan
ruang nol dari operator.
Vektor sumber q adalah vektor nol dengan nilai 1/ΔV pada lokasi sumber positif dan nilai –
(1/ΔV) adalah lokasi sumber negatif. Jika sumber tidak berada di pusat sel, kemudian nilai
sumber adalah interpolasi,menggunakan interpolasi linear , ke sekitarnya 8 pusat sel.
Meskipun BC yang digambarkan diatas merupakan pilihan yang masuk akal untuk masalah
ini, mereka masih membutuhkan kita untuk memperluas batas – batas ruang model kita untuk
mengurangi efeknya di dalam area kita. Memperluas batas-batas, bahkan dengan sejumlah
kecil sel , cukup meningkatkan ukuran dari masalah ketika kita mempertimbangkan kasus
3D. Kita akan meningkatkan BC, jika ini bisa dilakukan dalam cara komputasi yang efisien.
Masalah lain dengan model ini adalah jika kita menginginkan solusi akurat dekat elektroda
sumber, kita harus mendiskritkan secara baik sekeliling lokasi sumber. Karena potensial jatuh
dengan cepat dekat sumber, mungkin ada kesalahan yang signifikan dalam solusi kita untuk
potensial dekat sumber.
Untuk mengatasi kedua masalah ini, kita terapkan koreksi terhadap pola sumber q yang
meningkatkan BC dan mengurangi kesalahan dekat lokasi sumber. Faktor koreksi mirip
dengan yang disampaikan dalam Lowry (1989). Namun, dalam implementasi ini, kita tidak
hanya mengurangi efek singularitas sumber, kita secara bersamaan menginkatkan kondisi
batas. Koreksi diperoleh sebagai berikut (algoritma BC) :
1) Kita definiskan medan konduktif homogen σH yang merupakan tebakan awal yang
baik dari konduktivitas rata-rata di dalam ruang model.
2) Hitung solusi analitik untuk medan potensial half-space uH dari pola sumber q. Catat,
solusi analitik mempertimbangkan half-space yang menuju tak hingga dan karena itu
punya BC untuk masalah kita.
3) Lakukan operator forward A(σH )
4) Evaluasi qcorr = A(σH ) . Utrue
Setelah memiliki vektor qcorr , kita subtitusikan ini untuk q dalam persamaan 3 dan
menyelesaikan sistem
Dimana UT adalah medan potensial disetiap tempat ruang model kita dan σT adalah medan
konduktiv yang sebenarnya. Vektor qcorr tidak lagi vektor dengan 2 spikes di lokasi sumber.
Ini sekarang berisi informasi tambahan yang mengkoreksi kekurangan operator forward
A(σH ) di lokasi sumber dan batas. Karena A(σH ) sama dengan A(σT ), pola sumber
terkoreksi mengurangi eror di lokasi elektroda sumber dan error yang berhubungan dengan
BC untuk solusi medan konduktiv σT dengan penambahan minimum biaya komputasi.
Masalah inversi
Gauss-Newton
Dari persamaan 4 kita bisa melihat bahwa jika kita menginginkan memperoleh struktur
konduktif dari data kita (voltase yang terukur dan arus input), kita harus menyelesaikan
masalah optimasi non linier. Selanjutnya, karena jumlah data lebih sedikit daripada jumlah
parameter model yang ingin kita dapatkan, sistem kurang dapat ditentukan
(underdetermined) dan jadi masalah optimasi kita memiliki dua bagian fungsi objektif :
Dimana dobs adalah vektor yang berisi data observasi (tegangan observasi dibagi dengan arus
input), d (m) adalah vektor yang berisi data hitungan untuk model konduktivitas yang
diberikan dengan menyelesaikan persamaan 3. Bagian kedua dalam persamaan 6 adalah
bagian Tikhonov yang berisi pengetahuan awal kita tentang solusi (Tikonov and Arsenin,
1977), ϐ adalah parameter regulasi yang menyeimbangkan efek misfit data dan model
regulasi selama minimalisasi, m adalah model kita di iterasi yang diberikan dimana
parameter model adalah ln (σ) , dan mref adalah model referensi.
Istilah pertama dalam funsi objektif untuk memastikan bahwa model pemulihan kami cocok
dnegan data yang diamati. Istilah kedua memberlakukan pengetahuan awal kita tentang
bentuk dan struktur model akhir. Untuk regulasi Tikhonov-style, istilah ini memaksa model
menjadi kecil, artinya ini sedikit menyimpang dari model referensi. Flat, artinya bahwa
turunan pertama m-mref adalah minimum. Smooth, artinya bahwa turunan kedua m-mref
adalah minimum. Atau beberapa kombinasi dari ketiganya. Untuk kode yang dihadirkan
disini, istilah regulasi W adalah kombinasi dari sebuah identitas matriks dan operator gradien
disrit G dari persamaan 2.
Fungsi objektif yang diberikan diatas, kita gunakan pendekatan Gauss-Newton untuk
menginversi untuk model yang terbaik, pilihan regulasi kita yang diberikan, yang cocok
dengan data pengamatan. Kita definisikan model awal mi yang biasanya model homogen
dengan konduktivitas yang mewakili tebakan terbaik kita dalam konduktivitas insitu. Kita
linierkan persamaan 6 model ini :
Untuk memperoleh minimum dari persamaan 7, kita ambil turunannya dengan peduli
terhadap model, atur ini ke nol dan peroleh update Gauss-Newton :
Dimana J adalah Jacobian atau matriks sensitifitas, (∂d/∂m). g adalah gradien fungsi objektif
dan H adalah perkiraan Hessian. Kita catat bahwa J adalah sangat besar, matriks dense, jadi
dari pengamatan komputasi, kita ingin menghindari pembentukan matriks secara eksplisit.
Namunm ini ditunjukkan dalam haber (2000b) yang J memiliki bentuk
Dimana R= ∂(S(m).v)/ ∂m.R diperoleh dengan mengambil turunan finite different S (m), v
adalah vektor arbitrary
Matriks B dan Q adalah matriks jarang, jadi produk dari matrik sensitif dan sebuah vektor
yang bisa ditemukan dengan menyelesaikan masalah forward atau adjoint. Karena ini, kita
tidak dapat menghitung Hessian secara eksplisit tetapi sebaliknya melakukan sederetan
matriks produk vektor. Algoritma untuk menghitung pendekatan Hessian sebagai berikut
(algoritma J) :
1) Diberikan vektor v, kita hitung vektor produk matriks w=B.v
2) Kemudian kita hitung sistem linier y=A-1w
3) kita hitung J.v dengan mengambil produk vektor matriks Q.y
Kita dapat menghitung pembaharuan model kita sebagaimana oleh persamaan 8 melalui
sederetan matriks produk vektor efisien secara komputasi.
Inexact Gauss-Newton
Untuk menyelesaikan persamaan Gaussian-Newton yang dinyatakan dalam persamaan
berikut:
𝜹𝒎 = −𝑯−𝟏 . 𝒈 (11)
menggunakan metode langsung atau iterasi. Namun karena matrix H sangat besar dan
padat (dense) maka persamaan 𝜹𝒎 membutuhkan toleransi tinggi untuk
diselesaiakan. Dembo et.al (1982), menyatakan bahwa penyelesaian matrix J atau
𝑯−𝟏 tidak perlu toleransi tinggi untuk medapat model pembaruan. Oleh karenanya,
persamaan matrix J (equation 8) dapat diselesaikan dengan toleransi rendah
(algoritma Inexact Gauss-Newton). Dengan algoritma tersebut, persamaan 𝜹𝒎 dapat
diperoleh melalui:
a) Gunakan algoritma J, hitung nilai 𝒈 = −𝑱𝑻 (𝑸𝑨−𝟏 . 𝒒 − 𝒅𝒐𝒃𝒔) + 𝜷𝑾𝑻 𝑾(𝒎 −
𝒎𝒓𝒆𝒇) dalam toleransi tinggi, sehingga arah penurunannya benar.
b) Masukkan ke dalam preconditioned conjugate gradient (PGC) solver untuk
menyelesaiakan persamaan 11
c) Bentuklah H dalam PCG solver dimana dalam setiap iterasi, untuk toleransi yang
rendah menggunakan algoritma J (menyelesaiakan 𝒚 = 𝑨−𝟏 . 𝒘).
d) Lakukan iterasi dalam PCG solver dalam jumlah kecil (< 5) untuk mendapatkan
pembaruan model yang diperkirakan.
Pembaruan model dengan metode ini jauh lebih murah dibandingkan dengan metode inversi
Gauss-Newton yang tradisional.
Dimana mi+1 adalah model baru dan 𝜶 adalah parameter pencarian baris yang digunakan
untuk mengontrol magnitude dari pembaruan model yang telah dibuat sebelumnya.
Penentuan nilai 𝜶 dengan menetapkan kondisi penurunan yang sesuai dengan aturan Armijo
(1966):
Dimana c1 adalah konstanta yang memiliki nilai yang sangat kecil (10−4 ). Persamaan 13
digunakan untuk memastikan bahwa pembaruan model baru mengurangi fungsi objektif.
Sedangkan ketika menampilkan pembaruan model dengan equation 12, nilai 𝜶 adalah 1
(satu) sehingga model baru tersebut valid atau dapat diterima. Jika kondisinya tidak
terpenuhi, 𝜶 dikurangi satu setengah dan dievaluasi kembali. Prosedur tersebut diulangi
hingga menemukan model baru yang sesuai dengan kriteria equation 13.
Karena equation 8 dihasilkan dari linearisasi model mi dan model mi+1 belum mencapai
lokal minimum, maka dilakukan iterasi lain dari pembaruan IGN, yaitu melakukan linierisasi
model mi+1 tersebut. Proses iterasi diulangi hingga fungsi objektif / ketidakcocokan data
menurun hingga level tertentu. Secara alternatifnya, inversi dapat dihentikan ketika besaran
gradien g dibawah toleransi yang diberikan. Hal ini mengindikasikan bahwa fungsi objektif
telah diratakan dan tidak ada perbaikan model lanjutan yang dibuat. Ambang batas untuk
menghentikan kriteria sangat besar sehingga tidak ada nilai spesifik untuk menghentikannya.
Berdasarkan pengalaman, cara terbaik untuk menghentikan kriteria yang dicari adalah
melalui eksplorasi model sintetik.
Dalam prakteknya, jika tebakan model awal mendekati solusi, maka jumlah pembaruan
model yang diperoleh dengan iterasi IGN jarang >10. Ketika tebakan model awal jauh dari
solusi, maka iterasi IGN menjadi lebih sering dilakukan. Sedangkan jika tebakan model awal
sangat buruk, maka algoritma yang diharapakan kemungkinan tidak konvergen.
IMPLEMENTASI MATLAB
Pada bagian ini dijelaskan rincian terkait implementasi algoritma Inexact Gauss-Newton.
Semua source code telah dikembangkan dalam MATLAB. Adapun penjelasan lebih lanjut
meliputi:
Data Structure
Kode inversi yang dimiliki terdiri atas 35 m-file yang diantaranya dapat memanggil fungsi
built-in MATLAB. Dengan sejumlah fungsi tersebut, penyusunan struktur array MATLAB
menjadi lebih mudah. Struktur array pada MATLAB dapat diberi nama dan nilainya dapat
ditetapkan dalam skalar untuk matrix multidimensional. Dalam hal ini diperlukan dua
struktur data yang ditetapkan pengguna untuk operasi inversi yaitu: MTX dan Para. Kedua
struktur ini berisikan semua informasi yang dibutuhkan untuk menjalankan inversi. Adapun
komponen utama kedua struktur ini dapat dilihat pada gambar 1 dan 2. Rincian lebih lanjut
dapat ditemukan di file driver untuk kode inversi. Untuk struktur Para, pengguna akan lebih
mudah menyelesaikan regulasi dengan tipe yang sangat kecil yang diaplikasikan pada
permasalahan spesifik. Sedangkan struktur MTX mengandung semua informasi berdasarkan
model dan ruang data. Deskripsi dari tiap komponen MTX ini dapat ditemukan pada
dokumen m-file, updateMTX.m, dan generateMTX.m.
Proses untuk membuat q adalah sama, kecuali dalam q, bobot interpolasi diskalakan dengan
1
faktor ∆𝑉 dimana ∆𝑉 adalah volume cell. Jika receiver tidak terletak di pusat lokasi cell, maka
interpolasi linier dilakukan ke titik cell sekitarnya. Sehingga menghasilkan row entry pada Q
yang memiliki 8 nilai bobot. Sedangkan untuk data yang terletak dipermukaan dimana
koordinat z =0, data tersebut diberi koordinat z sesuai dengan pusat cell pertama. Selanjutnya
diinterpolasi ke 4 cell disemitarnya dalam arah x dan y. Dalam kasus ini row Q memiliki 4
bobot data. Jika datum terletak di pusat cell, maka row entry yang dihasilkan pada titik Q
hanya satu. Survei permukaan dan lubang bor yang digabungkan berpotensi menguntungkan
karena memungkinkan untuk memperoleh set data permukaan yang lengkap secara spasial,
sementara secara bersamaan dapat diperoleh informasi kedalaman dari distribusi secara
vertikal lubang bor.
Gambar 1. Rincian komponen yang menyusun struktur Para yang diinput sebelum struktur MTX
dibuat
Data Weighting
Untuk memastikan data sesuai dengan besarannya, diberikan bobot yang sesuai dengan
inversinya yang biasanya disebut pembobotan data. Istilah ini didasarkan pada eror relative
pada setiap datum yang diaplikasikan pada termpertama dalam fungsi objektif sesuai dengan
equation 6. Data residual dalam term objektif diberi skala oleh matrix MTX.WdW sehingga
diperoleh:
𝟏 𝜷
𝜱(𝒎) = 𝟐 ‖𝑾𝒅𝑾(𝒅(𝒎) − 𝒅𝒐𝒃𝒔)‖𝟐 + 𝟐 ‖𝑾(𝒎 − 𝒎𝒓𝒆𝒇)‖𝟐 (14)
WdW adalah bentuk standar yang sederhana. Diagonal utama dari WdW mengandung input
eror absolut:
1
𝒅𝒊𝒂𝒈(𝑾𝒅𝑾) = |𝒅𝒐𝒃𝒔|.𝑺𝑫(𝒅𝒐𝒃𝒔)+𝜺
(15)
Dimana 𝑺𝑫(𝒅𝒐𝒃𝒔) adalah standar deviasi dari data observasi (MTX.DTW) dan 𝜺 adalah
bobot.
𝑾 = (𝑎𝑙𝑠. 𝑰 + 𝑎𝑙𝑥. 𝐺𝑥 + 𝑎𝑙𝑦. 𝐺𝑦 + 𝑎𝑙𝑧. 𝐺𝑧)𝑇 (𝑎𝑙𝑠. 𝑰 + 𝑎𝑙𝑥. 𝐺𝑥 + 𝑎𝑙𝑦. 𝐺𝑦 + 𝑎𝑙𝑧. 𝐺𝑧) (16)
Dimana Gx, Gy, dan Gz, adalah komponen gradien arah x, y, dan z. I adalah matrik identitas,
alx, aly, dan alz adalah bobot relative dalam gradien komponen x, y, dan z. Sebagai contoh,
jika nilai alx lebih besar maka solusi menjadi datar dalam arah x. sehingga penerapan bobot
yang berbeda pada masing-masing komponen gradien menyebabkan tingkat flatten menjadi
berbeda pada arah tertentu.
Selain mengenal adanya istilah smallness dan faltness, MTX.WTW juga memiliki vector
bobot yang dapat ditentukan oleh pengguna itu sendiri yaitu MTX.wt. dengan vector tersebut,
dapat memungkinkan untuk mengetahui lebih lanjut pengetahuan yang belum diketahui
tentang operator regulasi tersebut. Dalam kasus yang disajikan ini diberikan istilah
pembobotan kedalaman yang memiliki model bobot 1/z2. Sehingga dengan model bobot
tersebut inversi data dapat disesuaikan dengan log lubang bor yang ada.
A note on β
Banyak pekerjaan yang telah diselesaikan sebagai keuntungan dari pengurangan β selama
proses inversi. Banyak pendekatan dan yang disrankan dari literature dan secara prakteknya
oleh (Constable et.al.,1987; Hansen,1998). Tiga pendekatan umum yang sesuai dengan β
adalah:
1). Memperbaiki β untuk seluruh inversi
2). Mengurangi β dengan jumlah tetap setelah iterasi
3). Menggunakan kriteria L-curve untuk memilih yang sesuai dengan iterasi.
Pendekatan terakhir ini dikatakan memberikan hasil yang terbaik. Namun, biaya
komputasinya cukup besarsehingga pada implementasi ini dipilih inversi yang sesuai dengan
β. Oleh karena itu dalam hal ini ditulis kode untuk mempermudah pengguna dalam
mengimplementasi perbedaan strategi dalam menentukan β. Para pengguna harus sering
menentukan β melalui trial. Ketika melakukan trial, pengguna harus mencari nilai terbesar
yang memungkinkan data dapat disesuaikan dengan level noise-nya.