DATA_SECTION init_ivector control_flags(1,6) init_number phase_M init_number phase_explogsel init_number phase_selcoff init_int lambda1 init_int lambda2 init_int lambda3 init_int lambda4 init_int nyrs init_int nages int dim_sel; int group_num int last_age_sel_group int nng int c_size int s_size int snyrs LOCAL_CALCS snyrs=nyrs-control_flags(6); last_age_sel_group=control_flags(3); c_size=control_flags(4); s_size=control_flags(5); nng= nages-last_age_sel_group+1; group_num=3; int ii=0; for (int i=1;ilog_fish_sel(i,j+1)) { f+=control_flags(1)*square(log_fish_sel(i,j)-log_fish_sel(i,j+1)); } } } } if (control_flags(2)) { for (int i=1;i<=snyrs;i++) { for (int j=1;jlog_surv_sel(i,j+1)) { f+=control_flags(2)*square(log_surv_sel(i,j)-log_surv_sel(i,j+1)); } } } } if (active(surv_sel_devs)) { f+=10./dim_sel*norm2(first_difference(first_difference(log_surv_sel(1)))); for (int i=1;i5) { // a very small penalty on the average fishing mortality f+= .001*square(log(avg_F/.2)); } else if (current_phase()>3) { f+= 10.*square(log(avg_F/.2)); } else { f+= 1000.*square(log(avg_F/.2)); } switch (current_phase()) { case 1: f+= norm2(elem_div(square(EC-obs_catch_at_age),.01+EC)) +norm2(elem_div(square(E_surv_age-obs_survey_at_age),.01+E_surv_age)); break; case 2: case 3: case 4: f+=0.5*double(2*size_count(C)) * log( sum(elem_div(square(EC-obs_catch_at_age),.02+EC)) + sum(elem_div(square(E_surv_age-obs_survey_at_age),.02+E_surv_age))) + 10*norm2(effort_devs) + 10*norm2(surv_effort_devs) + 50*norm2(log_q_devs) + 250*norm2(log_surv_q_devs) +100./group_num*lambda4*norm2(sel_devs) +250./group_num*lambda4*norm2(surv_sel_devs); break; default: double rf=.1/nng; dvar_matrix vc=rf+2.*elem_prod(EP,1-EP); dvar_matrix vs=rf+2.*elem_prod(ESP,1-ESP); dvar_matrix lc=exp(-c_size*elem_div(square(EP-OP),vc)); dvar_matrix ls=exp(-s_size*elem_div(square(ESP-OSP),vs)); //cout << "lc = " << endl << lc << endl << endl; //dvar_matrix mtmp= c_size*lc+.01; //cout << "c_size*lc+.01= " << endl // << mtmp << endl << endl; //int rmin=mtmp.rowmin(); //int rmax=mtmp.rowmax(); //int cmin=mtmp.colmin(); //int cmax=mtmp.colmax(); //cout << "log(c_size*lc+.01) by element = " << endl; //cout << "log(c_size*lc+.01) = " << endl; //cout << log(mtmp) << endl << endl; f-=sum(log(lc+.01)); f-=sum(log(ls+.01)); f+=0.5*sum(log(vc)); f+=0.5*sum(log(vs)); f+= 100.*norm2(log(OTC+.01)-log(ETC+.01)); f+= 100.*norm2(log(OTSC+.01)-log(ETSC+.01)); f+= 10*norm2(effort_devs) + 10*norm2(surv_effort_devs) + 50*norm2(log_q_devs) + 250*norm2(log_surv_q_devs) +100./group_num*lambda4*norm2(sel_devs) +250./group_num*lambda4*norm2(surv_sel_devs); break; } f+=10.*square(avgsel); f+=10.*square(avgsurvsel); //--Prior for M---------------------- f+= 5.*square(log(M/0.20)); if (sd_phase) { log_avg_M=mean(M*exp(M_devs)); } // if (active(effort_devs)) // { // f+= 10*norm2(effort_devs); // } // // if (active(sel_devs)) // { // f+= 50*norm2(sel_devs); // } // // if (active(log_q_devs)) // { // f+= 50*norm2(log_q_devs); // } // REPORT_SECTION report << "Estimated numbers of fish " << endl; report << setfixed << setprecision(1) << setw(6) << N << endl; report << "Fishery Catchability" << endl; report << setscientific << setprecision(3) << setw(8) << mfexp(lcatch) << endl; report << "Fishery Selectivities" << endl; dvar_matrix fish_sel=mfexp(log_fish_sel); report << setfixed << setprecision(3) << setw(6) << log_fish_sel << endl; double qmax=max(value(lcatch)); // init_vector mass(1,nages) report << "available biomass by year" << endl; for (int i=1;i<=snyrs;i++) { dvar_vector real_sel=fish_sel(i)/max(fish_sel(i)); dvar_vector avbio= elem_prod(elem_prod(N(i),real_sel),mass); available_biomass(i)=sum(avbio); report << setscientific << setprecision(3) << available_biomass(i) << " " << avbio << endl; } available_biomass_ratio= available_biomass(snyrs)/available_biomass(1); report << "available_biomass_ratio last_year/first_year = " << available_biomass_ratio << endl; report << "Fishery Catchability by age" << endl; for (i=1;i<=snyrs;i++) { report << setfixed << setprecision(3) << setw(6) << mfexp(lcatch(i)+log_fish_sel(i)-qmax) << endl; } report << "Survey Catchability by age" << endl; double sqmax=max(value(lsurvcatch)); for (i=1;i<=snyrs;i++) { report << setfixed << setprecision(3) << setw(6) << mfexp(lsurvcatch(i)+log_surv_sel(i)-sqmax) << endl; } report << "Survey Catchability" << endl; report << setfixed << setprecision(3) << setw(6) << mfexp(lsurvcatch) << endl; report << "Survey Selectivities" << endl; report << setfixed << setprecision(3) << setw(6) << mfexp(log_surv_sel) << endl; report << "Estimated numbers in catch " << endl; report << EC << endl; report << "Observed numbers in catch " << endl; report << obs_catch_at_age << endl; report << "Estimated average natural mortality " << endl; report << mean(M*exp(M_devs)) << endl; report << "Estimated natural mortality " << endl; report << M*exp(M_devs) << endl; report << "Estimated fishing mortality " << endl; report << F << endl; report << "Estimated survey selectivity " << endl; report << mfexp(log_surv_sel) << endl; report << "Estimated Survey at age " << endl; report << E_surv_age << endl; report << "Observed survey at age" << endl; report << obs_survey_at_age << endl; report << "Maturity" << endl; report << maturity << endl; report << "ObsEffort predicted SurvBiom CatchBiom" << endl; for (i=1;i<=snyrs;i++) { report << effort(i)<<" " ; report << effort(i)*mfexp(effort_devs(i)) << " " ; report << survey_cpue(i) << " "; report << catch_biomass(i) << " "<