def non_mandatory_tours(persons, non_mandatory_tour_frequency_alts): t0 = print_elapsed_time("") df = process_non_mandatory_tours( persons.non_mandatory_tour_frequency.dropna(), non_mandatory_tour_frequency_alts.local) t0 = print_elapsed_time("process_non_mandatory_tours", t0) return df
def run_model(model_name): t0 = print_elapsed_time() orca.run([model_name]) t0 = print_elapsed_time(model_name, t0)
def set_random_seed(): np.random.seed(0) def run_model(model_name): t0 = print_elapsed_time() orca.run([model_name]) t0 = print_elapsed_time(model_name, t0) # uncomment the line below to set random seed so that run results are reproducible # orca.add_injectable("set_random_seed", set_random_seed) tracing.config_logger() t0 = print_elapsed_time() run_model("compute_accessibility") run_model("school_location_simulate") run_model("workplace_location_simulate") print orca.get_table("persons").distance_to_work.describe() run_model("auto_ownership_simulate") run_model("cdap_simulate") run_model('mandatory_tour_frequency') orca.get_table("mandatory_tours").tour_type.value_counts() run_model("mandatory_scheduling") run_model('non_mandatory_tour_frequency') orca.get_table("non_mandatory_tours").tour_type.value_counts() run_model("destination_choice") run_model("non_mandatory_scheduling")
def run_model(model_name): t0 = print_elapsed_time() orca.run([model_name]) t0 = print_elapsed_time(model_name, t0) log_memory_info('after %s' % model_name)
def non_mandatory_tour_frequency(set_random_seed, persons_merged, non_mandatory_tour_frequency_alts, non_mandatory_tour_frequency_spec, non_mandatory_tour_frequency_settings, chunk_size, trace_hh_id): """ This model predicts the frequency of making non-mandatory trips (alternatives for this model come from a separate csv file which is configured by the user) - these trips include escort, shopping, othmaint, othdiscr, eatout, and social trips in various combination. """ t0 = print_elapsed_time() choosers = persons_merged.to_frame() alts = non_mandatory_tour_frequency_alts.to_frame() # filter based on results of CDAP choosers = choosers[choosers.cdap_activity.isin(['M', 'N'])] logger.info("Running non_mandatory_tour_frequency with %d persons" % len(choosers)) constants = get_model_constants(non_mandatory_tour_frequency_settings) choices_list = [] # segment by person type and pick the right spec for each person type for name, segment in choosers.groupby('ptype_cat'): logger.info("Running segment '%s' of size %d" % (name, len(segment))) choices = asim.interaction_simulate( segment, alts, # notice that we pick the column for the segment for each segment we run spec=non_mandatory_tour_frequency_spec[[name]], locals_d=constants, sample_size=50, chunk_size=chunk_size, trace_label=trace_hh_id and 'non_mandatory_tour_frequency.%s' % name, trace_choice_name='non_mandatory_tour_frequency') choices_list.append(choices) t0 = print_elapsed_time("non_mandatory_tour_frequency.%s" % name, t0) # FIXME - force garbage collection # mem = asim.memory_info() # logger.info('memory_info ptype %s, %s' % (name, mem)) choices = pd.concat(choices_list) # FIXME - no need to reindex? orca.add_column("persons", "non_mandatory_tour_frequency", choices) add_dependent_columns("persons", "persons_nmtf") if trace_hh_id: trace_columns = ['non_mandatory_tour_frequency'] tracing.trace_df(orca.get_table('persons_merged').to_frame(), label="non_mandatory_tour_frequency", columns=trace_columns, warn_if_empty=True)