2

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

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

0 回答 0