Open i-am-sijia opened 2 years ago
A third option would be to build a choice set from household members and make a choice instead of using the utility ranking procedure. This would provide a lot of flexibility in terms of specifying the utility function (with interaction terms), and also eliminate the need for a party type model. For a 5 person household there would be 26 alternatives, for a 6-person household 56 alternatives. Certainly doable.
Joint tour frequency model generates household joint tours. Then joint tour composition model determines if a joint tour is: 1 = Adult-only, 2 = Children-only, 3 = Mixed. Lastly, joint tour participation model is applied to household members independently to determine if each member is participating in joint tours or not. Number of participants of a joint tour is an outcome of the tour participation model.
There are availability rules in the participation model, for example, adults cannot participate in children-only tours, and children cannot participate in adult-only tours. Such availability rules are implemented in joint tour participation UEC.
Because the participation model is applied to each person independently, a tour satisfaction step is implemented after persons' choices being made to check:
For joint tours that do not satisfy those two criteria, the participation model will generate new random numbers and re-simulate persons' choices, until all joint tours are satisfied, or until it reaches max number of simulation, whichever condition is met first. If there are still joint tours unsatisfied when max number of simulation is reached, then the model crashes with warning:
joint_tour_participation.eval_mnl.participants_chooser max iterations exceeded (5000)
. The default max number of simulation for participation model is 5000 in the current Activitysim code, users can change it in yaml file.Some shortcomings of the tour participation model:
Ideas for improvements:
@jfdman feel free to add.