[Developers] Control files and basic MCMC

dave fournier davef at otter-rsch.com
Tue Jan 14 08:43:01 PST 2014

On 14-01-10 12:00 PM, Arni Magnusson wrote:

In terms of setting the value of the parameter using the 4th element of 
the vector
something like

   void param_init_bounded_number::allocate(const data_vector & v,
     const char * _s)
    int phz=int(v(1));
    double lb=v(2);
    double ub=v(3);
    allocate(lb,ub,phz,_s);   // this will read in the value of the 
parameter from whatever par file
    if (v.indexmax()>3) value(*this)=v(4);   // now set the value to 
what you want

Difficulty is that it will always set the value the parameter to v(4).  
What if you want to
start from the values in the par file?  Also the order in v has been 
changed from
the standard order.  Better might be

    double lb=v(1);
    double ub=v(2);
    int phz=int(v(3));

> Happy new year to you, core developers!
> As Johnoel mentions, there is a wishlist item #11 in the Reykjavik 
> Workshop Report that says:
> "Flag/switch class Simplify the use of control and MCMC files, perhaps 
> MFCL-like object capability"
> This wishlist item is really about two things:
> ---
> (1) Sometimes we want to make ADMB applications general and 
> user-friendly. By user-friendly, I don't mean beginner-friendly, but 
> an efficient interface for running a variety of related models without 
> recompiling. Fixing parameters and setting bounds, phases, and initial 
> values, and various model-specific settings. This is sometimes done 
> inside the main data file and sometimes in a separate control file.
> Take http://www.hafro.is/~arnima/pella/pella.tpl for example. The data 
> and parameter sections are rather convoluted, in order to provide a 
> PLUI (phase,lower,upper,init) interface for controlling the parameter 
> estimation.
> Of course the exact implementation will vary from model to model. But 
> writing the PLUI code feels unnecessarily clunky and repetitive. The 
> code for switching to the control file is rather ugly, and and so is 
> the code to set the parameter phases, bounds and inits. Perhaps these 
> tasks are so common and so useful that we can provide some new 
> functionality to make them easier for the ADMB programmer.
> This example is a tiny model with very few parameters. The importance 
> of this wishlist item becomes greater with dozens of parameters.
> ---
> (2) MCMC is an important feature of ADMB. I like telling potential and 
> new users that it's a piece of cake to run MCMC for any ADMB model: 
> you basically just type mymodel -mcmc.
> Well, sort of.
> The http://www.hafro.is/~arnima/pella/pella.tpl example shows a common 
> approach. First we have if(mceval_phase()) write_mcmc(); and later we 
> have FUNCTION write_mcmc, with a long workaround to put a header for 
> each column in the MCMC output.
> Wouldn't it be cool if the user could actually type mymodel -mcmc 
> without all that stuff, and get a text file with column headers, ready 
> to plot. For the most advanced users, the PSV file is just that, but 
> for the majority of users that's not a very intuitive or accessible 
> format. Again, a task that is so common and so useful could be made 
> easier to use.
> A related idea is an MCMC_SECTION with a stream object that's ready to 
> use, mcmc<<"blah"<<..., much like the report stream object in the 
> ---
> As you can tell, I'm interested in both of these wishlist items. They 
> may not be top priority, but potential areas where ADMB could be a bit 
> smoother around the edges. We can revisit them at the next workshop, 
> to decide whether and how some of this could be done. We did not look 
> at this at the Reykjavik workshop, but included it in the report as a 
> reminder of a discussion item after the workshop.
> All the best,
> Arni
> On Fri, 10 Jan 2014, Johnoel Ancheta wrote:
>> Hi all,
>> Happy New Years.
>> I looked over the workshop report and noticed a priority task 
>> "Flag/Switch class to simplify the use of control and MCMC files..."
>> It says someone is working on this, but did not say who?
>> Johnoel
> _______________________________________________
> Developers mailing list
> Developers at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/developers

More information about the Developers mailing list