Additive Random Utility Models (ARUMs)


 

Empirical Class


Class Definition

Class Definition:

 
class empirical
{
    public:
        // build objects
        int nbX;
        int nbY;

        int nbParams;
        int aux_nbDraws;
        int nbOptions;

        bool xHomogenous;
        bool outsideOption;

        arma::cube atoms;

        // input objects
        arma::mat U;
        arma::mat mu;

        // equilibrium objects
        arma::mat U_sol;
        arma::mat mu_sol;

        // member functions
        ~empirical(){};
         empirical(){};
        explicit empirical(int nbX_inp, int nbY_inp);
        explicit empirical(int nbX_inp, int nbY_inp, const arma::cube& atoms_inp, bool xHomogenous_inp, bool outsideOption_inp);

        void build(int nbX_inp, int nbY_inp);
        void build(int nbX_inp, int nbY_inp, const arma::cube& atoms_inp, bool xHomogenous_inp, bool outsideOption_inp);

        double G(const arma::vec& n);
        double G(const arma::vec& n, const arma::mat& U_inp, arma::mat& mu_out);
        double Gx(const arma::mat& U_x_inp, arma::mat& mu_x_out, int x);

        double Gstar(const arma::vec& n);
        double Gstar(const arma::vec& n, const arma::mat& mu_inp, arma::mat& U_out);
        double Gstarx(const arma::mat& mu_x_inp, arma::mat &U_x_out, int x);

        double Gbar(const arma::mat& Ubar, const arma::mat& mubar, const arma::vec& n, arma::mat& U_out, arma::mat& mu_out);
        double Gbarx(const arma::vec& Ubar_x, const arma::vec& mubar_x, arma::mat& U_x_out, arma::mat& mu_x_out, int x);

    private:
        /*
         * these private member objects are mostly used by LP solvers
         */
        void presolve_LP_Gstar();
        void presolve_LP_Gbar();

        bool TRAME_PRESOLVED_GSTAR = false;
        bool TRAME_PRESOLVED_GBAR  = false;

        int k_Gstar;
        int n_Gstar;
        int numnz_Gstar;
        int* vind_Gstar;
        int* vbeg_Gstar;
        double* vval_Gstar;

        int k_Gbar;
        int n_Gbar;
        int numnz_Gbar;
        int* vind_Gbar;
        int* vbeg_Gbar;
        double* vval_Gbar;
};

Member Objects


Member Functions


Notes


Examples