// File: 19ngev_nl.mod
// Author: Michel Bierlaire, EPFL
// Date: Fri Mar 22 22:00:34 2013
[ModelDescription]
"Example of a Network GEV model. It is actually a nested logit model for a transportation mode choice with 3 alternatives:"
"- Train"
"- Car"
"- Swissmetro, an hypothetical high-speed train"
"Alternatives Train and Car are grouped in the same nest, as their error terms are expected to share unobserved attributes associated with existing alternatives. It is the same model as in file 09nested.mod"
[Choice]
CHOICE
[Beta]
// Name Value LowerBound UpperBound status (0=variable, 1=fixed)
ASC_CAR 0 -10 10 0
ASC_TRAIN 0 -10 10 0
ASC_SM 0 -10 10 1
B_TIME 0 -10 10 0
B_COST 0 -10 10 0
[LaTeX]
ASC_CAR "Cte. car"
ASC_SBB "Cte. train"
ASC_SM "Cte. Swissmetro"
B_TIME "$\beta_\text{time}$"
B_COST "$\beta_\text{cost}$"
[Utilities]
// Id Name Avail linear-in-parameter expression (beta1*x1 + beta2*x2 + ... )
1 A1_TRAIN TRAIN_AV_SP ASC_TRAIN * one
+ B_TIME * TRAIN_TT_SCALED
+ B_COST * TRAIN_COST_SCALED
2 A2_SM SM_AV ASC_SM * one
+ B_TIME * SM_TT_SCALED
+ B_COST * SM_COST_SCALED
3 A3_Car CAR_AV_SP ASC_CAR * one
+ B_TIME * CAR_TT_SCALED
+ B_COST * CAR_CO_SCALED
[Expressions]
// Define here arithmetic expressions for name that are not directly
// available from the data
one = 1
CAR_AV_SP = CAR_AV * ( SP != 0 )
TRAIN_AV_SP = TRAIN_AV * ( SP != 0 )
//If the person has a GA (season ticket) her incremental cost is actually 0
//rather than the cost value gathered from the
// network data.
SM_COST = SM_CO * ( GA == 0 )
TRAIN_COST = TRAIN_CO * ( GA == 0 )
// For numerical reasons, it is good practice to scale the data to
// that the values of the parameters are around 1.0.
// A previous estimation with the unscaled data has generated
// parameters around -0.01 for both cost and time. Therefore, time and
// cost are multipled my 0.01.
TRAIN_TT_SCALED = TRAIN_TT / 100.0
TRAIN_COST_SCALED = TRAIN_COST / 100
SM_TT_SCALED = SM_TT / 100.0
SM_COST_SCALED = SM_COST / 100
CAR_TT_SCALED = CAR_TT / 100
CAR_CO_SCALED = CAR_CO / 100
[Exclude]
// All observations verifying the following expression will not be
// considered for estimation
// The modeler here has developed the model only for work trips.
// Observations such that the dependent variable CHOICE is 0 are also removed.
(( PURPOSE != 1 ) * ( PURPOSE != 3 ) + ( CHOICE == 0 ))
[Model]
// $NL stands for "nested logit model",
$NGEV
[NetworkGEVNodes]
// All nodes of the Network GEV model, except the root and the alternatives
// must be listed here, with their associated parameter.
// Name mu_param_value LowerBound UpperBound status
EXISTING 1.0 1.0 10.0 0
FUTURE 1.0 1.0 10.0 1
[NetworkGEVLinks]
// There is a line for each link of the network.
// The root node is denoted by __ROOT
// All other nodes must be either an alternative or a node listed in
// the section [NetworkGEVNodes]
// Note that an alternative cannot be the a-node of any link,
// and the root node cannot be the b-node of any link.
// a-node b-node alpha_param_value LowerBound UpperBound status
__ROOT EXISTING 1.0 1 1 1
__ROOT FUTURE 1.0 1 1 1
EXISTING A1_TRAIN 1.0 0.0001 1.0 1
EXISTING A3_Car 1.0 0.0001 1.0 1
FUTURE A2_SM 1.0 0.0001 1.0 1