In rail vehicle .yamls and the resulting Rust objects, we're using the naming convention "_Loaded" and "_Empty". (Example: Intermodal_Loaded.yaml and Intermodal_Empty.yaml.
However, in the current version of default demand .csv files, we're using the naming convention of no suffix for loaded vehicles (e.g., "Intermodal") and "_Empty".
In the train planner, we generate return trips by appending "_Empty" to the train type labels from the demand .csv. This new _Empty value must match the name of one of the Rust rail vehicle objects.
We handle this ad-hoc in the train planner by cleaning up the string labels to match, but ideally we'd have something more standardized and robust. A couple options:
include in each .yaml a field for empty_vehicle_definition_name, so we could correctly point to the empty equivalent if it exists, and then to add special handling in the train planner for cases in which no empty equivalent exists. One wrinkle this wouldn't handle (that we aren't handling the old way either) is that the return type may differ based on the simulation you're running (maybe sometimes you return an empty intermodal container, but in other cases, you return a well car with no container on it at all).
have pairs of vehicles in yaml files and load a RailVehicles(Vec) object from the file
In rail vehicle .yamls and the resulting Rust objects, we're using the naming convention "_Loaded" and "_Empty". (Example:
Intermodal_Loaded.yaml
andIntermodal_Empty.yaml
.However, in the current version of default demand .csv files, we're using the naming convention of no suffix for loaded vehicles (e.g., "Intermodal") and "_Empty".
In the train planner, we generate return trips by appending "_Empty" to the train type labels from the demand .csv. This new_Empty value must match the name of one of the Rust rail vehicle objects.
We handle this ad-hoc in the train planner by cleaning up the string labels to match, but ideally we'd have something more standardized and robust. A couple options: