-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathkriging_r3.py
80 lines (66 loc) · 2.62 KB
/
kriging_r3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
__author__ = "Juri Bieler"
__version__ = "0.0.1"
__status__ = "Development"
# ==============================================================================
# description :kriging in Rn
# author :Juri Bieler
# date :2018-07-13
# notes :
# python_version :3.6
# ==============================================================================
import numpy as np
from mylibs.kriging import Kriging
from myutils.plot_helper import PlotHelper
from myutils.time_track import TimeTrack
from myutils.samples import *
if __name__ == '__main__':
t1 = TimeTrack('OverAllTimer')
plt1 = PlotHelper(['Eingang 1', 'Eingang 2', 'Ausgang'], fancy=False)
# now we pretend we only know a view points
fx = np.linspace(-2, 12, 101)
fy = np.linspace(-2, 12, 101)
plt1.plot_function_3d(f_3d, fx, fy, r'$f_{original}$', color='r')
# the smooth whole function
# now we pretend we only know a view points
pxEdge = [0., 2., 4., 6., 8., 10.]
pyEdge = [0., 2., 4., 6., 8., 10.]
px, py, knownValues = generate_sample_data(f_3d, pxEdge, pyEdge)
knownParams = np.array([px, py]).T
scat1 = plt1.ax.scatter(px, py, knownValues, c='r', marker='o', s=10, label=r'St\"utzstellen')
krig = Kriging(knownParams, knownValues)
p = [1.8, 1.8]
krig.update_param([0.001, 0.001], p)
#print(str(krig.calc_likelihood()))
#print(str(krig.calc_likelihood_v2([0.001, 0.001], p)))
#thetas = np.linspace(0.001, 0.1, 100 + 1)
thetas = np.logspace(-3, 1, num=20)
likelyX1 = []
likelyX2 = []
likely = np.zeros((len(thetas), len(thetas)))
for i1 in range(0, len(thetas)):
#print(str(i1) + ' / ' + str(len(thetas)))
for i2 in range(0, len(thetas)):
krig.update_param([thetas[i1], thetas[i2]], p)
likely[i2][i1] = krig.calc_likelihood()
krig.optimize(opti_algo='basin')
minLike = krig.calc_likelihood()
print('minLike = ' + str(minLike))
print('@theta1 = ' + str(krig._theta[0]))
print('@theta2 = ' + str(krig._theta[1]))
pltTheta = PlotHelper([r'$\theta_{1}$', r'$\theta_{1}$'], fancy=False)
pltTheta.ax.set_xscale('log')
pltTheta.ax.set_yscale('log')
pcol = pltTheta.ax.pcolor(thetas, thetas, likely)
pltTheta.fig.colorbar(pcol)
pltTheta.ax.plot(krig._theta[0], krig._theta[1], 'rx')
pltTheta.finalize()
#pltTheta.show()
plt1.plot_function_3d(krig.predict, fx, fy, r'$\widehat{f}_{krig}$', color='b')
plt1.ax.view_init(20, 50)
plt1.finalize()
#plt1.save('data_out/krigingRn.svg')
#plt1.save('data_out/krigingRn.pdf')
#plt1.animate()
t1.toc()
plt1.show()
print('done')