<-  function (pars) {require (RTMB):: getAll (pars, data)# setup ------------- =  exp (log_M)=  exp (log_a50C)=  exp (log_a50S)=  exp (log_q)=  (spawn_mo -  1 ) /  12 =  exp (- M)^ (spawn_fract)=  nrow (age_error)=  length (ages)=  length (catch_obs)=  sum (srv_ind)=  sum (fish_age_ind)=  sum (srv_age_ind)=  sum (fish_size_ind)=  15 =  length (length_bins)=  unique (catch_wt) # time blocks for catch weighting =  0.00001  # small number =  exp (log_F50)=  exp (log_F40)=  exp (log_F35)# containers --------- =  matrix (NA , A, 2 )=  Cat =  Nat =  Fat =  Zat =  Sat =  matrix (0 , A, T)=  rep (0 , A)=  rep (0 , T)=  rep (0 , Ts)=  matrix (0 , A1, Tfa)=  matrix (0 , A1, Tsa)=  matrix (0 , L, Tfs)=  tot_bio =  rep (0 , T)=  sb_spr =  matrix (1 , A, 4 )# priors ----------------- # prefer using dnorm but want to match admb exactly # won't affect nll location, but values will be slightly different # admb priors do not include a constant that is in dnorm # nll_M = dnorm(M, mean_M, cv_M, TRUE) # nll_q = dnorm(q, mean_q, cv_q, TRUE) # nll_sigmaR = dnorm(sigmaR, mean_sigmaR, cv_sigmaR, TRUE) =  (log_M -  log (mean_M))^ 2  /  (2  *  cv_M^ 2 )=  (log_q -  log (mean_q))^ 2  /  (2  *  cv_q^ 2 )=  (log (sigmaR /  mean_sigmaR))^ 2  /  (2  *  cv_sigmaR^ 2 )# analysis ---------- # selectivity <-  function (a, a50, delta) {1.  /  (1.  +  exp (- 2.944438979  *  ((a+ 1 ) -  a50) /  delta))for (a in  1 : A) {1 ] =  sel (a, a50C, deltaC)2 ] =  sel (a, a50S, deltaS)# mortality =  exp (log_mean_F +  log_Ft)for (t in  1 : T){for (a in  1 : A) {=  Ft[t] *  slx[a,1 ]=  Fat[a,t] +  M=  exp (- Zat[a,t])# population ---- ## Bzero # initNat[1] = exp(log_mean_R) # for (a in 2:A) { #   initNat[a] <- initNat[a-1] * exp(-M) # } # initNat[A] <- initNat[A] / (1 - exp(-M)) # Bzero = sum(initNat * wt_mature * spawn_adj) ## numbers at age # populate first row # need to use correct log_Rt to match ADMB model for (t in  1 : T) {1 ,t] =  exp (log_mean_R +  log_Rt[t])# populate first column for (a in  2 : (A-1 )) {1 ] =  exp (log_mean_R -  (a-1 ) *  M +  init_log_Rt[a-1 ])1 ] =  exp (log_mean_R -  (A-1 ) *  M) /  (1  -  exp (- M))for (t in  2 : T) {for (a in  2 : A) {=  Nat[a-1 ,t-1 ] *  Sat[a-1 ,t-1 ]=  Nat[A,t] +  Nat[A,t-1 ] *  Sat[A,t-1 ]#     # spawn_bio for (t in  1 : T) {=  sum (Nat[,t] *  wt_mature)=  sum (Nat[,t] *  waa)# flag - should be: # spawn_bio[T] = sum(Nat[,T] * spawn_adj * wt_mature) # catch for (t in  1 : T){for (a in  1 : A){=  Fat[a,t] /  Zat[a,t] *  Nat[a,t] *  (1.0  -  Sat[a,t])=  sum (Cat[,t] *  waa)# survey biomass ---- =  1 =  0.0 # survey biomass & likelihood for (t in  1 : T) {if (srv_ind[t]== 1 ) {# for(a in 1:A) { =  sum (Nat[,t] *  slx[,2 ] *  waa)# } =  srv_pred[isrv] *  q# srv_like = srv_like + sum((log(srv_obs[isrv]) - log(srv_pred[isrv]))^2 / #                             (2 * (srv_sd[isrv] / srv_obs[isrv])^2)) =  srv_like +  sum ((srv_obs[isrv]- srv_pred[isrv])^ 2 /  (2. * (srv_sd[isrv]^ 2 )))=  isrv +  1 # fishery age comp =  1 for (t in  1 : T) {if (fish_age_ind[t] ==  1 ) {=  as.numeric (colSums ((Cat[,t] /  sum (Cat[,t])) *  age_error))# fish_age_lk[icomp] = sum(fish_age_iss[icomp] * ((fish_age_obs[,icomp] + g) * log((fish_age_pred[,icomp] + g / (fish_age_obs[,icomp] + g))))) =  icomp +  1 # survey age comp =  1 for (t in  1 : T) {if (srv_age_ind[t] ==  1 ) {=  as.numeric (colSums ((Nat[,t] *  slx[,2 ]) /  sum (Nat[,t] *  slx[,2 ]) *  age_error))=  icomp +  1 # fishery size comp =  1 for (t in  1 : T) {if (fish_size_ind[t] ==  1 ) {=  as.numeric (colSums ((Cat[,t] /  sum (Cat[,t])) *  size_age))# fish_age_lk[icomp] = sum(fish_age_iss[icomp] * ((fish_age_obs[,icomp] + g) * log((fish_age_pred[,icomp] + g / (fish_age_obs[,icomp] + g))))) =  icomp +  1 # SPR ------------------------ data.frame (log_Rt =  log_Rt,pred_rec =  Nat[1 ,],year =  years) ->  df# filter years 1979: =  df[years>= (1977 + ages[1 ]) &  years<= (max (years)- ages[1 ]),]=  mean (df$ pred_rec)=  sqrt (sum ((df$ log_Rt -  mean (df$ log_Rt))^ 2 ) /  (length (df$ log_Rt) -  1 ))for (a in  2 : A) {1 ] =  N_spr[a-1 ,1 ] *  exp (- M)2 ] =  N_spr[a-1 ,2 ] *  exp (- (M +  F50 *  slx[a-1 ,1 ]))3 ] =  N_spr[a-1 ,3 ] *  exp (- (M +  F40 *  slx[a-1 ,1 ]))4 ] =  N_spr[a-1 ,4 ] *  exp (- (M +  F35 *  slx[a-1 ,1 ]))1 ] =  N_spr[A-1 ,1 ] *  exp (- M) /  (1  -  exp (- M))2 ] =  N_spr[A-1 ,2 ] *  exp (- (M +  F50 *  slx[A-1 ,1 ])) /  (1  -  exp (- (M +  F50 *  slx[A,1 ])))3 ] =  N_spr[A-1 ,3 ] *  exp (- (M +  F40 *  slx[A-1 ,1 ])) /  (1  -  exp (- (M +  F40 *  slx[A,1 ])))4 ] =  N_spr[A-1 ,4 ] *  exp (- (M +  F35 *  slx[A-1 ,1 ])) /  (1  -  exp (- (M +  F35 *  slx[A,1 ])))for (a in  1 : A) {1 ] =  N_spr[a,1 ] *  wt_mature[a] *  exp (- spawn_fract *  M)2 ] =  N_spr[a,2 ] *  wt_mature[a] *  exp (- spawn_fract *  (M +  F50 *  slx[a,1 ]))3 ] =  N_spr[a,3 ] *  wt_mature[a] *  exp (- spawn_fract *  (M +  F40 *  slx[a,1 ]))4 ] =  N_spr[a,4 ] *  wt_mature[a] *  exp (- spawn_fract *  (M +  F35 *  slx[a,1 ]))=  sum (sb_spr[,1 ])=  sum (sb_spr[,2 ])=  sum (sb_spr[,3 ])=  sum (sb_spr[,4 ])=  100.  *  (SBF50 /  SB0 -  0.5 )^ 2 =  sprpen +  100.  *  (SBF40 /  SB0 -  0.4 )^ 2 =  sprpen +  100.  *  (SBF35 /  SB0 -  0.35 )^ 2 =  SB0 *  pred_rec=  SBF40 *  pred_rec=  SBF35 *  pred_rec# likelihoods -------------------- # catch =  sum (catch_wt *  (log (catch_obs +  g) -  log (catch_pred +  g))^ 2 )# fishery age comp =  0.0 =  0.0 for (t in  1 : Tfa) {=  offset -  fish_age_iss[t] *  sum ((fish_age_obs[,t] +  g) *  log (fish_age_obs[,t] +  g))=  fish_age_lk -  sum (fish_age_iss[t] *  (fish_age_obs[,t] +  g) *  log (fish_age_pred[,t] +  g))=  fish_age_lk -  offset# survey age comp =  0.0 =  0.0 for (t in  1 : Tsa) {# for(a in 1:A1) { =  offset_sa -  srv_age_iss[t] *  sum ((srv_age_obs[,t] +  g) *  log (srv_age_obs[,t] +  g))=  srv_age_lk -  srv_age_iss[t] *  sum ((srv_age_obs[,t] +  g) *  log (srv_age_pred[,t] +  g))# } =  srv_age_lk -  offset_sa# fishery size comp =  0.0 =  0.0 for (t in  1 : Tfs) {# for(l in 1:L) { =  offset_fs -  fish_size_iss[t] *  sum ((fish_size_obs[,t] +  g) *  log (fish_size_obs[,t] +  g))=  fish_size_lk -  fish_size_iss[t] *  sum ((fish_size_obs[,t] +  g) *  log (fish_size_pred[,t] +  g))# } =  fish_size_lk -  offset_fs=  srv_like *  srv_wt=  fish_age_lk *  fish_age_wt=  srv_age_lk *  srv_age_wt=  fish_size_lk *  fish_size_wt# like_rec = sum(log_Rt^2) / (2 * sigmaR^2) + (length(log_Rt) * log(sigmaR)) =  sum ((c (log_Rt , init_log_Rt) +  sigmaR *  sigmaR /  2 )^ 2 ) /  (2  *  sigmaR^ 2 )=  wt_fmort_reg *  sum (log_Ft^ 2 )=  0.0 =  ssqcatch=  nll +  like_srv=  nll +  like_fish_age=  nll +  like_srv_age=  nll +  like_fish_size=  nll +  like_rec *  wt_rec_var=  nll +  f_regularity=  nll -  nll_M=  nll -  nll_q=  nll +  sprpen# reports ------------------- :: REPORT (ages):: REPORT (years):: REPORT (M):: REPORT (a50C):: REPORT (deltaC):: REPORT (a50S):: REPORT (deltaS):: REPORT (q):: REPORT (sigmaR):: REPORT (log_mean_R):: REPORT (log_Rt):: REPORT (log_mean_F):: REPORT (log_Ft):: REPORT (waa):: REPORT (wt_mature):: REPORT (yield_ratio):: REPORT (Fat):: REPORT (Zat):: REPORT (Sat):: REPORT (Cat):: REPORT (Nat):: REPORT (slx):: REPORT (Ft):: REPORT (catch_pred):: REPORT (srv_pred):: REPORT (fish_age_pred):: REPORT (srv_age_pred):: REPORT (fish_size_pred):: REPORT (tot_bio):: REPORT (spawn_bio):: REPORT (spawn_fract):: REPORT (B0):: REPORT (B40):: REPORT (B35):: REPORT (F35):: REPORT (F40):: REPORT (F50):: REPORT (pred_rec):: REPORT (stdev_rec):: REPORT (ssqcatch):: REPORT (like_srv):: REPORT (like_fish_age):: REPORT (like_srv_age):: REPORT (like_fish_size):: REPORT (like_rec):: REPORT (f_regularity):: REPORT (sprpen):: REPORT (nll_q):: REPORT (nll_M):: REPORT (nll)# nll = 0.0 return (nll)