Source code for models.fleet_simulator.main
import pandas as pd
import warnings
import datetime
from pathlib import Path
from . import commercial_simulation
from .import_vehicles import get_vehicle_data
from .. import utils
print_level_base = 1
warnings.filterwarnings("ignore")
utils.print_update(level=print_level_base,message="Initializing Fleet Simulator...")
[docs]
def run_fleet_simulation(start_date:str,
end_date:str,
samples:int,
force_update=True,
show_log:bool=False):
"""_summary_
Args:
start_date (str): "yyyy-mm-dd"
days (int): Number of days to simulate
samples (int): Number of samples to get from the vehicle population
"""
travel_patterns_save_to = Path('results/fleet_simulator/commercial_travel_patterns.csv')
if travel_patterns_save_to.exists():
utils.print_update(level=print_level_base+1, message="Travel patterns file already exists")
if not force_update:
utils.print_update(level=print_level_base+1, message="force-update is disabled. Skipping travel pattern simulation.")
return # Gracefully exit the function
else:
utils.print_update(level=print_level_base+1, message="The simulation will overwrite the existing travel patterns file.")
vehicle_resolution:int=1
# Import data
icbc_commercial_data = pd.read_csv('data/fleet_simulator/inputs/icbc_commercial_population.csv')
icbc_passenger_data = pd.read_csv('data/fleet_simulator/inputs/icbc_passenger_population.csv')
vehicle_types = pd.read_csv('data/fleet_simulator/inputs/vehicle_types.csv')
utils.print_update(level=print_level_base+1,message="Preparing vehicle data...")
get_vehicle_data(vehicle_resolution,
False,
icbc_commercial_data,
icbc_passenger_data,
vehicle_types)
business_fleet = pd.read_csv('data/fleet_simulator/processed/vehicle_populations/disaggregated_business_fleet.csv')
nrel_data = pd.read_csv('data/fleet_simulator/inputs/nrel_commercial_fleet_data.csv')
timespan = (datetime.datetime.strptime(end_date, '%Y-%m-%d') - datetime.datetime.strptime(start_date, '%Y-%m-%d')).days+1
utils.print_update(level=print_level_base+1,message=f"Preparing travel pattern for {timespan} days...")
commercial_simulation.generate_travel_patterns(start_date,
end_date,
samples,
nrel_data,
business_fleet,
show_log=show_log)