Sharrow#

Significant performance improvements can be achieved by using the sharrow library, although doing so requires certain limitations on model design, particularly relating to what expressions are allowed in utility specifications. Generally any model specification can be accommodated in sharrow by re-writing problematic expressions in a more sharrow-friendly way, or by moving them to a pre-processor.

If your model is designed to be compatible with sharrow, you can activate these enhancements by setting the sharrow configuration setting in the model main settings (typically settings.yaml):

sharrow: True
recode_pipeline_columns: True

The recode_pipeline_columns setting is not absolutely required if the input data is already in the correct format (i.e. with TAZ ID’s starting at zero), but in practice it is almost always necessary to set this to True as most zone systems do not start at zero.

Tip

Sharrow is a powerful tool for improving model performance, but it is not compatible with all ActivitySim features. If you need to use tracing or estimation mode, consider turning off sharrow by setting sharrow: False in the model settings.

Making these settings in the top level configuration will enable sharrow globally for a model, although individual model components can be configured to not use sharrow for various reasons. For most model users, the only sharrow-related setting that needs to be considered is the sharrow setting in the top level configuration, as this switch is necessary to enable sharrow for the model, or to disable it if the user wants to activate non-sharrow compatible features of ActivitySim, including tracing and estimation mode.

Instructions on how to work with sharrow in ActivitySim are described in detail in the Using Sharrow section of the Developer’s Guide. Advanced users are encouraged to read this section to understand the full capabilities of sharrow, how to use it, and how to troubleshoot issues that may arise when using it.