[ADMB Users] Missing overloaded operators (+=, -=) in random effects

H. Skaug hskaug at gmail.com
Tue Apr 5 09:27:08 PDT 2011


Hi,

I have commited this to the svn source base for the += and -=
operators (Committed revision 999.)

Hans


On Tue, Apr 5, 2011 at 2:27 PM, Mark Payne <mpa at aqua.dtu.dk> wrote:
> Hi,
>
> I have been developing a model in ADMB using the "standard" (ie non-RE) system. However, I now want to start to use this in conjunction with some random effects, but unfortunately, making the switch has thrown up some problems. First, heres a very stripped down version of my tpl file
>
>
>
> [mpayne at oleander run]$ cat transient.tpl
>
> DATA_SECTION
>  int nboxes
>  !!nboxes = 14;
>  vector bprodredf(1,nboxes)
>  vector dbn(1,nboxes)
>
> PARAMETER_SECTION
>  //Fitting parameters
>  init_number alpha
>  random_effects_vector N15(1,nboxes)
>
>  //Objective function
>  objective_function_value nll
>
> PRELIMINARY_CALCS_SECTION
>  bprodredf= 1;
>  dbn= 1;
>
> PROCEDURE_SECTION
>  nll = 0;
>
>
> FUNCTION dvar_vector SMS(dvar_vector ninv,int t)
>  //Source minus sink terms
>  //Given a set of (total) nitrogen concentrations, ninv, calculate net
>  //production of N at time step t
>  dvar_vector bs(1,nboxes);
>  bs=0;
>  //Sum the invidiual terms
>  //bs += bprodredf ;        //Jprod - biological productivity
>  bs -= dbn ;              //Si - Sediment burial
>  return bs;
>
>
>
>
>
> If you remove the random_effects_vector line, this builds fine under normal ADMB. However, compiling with the -r line throws the following error
>
>
>
> [mpayne at oleander run]$ admb -r transient
>
> *** Parsing: tpl2rem transient
>
> *** Compiling: adcomp -r transient
> g++ -c  -O3 -Wno-deprecated  -DOPT_LIB -D__GNUDOS__ -Dlinux -DUSE_LAPLACE -fpermissive -I. -I/home/mpayne/admb/include transient.cpp
> transient.cpp: In member function ‘df1b2vector df1b2_parameters::SMS(df1b2vector, int)’:
> transient.cpp:123: error: no match for ‘operator-=’ in ‘bs -= ((df1b2_parameters*)this)->df1b2_parameters::<anonymous>.df1b2_pre_parameters::<anonymous>.model_parameters::<anonymous>.model_data::dbn’
> /home/mpayne/admb/include/df1b2fun.h:979: note: candidates are: df1b2vector& df1b2vector::operator-=(const df1b2vector&)
> /home/mpayne/admb/include/df1b2fun.h:983: note:                 df1b2vector& df1b2vector::operator-=(const df1b2variable&)
>
> Error: Failed to build executable.
> [mpayne at oleander run]$
>
>
>
>
> If you replace "bs -= dbn" with "bs = bs + dbn" it compiles correctly. Similar bugs are encountered if you reinstate the currently commented out the commented out line "//bs += bprodredf ;" I interpret this  as meaning that the += and -= operators have not been overloaded in ADMB-RE for this type of variable. Is this a correct interpretation, or am I doing something silly?
>
> Best wishes,
>
> Mark
> _______________________________________________
> Users mailing list
> Users at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/users
>



More information about the Users mailing list