Anda di halaman 1dari 25

LAPORAN AKHIR PRAKTIKUM

INVERSI GEOFISIKA TG 3004

MODUL KE – 6
INVERSI NON-LINEAR DENGAN PENDEKATAN GLOBAL
Oleh:
David Simanungkalit 120120096

Asisten :
Alifah Iftinan 119120042
Andika Bonardo Sipahutar 119120122
Bernard Cavin Ronlei 119120087
Kiki Harfianza 119120111
Mu'amar Hafiz 119120084
Nisa Nur Azizah 119120027

PROGRAM STUDI TEKNIK GEOFISIKA


JURUSAN TEKNOLOGI PRODUKSI DAN INDUSTRI
INSTITUT TEKNOLOGI SUMATERA
2020/2021
Dafatr isi

Dafatr isi .................................................................................................................................... 2

Daftar Gambar.......................................................................................................................... 3

I. Tujuan Praktikum ................................................................................................................ 4

II. Dasar Teori ........................................................................................................................... 5

1. Inversi Non-Linear.............................................................................................................. 5

2. Grid Search ......................................................................................................................... 6

3. Simulated Annealing .......................................................................................................... 7

III. Langkah Pengerjaan .......................................................................................................... 8

1. Langkah Kerja .................................................................................................................... 8

2. Diagram Alir ....................................................................................................................... 9

IV. Hasil dan Pembahasan ..................................................................................................... 10

1. Hasil .................................................................................................................................. 10

2. Pembahasan ...................................................................................................................... 15

V. Kesimpulan .......................................................................................................................... 17

Daftar Pustaka ........................................................................................................................ 18

LAMPIRAN ............................................................................................................................. 19

2
Daftar Gambar

Gambar 1 (a) Regresi linier pasangan data (x, y). (b) Regresi linier pasangan data yang
dipertukarkan menjadi (x' = y, y' = x). Pada kedua gambar sumbu x adalah sumbu mendatar dan
sumbu y adalah sumbu vertikal. ................................................................................................. 5
Gambar 2 (a) Regresi kurva eksponensial tanpa transformasi variabel. (b) Konversi kurva
regresi eksponensial pada (a) (garis utuh) yang tidak sama dengan hasil regresi garis lurus
terhadap data (xi , log(yi)) (garis putus-putus). .......................................................................... 6
Gambar 3 Diagram Alir .............................................................................................................. 9
Gambar 4 Metode Grid Search denagn L = 96 ......................................................................... 10
Gambar 5 Metode Grid Search denagn L = 5 ........................................................................... 10
Gambar 6 Metode Grid Search denagn L = 13 ......................................................................... 11
Gambar 7 Metode Grid Search denagn L = 20 ......................................................................... 11
Gambar 8 Metode Grid Search denagn L = 40 ......................................................................... 12
Gambar 9 Metode Simulated Annealing Umax = 50 ............................................................... 12
Gambar 10 Metode Simulated Annealing Umax = 100 ........................................................... 13
Gambar 11 Metode Simulated Annealing Umax = 150 ........................................................... 13
Gambar 12 Metode Grid Search denga X true = 1396, Ytrue = 1596, Ztrue = -596 dan didapat
Tcal = 386.05861389702306 .................................................................................................... 14
Gambar 13 Metode Simulated Annealing denga X true = 1396, Ytrue = 1596, Ztrue = -596 dan
didapat Tcal = [427.94356557502147, 585.5494052901449, 566.0221122162466,
341.61250094926464] .............................................................................................................. 14

3
I. Tujuan Praktikum
Tujuan praktikum kali ini adalah
1. Mampu menyelesaikan persamaan inversi dalam bidang geofisika yang menggunakan
metode Simulated Annealing.
2. Mampu menganalisa fungsi dari inversi non linear dengan metode Simulated
Annealing.
3. Mampu memanfaatkan metode Simulated Annealing yang merupakan salah satu
metode global search dengan pendekatan guided random search dalam menentukan
posisi hiposenter gempa.

