Relocate::Relocate (void) : Data_Service () { Program ("Relocate"); Version (0); Title ("Update Activity Locations"); System_File_Type required_files [] = { NODE, LINK, LOCATION, PARKING, END_FILE }; System_File_Type optional_files [] = { SHAPE, ACCESS_LINK, TRIP, VEHICLE, PLAN, NEW_TRIP, NEW_VEHICLE, NEW_PLAN, NEW_SELECTION, END_FILE }; Control_Key keys [] = { //--- code, key, level, status, type, default, range, help ---- { OLD_NODE_FILE, "OLD_NODE_FILE", LEVEL0, REQ_KEY, IN_KEY, "", FILE_RANGE, NO_HELP }, { OLD_NODE_FORMAT, "OLD_NODE_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP }, { OLD_SHAPE_FILE, "OLD_SHAPE_FILE", LEVEL0, OPT_KEY, IN_KEY, "", FILE_RANGE, NO_HELP }, { OLD_SHAPE_FORMAT, "OLD_SHAPE_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP }, { OLD_LINK_FILE, "OLD_LINK_FILE", LEVEL0, REQ_KEY, IN_KEY, "", FILE_RANGE, NO_HELP }, { OLD_LINK_FORMAT, "OLD_LINK_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP }, { OLD_LOCATION_FILE, "OLD_LOCATION_FILE", LEVEL0, REQ_KEY, IN_KEY, "", FILE_RANGE, NO_HELP }, { OLD_LOCATION_FORMAT, "OLD_LOCATION_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP }, { OLD_PARKING_FILE, "OLD_PARKING_FILE", LEVEL0, REQ_KEY, IN_KEY, "", FILE_RANGE, NO_HELP }, { OLD_PARKING_FORMAT, "OLD_PARKING_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP }, { OLD_ACCESS_FILE, "OLD_ACCESS_FILE", LEVEL0, OPT_KEY, IN_KEY, "", FILE_RANGE, NO_HELP }, { OLD_ACCESS_FORMAT, "OLD_ACCESSE_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP }, { NEW_LOCATION_MAP_FILE, "NEW_LOCATION_MAP_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP }, { NEW_PARKING_MAP_FILE, "NEW_PARKING_MAP_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP }, END_CONTROL }; Required_System_Files (required_files); Optional_System_Files (optional_files); Key_List (keys); Enable_Partitions (true); Location_XY_Flag (true); trip_flag = plan_flag = vehicle_flag = select_flag = false; loc_map_flag = park_map_flag = shape_flag = access_flag = false; System_Read_False (PLAN); System_Data_Reserve (PLAN, 0); System_Read_False (TRIP); System_Data_Reserve (TRIP, 0); System_Read_False (VEHICLE); System_Data_Reserve (VEHICLE, 0); }
void Data_Service::Initialize_Lane_Uses (Lane_Use_File &file) { Required_File_Check (file, LINK); Required_File_Check (file, VEHICLE_TYPE); if (file.Version () <= 40) { Required_File_Check (file, POCKET); } int percent = System_Data_Reserve (LANE_USE); if (lane_use_array.capacity () == 0 && percent > 0) { int num = file.Num_Records (); if (percent != 100) { num = (int) ((double) num * percent / 100.0); } else if (file.Version () <= 40) { num = (int) (num / 1.5); } if (num > 1) { lane_use_array.reserve (num); if (num > (int) lane_use_array.capacity ()) Mem_Error (file.File_ID ()); } } else { Dir_Itr dir_itr; Lane_Use_Itr use_itr; for (dir_itr = dir_array.begin (); dir_itr != dir_array.end (); dir_itr++) { dir_itr->First_Lane_Use (-1); } for (use_itr = lane_use_array.begin (); use_itr != lane_use_array.end (); use_itr++) { use_itr->Next_Index (-1); } } }
PlanPrep::PlanPrep (void) : Data_Service (), Select_Service () { Program ("PlanPrep"); Version (9); Title ("Travel Plan Processing Utility"); System_File_Type required_files [] = { PLAN, END_FILE }; System_File_Type optional_files [] = { SELECTION, NEW_PLAN, END_FILE }; int data_service_keys [] = { TRIP_SORT_TYPE, PLAN_SORT_TYPE, 0 }; int select_service_keys [] = { SELECT_HOUSEHOLDS, SELECT_MODES, SELECT_PURPOSES, SELECT_START_TIMES, SELECT_END_TIMES, SELECT_ORIGINS, SELECT_DESTINATIONS, SELECT_TRAVELER_TYPES, SELECT_LINKS, SELECT_NODES, SELECT_SUBAREA_POLYGON, SELECTION_PERCENTAGE, DELETION_FILE, DELETION_FORMAT, DELETE_HOUSEHOLDS, DELETE_MODES, DELETE_TRAVELER_TYPES, 0 }; Control_Key keys [] = { //--- code, key, level, status, type, default, range, help ---- { MERGE_PLAN_FILE, "MERGE_PLAN_FILE", LEVEL0, OPT_KEY, IN_KEY, "", PARTITION_RANGE, NO_HELP }, { MERGE_PLAN_FORMAT, "MERGE_PLAN_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP }, { MAXIMUM_SORT_SIZE, "MAXIMUM_SORT_SIZE", LEVEL0, OPT_KEY, INT_KEY, "0", "0, >=100000 trips", NO_HELP }, END_CONTROL }; const char *reports [] = { //"FIRST_REPORT", //"SECOND_REPORT", "" }; Required_System_Files (required_files); Optional_System_Files (optional_files); Data_Service_Keys (data_service_keys); Select_Service_Keys (select_service_keys); Key_List (keys); Report_List (reports); Enable_Partitions (true); #ifdef BOOST_THREADS Enable_Threads (true); #endif #ifdef MPI_EXE Enable_MPI (true); #endif plan_processing = 0; sort_size = 0; select_flag = merge_flag = combine_flag = output_flag = new_plan_flag = false; System_Read_False (PLAN); System_Data_Reserve (PLAN, 0); }
void Data_Service::Initialize_Events (Event_File &file) { int percent = System_Data_Reserve (EVENT); if (event_array.capacity () == 0 && percent > 0) { int num = file.Num_Records (); if (percent != 100) { num = (int) ((double) num * percent / 100.0); } if (num > 1) { event_array.reserve (num); if (num > (int) event_array.capacity ()) Mem_Error (file.File_ID ()); } } }
void Data_Service::Initialize_Veh_Types (Veh_Type_File &file) { int percent = System_Data_Reserve (VEHICLE_TYPE); if (veh_type_array.capacity () == 0 && percent > 0) { int num = file.Num_Records (); if (percent != 100) { num = (int) ((double) num * percent / 100.0); } if (num > 1) { veh_type_array.reserve (num); if (num > (int) veh_type_array.capacity ()) Mem_Error (file.File_ID ()); } } }
void Data_Service::Initialize_Zones (Zone_File &file) { int percent = System_Data_Reserve (ZONE); if (zone_array.capacity () == 0 && percent > 0) { int num = file.Num_Records (); if (percent != 100) { num = (int) ((double) num * percent / 100.0); } if (num > 1) { zone_array.reserve (num); if (num > (int) zone_array.capacity ()) Mem_Error (file.File_ID ()); } } }
void Data_Service::Initialize_Locations (Location_File &file) { Required_File_Check (file, LINK); int percent = System_Data_Reserve (LOCATION); if (location_array.capacity () == 0 && percent > 0) { int num = file.Num_Records (); if (percent != 100) { num = (int) ((double) num * percent / 100.0); } if (num > 1) { location_array.reserve (num); if (num > (int) location_array.capacity ()) Mem_Error (file.File_ID ()); } } }
void Data_Service::Initialize_Shapes (Shape_File &file) { int percent = System_Data_Reserve (SHAPE); if (shape_array.capacity () == 0 && percent > 0) { int num = file.Num_Records (); if (percent != 100) { num = (int) ((double) num * percent / 100.0); } else { num /= 20; } if (num > 1) { shape_array.reserve (num); if (num > (int) shape_array.capacity ()) Mem_Error (file.File_ID ()); } } }
ExportPlans::ExportPlans (void) : Data_Service (), Select_Service () { Program ("ExportPlans"); Version (7); Title ("Export Plan Data in Various Formats"); System_File_Type required_files [] = { PLAN, END_FILE }; System_File_Type optional_files [] = { LINK, NODE, LOCATION, VEHICLE_TYPE, VEHICLE, END_FILE }; int data_service_keys [] = { SUMMARY_TIME_RANGES, SUMMARY_TIME_INCREMENT, 0 }; int select_service_keys [] = { SELECT_MODES, SELECT_NODES, SELECT_SUBAREA_POLYGON, SELECT_VEHICLE_TYPES, 0 }; Control_Key exportplans_keys [] = { //--- code, key, level, status, type, default, range, help ---- { NEW_VISSIM_XML_FILE, "NEW_VISSIM_XML_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP }, { LOCATION_ZONE_MAP_FILE, "LOCATION_ZONE_MAP_FILE", LEVEL0, OPT_KEY, IN_KEY, "", FILE_RANGE, NO_HELP }, { SUBZONE_WEIGHT_FILE, "SUBZONE_WEIGHT_FILE", LEVEL0, OPT_KEY, IN_KEY, "", FILE_RANGE, NO_HELP }, { NEW_ZONE_LOCATION_FILE, "NEW_ZONE_LOCATION_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP }, END_CONTROL }; const char *reports [] = { "" }; Required_System_Files (required_files); Optional_System_Files (optional_files); Data_Service_Keys (data_service_keys); Select_Service_Keys (select_service_keys); Key_List (exportplans_keys); Report_List (reports); Enable_Partitions (true); Location_XY_Flag (true); vissim_flag = select_flag = map_flag = zone_loc_flag = subzone_flag = false; System_Read_False (PLAN); System_Data_Reserve (PLAN, 0); }
void Data_Service::Initialize_Trips (Trip_File &file) { Required_File_Check (file, LOCATION); Required_File_Check (file, VEHICLE_TYPE); int percent = System_Data_Reserve (TRIP); if (trip_array.capacity () == 0 && percent > 0) { int num = file.Estimate_Records (); if (percent != 100) { num = (int) ((double) num * percent / 100.0); } if (num > 1) { trip_array.reserve (num); if (num > (int) trip_array.capacity ()) Mem_Error (file.File_ID ()); } } }
void Data_Service::Initialize_Lines (Line_File &file) { Required_File_Check (file, TRANSIT_STOP); if (file.Version () > 40) { Required_File_Check (file, VEHICLE_TYPE); } int percent = System_Data_Reserve (TRANSIT_ROUTE); if (line_array.capacity () == 0 && percent > 0) { int num = file.Num_Records () / 25; if (percent != 100) { num = (int) ((double) num * percent / 100.0); } if (num > 1) { line_array.reserve (num); if (num > (int) line_array.capacity ()) Mem_Error (file.File_ID ()); } } }
void Data_Service::Initialize_Connects (Connect_File &file) { Required_File_Check (file, LINK); if (file.Version () <= 40) { Required_File_Check (file, POCKET); } int percent = System_Data_Reserve (CONNECTION); if (connect_array.capacity () == 0 && percent > 0) { int num = file.Num_Records (); if (percent != 100) { num = (int) ((double) num * percent / 100.0); } else if (file.Version () <= 40) { num = (int) (num / 2.25); } if (num > 1) { connect_array.reserve (num); if (num > (int) connect_array.capacity ()) Mem_Error (file.File_ID ()); } } }
PlanCompare::PlanCompare (void) : Data_Service (), Select_Service () { Program ("PlanCompare"); Version (3); Title ("Travel Plan Comparison Utility"); System_File_Type required_files [] = { PLAN, END_FILE }; System_File_Type optional_files [] = { SELECTION, NEW_SELECTION, NEW_PLAN, END_FILE }; int data_service_keys [] = { DAILY_WRAP_FLAG, SUMMARY_TIME_RANGES, SUMMARY_TIME_INCREMENT, PERIOD_CONTROL_POINT, 0 }; int select_service_keys [] = { SELECT_HOUSEHOLDS, SELECT_MODES, SELECT_PURPOSES, SELECT_START_TIMES, SELECT_END_TIMES, SELECT_ORIGINS, SELECT_DESTINATIONS, SELECT_VEHICLE_TYPES, SELECT_TRAVELER_TYPES, SELECT_LINKS, SELECT_NODES, SELECT_SUBAREAS, SELECTION_POLYGON, PERCENT_TIME_DIFFERENCE, MINIMUM_TIME_DIFFERENCE, MAXIMUM_TIME_DIFFERENCE, PERCENT_COST_DIFFERENCE, MINIMUM_COST_DIFFERENCE, MAXIMUM_COST_DIFFERENCE, PERCENT_PATH_DIFFERENCE, MINIMUM_PATH_DIFFERENCE, MAXIMUM_PATH_DIFFERENCE, SELECTION_PERCENTAGE, MAXIMUM_PERCENT_SELECTED, DELETION_FILE, DELETION_FORMAT, DELETE_HOUSEHOLDS, DELETE_MODES, DELETE_TRAVELER_TYPES, 0 }; Control_Key keys [] = { //--- code, key, level, status, type, default, range, help ---- { COMPARE_PLAN_FILE, "COMPARE_PLAN_FILE", LEVEL0, REQ_KEY, IN_KEY, "", PARTITION_RANGE, NO_HELP }, { COMPARE_PLAN_FORMAT, "COMPARE_PLAN_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP }, { COMPARE_GENERALIZED_COSTS, "COMPARE_GENERALIZED_COSTS", LEVEL0, OPT_KEY, BOOL_KEY, "FALSE", BOOL_RANGE, NO_HELP }, { SELECTION_METHOD, "SELECTION_METHOD", LEVEL0, OPT_KEY, TEXT_KEY, "RANDOM", SELECT_METHOD_RANGE, NO_HELP }, { MERGE_PLAN_FILES, "MERGE_PLAN_FILES", LEVEL0, OPT_KEY, BOOL_KEY, "FALSE", BOOL_RANGE, NO_HELP }, { TIME_DISTRIBUTION_MINIMUM, "TIME_DISTRIBUTION_MINIMUM", LEVEL0, OPT_KEY, TIME_KEY, "-60 minutes", "-360..0", NO_HELP }, { TIME_DISTRIBUTION_COUNT, "TIME_DISTRIBUTION_COUNT", LEVEL0, OPT_KEY, INT_KEY, "151", "50..500", NO_HELP }, { TIME_DISTRIBUTION_INCREMENT, "TIME_DISTRIBUTION_INCREMENT", LEVEL0, OPT_KEY, TIME_KEY, "1 minute", "1..60 minutes", NO_HELP }, { COST_DISTRIBUTION_MINIMUM, "COST_DISTRIBUTION_MINIMUM", LEVEL0, OPT_KEY, INT_KEY, "-360 impedance", "-360..0 impedance", NO_HELP }, { COST_DISTRIBUTION_COUNT, "COST_DISTRIBUTION_COUNT", LEVEL0, OPT_KEY, INT_KEY, "151", "50..500", NO_HELP }, { COST_DISTRIBUTION_INCREMENT, "COST_DISTRIBUTION_INCREMENT", LEVEL0, OPT_KEY, INT_KEY, "5 impedance", "1..500", NO_HELP }, { NEW_TIME_DISTRIBUTION_FILE, "NEW_TIME_DISTRIBUTION_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP }, { NEW_COST_DISTRIBUTION_FILE, "NEW_COST_DISTRIBUTION_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP }, { NEW_TRIP_TIME_GAP_FILE, "NEW_TRIP_TIME_GAP_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP }, { NEW_TRIP_COST_GAP_FILE, "NEW_TRIP_COST_GAP_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP }, { NEW_TRIP_MATCH_FILE, "NEW_TRIP_MATCH_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", PARTITION_RANGE, NO_HELP }, { NEW_TRIP_MATCH_FORMAT, "NEW_TRIP_MATCH_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP }, END_CONTROL }; const char *reports [] = { "TOTAL_TIME_DISTRIBUTION", "PERIOD_TIME_DISTRIBUTIONS", "TOTAL_TIME_SUMMARY", "PERIOD_TIME_SUMMARY", "TOTAL_COST_DISTRIBUTION", "PERIOD_COST_DISTRIBUTIONS", "TOTAL_COST_SUMMARY", "PERIOD_COST_SUMMARY", "TRIP_TIME_GAP_REPORT", "TRIP_COST_GAP_REPORT", "" }; Required_System_Files (required_files); Optional_System_Files (optional_files); Data_Service_Keys (data_service_keys); Select_Service_Keys (select_service_keys); Key_List (keys); Report_List (reports); Enable_Partitions (true); #ifdef THREADS Enable_Threads (true); #endif #ifdef MPI_EXE Enable_MPI (true); #endif select_flag = cost_flag = time_sum_flag = cost_sum_flag = time_gap_flag = cost_gap_flag = merge_flag = false; select_parts = time_sort = match_flag = false; method = RANDOM_METHOD; num_trips = num_select = 0; cost_diff.Cost_Flag (true); cost_gap.Cost_Flag (true); System_Read_False (PLAN); System_Data_Reserve (PLAN, 0); }