|
From: subversion c. n. <tra...@li...> - 2018-01-30 21:23:35
|
Revision: 1702
http://sourceforge.net/p/transims/code/1702
Author: davidroden
Date: 2018-01-30 21:23:31 +0000 (Tue, 30 Jan 2018)
Log Message:
-----------
TRANSIMS Version 7.1 -- AECOM Branch 1701
SysLib
Changes were made to the Difference_Data and Trip_Gap_Data tools to increase consistency in the units and terminology used for providing inputs and controlling outputs.
Converge_Service
Control keys for PERCENT_TIME_DIFFERENCE, MINIMUM_TIME_DIFFERENCE, MAXIMUM_TIME_DIFFERENCE, PERCENT_COST_DIFFERENCE, MINIMUM_COST_DIFFERENCE, MAXIMUM_COST_DIFFERENCE, MINIMUM_PATH_TIME_RATIO, MAXIMUM_PATH_TIME_RATIO, MINIMUM_PENALTY_RATIO, and MAXIMUM_PENALTY_RATIO were separated from the MAXIMUM_NUMBER_OF_ITERATIONS key to enable use of these keys in applications that don't involve iterations.
NetMerge 7.1.2
The Lane-Use logic was corrected to use the use_period_array to identify the appropriate match records for lane-use records from the merge file.
PlanCompare 7.1.1
MINIMUM_PATH_DIFFERENCES, TIME_DISTRIBUTION_MINIMUM, TIME_DISTRIBUTION_COUNT, TIME_DISTRIBUTION_INCREMENT, COST_DISTRIBUTION_MINIMUM, COST_DISTRIBUTION_COUNT, COST_DISTRIBUTION_INCREMENT, GENERALIZED_COST_IMPEDANCE, NEW_TIME_DISTRIBUTION_FILE, NEW_TRIP_TIME_GAP_FILE, NEW_COST_DISTRIBUTION_FILE, and NEW_TRIP_COST_GAP_FILE keys were added. 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, and TRIP_COST_GAP_REPORT reports were implemented. Major changes and improvements were included in the PLAN_DIFFERENCE_TYPES report and output file options.
Router 7.1.46
A number of output presentation updates were included.
Modified Paths:
--------------
version7/branches/aecom/Transims70/Converge_Service/Control.cpp
version7/branches/aecom/Transims70/Include/Difference_Data.hpp
version7/branches/aecom/Transims70/Include/Trip_Gap_Data.hpp
version7/branches/aecom/Transims70/NetMerge/Execute.cpp
version7/branches/aecom/Transims70/NetMerge/Merge_Lane_Use.cpp
version7/branches/aecom/Transims70/NetMerge/NetMerge.cpp
version7/branches/aecom/Transims70/NetMerge/NetMerge.hpp
version7/branches/aecom/Transims70/PlanCompare/Compare_Plan.cpp
version7/branches/aecom/Transims70/PlanCompare/Control.cpp
version7/branches/aecom/Transims70/PlanCompare/Execute.cpp
version7/branches/aecom/Transims70/PlanCompare/PlanCompare.cpp
version7/branches/aecom/Transims70/PlanCompare/PlanCompare.hpp
version7/branches/aecom/Transims70/PlanCompare/PlanCompare.vcxproj
version7/branches/aecom/Transims70/PlanCompare/PlanCompare.vcxproj.filters
version7/branches/aecom/Transims70/PlanCompare/Plan_Processing.cpp
version7/branches/aecom/Transims70/PlanCompare/Write_Match.cpp
version7/branches/aecom/Transims70/Router/Iteration_Loop.cpp
version7/branches/aecom/Transims70/Router/Minimize_VHT.cpp
version7/branches/aecom/Transims70/Router/Router.cpp
version7/branches/aecom/Transims70/SysLib/Tools/Difference_Data.cpp
version7/branches/aecom/Transims70/SysLib/Tools/Trip_Gap_Data.cpp
Added Paths:
-----------
version7/branches/aecom/Transims70/PlanCompare/Difference_File.cpp
version7/branches/aecom/Transims70/PlanCompare/Difference_Report.cpp
Modified: version7/branches/aecom/Transims70/Converge_Service/Control.cpp
===================================================================
--- version7/branches/aecom/Transims70/Converge_Service/Control.cpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/Converge_Service/Control.cpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -135,6 +135,11 @@
converge_step_array.push_back (step_data);
}
+ } else if (Num_Converge_Steps () == 0) {
+ step_data.step = max_converge_step = 1;
+ step_data.max_iteration = 1;
+
+ converge_step_array.push_back (step_data);
}
//---- process the step attributes ----
@@ -255,7 +260,7 @@
}
//---- transit gap criteria ----
-
+
if (Control_Key_Status (TRANSIT_CAPACITY_CRITERIA)) {
if (!Control_Key_Empty (TRANSIT_CAPACITY_CRITERIA) && first) {
Print (1);
@@ -265,7 +270,7 @@
}
//---- parking gap criteria ----
-
+
if (Control_Key_Status (PARKING_CAPACITY_CRITERIA)) {
if (System_File_Flag (PARK_DEMAND) || System_File_Flag (NEW_PARK_DEMAND)) {
if (!Control_Key_Empty (PARKING_CAPACITY_CRITERIA) && first) {
@@ -284,220 +289,228 @@
}
Get_Control_List_Groups (RATIO_CONVERGENCE_CRITERIA, ratio_gap_list);
}
+ }
- //---- trip time difference ----
+ //---- trip time difference ----
- if (Control_Key_Status (PERCENT_TIME_DIFFERENCE)) {
- if (!Control_Key_Empty (PERCENT_TIME_DIFFERENCE)) Print (1);
+ if (Control_Key_Status (PERCENT_TIME_DIFFERENCE)) {
+ if (!Control_Key_Empty (PERCENT_TIME_DIFFERENCE)) Print (1);
- Get_Control_List_Groups (PERCENT_TIME_DIFFERENCE, per_time_list);
+ Get_Control_List_Groups (PERCENT_TIME_DIFFERENCE, per_time_list);
- if (per_time_list.size () > 2 || per_time_list [0] != 0.0) {
+ if (per_time_list.size () > 2 || per_time_list [0] != 0.0) {
- //---- minimum time difference ----
+ //---- minimum time difference ----
- if (Control_Key_Status (MINIMUM_TIME_DIFFERENCE)) {
- Get_Control_List_Groups (MINIMUM_TIME_DIFFERENCE, min_time_list);
- }
+ if (Control_Key_Status (MINIMUM_TIME_DIFFERENCE)) {
+ Get_Control_List_Groups (MINIMUM_TIME_DIFFERENCE, min_time_list);
+ }
- //---- maximum time difference ----
+ //---- maximum time difference ----
- if (Control_Key_Status (MAXIMUM_TIME_DIFFERENCE)) {
- Get_Control_List_Groups (MAXIMUM_TIME_DIFFERENCE, max_time_list);
- }
+ if (Control_Key_Status (MAXIMUM_TIME_DIFFERENCE)) {
+ Get_Control_List_Groups (MAXIMUM_TIME_DIFFERENCE, max_time_list);
}
}
+ }
- //---- trip cost difference ----
+ //---- trip cost difference ----
- if (Control_Key_Status (PERCENT_COST_DIFFERENCE)) {
- if (!Control_Key_Empty (PERCENT_COST_DIFFERENCE)) Print (1);
+ if (Control_Key_Status (PERCENT_COST_DIFFERENCE)) {
+ if (!Control_Key_Empty (PERCENT_COST_DIFFERENCE)) Print (1);
- Get_Control_List_Groups (PERCENT_COST_DIFFERENCE, per_cost_list);
+ Get_Control_List_Groups (PERCENT_COST_DIFFERENCE, per_cost_list);
- if (per_cost_list.size () > 2 || per_cost_list [0] != 0.0) {
+ if (per_cost_list.size () > 2 || per_cost_list [0] != 0.0) {
- //---- minimum cost difference ----
+ //---- minimum cost difference ----
- if (Control_Key_Status (MINIMUM_COST_DIFFERENCE)) {
- Get_Control_List_Groups (MINIMUM_COST_DIFFERENCE, min_cost_list);
- }
+ if (Control_Key_Status (MINIMUM_COST_DIFFERENCE)) {
+ Get_Control_List_Groups (MINIMUM_COST_DIFFERENCE, min_cost_list);
+ }
- //---- maximum cost difference ----
+ //---- maximum cost difference ----
- if (Control_Key_Status (MAXIMUM_COST_DIFFERENCE)) {
- Get_Control_List_Groups (MAXIMUM_COST_DIFFERENCE, max_cost_list);
- }
+ if (Control_Key_Status (MAXIMUM_COST_DIFFERENCE)) {
+ Get_Control_List_Groups (MAXIMUM_COST_DIFFERENCE, max_cost_list);
}
}
+ }
- //---- path time ratio ----
+ //---- path time ratio ----
- if (Control_Key_Status (MAXIMUM_PATH_TIME_RATIO)) {
+ if (Control_Key_Status (MAXIMUM_PATH_TIME_RATIO)) {
- //---- minimum path time ratio ----
+ //---- minimum path time ratio ----
- if (Control_Key_Status (MINIMUM_PATH_TIME_RATIO)) {
- Get_Control_List_Groups (MINIMUM_PATH_TIME_RATIO, min_time_ratio_list);
- }
+ Print (1);
+ if (Control_Key_Status (MINIMUM_PATH_TIME_RATIO)) {
+ Get_Control_List_Groups (MINIMUM_PATH_TIME_RATIO, min_time_ratio_list);
+ }
- //---- maximum path time ratio ----
+ //---- maximum path time ratio ----
- if (Control_Key_Status (MAXIMUM_PATH_TIME_RATIO)) {
- Get_Control_List_Groups (MAXIMUM_PATH_TIME_RATIO, max_time_ratio_list);
- }
+ if (Control_Key_Status (MAXIMUM_PATH_TIME_RATIO)) {
+ Get_Control_List_Groups (MAXIMUM_PATH_TIME_RATIO, max_time_ratio_list);
}
+ }
- //---- penalty ratio ----
+ //---- penalty ratio ----
- if (Control_Key_Status (MAXIMUM_PENALTY_RATIO)) {
+ if (Control_Key_Status (MAXIMUM_PENALTY_RATIO)) {
- //---- minimum penalty ratio ----
+ //---- minimum penalty ratio ----
- if (Control_Key_Status (MINIMUM_PENALTY_RATIO)) {
- Get_Control_List_Groups (MINIMUM_PENALTY_RATIO, min_penalty_list);
- }
+ Print (1);
+ if (Control_Key_Status (MINIMUM_PENALTY_RATIO)) {
+ Get_Control_List_Groups (MINIMUM_PENALTY_RATIO, min_penalty_list);
+ }
- //---- maximum penalty ratio ----
+ //---- maximum penalty ratio ----
- if (Control_Key_Status (MAXIMUM_PENALTY_RATIO)) {
- Get_Control_List_Groups (MAXIMUM_PENALTY_RATIO, max_penalty_list);
- }
+ if (Control_Key_Status (MAXIMUM_PENALTY_RATIO)) {
+ Get_Control_List_Groups (MAXIMUM_PENALTY_RATIO, max_penalty_list);
}
+ }
- //---- construct the step groups ----
+ //---- construct the step groups ----
- for (step_itr = converge_step_array.begin (); step_itr != converge_step_array.end (); step_itr++) {
- i = step_itr->step;
+ for (step_itr = converge_step_array.begin (); step_itr != converge_step_array.end (); step_itr++) {
+ i = step_itr->step;
- //---- mininum selection score ----
+ //---- mininum selection score ----
- step_itr->min_select_score = min_score_list.Best (i);
+ step_itr->min_select_score = min_score_list.Best (i);
- //---- maximum percent selected ----
+ //---- maximum percent selected ----
- step_itr->max_percent_select = max_per_list.Best (i);
- step_itr->max_percent_flag = (step_itr->max_percent_select > 0.0 && step_itr->max_percent_select < 100.0);
- step_itr->max_percent_select /= 100.0;
+ step_itr->max_percent_select = max_per_list.Best (i);
+ step_itr->max_percent_flag = (step_itr->max_percent_select > 0.0 && step_itr->max_percent_select < 100.0);
+ step_itr->max_percent_select /= 100.0;
- //---- update all plans ----
+ //---- update all plans ----
- step_itr->update_flag = update_list.Best (i);
+ step_itr->update_flag = update_list.Best (i);
- //---- initial weighting factor ----
+ //---- initial weighting factor ----
- if (min_vht_flag) {
- step_itr->initial_factor = 1.0;
+ if (min_vht_flag) {
+ step_itr->initial_factor = 1.0;
- } else {
- step_itr->initial_factor = init_fac_list.Best (i);
- }
+ } else {
+ step_itr->initial_factor = init_fac_list.Best (i);
+ }
- //---- iteration weighting increment ----
+ //---- iteration weighting increment ----
- step_itr->factor_increment = fac_inc_list.Best (i);
+ step_itr->factor_increment = fac_inc_list.Best (i);
- //---- maximum weighting factor ----
+ //---- maximum weighting factor ----
- step_itr->maximum_factor = max_fac_list.Best (i);
+ step_itr->maximum_factor = max_fac_list.Best (i);
- //---- travel time averaging ----
+ //---- travel time averaging ----
- step_itr->time_averaging = Averaging_Code (time_avg_list.Best (i));
+ step_itr->time_averaging = Averaging_Code (time_avg_list.Best (i));
- //---- dynamic toll averaging ----
+ //---- dynamic toll averaging ----
- step_itr->toll_averaging = Averaging_Code (toll_avg_list.Best (i));
+ step_itr->toll_averaging = Averaging_Code (toll_avg_list.Best (i));
- //---- parking penalty averaging ----
+ //---- parking penalty averaging ----
- step_itr->parking_averaging = Averaging_Code (parking_avg_list.Best (i));
+ step_itr->parking_averaging = Averaging_Code (parking_avg_list.Best (i));
- //---- transit penalty averaging ----
+ //---- transit penalty averaging ----
- step_itr->transit_averaging = Averaging_Code (transit_avg_list.Best (i));
+ step_itr->transit_averaging = Averaging_Code (transit_avg_list.Best (i));
- //---- link gap criteria ----
+ //---- link gap criteria ----
- step_itr->link_gap = link_gap_list.Best (i);
- save_link_gap = (save_link_gap || step_itr->link_gap > 0.0);
+ step_itr->link_gap = link_gap_list.Best (i);
+ save_link_gap = (save_link_gap || step_itr->link_gap > 0.0);
- //---- trip gap criteria ----
+ //---- trip gap criteria ----
- step_itr->trip_gap = trip_gap_list.Best (i);
- save_trip_gap = (save_trip_gap || step_itr->trip_gap > 0.0);
+ step_itr->trip_gap = trip_gap_list.Best (i);
+ save_trip_gap = (save_trip_gap || step_itr->trip_gap > 0.0);
- //---- toll gap criteria ----
+ //---- toll gap criteria ----
- step_itr->toll_gap = toll_gap_list.Best (i);
- save_toll_gap = (save_toll_gap || step_itr->toll_gap > 0.0);
+ step_itr->toll_gap = toll_gap_list.Best (i);
+ save_toll_gap = (save_toll_gap || step_itr->toll_gap > 0.0);
- //---- transit gap criteria ----
+ //---- transit gap criteria ----
- step_itr->transit_gap = transit_gap_list.Best (i);
- save_transit_gap = (save_transit_gap || step_itr->transit_gap > 0.0);
+ step_itr->transit_gap = transit_gap_list.Best (i);
+ save_transit_gap = (save_transit_gap || step_itr->transit_gap > 0.0);
- //---- parking gap criteria ----
+ //---- parking gap criteria ----
- step_itr->parking_gap = parking_gap_list.Best (i);
- save_parking_gap = (save_parking_gap || step_itr->parking_gap > 0.0);
+ step_itr->parking_gap = parking_gap_list.Best (i);
+ save_parking_gap = (save_parking_gap || step_itr->parking_gap > 0.0);
- //---- ratio gap criteria ----
+ //---- ratio gap criteria ----
- step_itr->ratio_gap = ratio_gap_list.Best (i);
- save_ratio_gap = (save_ratio_gap || step_itr->ratio_gap > 0.0);
+ step_itr->ratio_gap = ratio_gap_list.Best (i);
+ save_ratio_gap = (save_ratio_gap || step_itr->ratio_gap > 0.0);
- //---- trip time difference ----
+ //---- trip time difference ----
- step_itr->percent_time_diff = per_time_list.Best (i);
- step_itr->time_diff_flag = (step_itr->percent_time_diff > 0.0);
- step_itr->percent_time_diff /= 100.0;
+ step_itr->percent_time_diff = per_time_list.Best (i);
+ step_itr->time_diff_flag = (step_itr->percent_time_diff > 0.0);
+ step_itr->percent_time_diff /= 100.0;
- //---- minimum time difference ----
+ //---- minimum time difference ----
- step_itr->min_time_diff = min_time_list.Best (i);
+ step_itr->min_time_diff = min_time_list.Best (i);
- //---- maximum time difference ----
+ //---- maximum time difference ----
- step_itr->max_time_diff = max_time_list.Best (i);
+ step_itr->max_time_diff = max_time_list.Best (i);
- step_itr->max_min_time_diff = step_itr->max_time_diff - step_itr->min_time_diff;
- if (step_itr->max_min_time_diff < 1) step_itr->max_min_time_diff = 1;
+ step_itr->max_min_time_diff = step_itr->max_time_diff - step_itr->min_time_diff;
+ if (step_itr->max_min_time_diff < 1) step_itr->max_min_time_diff = 1;
- //---- trip cost difference ----
+ //---- trip cost difference ----
- step_itr->percent_cost_diff = per_cost_list.Best (i);
- step_itr->cost_diff_flag = (step_itr->percent_cost_diff > 0.0);
- step_itr->percent_cost_diff /= 100.0;
+ step_itr->percent_cost_diff = per_cost_list.Best (i);
+ step_itr->cost_diff_flag = (step_itr->percent_cost_diff > 0.0);
+ step_itr->percent_cost_diff /= 100.0;
- //---- minimum cost difference ----
+ //---- minimum cost difference ----
- step_itr->min_cost_diff = min_cost_list.Best (i);
+ step_itr->min_cost_diff = Round (min_cost_list.Best (i));
- //---- maximum cost difference ----
+ //---- maximum cost difference ----
- step_itr->max_cost_diff = max_cost_list.Best (i);
+ step_itr->max_cost_diff = Round (max_cost_list.Best (i));
- step_itr->max_min_cost_diff = step_itr->max_cost_diff - step_itr->min_cost_diff;
- if (step_itr->max_min_cost_diff < 1) step_itr->max_min_cost_diff = 1;
+ step_itr->max_min_cost_diff = step_itr->max_cost_diff - step_itr->min_cost_diff;
+ if (step_itr->max_min_cost_diff < 1) step_itr->max_min_cost_diff = 1;
- //---- path time ratio ----
+ //---- path time ratio ----
- step_itr->max_time_ratio = DTOI (max_time_ratio_list.Best (i) * 100);
- step_itr->min_time_ratio = DTOI (min_time_ratio_list.Best (i) * 100);
- step_itr->time_ratio_flag = (step_itr->max_time_ratio > 100);
- step_itr->max_min_time_ratio = step_itr->max_time_ratio - step_itr->min_time_ratio;
- if (step_itr->max_min_time_ratio < 1) step_itr->max_min_time_ratio = 1;
+ step_itr->max_time_ratio = DTOI (max_time_ratio_list.Best (i) * 100);
+ step_itr->min_time_ratio = DTOI (min_time_ratio_list.Best (i) * 100);
+ step_itr->time_ratio_flag = (step_itr->max_time_ratio > 100);
+ step_itr->max_min_time_ratio = step_itr->max_time_ratio - step_itr->min_time_ratio;
+ if (step_itr->max_min_time_ratio < 1) step_itr->max_min_time_ratio = 1;
- //---- penalty ratio ----
+ //---- penalty ratio ----
- step_itr->max_penalty_ratio = DTOI (max_penalty_list.Best (i) * 100);
- step_itr->min_penalty_ratio = DTOI (min_penalty_list.Best (i) * 100);
- step_itr->penalty_ratio_flag = (step_itr->max_penalty_ratio > 0);
- step_itr->max_min_penalty_ratio = step_itr->max_penalty_ratio - step_itr->min_penalty_ratio;
- if (step_itr->max_min_penalty_ratio < 1) step_itr->max_min_penalty_ratio = 1;
- }
+ step_itr->max_penalty_ratio = DTOI (max_penalty_list.Best (i) * 100);
+ step_itr->min_penalty_ratio = DTOI (min_penalty_list.Best (i) * 100);
+ step_itr->penalty_ratio_flag = (step_itr->max_penalty_ratio > 0);
+ step_itr->max_min_penalty_ratio = step_itr->max_penalty_ratio - step_itr->min_penalty_ratio;
+ if (step_itr->max_min_penalty_ratio < 1) step_itr->max_min_penalty_ratio = 1;
+ }
+ step_itr = converge_step_array.begin ();
+ //---- output options ----
+
+ if (Num_Converge_Steps () > 1 || step_flag) {
+
//---- new link convergence file ----
key = Get_Control_String (NEW_LINK_CONVERGENCE_FILE);
@@ -731,14 +744,7 @@
save_step_flag = Get_Control_Flag (SAVE_STEP_RESULTS);
}
}
-
- } else if (Num_Converge_Steps () == 0) {
- step_data.step = max_converge_step = 1;
- step_data.max_iteration = 1;
-
- converge_step_array.push_back (step_data);
}
- step_itr = converge_step_array.begin ();
//---- destination capacity field ----
Modified: version7/branches/aecom/Transims70/Include/Difference_Data.hpp
===================================================================
--- version7/branches/aecom/Transims70/Include/Difference_Data.hpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/Include/Difference_Data.hpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -27,7 +27,7 @@
bool Report_Flags (bool total_distrib, bool period_distrib, bool total_sum, bool period_sum);
bool Set_Periods (Time_Periods &periods);
- void Set_Resolution (int min_diff = 0, int num_distb = 0, double units_fac = 0);
+ void Set_Resolution (int min_diff = 0, int num_distb = 0, double increment = 0);
bool Open_Distribution (string filename);
bool Output_Flag (void) { return (output_flag); }
@@ -34,7 +34,7 @@
bool Active_Flag (void) { return (active_flag); }
bool Cost_Flag (void) { return (cost_flag); }
- void Cost_Flag (bool flag);
+ void Cost_Flag (bool flag, double fac);
void Add_Trip (Dtime tod, double current, double base);
@@ -63,7 +63,7 @@
int num_periods, _period;
int num_distribution, min_difference;
- double scaling_factor, units_factor;
+ double scaling_factor, units_factor, increment;
bool total_distrib, period_distrib, total_sum, period_sum;
bool output_flag, cost_flag, period_flag, active_flag;
Modified: version7/branches/aecom/Transims70/Include/Trip_Gap_Data.hpp
===================================================================
--- version7/branches/aecom/Transims70/Include/Trip_Gap_Data.hpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/Include/Trip_Gap_Data.hpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -31,7 +31,7 @@
bool Active_Flag (void) { return (active_flag); }
bool Cost_Flag (void) { return (cost_flag); }
- void Cost_Flag (bool flag) { cost_flag = flag; }
+ void Cost_Flag (bool flag, double fac = 0);
void Add_Trip_Gap_Data (Dtime tod, double input, double compare);
void Write_Trip_Gap_File (void);
@@ -52,6 +52,7 @@
int num_periods, period;
bool gap_report, output_flag, cost_flag, period_flag, active_flag;
+ double units_factor;
Gap_Array gap_array;
Modified: version7/branches/aecom/Transims70/NetMerge/Execute.cpp
===================================================================
--- version7/branches/aecom/Transims70/NetMerge/Execute.cpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/NetMerge/Execute.cpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -49,12 +49,13 @@
//---- merge the link files ----
+ max_dir_index = (int) dir_array.size ();
int num_link = (int) link_array.size ();
Read_Links (link_file);
Print (1, "Number of Merge Link Records = ") << ((int) link_array.size () - num_link);
-
+
//---- merge the pocket file ----
if (pocket_flag) {
Modified: version7/branches/aecom/Transims70/NetMerge/Merge_Lane_Use.cpp
===================================================================
--- version7/branches/aecom/Transims70/NetMerge/Merge_Lane_Use.cpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/NetMerge/Merge_Lane_Use.cpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -10,10 +10,13 @@
void NetMerge::Merge_Lane_Use (void)
{
- int first_index, num;
+ int first_index, num, i, rec;
+ bool found;
Lane_Use_Data lane_use_rec, *lane_use_ptr;
Dir_Data *dir_ptr;
+ Lane_Use_Period *period_ptr;
+ Link_Dir_Data *use_index;
Show_Message (String ("Reading %s -- Record") % lane_use_file.File_Type ());
Set_Progress ();
@@ -24,34 +27,50 @@
lane_use_rec.Clear ();
if (Get_Lane_Use_Data (lane_use_file, lane_use_rec)) {
+ if (lane_use_rec.Dir_Index () >= max_dir_index) continue;
dir_ptr = &dir_array [lane_use_rec.Dir_Index ()];
first_index = dir_ptr->First_Lane_Use ();
if (first_index < 0) continue;
+ found = false;
- for (num = first_index; num >= 0; num = lane_use_ptr->Next_Index ()) {
- lane_use_ptr = &lane_use_array [num];
+ for (;; first_index++) {
+ if (first_index >= use_period_array.size ()) break;
- if (lane_use_rec.Low_Lane () != lane_use_ptr->Low_Lane ()) continue;
- if (lane_use_rec.High_Lane () != lane_use_ptr->High_Lane ()) continue;
- if (lane_use_rec.Type () != lane_use_ptr->Type ()) continue;
- if (lane_use_rec.Use () != lane_use_ptr->Use ()) continue;
- if (lane_use_rec.Min_Veh_Type () != lane_use_ptr->Min_Veh_Type ()) continue;
- if (lane_use_rec.Max_Veh_Type () != lane_use_ptr->Max_Veh_Type ()) continue;
- if (lane_use_rec.Min_Traveler () != lane_use_ptr->Min_Traveler ()) continue;
- if (lane_use_rec.Start () != lane_use_ptr->Start ()) continue;
- if (lane_use_rec.End () != lane_use_ptr->End ()) continue;
- if (lane_use_rec.Offset () != lane_use_ptr->Offset ()) continue;
- if (lane_use_rec.Length () != lane_use_ptr->Length ()) continue;
- if (lane_use_rec.Min_Traveler () != lane_use_ptr->Min_Traveler ()) continue;
+ period_ptr = &use_period_array [first_index];
- lane_use_ptr->Toll (lane_use_rec.Toll ());
- lane_use_ptr->Min_Rate (lane_use_rec.Min_Rate ());
- lane_use_ptr->Max_Rate (lane_use_rec.Max_Rate ());
+ num = period_ptr->Records ();
+ rec = period_ptr->Index ();
- lane_use_ptr->Tolls () = lane_use_rec.Tolls ();
- break;
+ if (rec >= (int) use_period_index.size ()) continue;
+
+ for (i = 0; i < num; i++, rec++) {
+ use_index = &use_period_index [rec];
+ lane_use_ptr = &lane_use_array [use_index->Link ()];
+
+ if (lane_use_rec.Low_Lane () != lane_use_ptr->Low_Lane ()) continue;
+ if (lane_use_rec.High_Lane () != lane_use_ptr->High_Lane ()) continue;
+ if (lane_use_rec.Type () != lane_use_ptr->Type ()) continue;
+ if (lane_use_rec.Use () != lane_use_ptr->Use ()) continue;
+ if (lane_use_rec.Min_Veh_Type () != lane_use_ptr->Min_Veh_Type ()) continue;
+ if (lane_use_rec.Max_Veh_Type () != lane_use_ptr->Max_Veh_Type ()) continue;
+ if (lane_use_rec.Min_Traveler () != lane_use_ptr->Min_Traveler ()) continue;
+ if (lane_use_rec.Start () != lane_use_ptr->Start ()) continue;
+ if (lane_use_rec.End () != lane_use_ptr->End ()) continue;
+ if (lane_use_rec.Offset () != lane_use_ptr->Offset ()) continue;
+ if (lane_use_rec.Length () != lane_use_ptr->Length ()) continue;
+ if (lane_use_rec.Min_Traveler () != lane_use_ptr->Min_Traveler ()) continue;
+
+ lane_use_ptr->Toll (lane_use_rec.Toll ());
+ lane_use_ptr->Min_Rate (lane_use_rec.Min_Rate ());
+ lane_use_ptr->Max_Rate (lane_use_rec.Max_Rate ());
+
+ lane_use_ptr->Tolls () = lane_use_rec.Tolls ();
+ found = true;
+ break;
+ }
+ if (found) break;
}
}
}
Modified: version7/branches/aecom/Transims70/NetMerge/NetMerge.cpp
===================================================================
--- version7/branches/aecom/Transims70/NetMerge/NetMerge.cpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/NetMerge/NetMerge.cpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -11,7 +11,7 @@
NetMerge::NetMerge (void) : Data_Service ()
{
Program ("NetMerge");
- Version (1);
+ Version (2);
Title ("Merge Two Networks");
System_File_Type required_files [] = {
@@ -65,6 +65,8 @@
sign_flag = signal_flag = timing_flag = phasing_flag = detector_flag = performance_flag = turn_delay_flag = false;
zone_flag = false;
+ max_dir_index = 0;
+
System_Read_False (PERFORMANCE);
System_Read_False (TURN_DELAY);
}
Modified: version7/branches/aecom/Transims70/NetMerge/NetMerge.hpp
===================================================================
--- version7/branches/aecom/Transims70/NetMerge/NetMerge.hpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/NetMerge/NetMerge.hpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -32,6 +32,7 @@
private:
//enum NetMerge_Reports { REPORT = 1, };
+ int max_dir_index;
bool shape_flag, pocket_flag, lane_use_flag, location_flag, parking_flag, access_flag, stop_flag, line_flag, connect_flag;
bool sign_flag, signal_flag, timing_flag, phasing_flag, detector_flag, performance_flag, turn_delay_flag, merge_flag;
bool zone_flag;
Modified: version7/branches/aecom/Transims70/PlanCompare/Compare_Plan.cpp
===================================================================
--- version7/branches/aecom/Transims70/PlanCompare/Compare_Plan.cpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/PlanCompare/Compare_Plan.cpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -10,13 +10,17 @@
void PlanCompare::Plan_Processing::Compare_Plan (Plan_Data &plan)
{
+ Dtime tod, time1, time2, tim_diff;
+ int imp1, imp2, imp_diff, ratio, index, legs, select;
+ double prob;
+ bool flag, found;
+
Trip_Index trip_index;
Trip_Map_Itr map_itr;
Plan_Data *plan_ptr;
-
- bool start_flag, end_flag, dur_flag, org_flag, des_flag, org_type_flag, des_type_flag;
- bool purp_flag, mode_flag, const_flag, veh_flag, veh_type_flag, typ_flag;
- bool flag;
+ Plan_Leg_Itr leg1_itr, leg2_itr;
+ String string;
+ Plan_Skim_Data skim_data;
plan.Get_Index (trip_index);
@@ -23,52 +27,235 @@
map_itr = exe->plan_trip_map.find (trip_index);
if (map_itr == exe->plan_trip_map.end ()) {
- new_trips.push_back (trip_index);
+ if (thread_flag) {
+ new_trips.push_back (trip_index);
+ } else {
+ exe->new_trips.push_back (trip_index);
+ }
return;
}
- plan_ptr = &exe->plan_array [map_itr->second];
+ index = map_itr->second;
+ plan_ptr = &exe->plan_array [index];
+
+ //---- difference and gap measures ----
+
+ time1 = plan_ptr->Total_Time ();
+ time2 = plan.Total_Time ();
+
+ if (exe->sum_periods.Period_Control_Point () == MID_TRIP) {
+ tod = (plan.Arrive () + plan.Depart ()) >> 1;
+ } else if (exe->sum_periods.Period_Control_Point () == TRIP_START) {
+ tod = plan.Depart ();
+ } else {
+ tod = plan.Arrive ();
+ }
+ imp1 = Resolve (plan_ptr->Impedance ());
+ imp2 = Resolve (plan.Impedance ());
+
+ //---- save report data ----
+
+ if (exe->time_sum_flag) {
+ time_diff->Add_Trip (tod, time1.Minutes (), time2.Minutes ());
+ }
+ if (exe->cost_sum_flag) {
+ cost_diff->Add_Trip (tod, imp1, imp2);
+ }
+
+ //---- save gap data ----
+
+ if (exe->time_gap_flag) {
+ time_gap->Add_Trip_Gap_Data (tod, time1.Minutes (), time2.Minutes ());
+ }
+ if (exe->cost_gap_flag) {
+ cost_gap->Add_Trip_Gap_Data (tod, imp1, imp2);
+ }
+
+ //---- flag differences ----
+
+ string.assign (NUM_DIFFS, '0');
+
plan_ptr->Select (1);
+ flag = false;
+ select = 1;
- start_flag = (plan_ptr->Start () != plan.Start ());
- end_flag = (plan_ptr->End () != plan.End ());
- dur_flag = (plan_ptr->Duration () != plan.Duration ());
- org_flag = (plan_ptr->Origin () != plan.Origin ());
- des_flag = (plan_ptr->Destination () != plan.Destination ());
- org_type_flag = (plan_ptr->Org_Type () != plan.Org_Type ());
- des_type_flag = (plan_ptr->Des_Type () != plan.Des_Type ());
- purp_flag = (plan_ptr->Purpose () != plan.Purpose ());
- mode_flag = (plan_ptr->Mode () != plan.Mode ());
- const_flag = (plan_ptr->Constraint () != plan.Constraint ());
- veh_flag = (plan_ptr->Vehicle () != plan.Vehicle ());
- veh_type_flag = (plan_ptr->Veh_Type () != plan.Veh_Type ());
- typ_flag = (plan_ptr->Type () != plan.Type ());
+ if (plan_ptr->Start () != plan.Start ()) {
+ string [0] = '1';
+ flag = true;
+ }
+ if (plan_ptr->End () != plan.End ()) {
+ string [1] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Duration () != plan.Duration ()) {
+ string [2] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Origin () != plan.Origin ()) {
+ string [3] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Destination () != plan.Destination ()) {
+ string [4] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Org_Type () != plan.Org_Type ()) {
+ string [5] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Des_Type () != plan.Des_Type ()) {
+ string [6] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Purpose () != plan.Purpose ()) {
+ string [7] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Mode () != plan.Mode ()) {
+ string [8] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Constraint () != plan.Constraint ()) {
+ string [9] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Vehicle () != plan.Vehicle ()) {
+ string [10] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Veh_Type () != plan.Veh_Type ()) {
+ string [11] = '1';
+ flag = true;
+ }
+ if (plan_ptr->Type () != plan.Type ()) {
+ string [12] = '1';
+ flag = true;
+ }
- flag = (plan_ptr->Impedance () != plan.Impedance ());
+ if (flag) select = 2;
- if (start_flag || end_flag || dur_flag || org_flag || des_flag || org_type_flag || des_type_flag ||
- purp_flag || mode_flag || const_flag || veh_flag || veh_type_flag || typ_flag || flag) {
+ //---- time difference ----
- plan_ptr->Select (2);
+ if (exe->step_itr->time_diff_flag) {
+ tim_diff = time1 - time2;
+ if (tim_diff > exe->step_itr->max_time_diff) {
+ string [13] = '1';
+ flag = true;
+ } else if (tim_diff >= exe->step_itr->min_time_diff && time2 > 0) {
+ prob = (double) tim_diff / time2;
+ if (prob >= exe->step_itr->percent_time_diff) {
+ if (exe->step_itr->max_min_time_diff > 1) {
+ string [13] = '1';
+ flag = true;
+ }
+ }
+ }
+ }
+
+ //---- cost-impedance difference ----
+
+ if (exe->step_itr->cost_diff_flag) {
+ imp_diff = imp1 - imp2;
+
+ if (imp_diff > exe->step_itr->max_cost_diff) {
+ string [14] = '1';
+ flag = true;
+ } else if (imp_diff >= exe->step_itr->min_cost_diff && imp2 > 0) {
+ prob = (double) imp_diff / imp2;
+ if (prob >= exe->step_itr->percent_cost_diff) {
+ string [14] = '1';
+ flag = true;
+ }
+ }
+ }
+
+ //---- time ratio selection ----
+
+ if (exe->step_itr->time_ratio_flag) {
+ ratio = plan.Time_Ratio ();
+
+ if (ratio > exe->step_itr->max_time_ratio) {
+ string [15] = '1';
+ flag = true;
+ } else if (ratio >= exe->step_itr->min_time_ratio) {
+ string [15] = '1';
+ flag = true;
+ }
+ }
+
+ //---- penalty ratio selection ----
+
+ if (exe->step_itr->penalty_ratio_flag) {
+ ratio = plan.Penalty_Ratio ();
+
+ if (ratio > exe->step_itr->max_penalty_ratio) {
+ string [16] = '1';
+ flag = true;
+ } else if (ratio >= exe->step_itr->min_penalty_ratio) {
+ string [16] = '1';
+ flag = true;
+ }
+ }
+
+ //---- path difference ----
+
+ if (exe->min_path_legs > 0) {
+ legs = abs ((int) plan_ptr->size () - (int) plan.size ());
+
+ if (legs >= exe->min_path_legs) {
+ string [17] = '1';
+ flag = true;
+ } else {
+ legs = 0;
+
+ for (leg1_itr = plan_ptr->begin (); leg1_itr != plan_ptr->end (); leg1_itr++) {
+ found = false;
+
+ for (leg2_itr = plan.begin (); leg2_itr != plan.end (); leg2_itr++) {
+ if (leg1_itr->Type () == leg2_itr->Type () && leg1_itr->Mode () == leg2_itr->Mode () && leg1_itr->ID () == leg2_itr->ID ()) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ if (++legs >= exe->min_path_legs) {
+ string [17] = '1';
+ flag = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ //---- output the differences ----
+
+ if (flag) {
+ if (flag && select == 1) select = 3;
+
+ plan_ptr->Select (select);
+
if (thread_flag) {
- return;
+ difference_map.insert (Str_Map_Data (index, string));
+ } else {
+ if (exe->diff_report) {
+ exe->Difference_Report (trip_index, string);
+ }
+ if (exe->diff_file_flag) {
+ exe->Difference_File (trip_index, string);
+ }
}
- exe->Write (1, String ("Plan %d-%d-%d-%d Different") % trip_index.Household () % trip_index.Person () % trip_index.Tour () % trip_index.Trip ());
+ if (exe->match_flag) {
+ skim_data.Put_Data (plan);
+ skim_data.Num_Legs ((int) plan.size ());
- if (start_flag) exe->Write (0, " Start");
- if (end_flag) exe->Write (0, " End");
- if (dur_flag) exe->Write (0, " Duration");
- if (org_flag) exe->Write (0, " Origin");
- if (des_flag) exe->Write (0, " Destination");
- if (org_type_flag) exe->Write (0, " Org_Type");
- if (des_type_flag) exe->Write (0, " Des_Type");
- if (purp_flag) exe->Write (0, " Purpose");
- if (mode_flag) exe->Write (0, " Mode");
- if (const_flag) exe->Write (0, " Constraint");
- if (veh_flag) exe->Write (0, " Vehicle");
- if (veh_type_flag) exe->Write (0, " Veh_Type");
- if (typ_flag) exe->Write (0, " Type");
- if (flag) exe->Write (0, " Impedance");
+ MAIN_LOCK
+ index = (int) exe->plan_skim_array.size ();
+ if (exe->plan_skim_map.insert (Trip_Map_Data (trip_index, index)).second) {
+ exe->plan_skim_array.push_back (skim_data);
+ }
+ END_LOCK
+ }
}
}
Modified: version7/branches/aecom/Transims70/PlanCompare/Control.cpp
===================================================================
--- version7/branches/aecom/Transims70/PlanCompare/Control.cpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/PlanCompare/Control.cpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -11,6 +11,9 @@
void PlanCompare::Program_Control (void)
{
String key;
+ Dtime time_inc;
+ int min_time, time_count, min_cost, cost_count;
+ double cost_inc, units;
//---- create the network files ----
@@ -19,8 +22,8 @@
thread_flag = (Num_Threads () > 1);
plan_file = System_Plan_File ();
- new_plan_flag = System_File_Flag (NEW_PLAN);
- new_plan_file = System_Plan_File (true);
+ match_flag = System_File_Flag (NEW_PLAN_SKIM);
+ new_skim_file = System_Plan_Skim_File (true);
new_select_flag = System_File_Flag (NEW_SELECTION);
@@ -51,60 +54,127 @@
compare_file.Open ();
}
- //---- compare generalized costs ----
+ //---- minimum path differences ----
- cost_flag = Get_Control_Flag (COMPARE_GENERALIZED_COSTS);
+ min_path_legs = Get_Control_Flag (MINIMUM_PATH_DIFFERENCES);
//---- selection method ----
- method = Select_Method_Code (Get_Control_Text (SELECTION_METHOD));
+// method = Select_Method_Code (Get_Control_Text (SELECTION_METHOD));
- //---- new trip match file ----
+ //---- new difference types file ----
- key = Get_Control_String (NEW_TRIP_MATCH_FILE);
+ key = Get_Control_String (NEW_DIFFERENCE_TYPES_FILE);
if (!key.empty ()) {
Print (1);
- match_file.File_Type ("New Trip Match File");
- match_file.Filename (Project_Filename (key));
- match_file.File_Access (CREATE);
+ difference_file.File_Type ("New Difference Types File");
+ difference_file.Filename (Project_Filename (key));
+ difference_file.File_Access (CREATE);
- key = Get_Control_String (NEW_TRIP_MATCH_FORMAT);
+ key = Get_Control_String (NEW_DIFFERENCE_TYPES_FORMAT);
if (!key.empty ()) {
- match_file.Dbase_Format (key);
+ difference_file.Dbase_Format (key);
}
- match_file.Open ();
- match_flag = true;
+ difference_file.Add_Field ("HHOLD", DB_INTEGER, 4, NO_UNITS, true);
+ difference_file.Add_Field ("PERSON", DB_INTEGER, 2, NO_UNITS, true);
+ difference_file.Add_Field ("TOUR", DB_INTEGER, 1, NO_UNITS, true);
+ difference_file.Add_Field ("TRIP", DB_INTEGER, 1, NO_UNITS, true);
+
+ difference_file.Add_Field ("START", DB_INTEGER, 1);
+ difference_file.Add_Field ("END", DB_INTEGER, 1);
+ difference_file.Add_Field ("DURATION", DB_INTEGER, 1);
+ difference_file.Add_Field ("ORIGIN", DB_INTEGER, 1);
+ difference_file.Add_Field ("DESTINATION", DB_INTEGER, 1);
+ difference_file.Add_Field ("ORG_TYPE", DB_INTEGER, 1);
+ difference_file.Add_Field ("DES_TYPE", DB_INTEGER, 1);
+ difference_file.Add_Field ("PURPOSE", DB_INTEGER, 1);
+ difference_file.Add_Field ("MODE", DB_INTEGER, 1);
+ if (difference_file.Dbase_Format () == SQLITE3) {
+ difference_file.Add_Field ("CONTROL", DB_INTEGER, 1);
+ } else {
+ difference_file.Add_Field ("CONSTRAINT", DB_INTEGER, 1);
+ }
+ difference_file.Add_Field ("VEHICLE", DB_INTEGER, 1);
+ difference_file.Add_Field ("VEH_TYPE", DB_INTEGER, 1);
+ difference_file.Add_Field ("TYPE", DB_INTEGER, 1);
+
+ difference_file.Add_Field ("TIME", DB_INTEGER, 1);
+ difference_file.Add_Field ("IMPEDANCE", DB_INTEGER, 1);
+ difference_file.Add_Field ("TIME_RATIO", DB_INTEGER, 1);
+ difference_file.Add_Field ("PENALTY", DB_INTEGER, 1);
+ difference_file.Add_Field ("PATH", DB_INTEGER, 1);
+
+ difference_file.Open ();
+ diff_file_flag = true;
}
+ //---- time distribution parameters ----
+
+ Print (1);
+ min_time = Get_Control_Integer (TIME_DISTRIBUTION_MINIMUM);
+ time_count = Get_Control_Integer (TIME_DISTRIBUTION_COUNT);
+ time_inc = Get_Control_Time (TIME_DISTRIBUTION_INCREMENT);
+
+ time_diff.Set_Resolution (min_time, time_count, time_inc.Minutes ());
+
+ //---- cost distribution parameters ----
+
+ min_cost = Get_Control_Integer (COST_DISTRIBUTION_MINIMUM);
+ cost_count = Get_Control_Integer (COST_DISTRIBUTION_COUNT);
+ cost_inc = Get_Control_Double (COST_DISTRIBUTION_INCREMENT);
+ units = Get_Control_Double (GENERALIZED_COST_IMPEDANCE);
+
+ cost_diff.Cost_Flag (true, units);
+ cost_diff.Set_Resolution (min_cost, cost_count, cost_inc);
+
+ //---- new time distribution file ----
+
+ time_diff.Open_Distribution (Get_Control_String (NEW_TIME_DISTRIBUTION_FILE));
+
+ //---- new trip time gap file ----
+
+ time_gap.Open_Trip_Gap_File (Get_Control_String (NEW_TRIP_TIME_GAP_FILE));
+
+ //---- new time distribution file ----
+
+ cost_diff.Open_Distribution (Get_Control_String (NEW_COST_DISTRIBUTION_FILE));
+
+ //---- new trip time gap file ----
+
+ cost_gap.Cost_Flag (true, units);
+ cost_gap.Open_Trip_Gap_File (Get_Control_String (NEW_TRIP_COST_GAP_FILE));
+
//---- write the report names ----
List_Reports ();
- ////---- set report flags ----
+ diff_report = Report_Flag (DIFF_TYPES);
- //time_sum_flag = time_diff.Report_Flags (Report_Flag (TOTAL_TIME), Report_Flag (PERIOD_TIME),
- // Report_Flag (TOT_TIME_SUM), Report_Flag (PER_TIME_SUM));
+ //---- set report flags ----
- //cost_sum_flag = cost_diff.Report_Flags (Report_Flag (TOTAL_COST), Report_Flag (PERIOD_COST),
- // Report_Flag (TOT_COST_SUM), Report_Flag (PER_COST_SUM));
+ time_sum_flag = time_diff.Report_Flags (Report_Flag (TOTAL_TIME), Report_Flag (PERIOD_TIME),
+ Report_Flag (TOT_TIME_SUM), Report_Flag (PER_TIME_SUM));
- //if (time_diff.Output_Flag () || Report_Flag (PERIOD_TIME) || Report_Flag (PER_TIME_SUM)) {
- // time_diff.Set_Periods (sum_periods);
- // time_sum_flag = true;
- //}
- //if (cost_diff.Output_Flag () || Report_Flag (PERIOD_COST) || Report_Flag (PER_COST_SUM)) {
- // cost_diff.Set_Periods (sum_periods);
- // cost_sum_flag = true;
- //}
- //if (time_gap.Output_Flag () || Report_Flag (TRP_TIME_GAP)) {
- // time_gap.Report_Flags (Report_Flag (TRP_TIME_GAP));
- // time_gap.Set_Periods (sum_periods);
- // time_gap_flag = true;
- //}
- //if (cost_gap.Output_Flag () || Report_Flag (TRP_COST_GAP)) {
- // cost_gap.Report_Flags (Report_Flag (TRP_COST_GAP));
- // cost_gap.Set_Periods (sum_periods);
- // cost_gap_flag = true;
- //}
+ cost_sum_flag = cost_diff.Report_Flags (Report_Flag (TOTAL_COST), Report_Flag (PERIOD_COST),
+ Report_Flag (TOT_COST_SUM), Report_Flag (PER_COST_SUM));
+
+ if (time_diff.Output_Flag () || Report_Flag (PERIOD_TIME) || Report_Flag (PER_TIME_SUM)) {
+ time_diff.Set_Periods (sum_periods);
+ time_sum_flag = true;
+ }
+ if (cost_diff.Output_Flag () || Report_Flag (PERIOD_COST) || Report_Flag (PER_COST_SUM)) {
+ cost_diff.Set_Periods (sum_periods);
+ cost_sum_flag = true;
+ }
+ if (time_gap.Output_Flag () || Report_Flag (TRP_TIME_GAP)) {
+ time_gap.Report_Flags (Report_Flag (TRP_TIME_GAP));
+ time_gap.Set_Periods (sum_periods);
+ time_gap_flag = true;
+ }
+ if (cost_gap.Output_Flag () || Report_Flag (TRP_COST_GAP)) {
+ cost_gap.Report_Flags (Report_Flag (TRP_COST_GAP));
+ cost_gap.Set_Periods (sum_periods);
+ cost_gap_flag = true;
+ }
}
Added: version7/branches/aecom/Transims70/PlanCompare/Difference_File.cpp
===================================================================
--- version7/branches/aecom/Transims70/PlanCompare/Difference_File.cpp (rev 0)
+++ version7/branches/aecom/Transims70/PlanCompare/Difference_File.cpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -0,0 +1,39 @@
+//*********************************************************
+// Difference_File.cpp - Write the Difference File
+//*********************************************************
+
+#include "PlanCompare.hpp"
+
+//---------------------------------------------------------
+// Difference_File
+//---------------------------------------------------------
+
+void PlanCompare::Difference_File (Trip_Index &trip_index, String &string)
+{
+ difference_file.Put_Field (0, trip_index.Household ());
+ difference_file.Put_Field (1, trip_index.Person ());
+ difference_file.Put_Field (2, trip_index.Tour ());
+ difference_file.Put_Field (3, trip_index.Trip ());
+
+ difference_file.Put_Field (4, string [0] - '0'); //----- Start -----
+ difference_file.Put_Field (5, string [1] - '0'); //----- End -----
+ difference_file.Put_Field (6, string [2] - '0'); //----- Duration -----
+ difference_file.Put_Field (7, string [3] - '0'); //----- Origin -----
+ difference_file.Put_Field (8, string [4] - '0'); //----- Destination -----
+ difference_file.Put_Field (9, string [5] - '0'); //----- Org_Type -----
+ difference_file.Put_Field (10, string [6] - '0'); //----- Des_Type -----
+ difference_file.Put_Field (11, string [7] - '0'); //----- Purpose -----
+ difference_file.Put_Field (12, string [8] - '0'); //----- Mode -----
+ difference_file.Put_Field (13, string [9] - '0'); //----- Constraint -----
+ difference_file.Put_Field (14, string [10] - '0'); //----- Vehicle -----
+ difference_file.Put_Field (15, string [11] - '0'); //----- Veh_Type -----
+ difference_file.Put_Field (16, string [12] - '0'); //----- Type -----
+ difference_file.Put_Field (17, string [13] - '0'); //----- Time -----
+ difference_file.Put_Field (18, string [14] - '0'); //----- Impedance -----
+ difference_file.Put_Field (19, string [15] - '0'); //----- Time_Ratio -----
+ difference_file.Put_Field (20, string [16] - '0'); //----- Penalty -----
+ difference_file.Put_Field (21, string [17] - '0'); //----- Path -----
+
+ difference_file.Write ();
+}
+
Added: version7/branches/aecom/Transims70/PlanCompare/Difference_Report.cpp
===================================================================
--- version7/branches/aecom/Transims70/PlanCompare/Difference_Report.cpp (rev 0)
+++ version7/branches/aecom/Transims70/PlanCompare/Difference_Report.cpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -0,0 +1,34 @@
+//*********************************************************
+// Difference_Report.cpp - Print the Difference Report
+//*********************************************************
+
+#include "PlanCompare.hpp"
+
+//---------------------------------------------------------
+// Difference_Report
+//---------------------------------------------------------
+
+void PlanCompare::Difference_Report (Trip_Index &trip_index, String &string)
+{
+ Print (1, String ("Plan %d-%d-%d-%d Different") % trip_index.Household () % trip_index.Person () % trip_index.Tour () % trip_index.Trip ());
+
+ if (string [0] == '1') Print (0, " Start");
+ if (string [1] == '1') Print (0, " End");
+ if (string [2] == '1') Print (0, " Duration");
+ if (string [3] == '1') Print (0, " Origin");
+ if (string [4] == '1') Print (0, " Destination");
+ if (string [5] == '1') Print (0, " Org_Type");
+ if (string [6] == '1') Print (0, " Des_Type");
+ if (string [7] == '1') Print (0, " Purpose");
+ if (string [8] == '1') Print (0, " Mode");
+ if (string [9] == '1') Print (0, " Constraint");
+ if (string [10] == '1') Print (0, " Vehicle");
+ if (string [11] == '1') Print (0, " Veh_Type");
+ if (string [12] == '1') Print (0, " Type");
+ if (string [13] == '1') Print (0, " Time");
+ if (string [14] == '1') Print (0, " Impedance");
+ if (string [15] == '1') Print (0, " Time_Ratio");
+ if (string [16] == '1') Print (0, " Penalty");
+ if (string [17] == '1') Print (0, " Path");
+}
+
Modified: version7/branches/aecom/Transims70/PlanCompare/Execute.cpp
===================================================================
--- version7/branches/aecom/Transims70/PlanCompare/Execute.cpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/PlanCompare/Execute.cpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -13,7 +13,10 @@
int i;
Select_Data data;
Trip_Index trip_index;
- Plan_Itr plan_itr;
+ Plan_Ptr plan_ptr;
+ Str_Map_Itr map_itr;
+ Trip_Map_Itr itr;
+ Trip_Index_Itr new_itr;
//---- read the network data ----
@@ -48,22 +51,35 @@
Compare_Plans ();
- //---- set the selection set ----
+ //---- sum the thread data ----
- select_map.clear ();
-
if (thread_flag) {
for (i = 0; i < Num_Threads (); i++) {
plan_processing [i]->Merge_Results ();
}
}
- for (plan_itr = plan_array.begin (); plan_itr != plan_array.end (); plan_itr++) {
- if (plan_itr->Select () != 1) {
- plan_itr->Get_Index (trip_index);
- data.Type (plan_itr->Select ());
- select_map.insert (Select_Map_Data (trip_index, data));
+ //---- difference type output ----
+
+ if (diff_report || diff_file_flag) {
+ if (diff_report) {
+ Print (2, "Plan Difference Types");
+ Print (1);
}
+ for (map_itr = difference_map.begin (); map_itr != difference_map.end (); map_itr++) {
+ plan_ptr = &plan_array [map_itr->first];
+ plan_ptr->Get_Index (trip_index);
+
+ if (diff_report) {
+ Difference_Report (trip_index, map_itr->second);
+ }
+ if (diff_file_flag) {
+ Difference_File (trip_index, map_itr->second);
+ }
+ }
+ if (diff_file_flag) {
+ difference_file.Close ();
+ }
}
//---- trip match file ----
@@ -75,48 +91,83 @@
//---- new selection file ----
if (new_select_flag) {
+ select_map.clear ();
+
+ for (itr = plan_trip_map.begin (); itr != plan_trip_map.end (); itr++) {
+ plan_ptr = &plan_array [itr->second];
+
+ if (plan_ptr->Select () != 1) {
+ plan_ptr->Get_Index (trip_index);
+ data.Type (plan_ptr->Select ());
+
+ select_map.insert (Select_Map_Data (trip_index, data));
+ }
+ }
+ data.Type (1);
+
+ for (new_itr = new_trips.begin (); new_itr != new_trips.end (); new_itr++) {
+ select_map.insert (Select_Map_Data (*new_itr, data));
+ }
Write_Selections ();
}
- //---- print output summary ----
+ //---- write the distribution file ----
- if (new_plan_flag) {
- new_plan_file->Print_Summary ();
+ if (time_diff.Output_Flag ()) {
+ time_diff.Write_Distribution ();
}
+ //---- write the trip gap files ----
+
+ if (time_gap.Output_Flag ()) {
+ time_gap.Write_Trip_Gap_File ();
+ }
+
+ //---- write the distribution file ----
+
+ if (cost_diff.Output_Flag ()) {
+ cost_diff.Write_Distribution ();
+ }
+
+ //---- write the trip gap files ----
+
+ if (cost_gap.Output_Flag ()) {
+ cost_gap.Write_Trip_Gap_File ();
+ }
+
//---- print reports ----
for (i=First_Report (); i != 0; i=Next_Report ()) {
switch (i) {
case TOTAL_TIME: //---- total time distribution ----
-// time_diff.Distribution_Report (TOTAL_TIME, true);
+ time_diff.Distribution_Report (TOTAL_TIME, true);
break;
case PERIOD_TIME: //---- period time distributions ----
-// time_diff.Distribution_Report (PERIOD_TIME, false);
+ time_diff.Distribution_Report (PERIOD_TIME, false);
break;
case TOT_TIME_SUM: //---- total time summary ----
-// time_diff.Total_Summary ();
+ time_diff.Total_Summary ();
break;
case PER_TIME_SUM: //---- period time summaries ----
-// time_diff.Period_Summary (PER_TIME_SUM);
+ time_diff.Period_Summary (PER_TIME_SUM);
break;
case TOTAL_COST: //---- total cost distribution ----
-// cost_diff.Distribution_Report (TOTAL_COST, true);
+ cost_diff.Distribution_Report (TOTAL_COST, true);
break;
case PERIOD_COST: //---- period cost distributions ----
-// cost_diff.Distribution_Report (PERIOD_COST, false);
+ cost_diff.Distribution_Report (PERIOD_COST, false);
break;
case TOT_COST_SUM: //---- total cost summary ----
-// cost_diff.Total_Summary ();
+ cost_diff.Total_Summary ();
break;
case PER_COST_SUM: //---- period cost summaries ----
-// cost_diff.Period_Summary (PER_COST_SUM);
+ cost_diff.Period_Summary (PER_COST_SUM);
break;
case TRP_TIME_GAP: //---- trip time gap ----
-// time_gap.Trip_Gap_Report (TRP_TIME_GAP);
+ time_gap.Trip_Gap_Report (TRP_TIME_GAP);
break;
case TRP_COST_GAP: //---- trip cost gap ----
-// cost_gap.Trip_Gap_Report (TRP_COST_GAP);
+ cost_gap.Trip_Gap_Report (TRP_COST_GAP);
default:
break;
}
@@ -132,32 +183,32 @@
{
switch (Header_Number ()) {
case TOTAL_TIME: //---- total time distribution ----
-// time_diff.Distribution_Header (true);
+ time_diff.Distribution_Header (true);
break;
case PERIOD_TIME: //---- period time distributions ----
-// time_diff.Distribution_Header (false);
+ time_diff.Distribution_Header (false);
break;
case TOT_TIME_SUM: //---- total time summary ----
break;
case PER_TIME_SUM: //---- period time summary ----
-// time_diff.Period_Header ();
+ time_diff.Period_Header ();
break;
case TOTAL_COST: //---- total cost distribution ----
-// cost_diff.Distribution_Header (true);
+ cost_diff.Distribution_Header (true);
break;
case PERIOD_COST: //---- period cost distributions ----
-// cost_diff.Distribution_Header (false);
+ cost_diff.Distribution_Header (false);
break;
case TOT_COST_SUM: //---- total cost summary ----
break;
case PER_COST_SUM: //---- period cost summary ----
-// cost_diff.Period_Header ();
+ cost_diff.Period_Header ();
break;
case TRP_TIME_GAP: //---- trip time gap ----
-// time_gap.Trip_Gap_Header ();
+ time_gap.Trip_Gap_Header ();
break;
case TRP_COST_GAP: //---- trip cost gap ----
-// cost_gap.Trip_Gap_Header ();
+ cost_gap.Trip_Gap_Header ();
default:
break;
}
Modified: version7/branches/aecom/Transims70/PlanCompare/PlanCompare.cpp
===================================================================
--- version7/branches/aecom/Transims70/PlanCompare/PlanCompare.cpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/PlanCompare/PlanCompare.cpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -11,7 +11,7 @@
PlanCompare::PlanCompare (void) : Converge_Service ()
{
Program ("PlanCompare");
- Version (0);
+ Version (1);
Title ("Travel Plan Comparison Utility");
System_File_Type required_files [] = {
@@ -18,8 +18,11 @@
PLAN, END_FILE
};
System_File_Type optional_files [] = {
- SELECTION, NEW_SELECTION, NEW_PLAN, END_FILE
+ SELECTION, NEW_SELECTION, NEW_PLAN_SKIM, END_FILE
};
+ int data_service_keys [] = {
+ 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,
@@ -32,22 +35,30 @@
PERCENT_TIME_DIFFERENCE, MINIMUM_TIME_DIFFERENCE, MAXIMUM_TIME_DIFFERENCE,
PERCENT_COST_DIFFERENCE, MINIMUM_COST_DIFFERENCE, MAXIMUM_COST_DIFFERENCE,
MINIMUM_PATH_TIME_RATIO, MAXIMUM_PATH_TIME_RATIO, MINIMUM_PENALTY_RATIO, MAXIMUM_PENALTY_RATIO,
-
- NEW_LINK_CONVERGENCE_FILE, NEW_LINK_CONVERGENCE_FORMAT, NEW_TRIP_CONVERGENCE_FILE, NEW_TRIP_CONVERGENCE_FORMAT,
- NEW_TOLL_CONVERGENCE_FILE, NEW_TOLL_CONVERGENCE_FORMAT, NEW_TRANSIT_CONVERGENCE_FILE, NEW_TRANSIT_CONVERGENCE_FORMAT,
- NEW_PARKING_CONVERGENCE_FILE, NEW_PARKING_CONVERGENCE_FORMAT, NEW_RATIO_CONVERGENCE_FILE, NEW_RATIO_CONVERGENCE_FORMAT,
0
};
Control_Key keys [] = { //--- code, key, level, status, type, default, range, help ----
{ COMPARE_PLAN_FILE, "COMPARE_PLAN_FILE", LEVEL0, REQ_KEY, IN_KEY, "", FILE_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 },
- { NEW_TRIP_MATCH_FILE, "NEW_TRIP_MATCH_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP },
- { NEW_TRIP_MATCH_FORMAT, "NEW_TRIP_MATCH_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP },
+ { MINIMUM_PATH_DIFFERENCES, "MINIMUM_PATH_DIFFERENCES", LEVEL0, OPT_KEY, INT_KEY, "0", "0..2000", NO_HELP },
+ //{ SELECTION_METHOD, "SELECTION_METHOD", LEVEL0, OPT_KEY, TEXT_KEY, "RANDOM", SELECT_METHOD_RANGE, NO_HELP },
+ { NEW_DIFFERENCE_TYPES_FILE, "NEW_DIFFERENCE_TYPES_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP },
+ { NEW_DIFFERENCE_TYPES_FORMAT, "NEW_DIFFERENCE_TYPES_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_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, "-2000 cents", "-10000..1000 cents", 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, "500 cents", "100..5000 cents", NO_HELP },
+ { GENERALIZED_COST_IMPEDANCE, "GENERALIZED_COST_IMPEDANCE", LEVEL0, OPT_KEY, LIST_KEY, "1.0 impedance/cent", "0.1..1000.0", NO_HELP },
+ { NEW_TIME_DISTRIBUTION_FILE, "NEW_TIME_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_COST_DISTRIBUTION_FILE, "NEW_COST_DISTRIBUTION_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 },
END_CONTROL
};
const char *reports [] = {
+ "PLAN_DIFFERENCE_TYPES",
"TOTAL_TIME_DISTRIBUTION",
"PERIOD_TIME_DISTRIBUTIONS",
"TOTAL_TIME_SUMMARY",
@@ -63,19 +74,18 @@
Required_System_Files (required_files);
Optional_System_Files (optional_files);
+ Data_Service_Keys (data_service_keys);
Select_Service_Keys (select_service_keys);
Converge_Service_Keys (converge_service_keys);
Key_List (keys);
Report_List (reports);
-// Report_List (converge_reports);
- new_plan_flag = new_select_flag = false;
-
- select_flag = cost_flag = time_sum_flag = cost_sum_flag = time_gap_flag = cost_gap_flag = merge_flag = false;
- time_sort = match_flag = false;
+ new_select_flag = false;
+ select_flag = time_sum_flag = cost_sum_flag = time_gap_flag = cost_gap_flag = false;
+ match_flag = diff_report = diff_file_flag = false;
method = RANDOM_METHOD;
- num_trips = num_select = 0;
+ num_trips = num_select = min_path_legs = 0;
plan_processing = 0;
Modified: version7/branches/aecom/Transims70/PlanCompare/PlanCompare.hpp
===================================================================
--- version7/branches/aecom/Transims70/PlanCompare/PlanCompare.hpp 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/branches/aecom/Transims70/PlanCompare/PlanCompare.hpp 2018-01-30 21:23:31 UTC (rev 1702)
@@ -8,7 +8,11 @@
#include "APIDefs.hpp"
#include "Converge_Service.hpp"
#include "Bounded_Queue.hpp"
+#include "Difference_Data.hpp"
+#include "Trip_Gap_Data.hpp"
+#define NUM_DIFFS 18
+
//---------------------------------------------------------
// PlanCompare - execution class definition
//---------------------------------------------------------
@@ -24,31 +28,45 @@
protected:
enum PlanCompare_Keys {
- COMPARE_PLAN_FILE = 1, COMPARE_PLAN_FORMAT, COMPARE_GENERALIZED_COSTS, SELECTION_METHOD,
- NEW_TRIP_MATCH_FILE, NEW_TRIP_MATCH_FORMAT
+ COMPARE_PLAN_FILE = 1, COMPARE_PLAN_FORMAT, MINIMUM_PATH_DIFFERENCES, // SELECTION_METHOD,
+ NEW_DIFFERENCE_TYPES_FILE, NEW_DIFFERENCE_TYPES_FORMAT,
+ TIME_DISTRIBUTION_MINIMUM, TIME_DISTRIBUTION_COUNT, TIME_DISTRIBUTION_INCREMENT,
+ COST_DISTRIBUTION_MINIMUM, COST_DISTRIBUTION_COUNT, COST_DISTRIBUTION_INCREMENT, GENERALIZED_COST_IMPEDANCE,
+ NEW_TIME_DISTRIBUTION_FILE, NEW_TRIP_TIME_GAP_FILE, NEW_COST_DISTRIBUTION_FILE, NEW_TRIP_COST_GAP_FILE
};
virtual void Program_Control (void);
private:
- enum PlanCompare_Reports { TOTAL_TIME = 1, PERIOD_TIME, TOT_TIME_SUM, PER_TIME_SUM,
+ enum PlanCompare_Reports { DIFF_TYPES = 1, TOTAL_TIME, PERIOD_TIME, TOT_TIME_SUM, PER_TIME_SUM,
TOTAL_COST, PERIOD_COST, TOT_COST_SUM, PER_COST_SUM, TRP_TIME_GAP, TRP_COST_GAP};
-
- Plan_File *plan_file, *new_plan_file;
+
+ Plan_File *plan_file;
+ Plan_Skim_File *new_skim_file;
Plan_File compare_file;
- Selection_File *new_select_file, match_file;
+ Selection_File *new_select_file;
- bool new_plan_flag, new_select_flag;
+ Db_Header difference_file;
- bool select_flag, cost_flag, time_sum_flag, cost_sum_flag, time_gap_flag, cost_gap_flag;
- bool merge_flag, time_sort, match_flag;
- int num_trips, num_compare, method, num_select;
+ bool new_select_flag;
+ bool select_flag, time_sum_flag, cost_sum_flag, time_gap_flag, cost_gap_flag;
+ bool match_flag, diff_report, diff_file_flag;
+ int num_trips, num_compare, method, num_select, min_path_legs;
- Select_Map selected, matched;
+ Select_Map selected;
+
+ Difference_Data time_diff, cost_diff;
+ Trip_Gap_Data time_gap, cost_gap;
+ Str_Map difference_map;
+ Trip_Index_Array new_trips;
+
void Read_Plans (void);
void Compare_Plans (void);
void Write_Match (void);
+ void Difference_Report (Trip_Index &trip_index, String &string);
+ void Difference_File (Trip_Index &trip_index, String &string);
+
bool thread_flag;
Threads threads;
@@ -74,7 +92,11 @@
PlanCompare *exe;
Trip_Index_Array new_trips;
+ Str_Map difference_map;
bool thread_flag;
+
+ Difference_Data *time_diff, *cost_diff;
+ Trip_Gap_Data *time_gap, *cost_gap;
};
Plan_Processing **plan_processing;
Modified: version7/branches/aecom/Transims70/PlanCompare/PlanCompare.vcxproj
===================================================================
--- version7/branches/aecom/Transims70/PlanCompare/PlanCompare.vcxproj 2018-01-23 18:40:46 UTC (rev 1701)
+++ version7/...
[truncated message content] |