4
II. Dasar Teori
1. Inversi Non-Linear
Dalam formulasi permasalahan inversi perlu ditentukan parameterisasi yang digunakan
dengan memilih variabel yang merepresentasikan data dan parameter model. Hal tersebut
penting mengingat hasil atau solusi inversi sangat bergantung pada pemilihan parameterisasi.
Dengan kata lain, solusi tidak invarian (tidak independen) terhadap perubahan atau transformasi
variabel.

Pada kasus inversi linier dengan kesalahan data yang terdistribusi normal (Gaussian)
solusinya invarian terhadap transformasi variabel yang bersifat linier. Dengan kata lain
perubahan parametrisasi data dan parameter model secara linier dapat menghasilkan solusi yang
sama dengan solusi sebelum transformasi. Namun, pada banyak kasus tidak ada ketentuan yang
spesifik mengenai pemilihan parameterisasi sehingga hal tersebut dapat menimbulkan masalah.

Gambar 1 (a) Regresi linier pasangan data (x, y). (b) Regresi linier pasangan data yang
dipertukarkan menjadi (x' = y, y' = x). Pada kedua gambar sumbu x adalah sumbu mendatar
dan sumbu y adalah sumbu vertikal.

Sebagai contoh kita tinjau regresi linier terhadap pasangan data (1, 1), (2, 2), (3, 3), (4,
5) yang dianggap membentuk satu garis lurus. Jika pasangan data tersebut dianggap sebagai (x,
y) dimana x adalah variabel bebas maka persamaan garis yang diperoleh adalah y = 0.5 +1.3 x
(Gambar 5.1a, garis penuh). Sebaliknya jika pasangan (x, y) dipertukarkan, yaitu y' = x dan x'
= y sehingga data tersebut dianggap sebagai (x', y') dimana x' adalah variabel bebas, maka
persamaan garis yang diperoleh adalah y' = 0.309 + 0.743 x' (Gambar 5.1b). Penyusunan
kembali hasil regresi tersebut menghasilkan x' = 0.416 + 1.345 y' (Gambar 1a, garis putus-
putus). Parameter model (kemiringan garis dan titik potong garis dengan sumbu vertikal) yang
mendefinisikan kedua garis tersebut memiliki perbedaan sekitar 20%.
5
Salah satu penyebab perbedaan kedua solusi tersebut adalah penerapan asumsi statistik
atau probabilitas yang tidak konsisten. Pada kasus pertama, x sebagai variabel bebas dianggap
diketahui secara eksak, sedangkan y dianggap sebagai variabel acak (random) yang terdistribusi
normal. Pada kasus kedua, x' = y dianggap diketahui secara eksak sedangkan y' = x merupakan
variabel acak dengan distribusi normal. Perbedaan hasil inversi tersebut disebabkan oleh
perbedaan pemilihan variabel yang mengandung kesalahan (error) dengan distribusi Gaussian.

Gambar 2 (a) Regresi kurva eksponensial tanpa transformasi variabel. (b) Konversi kurva regresi
eksponensial pada (a) (garis utuh) yang tidak sama dengan hasil regresi garis lurus terhadap data (xi ,
log(yi)) (garis putus-putus).

Permasalahan menggunakan cara-cara yang telah diketahui. Sebagai contoh adalah


regresi fungsi eksponensial atau fungsi pangkat pada pasangan data (x, y) yang dianggap
merepresentasikan suatu fungsi yi = m1 exp(m2 xi). Melalui transformasi variabel m1' =
log(m1), m2' = m2 dan yi' = log(yi), maka hubungan antara parameter model dengan data dapat
dinyatakan sebagai suatu fungsi linier yi' = m1' + m2' xi yang dapat diselesaikan dengan
menggunakan metode regresi linier sebagaimana telah dibahas sebelumnya. Gambar 2
menunjukkan perbedaan solusi jika regresi dilakukan secara non-linier dan dengan linierisasi
melalui transformasi variabel. Hal ini disebabkan setelah transformasi yi' dianggap terdistribusi
normal sehingga data sebelum transformasi yi dianggap memiliki distribusi non-Gaussian.

