Я занимался поиском здесь вопросов перед публикацией, и я нашел только один вопрос в этом отношении, но это не относится к моему делу.Оптимизация 2 набора векторов переменной длины
Я загрузил данные для PRD
, INJ
, tao
и lambda
с ссылкой ниже, которые должны быть использованы для воспроизведения кода:
код:
PRD=read.csv(file="PRD.csv")
INJ=read.csv(file="INJ.csv")
PRD=do.call(cbind, PRD)
INJ=do.call(cbind, INJ)
tao=do.call(cbind, read.csv(file="tao.csv",header=FALSE))
lambda=do.call(cbind, read.csv(file="lambda.csv",header=FALSE))
fn1 <- function (tao,lambda) {
#perparing i.dash
i.dash=matrix(ncol=ncol(INJ), nrow=(nrow(INJ)))
for (i in 1:ncol(INJ)){
for (j in 1:nrow (INJ)){
temp=0
for (k in 1:j){
temp=(1/tao[i])*exp((k-j)/tao[i])*INJ[k,i]+temp
}
i.dash[j,i]=temp
}
#preparing lambdaXi.dash
lambda.i=matrix(ncol=ncol(INJ),nrow=nrow(INJ))
for (i in 1: ncol(INJ)){
lambda.i[,i]=lambda[i+1]*i.dash[,i]
}
#calc. q. hat (I need to add the pp term)
q.hat=matrix(nrow=nrow(INJ),1)
for (i in 1:nrow(INJ)){
q.hat[i,1]=sum(lambda.i[i,1:ncol(INJ)])
target= sum((PRD[,1]-q.hat[,1])^2)
}
}
}
, что я пытаюсь сделать, это свести к минимуму стоимость target
за счет оптимизации lambda
и tao
которых исходные значения будут такими же, как те, загруженными выше. Я использовал optim
, но я все равно получаю сообщение об ошибке cannot coerce type 'closure' to vector of type double
Я использовал множество вариантов optim
и по-прежнему получаю ту же ошибку.
последний синтаксис я использовал был optim(fn1, tao=tao, lambda=lambda, hessian=T)
Благодаря
Такая же ошибка сохраняется, можете ли вы привести воспроизводимый пример. другой вопрос: как я могу убедиться, что R оптимизирует целевое значение, а не что-то еще в функции? работает ли последняя упомянутая переменная в функции? – Athii
Любой может пролить свет на вопрос выше – Athii
Он оптимизирует только аргумент * first * вашей функции. – seancarmody