18 if( (
on=option_match(ad_comm::argc,ad_comm::argv,
"-mse",opt) ) >-1 )
21 rseed=atoi(ad_comm::argv[
on+1]);
55 !! cout<<data.it<<endl;
57 INITIALIZATION_SECTION
97 sPars.log_bo = log_bo;
100 sPars.log_sigma = log_sigma;
101 sPars.log_tau = log_tau;
107 sig = sqrt(1.0/mfexp(log_sigma));
108 tau = sqrt(1.0/mfexp(log_tau));
117 cLRGSmodel.initialize_model();
118 cLRGSmodel.population_dynamics();
119 cLRGSmodel.observation_model();
120 epsilon = cLRGSmodel.get_epsilon();
121 sd_dep = cLRGSmodel.get_depletion();
122 bt = cLRGSmodel.get_bt();
123 ft = cLRGSmodel.get_ft();
124 q = cLRGSmodel.get_q();
131 calc_objective_function();
141 for( i = 1; i <= 100; i++ )
144 fe(i) = double((i-1.)/(100.-1.))*1.2;
145 for( j = 1; j <= 100; j++ )
147 ce = be * (1.-exp(-fe(i)));
148 be = value(s*be + a*be/(1.+b*be)) - ce;
150 cout<<setprecision(5)<<fe(i)<<
"\t"<<ce<<
"\t"<<be<<endl;
154 FUNCTION
void initialize_model()
162 rt(syr,syr+agek) = ro * exp(wt(syr,syr+agek));
164 sig = sqrt(1.0/mfexp(log_sigma));
165 tau = sqrt(1.0/mfexp(log_tau));
181 for(i=syr;i<=nyr;i++)
183 ft(i) = -log((-ct(i)+bt(i))/bt(i));
186 rt(i) = a*bt(i-agek)/(1.+b*bt(i-agek)) * exp(wt(i));
189 btmp = s*bt(i) + rt(i) - ct(i);
190 bt(i+1) = posfun(btmp,0.1,fpen);
195 FUNCTION
void observation_model()
197 dvar_vector zt = log(it) - log(bt(syr,nyr));
199 epsilon = zt - mean(zt);
202 FUNCTION
void run_mse()
205 Scenario cScenario1(agek,nScenario,n_pyr,n_flg_perfect_information,rseed,value(bo),
206 value(h),value(s),iuu_rate,
207 value(q),value(sig),value(tau),value(ft),
208 value(wt),it,ct,min_tac);
216 cOM.runMSEscenario(cScenario1);
219 ofs<<"t_bo\n" << cOM.get_bo() <<endl;
220 ofs<<"t_est_bo\n" << cOM.get_est_bo() <<endl;
221 ofs<<"t_bmsy\n" << cOM.get_bmsy() <<endl;
222 ofs<<"t_fmsy\n" << cOM.get_fmsy() <<endl;
223 ofs<<"t_msy\n" << cOM.get_msy() <<endl;
224 ofs<<"t_bt\n" << cOM.get_bt() <<endl;
225 ofs<<"t_aav\n" << cOM.get_aav() <<endl;
233 Scenario cScenarioP(agek,nScenario,n_pyr,0,rseed,value(bo),
234 value(h),value(s),iuu_rate,
235 value(q),value(sig),value(tau),value(ft),
240 cOMP.runMSEscenario(cScenarioP);
243 ofs1<<"p_bo\n" << cOMP.get_est_bo() <<endl;
244 ofs1<<"p_bmsy\n"<< cOMP.get_bmsy() <<endl;
245 ofs1<<"p_fmsy\n"<< cOMP.get_fmsy() <<endl;
246 ofs1<<"p_msy\n" << cOMP.get_msy() <<endl;
247 ofs1<<"p_bt\n" << cOMP.get_bt() <<endl;
248 ofs1<<"p_ct\n" << cOMP.get_hat_ct() <<endl;
249 ofs1<<"p_aav\n" << cOMP.get_aav() <<endl;
254 FUNCTION
void calc_objective_function()
256 dvariable isig2 = mfexp(log_sigma);
257 dvariable itau2 = mfexp(log_tau);
260 nll(1) = dnorm(epsilon,sig);
261 nll(2) = dbeta(s,30.01,10.01);
262 nll(3) = dnorm(log_bo,log(3000),1.0);
263 nll(4) = dbeta((h-0.2)/0.8,1.01,1.01);
264 nll(5) = dgamma(isig2,1.01,1.01);
267 nll(6) = dgamma(itau2,1.01,1.01);
268 nll(7) = dnorm(wt,tau);
272 nll(7) = dnorm(wt,1.0);
276 if(fpen>0 && !mc_phase()) cout<<
"Fpen = "<<fpen<<endl;
277 f = sum(nll) + 100000.*fpen;
292 double fmsy = cMSY.get_fmsy();
293 double bmsy = cMSY.get_bmsy();
294 double msy = cMSY.get_msy();
307 ofs<<bo<<
"\n"<<reck<<
"\n"<<s<<
"\n"<<bt(nyr+1)<<endl;
312 arrmblsize = 50000000;
313 gradient_structure::set_GRADSTACK_BUFFER_SIZE(1.e7);
314 gradient_structure::set_CMPDIF_BUFFER_SIZE(1.e7);
315 gradient_structure::set_MAX_NVAR_OFFSET(5000);
316 gradient_structure::set_NUM_DEPENDENT_VARIABLES(5000);
321 #define REPORT(object) report << #object "\n" << object << endl;
324 #define COUT(object) cout<<fixed<<#object "\n"<<object<<endl;
342 long hour,minute,second;
353 cout<<
"Running MSE"<<endl;
358 elapsed_time=difftime(finish,start);
359 hour=long(elapsed_time)/3600;
360 minute=long(elapsed_time)%3600/60;
361 second=(long(elapsed_time)%3600)%60;
362 cout<<endl<<endl<<
"*******************************************"<<endl;
363 cout<<
"--Start time: "<<ctime(&start)<<endl;
364 cout<<
"--Finish time: "<<ctime(&finish)<<endl;
366 cout<<hour<<
" hours, "<<minute<<
" minutes, "<<second<<
" seconds"<<endl;
367 cout<<
"*******************************************"<<endl;