2. Grid Search
Grid Search adalah metode yang digunakan untuk mencari parameter yang tepat untuk
meningkatkan performa model dengan mencoba seluruh kombinasi hyperparameter yang
diberikan (Müller & Guido, 2016). Grid Search juga menyediakan fitur untuk melakukan cross
validation. Proses ini bertujuan untuk mengevaluasi performa model secara lebih umum karena
adanya ketergantungan performa dengan pembagian data. Jumlah fold yang ingin dilakukan

6
dapat diberikan pada parameter cv ketika melakukan inisiasi GridSearchCV dari sklearn.
Apabila value tidak diberikan, maka secara default akan menjalankan 5-fold cross validation.
Total percobaan yang dilakukan sama dengan hasil kali dari jumlah fold cross validation dengan
jumlah value dari masing-masing parameter model terkait. 21 Apabila jumlah fold adalah 5,
dengan banyak value untuk 3 parameter adalah 5, 10, dan 3, maka Grid Search akan melakukan
percobaan sebanyak 750 kali (Witten, dkk., 2016).

3. Simulated Annealing
Pada metode Simulated Annealing (SA), model pada daerah yang menuju pada atau dekat
dengan solusi memperoleh nilai probabilitas yang lebih besar untuk dipilih sehingga metode ini
termasuk ke dalam guided random search. Berbeda dengan purely random search dimana semua
sample memiliki peluang yang sama untuk dipilih, pada metode ini sample yang memiliki nilai
probabilitas besar akan lebih dipilih. Metode ini pada prinsipnya memanfaatkan analogi dengan
proses termodinamika pembentukan kristal suatu substansi. Pada temperature tinggi substansi
berbentuk cair, kemudian proses pendinginan secara perlahan – lahan menyebabkan
terbentuknya kristal yang berasosisasi dengan energi system yang minimum.

Probabilitas Boltzman, hubungan antara probabilitas suatu system pada konfigurasi m


dan temperatur T dengan energi E sebagai fungsi dari konfigurasi tsb, E(m), adalah sbb:

dimana k adalah konstanta Boltzman dan konfigurasi system dinyatakan oleh M parameter,
yaitu m = (m1,m2, ... ,mn). Pada temperature tinggi, system dapat mengalami perubahan
konfigurasi dengan energi rendah memiliki probabilitas lebih besar. Pada inversi, konsep
termodinamika ini diadopsi sebagai berikut:
 Parameter model m untuk mendefinisikan konfigurasi system.
 Fungsi obyektif (misfit) E sebagai energy
 T tetap sebagai temperature
 T memiliki satuan yang sama dengan fungsi obyektif
 Konstanta Boltzman, k=1

Perturbasi model pada SA dimaksudkan untuk mengeksplorasi ruang model secara acak
dan terarah. Algoritma yang dapat digunakan untuk implementasi metode SA, diantaranya
adalaha: (1) Algoritma Metropolis; (2) Algoritma Heat Bath; (3) Algoritma Markov Chain.
7
III. Langkah Pengerjaan
1. Langkah Kerja
Problem 1
 Membuka Visual Studio Code dengan bahasa Python.
 Berikutnya memanggil modul yang akan digunakan.
 Melakukan input data.
 Mendefinisikan ruang model.
 Melakukan looping pencarian model solusi yang menghasilkan misfit minimum.
 Menghitung nilai ERMS.
 Melakukan plot hasil.
 Dan mendapatkan hasil dengan metode Grid Search dan metode Simulated
Annealing.

Problem 2
 Membuka Visual Studio Code dengan bahasa Python.
 Berikutnya memanggil modul yang akan digunakan.
 Membuat data sintetis.
 Menentukan terlebih dahulu posisi asli dari hiposenter.
 Model kecepatan rata – rata pada lapisan vavg = 5.1
 Menentukan koordinat stasiun yang merekam gempa tersebut.
 Menghitung waktu tempuh (travel time) gelombang dari titik hiposenter ke setiap
stasiun.
 Menambahkan noise pada waku tempuh sebenarnya.
 Mencari hiposenter dengan menggunakan metode Grid Search dan metode Simulated
Annealing.
 Membandingkan waktu kalkulasi dan hasilnya antar yang diperoleh
