void TripPrep::Trip_Processing::operator()() { int part = 0; if (exe->update_flag && !exe->select_flag) { random_part.Seed (exe->random.Seed () + 1000 * (num + 1)); if (thread_flag) part_count.assign (exe->num_parts, 0); } if (exe->factor_flag) { random_part.Seed (exe->random.Seed () + 1000 * (num + 1)); random_fac.Seed (exe->random.Seed () + 2000 * (num + 1)); random_move.Seed (exe->random.Seed () + 3000 * (num + 1)); } trip_file = new Trip_File (exe->trip_file->File_Access (), exe->trip_file->Dbase_Format ()); trip_file->Part_Flag (exe->trip_file->Part_Flag ()); trip_file->Pathname (exe->trip_file->Pathname ()); trip_file->First_Open (false); if (exe->new_trip_flag) { new_trip_file = new Trip_File (exe->new_trip_file->File_Access (), exe->new_trip_file->Dbase_Format ()); new_trip_file->File_Type (exe->new_trip_file->File_Type ()); new_trip_file->Part_Flag (exe->new_trip_file->Part_Flag ()); new_trip_file->Pathname (exe->new_trip_file->Pathname ()); new_trip_file->Sort_Type (exe->new_trip_file->Sort_Type ()); new_trip_file->First_Open (false); } if (exe->merge_flag) { merge_file = new Trip_File (exe->merge_file.File_Access (), exe->merge_file.Dbase_Format ()); merge_file->Part_Flag (exe->merge_file.Part_Flag ()); merge_file->Pathname (exe->merge_file.Pathname ()); merge_file->First_Open (false); } //---- compile the user script ---- if (exe->script_flag) { Db_Base_Array files; files.push_back (trip_file); program.Initialize (files, exe->random.Seed () + 100 * (num + 1)); program.Read_Only (0, false); program.Replicate (&exe->program); } //---- process each partition ---- while (exe->partition_queue.Get (part)) { Read_Trips (part); num_temp = 0; trip_ptr_array.clear (); traveler_sort.clear (); time_sort.clear (); } MAIN_LOCK exe->trip_file->Add_Counters (trip_file); trip_file->Close (); if (exe->new_trip_flag) { exe->new_trip_file->Add_Counters (new_trip_file); new_trip_file->Close (); } if (exe->merge_flag) { exe->merge_file.Add_Counters (merge_file); merge_file->Close (); } if ((exe->update_flag || exe->new_select_flag) && !exe->select_flag && thread_flag) { for (part = 0; part < exe->num_parts; part++) { exe->part_count [part] += part_count [part]; } exe->select_map.insert (select_map.begin (), select_map.end ()); } END_LOCK }
void EventSum::Execute (void) { //---- read the network and demand files ---- Demand_Service::Execute (); max_hhold = MAX_INTEGER / Traveler_Scale (); //---- read the household list ---- if (hhlist_flag) { Read_HHList (); } //---- read input travel times ---- if (time_in_flag) { Read_Times (); } //---- read activity file ---- if (activity_flag) { Read_Activity (); } //---- read trip file ---- if (trip_file_flag) { Read_Trips (); } //---- read the event file ---- if (combine_flag) { Combine_Events (); } else { Read_Events (); } //---- select travelers ---- if (select_flag) { Select_Travelers (); } //---- write travel time file ---- if (time_file_flag) { Write_Events (); } //---- write time summary file ---- if (time_sum_flag) { Write_Times (); } //---- write the link events file ---- if (link_flag) { Write_Links (); } //---- write the time distribution file ---- if (distrib_flag) { time_diff.Write_Distribution (); } //---- update plans ---- if (update_flag) { Update_Plans (); } //---- write new household list ---- if (new_hhold_flag) { Write_HHList (); } //---- print the comparison summary ---- time_diff.Total_Summary (); //---- print reports ---- Show_Message ("Writing Summary Reports"); for (int i=First_Report (); i != 0; i=Next_Report ()) { switch (i) { case TOP_100_TTIME: //---- top 100 travel time differences ---- Top_100_TTime_Report (); break; case TOTAL_DISTRIB: //---- total difference distribution ---- case TTIME_DISTRIB: //---- time difference distributions ---- time_diff.Time_Distribution (i); break; case PERIOD_SUM: //---- time period summary ---- time_diff.Period_Summary (); break; case TOP_100_LINK: Top_100_Link_Report (); break; case TOP_100_PERIOD: //---- top 100 period events ---- Top_100_Period_Report (); break; case LINK_EVENT: //---- link event report ----- Link_Event_Report ((int) Report_Data ()); break; case GROUP_EVENT: //---- group event report ---- Group_Event_Report ((int) Report_Data ()); break; case TRAVELER_SUM: //---- traveler summary report ---- Traveler_Sum_Report (); break; case EVENT_SUM: //---- event summary report ---- Event_Sum_Report (); break; default: break; } } Exit_Stat (DONE); }