我正在建立一个拥有多个地区和船队的渔业生物经济模型。 我需要为目标函数添加成本函数。 成本函数导数是:
dvcost<-(maxeff/(maxeff-(total f))*k*(f/total f)-ln(1-((total f)/maxeff))*k*maxeff/(total f)*(1-(f/total f))
其中:对于每个车队,f是在目标函数最小化的特定区域中的努力,总f是特定车队的跨区域的努力的总和。 k和maxeff是参数。
我的问题是:如何将此费用函数应用于我的问题?我已经有了总f(代码中的'f'),但我需要找到目标函数正在处理的区域的f。
非常感谢任何建议。谢谢!
完整代码如下: 的 CODE
nfleets<-2
nareas<-2
M<-1
M<-array(M,dim=c(nfleets,nareas))
N<-1000
cost<-c(30,30)
cost<-array(cost,dim=c(nfleets,nareas))
Price<-2
Price<-array(Price,dim=c(nfleets,nareas))
q<-array(0.1,dim=c(nfleets,nareas))
f<-1
f<-array(f,dim=c(nfleets,nareas))
init.eff<-array(3,dim=c(nfleets,nareas))
OF<-array(c(q*f), dim=c(nfleets, nareas))
Catch<-array(0,dim=c(nfleets, nareas))
obj<-function(f){
f <- array(f, dim=c(nfleets, nareas))
F <- q*f
Z <- M+sum(F)
S <- exp(-Z)
Catch<- N*F/Z*(1-S)
Tot.Catch <- sum(Catch)
NR<-array(0,dim=c(nfleets,nareas))
NR<-Price*Catch - f*cost
d.NR<-array(0,dim=c(nfleets,nareas))
f <- apply(f, 1, sum)
d.NR<- N*q/Z*(1-S-F/Z+F/Z*S+F*S)*Price - cost
return(sum(d.NR*d.NR))
}
zero.bnd <- rep.int(0, length(f))
opt.eff <- optim( init.eff, obj, method="Nelder-Mead" )