DEV Community

eyakem-a11
eyakem-a11

Posted on

Varying the unknown parameter with optimization criteria

In the case of M=4
set.seed(1)
t= Obr_56_n_T2_250713$V1
y= Obr_56_n_T2_250713$V2

definition of the 8D exponential sum square functions

f=function(param) {
sum((param[1] + (param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9]) - y)^2))
}
derivative=function(param) {
return(c(2*sum(param[1] +
(param[2]*exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) - y),
2*sum(exp(-(t)/param[3])
(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) - y)),
2*sum((param[2]
((t)/(param[3])^2)exp(-(t)/param[3]))(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) - y)),
2*sum((exp(-(t)/param[5]))
(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) - y)),
2*sum((param[4]
((t)/(param[5])^2)exp(-(t)/param[5]))(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) - y)),
2*sum((exp(-(t)/param[7]))
(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) - y)),
2*sum((param[6]
((t)/(param[7])^2)exp(-(t)/param[7]))(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) - y)),
2*sum((exp(-(t)/param[9]))
(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) - y)),
2*sum((param[8]
((t)/(param[9])^2)exp(-(t)/param[9]))(param[1] +
(param[2]*exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) - y))))
}

locate the minimum of the function using the Nelder-Mead method

result=optim(
c(runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000)), # start at a random position
f, # the function to minimize
derivative, # no function gradient
method="L-BFGS-B", # use the L-BFGS-B method
control=c( # configure Nelder-Mead
maxit=100, # maximum iterations of 100
factr=1e-8, # response tolerance over-one step
alpha=1.0, # reflection factor
beta=0.5, # contraction factor
gamma=2.0),
lower=0.1,
upper = Inf
)
result

Top comments (0)