跨越多个“区域”的R优化

时间:2012-10-17 19:51:56

标签: r

我正在建立一个拥有多个地区和船队的渔业生物经济模型。 我需要为目标函数添加成本函数。 成本函数导数是:

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" )  

0 个答案:

没有答案