denganmenggunakan metode Grid Search dan metode Simulated Annealing.

8
2. Diagram Alir

Mulai

Input package

Input parameter Vavg, Tobs,


Xsts, dan Ysts

Input ruang model dan nilai


taksiran misfit minimum

Proses pencarian model


solusiyang menghasilkan
misfit minimum

Output hasil perhitungan dan


visualisasi berupa plot data

Selesai

Gambar 3 Diagram Alir

9
IV. Hasil dan Pembahasan
1. Hasil
 Problem 1 (Grid Search) :

Gambar 4 Metode Grid Search denagn L = 96

Gambar 5 Metode Grid Search denagn L = 5

10
Gambar 6 Metode Grid Search denagn L = 13

Gambar 7 Metode Grid Search denagn L = 20

11
Gambar 8 Metode Grid Search denagn L = 40

 Problem 1 (Simulated Annealing) :

Gambar 9 Metode Simulated Annealing Umax = 50

12
Gambar 10 Metode Simulated Annealing Umax = 100

Gambar 11 Metode Simulated Annealing Umax = 150

13
 Problem 2 (Grid Search)

Gambar 12 Metode Grid Search denga X true = 1396, Ytrue = 1596, Ztrue = -596 dan
didapat Tcal = 386.05861389702306

Gambar 13 Metode Simulated Annealing denga X true = 1396, Ytrue = 1596, Ztrue = -596
dan didapat Tcal = [427.94356557502147, 585.5494052901449, 566.0221122162466,
341.61250094926464]

14
2. Pembahasan
Pada metode pencarian global, pola fungsi obyektif sebenarnya dapat diperkirakan
berdasarkan harga fungsi obyektif pada beberapa sampel model yang dipilih secara acak
(random) dari ruang model. Jumlah sampel model yang digunakan jauh lebih sedikit
dibandingkan jumlah sampel model pada metode pencarian sistematik. Dengan demikian
pendekatan tersebut dapat meningkatkan efisiensi metode pencarian sistematik. Selanjutnya
dilakukan semacam interpolasi untuk memperoleh bentuk "permukaan" fungsi obyektif secara
lebih menyeluruh. Perkiraan solusi inversi non-linier dapat dilakukan seperti pada metode
pencarian sistematik, yaitu secara langsung dari nilai minimum fungsi obyektif.

Pada metode pencarian sistematik setiap grid merepresentasikan satu sampel model
yang harus dihitung responsnya untuk memperoleh harga fungsi obyektif yang berasosiasi
dengan model tersebut. Oleh karena itu teknik pencarian sistematik seperti ini sering disebut
pula sebagai teknik grid search. Informasi mengenai harga fungsi obyektif untuk semua grid
pada ruang model dapat digunakan untuk menentukan solusi, yaitu model dengan harga fungsi
obyektif minimum.

Pada problem satu dilakukan penentuan lokasi hiposenter gempa dengan inversi non
linear metode Grid Search dan metode Simulated Annealing. Penentuan titik hiposenter ini
dilakukan dengan 5 percobaan dengan melakukan variasi nilai pada lebar grid dan panjang grid.
Variasi nilai lebar grid berguna untuk mempengaruhi kerapatan kurva plot titik hiposenter dari
awal hingga akhir.semakin kecil lebar grid maka akan semakin rapat ruang antar titik
hiposenternya dan semkin besar lebar grid maka akan semakin tidak rapat ruang antar titik
hiposenternya Sedangkan variasi nilai panjang menentukan panjang antar ruang grid. Kurva
plot hiposenter ini juga dipengaruhi oleh letak true hiposenternya. Terlihat saat panjang grid 96
maka kurva tidak muncul, hal ini dikarenakan letak titik true hiposenter terhadap sumbu x hanya
sampai 40 oleh karena itu pada panjang grid 40 kurva akan lurus keatas.

Pada penyelesaian problem 1 dengan metode Simulated Annealing. Metode Simulated


