Water flow function
The water flow function is defined as: $f(r_w,r,T_u,H_u,T_l,H_l,L,K_w) = \frac{2*\pi*T_u(H_u - H_l)}{\log(\frac{r}{r_w})*[1 + \frac{2LT_u}{\log(\frac{r}{r_w})*r_w^2*K_w}+ \frac{T_u}{T_l} ]}$
It has 8 dimensions.
using Surrogates
using SurrogatesPolyChaos
using Plots
using LinearAlgebra
Define the objective function:
function f(x)
r_w = x[1]
r = x[2]
T_u = x[3]
H_u = x[4]
T_l = x[5]
H_l = x[6]
L = x[7]
K_w = x[8]
log_val = log(r / r_w)
return (2 * pi * T_u * (H_u - H_l)) /
(log_val * (1 + (2 * L * T_u / (log_val * r_w^2 * K_w)) + T_u / T_l))
end
f (generic function with 1 method)
n = 180
d = 8
lb = [0.05, 100, 63070, 990, 63.1, 700, 1120, 9855]
ub = [0.15, 50000, 115600, 1110, 116, 820, 1680, 12045]
x = sample(n, lb, ub, SobolSample())
y = f.(x)
n_test = 1000
x_test = sample(n_test, lb, ub, GoldenSample())
y_true = f.(x_test)
1000-element Vector{Float64}:
145.83997177108955
147.68674562247347
76.73659244577273
119.20504557892866
96.2095847181461
62.34950269764311
50.379843644410585
47.34739271117506
55.280691607535104
33.55030846148717
⋮
38.01440588905075
27.910712144623076
24.453585452699688
154.36204414919325
154.42425054392385
82.79950972351598
127.05250398828431
154.29009593068545
68.22648842243387
my_rad = RadialBasis(x, y, lb, ub)
y_rad = my_rad.(x_test)
my_poly = PolynomialChaosSurrogate(x, y, lb, ub)
y_poly = my_poly.(x_test)
mse_rad = norm(y_true - y_rad, 2) / n_test
mse_poly = norm(y_true - y_poly, 2) / n_test
println("MSE Radial: $mse_rad")
println("MSE Radial: $mse_poly")
MSE Radial: 1.6182591650518054
MSE Radial: 0.0478591538923782