Example #1
0
  /* Constructor */
  modeler_t (DataFrame& A,
             const RandomAccessDoubleContainer& y,
             RandomAccessDoubleContainer& x,
             RandomAccessKPIContainter& selected,
             SetContainer& prohibit,
             SetContainer& forced,
             const RandomAccessDoubleContainer& kpi_weights,
             double& variance,
             double& intercept,
             const int& target,
             const StopPredicate& stop,
             const IntervalMapper& interval_mapper,
             const Factorizer& factorizer,
             const double lambda,
             const int M,
             const int N,
             const int MAX_ITERS,
             const int debug
#if USE_PFUNC
             ,taskmgr* global_taskmgr
#endif
             ) :
       A(A),y(y),x(x),selected(selected),
       prohibit(prohibit),forced(forced),kpi_weights(kpi_weights),
       variance(variance),intercept(intercept),target(target),
       stop(stop),interval_mapper(interval_mapper),factorizer(factorizer),
       lambda(lambda), M(M), N(N), MAX_ITERS(MAX_ITERS), debug(debug),
       filter (prohibit, forced, selected),
       my_space (A.begin(), A.end()),
       test_A (M*N*MAX_ITERS), 
       r (M),
       y_inv (M)
#if USE_PFUNC
       ,global_taskmgr (global_taskmgr)
#endif
        { 
    /* Set up the transmission channel */
    MPI_Type_contiguous (2, MPI_DOUBLE, &MPI_Kpi_pair);
    MPI_Type_commit (&MPI_Kpi_pair);
    MPI_Op_create (kpi_pair_max,true,&MPI_KPI_MAX_OP);
    MPI_Op_create (kpi_pair_min,true,&MPI_KPI_MIN_OP);

    /* Compute the inverse of y */
    ConfidenceFunctor::pseudo_inverse(y, y_inv, M);
  }