Annealing dalam inversi didasarkan pada analogi dengan proses termodinamika pembentukan
kristal suatu substansi. Pada temperatur tinggi suatu substansi berbentuk cair, kemudian proses
pendinginan secara perlahan-lahan menyebabkan terbentuknya kristal yang berasosiasi dengan
energi sistem yang minimum. Pada penyelesaian inversi non linear dengan menggunakan
metode Simulated Annealing terdapat beberapa parameter yang penting seperti temperature (T),
konstanta boltzman (k), batasan minimum partubasi (U) dan batasan penambahan partubasi
15
(Umax). Pada penyelesaian dengan metode Simulated Annealing dilakukan 3 percobaan
dengan memvariasikan nilai Umax. Hasil yang didapat akan selalu berbeda dari sebelumnya
meskipun menggunakan semua parameter yang sama, karena pencarian model inversinya
dilakukan secara acak. Satu hal yang pasti pada penyelesaian dengan metode in, ialah jika titik
final inversi dengan true hiposenter berdekatan atau sama menandakan model tersebut memiliki
eror yang kecil. Dan jika jarak antara final inversi dan true hiposenter berjauhan, menandakan
nilai eror pada model yang digunakan besar.

Sama halnya seperti pada problem pertama, problem kedua yang membedakan hanya
pada mediumnya, dilakukan dengan metode grid search dan simulated annealing untuk
dijadikan perbandingan. Pada problem kedua ini menentukan posisi hiposenter menggunakan
metode grid search dan simulated annealing pada medium 3D. Pada metode grid search medium
3D hasil pengeplotan terlihat proses inversi grid search yang terjadi. Pada hasil plot terlihat
bahwa pencarian hiposenter dengan metode grid search sangatlah rapih atau pun sistematik
pada sumbu x = 1396, y = 1596 dan z = -596 lalu didapt Tcal = 386.05861389702306. Pada
pencarian dengan metode simulated annealing, step yang dilakukan cukup sama dengan
membuat datas sintetik terlebih dahulu dan tidak lupa untuk menambahkan noise random
kemudian dapat dilakukan inversi atau perhitungan dengan metode simulated annealing pada
sumbu x = 1396, y = 1596 dan z = -596. Pada hasil visualisasi berupa plot gambar yang
diperoleh terlihat hasil final inversi sangat dekat dengan posisi hiposenter sebenarnya. Pada
tahap yang membedakan permasalahan 1 yaitu medium 2D dan permasalahan 2 yaitu medium
3D. Pada medium 2D hanya terlihat proses inversi dengan hasil dalam sumbu x dan y,
sedangkan pada medium 3D menambahkan sumbu z, dimana sumbu z yang merepresentasikan
kedalaman dan didapat Tcal = [427.94356557502147, 585.5494052901449,
566.0221122162466, 341.61250094926464]

16
V. Kesimpulan
Kesimpulan yang di dapat pada praktikum kali ini :
1. Pada metode Simulated Annealing (SA), model pada daerah yang menuju pada atau
dekat dengan solusi memperoleh nilai probabilitas yang lebih besar untuk dipilih
sehingga metode ini termasuk ke dalam guided random search.
2. Jika pertubasi menghasilkan konfigurasi dengan energi yang cukup tinggi maka
probabilitasnya untuk dipilih akan semakin tinggi. Sebaliknya, jika pertubasi
menghasilkan konfigurasi dengan energi yang rendah maka probabilitas untuk dipilih
akan rendah.
3. Perbedaan antara kedua metode ini antara metode grid search dan simulated
annealing adalah pada proses metode grid search pencarian model terarah atau
sistematik, sedangkan pada proses metode simulated annealing pencarian model
sangat random atau acak.

17
Daftar Pustaka

[1] Grandis , H. (2002). Pemodelan Inversi Non-Linier dalam Geofisika Menggunakan


Algoritma Rantai Markov. Kontribusi Fisika Indonesia .

[2] Penyusun, T. (2023). Modul 4 Informasi "Inversi Non Linear”. Lampung Selatan: Institut
Teknologi Sumatera.

[3] Grandis, H. (2009). INVERSI GEOFISIKA. Bandung: INVERSI GEOFISIKA INVERSI


GEOFISIKA (HAGI).

[4] Grandis, H., Yudistira, T., 2001, Transformasi data magnetik menggunakan sumber
ekivalen 3-D, Prosiding PIT HAGI ke-26, Jakarta.

