Avoid Inf Loop in Joint Tour Participation #62
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The joint tour participation model works by assigning probabilities for each person in the household as to whether they participate in a joint tour. The model then tries to satisfy the composition of the joint tour by iteratively drawing random numbers and seeing if each person participates. Sometimes the probabilities are very small, and the joint tour participation model runs out of iterations. The user has an option to specify to force participation after the specified number of iterations for anyone with a non-zero probability.
However, if forced participation still does not satisfy tour composition, the model is stuck in an infinite loop trying to force satisfaction even though its impossible. (Only ran into this in fringe cases in estimation mode.)
This PR will throw a runtime error if the forced participation is still unsuccessful at satisfying all joint tours.