[5] Grandis, H. (2009). Pengantar Pemodelan Inversi Geofisika. Bandung: Himpunan Ahli
Geofisika Indonesia (HAGI)

18
LAMPIRAN
 Script problem 1 (Grid Search)
#David Simanungkalit_120120096
import numpy as np
import matplotlib.pyplot as plt
from numpy.linalg import inv

Vavg = 4
tobs = [7.1, 1.8, 5.0, 7.9]
#tobs = np.reshape(tobs,(len(tobs), 1))
Xsts = [20, 50, 40, 10]
Ysts = [10, 25, 50, 40]

#Definisikan ruang model


L = 40
X0 = np.arange(0,50,L)
Y0 = np.arange(0,50,L)

#Lakukan looping pencarian model solusi yang menghasilkan misfit minimum


P = 15 # nilai awal taksiran misfit minimum (dalam sekon)
HypoX = []
HypoY = []

for i in range(len(Y0)) :
for j in range(len(X0)):
# tcal = []
Dt = []
for k in range(len(Xsts)):
tcal=(np.sqrt((X0[j]-Xsts[k])**2+(Y0[i]-Ysts[k])**2)/Vavg)
Dt.append((tobs[k]-tcal)**2)

misfit = np.sqrt(np.mean(Dt))
if misfit < P:
HypoX.append(X0[j])
HypoY.append(Y0[i])
P = misfit
else : pass

#Hypo = np.array((HypoX,HypoY))
#print ('Hypo: ', Hypo)
plt.plot(HypoX,HypoY,'-r')
plt.plot(HypoX[0],HypoY[0],'*c',label='Awal')
plt.plot(HypoX[len(HypoX)-1],HypoY[len(HypoY)-1],'*y',label='Akhir')
plt.plot(Xsts,Ysts,'v',label='Stasiun')
plt.title('Metode Grid Search_David Simanungkalit_120120096')
plt.xlabel('Koordinat X')
plt.ylabel('Koordinat Y')
plt.legend()
plt.show()

19
 Script problem 1 (Simulated Annealing)
#David Simanungkalit_120120096
#Simulated Annealing
import numpy as np
import matplotlib.pyplot as plt
import copy
from numpy.linalg import inv

Xtrue = 40
Ytrue = 30
Vavg = 4
tobs = []
Xsts = [20,50,40,10]
Ysts = [10,25,50,40]

for i in range(len(Xsts)):
r = np.sqrt((Xsts[i]-Xtrue)**2 + (Ysts[i]-Ytrue)**2)
tobs.append((r/Vavg))

Xmin = 0
Ymin = 0
Xmax = 50
Ymax = 50

X = (Xmin+np.random.rand()) * (Xmax-Xmin)
Y = (Ymin+np.random.rand()) * (Ymax-Ymin)

tcal = []
for i in range(len(Xsts)):
tcal.append(np.sqrt((X-Xsts[i])**2 + (Y-Ysts[i])**2)/Vavg)

dt = []
E = []
for i in range(len(tcal)):
dt.append(tobs[i]-tcal[i])
E.append(dt[i]*dt[i])

T = copy.deepcopy(E) #Temperatur
k = 0 #konstanta boltzman
U = 0 #batasan minimum partubasi
Umax = 150 #batas penambahan partubasi
Lmax = 100
Amin = 100

HypoX = []
HypoY = []
Erms = []

while U<=Umax:
Lk = 0 #banyak pertubasi model
20
Ak = 0 #banyak model yang diterima
while Lk < Lmax and Ak < Amin:
Urand = np.random.rand()
ydX = np.sign(Urand-
0.5)*np.mean(T)*(((1+(1/np.mean(T)))**abs(2*Urand-1))-1)
dX= ydX*(Xmax-Xmin)/2
if abs(dX)<10:
dX = (abs(dX)/dX)*10
else:
pass
Urand = np.random.rand()
ydY=np.sign(Urand-
0.5)*np.mean(T)*(((1+(1/np.mean(T)))**abs(2*Urand-1))-1)
dY=ydY*(Ymax-Ymin)/2
if abs(dY)<10:
dY = (abs(dY)/dY)*10
else:pass
Urand = np.random.rand()
X1 = X + dX
Y1 = Y + dY
for i in range(len(Xsts)):
tcal[i] = np.sqrt((X1-Xsts[i])**2 + (Y1-Ysts[i])**2)/Vavg
#E1 = []
#dE = []
for i in range(len(tcal)):
dt[i] = (tobs[i]-tcal[i])
# E1.append(dt[i]*dt[i])
# dE.append(E1[i]-E[i])

E1 = dt*np.transpose(dt)
dE = np.sum(E1)-np.sum(E)
Lk = Lk+1
if np.mean(dE)<=0:
E = E1
Ak = Ak + 1
else:
P = np.exp(-np.mean(dE)/np.mean(T))
R = np.random.rand()
if R<np.mean(P):
HypoX.append(X1)
HypoY.append(Y1)
HypoE = E1
Erms.append(R)
Ak = Ak + 1
else : pass
if Ak == 0:
U = U+1
else:
U = 0
T = np.mat(np.mat(T)*0.99)

21
k = k+1

plt.plot(HypoX, HypoY, label= 'Episenter Inversion')


plt.plot(HypoX[0], HypoY[0],'*c', label='Inital Inversion')
plt.plot(HypoX[len(HypoX)-1], HypoY[len(HypoY)-1],'*y',label='Final
Inversion')
plt.plot(Xsts,Ysts,'*b', label='Station')
plt.title('Metode Simulated Annaeling_David Simanungkalit_120120096')
plt.xlabel('Koordinat X')
plt.ylabel('Koordinat Y')
plt.plot(Xtrue,Ytrue,'*r', label='True Hyposenter')
#plt.plot(X,Y,'*r', label='True Hyposenter')
plt.legend()
plt.show()

 Script problem 2 (Grid Search)


#David Simanungkalit_120120096
#Probel2GridSearch
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d

Xsts= [700, 2500, 1500, 1850]


Ysts= [1900, 2000, 2500, 800]
Zsts = [0, 0, 0, 0]
tobs = []
Xtrue = 1396
Ytrue = 1596
Ztrue = -596
Vavg = 5.1

for i in range(len(Xsts)):
t= np.sqrt((Xsts[i]-Xtrue)**2+(Ysts[i]-Ytrue)**2+ (Zsts[i]-Ztrue)**2)
noise= np.random.rand()*np.mean(t)*0.005
tobs = t + noise
Xm = np.arange(-10, 40, 1)
Ym = np.arange(0,30,1)
Zm = np.arange(20, 50, 1)
Dt = []
Tcal = []
for k in range(len(Xsts)):
for i in range(len(Ym)):
for j in range(len(Xm)):
for h in range (len(Zm)):
tcal=(np.sqrt((Xm[j]-Xsts[k])**2+(Ym[i]-Ysts[k])**2 +
(Zm[h]- Zsts[k])**2)/Vavg)
Tcal.append(tcal)
print('Tcal = ' , tcal)
fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
22
x, y, z = axes3d.get_test_data(0.05)
ax.plot_wireframe(x, y, z, rstride = 2, cstride = 2)
plt.title('Metode Grid Search 3D_David Simanungkalit_120120096')
plt.legend()
plt.show()

 Script problem 2 (Simulated Annealing)


#David Simanungkalit_120120096
#Problem2SimulatedAnnealing
import numpy as np
import matplotlib.pyplot as plt
import copy
from mpl_toolkits.mplot3d import axes3d

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')

Xtrue = 1396
Ytrue = 1596
Ztrue = -596
Vavg = 4
tobs = []
Xsts = [700, 2500, 1500, 1850]
Ysts = [1900, 2000, 2500, 800]
Zsts = [0, 0, 0, 0]

for i in range (len (Xsts)) :


noise = np.random.rand ()
r = np.sqrt ((Xsts[i]-Xtrue)**2 + (Ysts[i]-Ytrue)**2 + (Zsts[i]-
Ztrue)**2)
tobs.append((r/Vavg)+noise)

Xmin = 0
Ymin = 0
Zmin = 0

Xmax = 3000
Ymax = 2500
Zmax = 3500

X=(Xmin+np.random.rand())*(Xmax-Xmin)
Y=(Ymin+np.random.rand())*(Ymax-Ymin)
Z=(Zmin+np.random.rand())*(Zmax-Zmin)

tcal=[]

for i in range (len(Xsts)):


tcal.append(np.sqrt((X-Xsts[i])**2+(Y-Ysts[i])**2+(Z-Zsts[i])**2)/Vavg)

dt=[]
23
E=[]
for i in range (len(tcal)):
dt.append(tobs[i]-tcal[i])
E.append(dt[i]*dt[i])

T = copy.deepcopy (E)
k = 0
U = 0
Umax = 100
Lmax = 100
Amin = 100

HypoX=[]
HypoY=[]
HypoZ=[]
while U <= Umax:
Lk = 0
Ak = 0
while Lk < Lmax and Ak < Amin:
Urand = np.random.rand()
ydX = np.sign (Urand - 0.5) * np.mean(T) * (((1
+(1/np.mean(T)))**abs(2*Urand-1))-1)
dX = ydX * (Xmax-Xmin)/2
if abs (dX)<10:
dX = (abs(dX)/dX)*10
else:pass
Urand = np.random.rand()
ydY = np.sign (Urand - 0.5) * np.mean(T) * (((1
+(1/np.mean(T)))**abs(2*Urand-1))-1)
dY = ydY * (Ymax-Ymin)/2
if abs (dY)<10:
dY = (abs(dY)/dY)*10
else:pass
Urand = np.random.rand()
ydZ = np.sign (Urand - 0.5) * np.mean(T) * (((1
+(1/np.mean(T)))**abs(2*Urand-1))-1)
dZ = ydZ * (Zmax-Zmin)/2
if abs (dZ)<10:
dZ = (abs(dZ)/dZ)*10
else:pass
Urand = np.random.rand()
X1 = X + dX
Y1 = Y + dY
Z1 = Z + dZ
for i in range (len(Xsts)):
tcal[i] = np.sqrt ((X1-Xsts[i])**2 + (Y1-Ysts[i])**2 + (Z1-
Zsts[i])**2)/Vavg

#E1=[]
#dE=[]

24
for i in range (len(tcal)):
dt[i] = tobs[i] - tcal[i]
# E1.append(dt[i]*dt[i])
# dE.append(E1[i]-E[I])
E1 = dt * np.transpose(dt)
dE = np.sum(E1) - np.sum(E)
Lk = Lk+1
if np.mean (dE) <=0:
HypoX.append(X1)
HypoY.append(Y1)
HypoZ.append(Z1)
E = E1
Ak = Ak + 1
else:
P = np.exp(-np.mean(dE)/np.mean(T))
R = np.random.rand()
if R < np.mean(P):
HypoX.append(X1)
HypoY.append(Y1)
HypoZ.append(Z1)
Ak = Ak + 1
else:
pass

if Ak == 0:
U = U + 1
else:
U = 0
T = np.mat(np.mat(T)*0.99)
K = k + 1

print('tcal = ', tcal)


plt.plot(HypoX,HypoY,HypoZ, label ='Epicenter Inversion')
ax.scatter (HypoX[len(HypoX)-1], HypoY[len(HypoY)-1], HypoZ[len(HypoZ)-1],
c ='r', marker = '^', label = 'Final Inversion')
ax.scatter (Xsts, Ysts, Zsts, c = 'c', label = 'Stasiun')
ax.scatter (Xtrue, Ytrue, Ztrue, c = 'm', marker = '>', label = 'True
Hiposenter')
plt.plot(HypoX[0], HypoY[0], HypoZ[0], '*c', label='Initial Inversion')
plt.plot(HypoX [len(HypoX)-1], HypoY[len(HypoY)-1], HypoZ[len(HypoZ)-1],
'*y', label='Final Inversion')
plt.title('Metode Simulated Annealing_David Simanungkalit_120120096')
plt.legend()
plt.show()

25

Anda mungkin juga menyukai