|
From: subversion c. n. <tra...@li...> - 2018-07-08 18:32:14
|
Revision: 1709
http://sourceforge.net/p/transims/code/1709
Author: davidroden
Date: 2018-07-08 18:32:12 +0000 (Sun, 08 Jul 2018)
Log Message:
-----------
TRANSIMS Version 7.1 -- updated from AECOM branch 1708
Modified Paths:
--------------
version7/trunk/Transims70/ArcPerf/Write_Performance.cpp
version7/trunk/Transims70/Converge_Service/Iteration_Output.cpp
version7/trunk/Transims70/Converge_Service/Step_Output.cpp
version7/trunk/Transims70/Data_Service/Lane_Services.cpp
version7/trunk/Transims70/Data_Service/Read_Lane_Uses.cpp
version7/trunk/Transims70/Data_Service/Read_Link_Data.cpp
version7/trunk/Transims70/Data_Service/Read_Link_Dir.cpp
version7/trunk/Transims70/Data_Service/Write_Link_Data.cpp
version7/trunk/Transims70/Data_Service/Write_Volume_Speeds.cpp
version7/trunk/Transims70/File_Service/File_Service.vcxproj
version7/trunk/Transims70/File_Service/File_Service.vcxproj.filters
version7/trunk/Transims70/File_Service/Link_Data_File.cpp
version7/trunk/Transims70/File_Service/Link_Dir_File.cpp
version7/trunk/Transims70/Include/Db_Header.hpp
version7/trunk/Transims70/Include/Db_Matrix.hpp
version7/trunk/Transims70/Include/Execution_Service.hpp
version7/trunk/Transims70/Include/System_Defines.hpp
version7/trunk/Transims70/Include/Turn_Delay_Data.hpp
version7/trunk/Transims70/Include/TypeDefs.hpp
version7/trunk/Transims70/Include/Volume_Speed_Data.hpp
version7/trunk/Transims70/LinkSum/Control.cpp
version7/trunk/Transims70/LinkSum/Execute.cpp
version7/trunk/Transims70/LinkSum/LinkSum.cpp
version7/trunk/Transims70/LinkSum/LinkSum.hpp
version7/trunk/Transims70/LinkSum/LinkSum.vcxproj
version7/trunk/Transims70/LinkSum/LinkSum.vcxproj.filters
version7/trunk/Transims70/LinkSum/Write_Turn_Data.cpp
version7/trunk/Transims70/NetPrep/Control.cpp
version7/trunk/Transims70/NetPrep/Input_Links.cpp
version7/trunk/Transims70/NetPrep/Input_Nodes.cpp
version7/trunk/Transims70/NetPrep/NetPrep.cpp
version7/trunk/Transims70/NetPrep/NetPrep.hpp
version7/trunk/Transims70/PlanPrep/Control.cpp
version7/trunk/Transims70/PlanPrep/PlanPrep.cpp
version7/trunk/Transims70/PlanPrep/PlanPrep.hpp
version7/trunk/Transims70/PlanPrep/Process_Plan.cpp
version7/trunk/Transims70/PlanSelect/Control.cpp
version7/trunk/Transims70/PlanSelect/PlanSelect.cpp
version7/trunk/Transims70/PlanSelect/PlanSelect.hpp
version7/trunk/Transims70/PlanSelect/Read_Plans.cpp
version7/trunk/Transims70/PlanSelect/Read_Vol_Cnt.cpp
version7/trunk/Transims70/Router/Router.cpp
version7/trunk/Transims70/SysLib/Dbfile/Db_Header.cpp
version7/trunk/Transims70/SysLib/Dbfile/Db_Matrix.cpp
version7/trunk/Transims70/SysLib/Service/Convert_Service.cpp
version7/trunk/Transims70/SysLib/Service/Message_Service.cpp
version7/trunk/Transims70/SysLib/Service/Static_Service.cpp
version7/trunk/Transims70/SysLib/Tools/Functions.cpp
version7/trunk/Transims70/Validate/Validate.cpp
version7/trunk/Transims70/Validate/Write_Vol_Cnt.cpp
version7/trunk/Transims70/Validate/Write_Vol_Spd_Diff.cpp
version7/trunk/Transims70/Validate/Write_Volume.cpp
version7/trunk/Transims70/VolSpdData/VolSpdData.cpp
version7/trunk/Transims70/VolSpdData/Write_Vol_Spd_Diff.cpp
Added Paths:
-----------
version7/trunk/Transims70/File_Service/Turn_Diff_File.cpp
version7/trunk/Transims70/Include/Turn_Diff_File.hpp
version7/trunk/Transims70/LinkSum/Write_Turn_Diff.cpp
Modified: version7/trunk/Transims70/ArcPerf/Write_Performance.cpp
===================================================================
--- version7/trunk/Transims70/ArcPerf/Write_Performance.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/ArcPerf/Write_Performance.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -11,7 +11,7 @@
void ArcPerf::Write_Performance (void)
{
int dir, period, index, use_index, num;
- double length, speed;
+ double length; // , speed;
Dtime low, high, time, delay;
String buffer;
Modified: version7/trunk/Transims70/Converge_Service/Iteration_Output.cpp
===================================================================
--- version7/trunk/Transims70/Converge_Service/Iteration_Output.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Converge_Service/Iteration_Output.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -31,7 +31,7 @@
System_Performance_File (true)->Open (iteration);
Write_Performance ();
}
- if (System_File_Flag (NEW_TURN_DELAY) && System_File_Flag (SIGNAL)) {
+ if (System_File_Flag (NEW_TURN_DELAY)) {
System_Turn_Delay_File (true)->Open (iteration);
Write_Turn_Delays ();
}
Modified: version7/trunk/Transims70/Converge_Service/Step_Output.cpp
===================================================================
--- version7/trunk/Transims70/Converge_Service/Step_Output.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Converge_Service/Step_Output.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -32,7 +32,7 @@
System_Performance_File (true)->Open (file_num);
Write_Performance ();
}
- if (System_File_Flag (NEW_TURN_DELAY) && System_File_Flag (SIGNAL)) {
+ if (System_File_Flag (NEW_TURN_DELAY)) {
System_Turn_Delay_File (true)->Open (file_num);
Write_Turn_Delays ();
}
Modified: version7/trunk/Transims70/Data_Service/Lane_Services.cpp
===================================================================
--- version7/trunk/Transims70/Data_Service/Lane_Services.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Data_Service/Lane_Services.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -19,8 +19,8 @@
if (lane < 1 || lane > dir_ptr->Left ()) {
if (lane != 0 && System_File_Flag (POCKET)) {
Link_Data *link_ptr = &link_array [dir_ptr->Link ()];
- Warning (String ("Link %d Left Pocket Lane %d is Out of Range (0..%d)") %
- link_ptr->Link () % lane % dir_ptr->Left ());
+ Warning (String ("Record %d Link %d Left Pocket Lane %d is Out of Range (0..%d)") %
+ Progress_Count () % link_ptr->Link () % lane % dir_ptr->Left ());
}
lane = dir_ptr->Left ();
}
@@ -29,8 +29,8 @@
if (lane < 1 || lane > dir_ptr->Right ()) {
if (lane != 0 && System_File_Flag (POCKET)) {
Link_Data *link_ptr = &link_array [dir_ptr->Link ()];
- Warning (String ("Link %d Right Pocket Lane %d is Out of Range (0..%d)") %
- link_ptr->Link () % lane % dir_ptr->Right ());
+ Warning (String ("Record %d Link %d Right Pocket Lane %d is Out of Range (0..%d)") %
+ Progress_Count () % link_ptr->Link () % lane % dir_ptr->Right ());
}
lane = dir_ptr->Right ();
}
@@ -39,8 +39,8 @@
if (lane == 0) return (-1);
if (lane < 1 || lane > dir_ptr->Lanes ()) {
Link_Data *link_ptr = &link_array [dir_ptr->Link ()];
- Warning (String ("Link %d Main Lane %d is Out of Range (1..%d)") %
- link_ptr->Link () % lane % dir_ptr->Lanes ());
+ Warning (String ("Record %d Link %d Main Lane %d is Out of Range (1..%d)") %
+ Progress_Count () % link_ptr->Link () % lane % dir_ptr->Lanes ());
lane = dir_ptr->Lanes ();
}
lane = dir_ptr->Lanes () - lane + dir_ptr->Left ();
@@ -59,7 +59,7 @@
if (lane == -1) return (0);
if (lane < 0 || lane >= code) {
Link_Data *link_ptr = &link_array [dir_ptr->Link ()];
- Warning (String ("Link %d Lane %d is Out of Range (0..%d)") % link_ptr->Link () % lane % (code-1));
+ Warning (String ("Record %d Link %d Lane %d is Out of Range (0..%d)") % Progress_Count () % link_ptr->Link () % lane % (code-1));
return (1);
}
if (lane < dir_ptr->Left ()) {
@@ -94,7 +94,7 @@
} else {
low = Convert_Lane_ID (dir_ptr, low);
if (low > high) {
- Warning (String ("Link %d Lane Range %d..%d is Illogical") % link_array [dir_ptr->Link ()].Link () % low % high);
+ Warning (String ("Record %d Link %d Lane Range %d..%d is Illogical") % Progress_Count () % link_array [dir_ptr->Link ()].Link () % low % high);
int temp = low;
low = high;
high = temp;
@@ -110,7 +110,7 @@
{
if (low > high) {
Link_Data *link_ptr = &link_array [dir_ptr->Link ()];
- Warning (String ("Link %d Lane Range %d..%d is Illogical") % link_ptr->Link () % low % high);
+ Warning (String ("Record %d Link %d Lane Range %d..%d is Illogical") % Progress_Count () % link_ptr->Link () % low % high);
return (0);
}
low = Make_Lane_ID (dir_ptr, low);
Modified: version7/trunk/Transims70/Data_Service/Read_Lane_Uses.cpp
===================================================================
--- version7/trunk/Transims70/Data_Service/Read_Lane_Uses.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Data_Service/Read_Lane_Uses.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -450,7 +450,10 @@
} else {
rate /= MILETOFEET;
}
- lane_use_rec.Max_Rate (DTOI (rate * link_ptr->Length ()));
+ rate *= link_ptr->Length ();
+ if (rate > 32500) rate = 32500;
+
+ lane_use_rec.Max_Rate (DTOI (rate));
}
if (lane_use_rec.Max_Rate () > lane_use_rec.Min_Rate () || file.toll_periods.Num_Periods () > 0) {
Modified: version7/trunk/Transims70/Data_Service/Read_Link_Data.cpp
===================================================================
--- version7/trunk/Transims70/Data_Service/Read_Link_Data.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Data_Service/Read_Link_Data.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -14,6 +14,7 @@
Dtime low, high;
Integers volume_map;
Doubles volume;
+ String notes;
Link_Data *link_ptr;
Int_Map_Itr map_itr;
@@ -68,6 +69,10 @@
}
link_ptr = &link_array [map_itr->second];
+ notes = file.Notes ();
+ if (!notes.empty ()) {
+ data.notes_map.insert (Str_Map_Data (link, notes));
+ }
anode = file.Anode ();
bnode = file.Bnode ();
Modified: version7/trunk/Transims70/Data_Service/Read_Link_Dir.cpp
===================================================================
--- version7/trunk/Transims70/Data_Service/Read_Link_Dir.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Data_Service/Read_Link_Dir.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -14,6 +14,7 @@
Dtime low, high;
Integers volume_map;
Doubles volume;
+ String notes;
Volume_Speed_Data *data_ptr;
Link_Data *link_ptr;
@@ -66,6 +67,10 @@
}
link_ptr = &link_array [map_itr->second];
+ notes = file.Notes ();
+ if (!notes.empty ()) {
+ data.notes_map.insert (Str_Map_Data (link, notes));
+ }
dir = file.Dir ();
if (dir) {
Modified: version7/trunk/Transims70/Data_Service/Write_Link_Data.cpp
===================================================================
--- version7/trunk/Transims70/Data_Service/Write_Link_Data.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Data_Service/Write_Link_Data.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -13,6 +13,8 @@
int period, num_periods, count;
double value;
bool flag;
+ String notes;
+ Str_Map_Itr str_itr;
Int_Map_Itr map_itr;
Link_Data *link_ptr;
@@ -65,6 +67,15 @@
}
}
if (flag) {
+ str_itr = data.notes_map.find (link_ptr->Link ());
+ if (str_itr != data.notes_map.end ()) {
+ notes = str_itr->second;
+ } else {
+ notes = link_ptr->Name ();
+ if (notes.empty ()) notes = link_ptr->Notes ();
+ }
+ link_data_file.Notes (notes);
+
link_data_file.Write ();
count++;
}
Modified: version7/trunk/Transims70/Data_Service/Write_Volume_Speeds.cpp
===================================================================
--- version7/trunk/Transims70/Data_Service/Write_Volume_Speeds.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Data_Service/Write_Volume_Speeds.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -19,6 +19,8 @@
{
int i, dir, index, count;
Dtime low, high, time;
+ String notes;
+ Str_Map_Itr str_itr;
Int_Map_Itr map_itr;
Dir_Data *dir_ptr;
@@ -80,6 +82,15 @@
data_rec.Total_Vol_Spd_BA ();
data_rec.Total_Vol_Spd ();
+ str_itr = array.notes_map.find (link_ptr->Link ());
+ if (str_itr != array.notes_map.end ()) {
+ notes = str_itr->second;
+ } else {
+ notes = link_ptr->Name ();
+ if (notes.empty ()) notes = link_ptr->Notes ();
+ }
+ data_rec.Notes (notes);
+
count += Put_Volume_Speed_Data (file, data_rec);
}
}
Modified: version7/trunk/Transims70/File_Service/File_Service.vcxproj
===================================================================
--- version7/trunk/Transims70/File_Service/File_Service.vcxproj 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/File_Service/File_Service.vcxproj 2018-07-08 18:32:12 UTC (rev 1709)
@@ -73,6 +73,7 @@
<ClInclude Include="..\Include\Travel_Time_File.hpp" />
<ClInclude Include="..\Include\Trip_File.hpp" />
<ClInclude Include="..\Include\Turn_Delay_File.hpp" />
+ <ClInclude Include="..\Include\Turn_Diff_File.hpp" />
<ClInclude Include="..\Include\Turn_Pen_File.hpp" />
<ClInclude Include="..\Include\Vehicle_File.hpp" />
<ClInclude Include="..\Include\Veh_Type_File.hpp" />
@@ -138,6 +139,7 @@
<ClCompile Include="Travel_Time_File.cpp" />
<ClCompile Include="Trip_File.cpp" />
<ClCompile Include="Turn_Delay_File.cpp" />
+ <ClCompile Include="Turn_Diff_File.cpp" />
<ClCompile Include="Turn_Pen_File.cpp" />
<ClCompile Include="Vehicle_File.cpp" />
<ClCompile Include="Veh_Type_File.cpp" />
Modified: version7/trunk/Transims70/File_Service/File_Service.vcxproj.filters
===================================================================
--- version7/trunk/Transims70/File_Service/File_Service.vcxproj.filters 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/File_Service/File_Service.vcxproj.filters 2018-07-08 18:32:12 UTC (rev 1709)
@@ -200,6 +200,9 @@
<ClInclude Include="..\Include\Vol_Spd_Diff_Data_File.hpp">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="..\Include\Turn_Diff_File.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="File_Service.cpp">
@@ -391,5 +394,8 @@
<ClCompile Include="Vol_Spd_Diff_Data_File.cpp">
<Filter>Source Files\Files</Filter>
</ClCompile>
+ <ClCompile Include="Turn_Diff_File.cpp">
+ <Filter>Source Files\Files</Filter>
+ </ClCompile>
</ItemGroup>
</Project>
\ No newline at end of file
Modified: version7/trunk/Transims70/File_Service/Link_Data_File.cpp
===================================================================
--- version7/trunk/Transims70/File_Service/Link_Data_File.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/File_Service/Link_Data_File.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -132,6 +132,9 @@
Add_Field (name, DB_DOUBLE, size, units);
}
}
+ if (exe->Notes_Name_Flag ()) {
+ Add_Field ("NOTES", DB_STRING, STRING_FIELD_SIZE);
+ }
return (Set_Field_Numbers ());
}
@@ -201,6 +204,7 @@
Set_Units (ba [i], units);
}
}
+ Notes_Field (Optional_Field (NOTES_FIELD_NAMES));
return (true);
}
Modified: version7/trunk/Transims70/File_Service/Link_Dir_File.cpp
===================================================================
--- version7/trunk/Transims70/File_Service/Link_Dir_File.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/File_Service/Link_Dir_File.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -160,6 +160,9 @@
}
}
}
+ if (exe->Notes_Name_Flag ()) {
+ Add_Field ("NOTES", DB_STRING, STRING_FIELD_SIZE);
+ }
return (Set_Field_Numbers ());
}
@@ -273,6 +276,7 @@
Set_Units (diff [i], units);
}
}
+ Notes_Field (Optional_Field (NOTES_FIELD_NAMES));
return (true);
}
Copied: version7/trunk/Transims70/File_Service/Turn_Diff_File.cpp (from rev 1708, version7/branches/aecom/Transims70/File_Service/Turn_Diff_File.cpp)
===================================================================
--- version7/trunk/Transims70/File_Service/Turn_Diff_File.cpp (rev 0)
+++ version7/trunk/Transims70/File_Service/Turn_Diff_File.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -0,0 +1,107 @@
+//*********************************************************
+// Turn_Diff_File.cpp - Turn Movement File Input/Output
+//*********************************************************
+
+#include "Turn_Diff_File.hpp"
+
+//-----------------------------------------------------------
+// Turn_Diff_File constructors
+//-----------------------------------------------------------
+
+Turn_Diff_File::Turn_Diff_File (Access_Type access, string format) :
+ Db_Header (access, format)
+{
+ Setup ();
+}
+
+Turn_Diff_File::Turn_Diff_File (string filename, Access_Type access, string format) :
+ Db_Header (access, format)
+{
+ Setup ();
+
+ Open (filename);
+}
+
+Turn_Diff_File::Turn_Diff_File (Access_Type access, Format_Type format) :
+ Db_Header (access, format)
+{
+ Setup ();
+}
+
+Turn_Diff_File::Turn_Diff_File (string filename, Access_Type access, Format_Type format) :
+ Db_Header (access, format)
+{
+ Setup ();
+
+ Open (filename);
+}
+
+//-----------------------------------------------------------
+// Setup
+//-----------------------------------------------------------
+
+void Turn_Diff_File::Setup (void)
+{
+ File_Type ("Turn Diff File");
+ File_ID ("Turn");
+
+ node = link = to_link = start = end = turn = base = diff = -1;
+}
+
+//---------------------------------------------------------
+// Create_Fields
+//---------------------------------------------------------
+
+bool Turn_Diff_File::Create_Fields (void)
+{
+ Clear_Fields ();
+
+ Add_Field ("NODE", DB_INTEGER, 10);
+ Add_Field ("LINK", DB_INTEGER, 10);
+ Add_Field ("TO_LINK", DB_INTEGER, 10);
+ Add_Field ("START", DB_TIME, TIME_FIELD_SIZE, Time_Format ());
+ Add_Field ("END", DB_TIME, TIME_FIELD_SIZE, Time_Format ());
+ Add_Field ("TURN", DB_DOUBLE, 10.1, PCE);
+ Add_Field ("BASE", DB_DOUBLE, 10.1, PCE);
+ Add_Field ("DIFF", DB_DOUBLE, 10.1, PCE);
+
+ return (Set_Field_Numbers ());
+}
+
+//-----------------------------------------------------------
+// Set_Field_Numbers
+//-----------------------------------------------------------
+
+bool Turn_Diff_File::Set_Field_Numbers (void)
+{
+ //---- required fields ----
+
+ link = Required_Field (IN_LINK_FIELD_NAMES);
+ to_link = Required_Field (OUT_LINK_FIELD_NAMES);
+ turn = Required_Field ("TURN", "VOLUME", "TURN_VOL", "COUNT");
+
+ if (link < 0 || to_link < 0 || turn < 0) return (false);
+
+ node = Optional_Field ("NODE");
+ start = Optional_Field (START_FIELD_NAMES);
+ end = Optional_Field (END_FIELD_NAMES);
+ base = Optional_Field ("BASE", "COUNT", "OLD", "PREVIOUS");
+ diff = Optional_Field ("DIFF", "DIFFERENCE", "CHANGE");
+
+ //---- set default units ----
+
+ if (Version () <= 40) {
+ Set_Units (start, SECONDS);
+ Set_Units (end, SECONDS);
+ Set_Units (turn, VEHICLES);
+ Set_Units (base, VEHICLES);
+ Set_Units (diff, VEHICLES);
+ } else {
+ Set_Units (start, HOUR_CLOCK);
+ Set_Units (end, HOUR_CLOCK);
+ Set_Units (turn, PCE);
+ Set_Units (base, PCE);
+ Set_Units (diff, PCE);
+ }
+ return (true);
+}
Modified: version7/trunk/Transims70/Include/Db_Header.hpp
===================================================================
--- version7/trunk/Transims70/Include/Db_Header.hpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Include/Db_Header.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -40,6 +40,9 @@
bool Custom_Header (void) { return (_custom_header); }
void Custom_Header (bool flag) { _custom_header = flag; }
+
+ bool Check_Def (void) { return (_check_def); }
+ void Check_Def (bool flag) { _check_def = flag; }
int LinkDir_Type (void) { return (_linkdir_type); }
void LinkDir_Type (Direction_Type type) { _linkdir_type = type; }
@@ -130,7 +133,7 @@
//#endif
bool Read_Def_Header (void);
- bool _custom_header;
+ bool _custom_header, _check_def;
int _header_lines, _scan_lines, _notes, _num_nest, _linkdir_type;
Trip_Sort_Type _sort_type;
String _header_record;
Modified: version7/trunk/Transims70/Include/Db_Matrix.hpp
===================================================================
--- version7/trunk/Transims70/Include/Db_Matrix.hpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Include/Db_Matrix.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -178,7 +178,7 @@
int _org_field, _des_field, _period_field, _num_org, _num_des, _max_od, _row_size;
Integers _table_fields;
Int_Map _org_map, _des_map;
- bool _data_flag, _matrix_flag;
+ bool _data_flag, _matrix_flag, _sort_flag;
Buffer _rec_buffer;
};
Modified: version7/trunk/Transims70/Include/Execution_Service.hpp
===================================================================
--- version7/trunk/Transims70/Include/Execution_Service.hpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Include/Execution_Service.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -87,7 +87,7 @@
bool Z_Flag (void) { return (z_flag); }
bool M_Flag (void) { return (m_flag); }
-
+
void Default_Link_Data (bool value) { default_link_data = value; }
bool Default_Link_Data (void) { return (default_link_data); }
Modified: version7/trunk/Transims70/Include/System_Defines.hpp
===================================================================
--- version7/trunk/Transims70/Include/System_Defines.hpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Include/System_Defines.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -212,7 +212,7 @@
FPS, MPS, MPH, KPH, FEET, METERS, MILES, KILOMETERS, DEGREES, MILLION_DEG,
FPS2, MPS2, MPHPS, KPHPS, SPP, RATIO, STOPPED, LANE_KM, LANE_MILE,
IMP_METER, IMP_FOOT, CENT_KM, CENT_MI, VHT, VHD, VMT, VKT, EHT, EHD, EMT, EKT, PHT, PHD, PMT, PKT,
- LITERS, GALLONS,
+ LITERS, GALLONS, DOLLARS,
//---- unconverted units ----
NEST_COUNT, CENTS, DOLLARS_HR, IMPEDANCE, IMP_SECOND, IMP_CENT, VPH, VPHPL, PPV,
VEH_TYPE, FARE_ZONE, TIME_PERIOD, YEARS, PERCENT, VEHICLES, PCE, PERSONS, TRIPS,
@@ -447,7 +447,7 @@
};
enum Function_Type { //---- general function types ----
- LINEAR, LOGIT, EXPONENTIAL, LOGARITHMIC, POWER, POLYNOMIAL, GAMMA, MAX_LOGIT
+ LINEAR, LOGIT, EXPONENTIAL, LOGARITHMIC, POWER, POLYNOMIAL, GAMMA, MAX_LOGIT, SCURVE
};
//---- Projection Service ----
Modified: version7/trunk/Transims70/Include/Turn_Delay_Data.hpp
===================================================================
--- version7/trunk/Transims70/Include/Turn_Delay_Data.hpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Include/Turn_Delay_Data.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -106,10 +106,13 @@
public:
Turn_Period (void) {}
- Dtime Time (int index) { return (at (index).Time ()); }
- double Turn (int index) { return (at (index).Turn ()); }
+ Dtime Time (int index) { return (Index (index) ? at (index).Time () : Dtime (0)); }
+ double Turn (int index) { return (Index (index) ? at (index).Turn () : 0); }
- Turn_Data * Data_Ptr (int index) { return (&at (index)); }
+ Turn_Data * Data_Ptr (int index) { return (Index (index) ? &at (index) : 0); }
+
+private:
+ bool Index (int index) { return (index >= 0 && index < (int) size ()); }
};
typedef Turn_Period::iterator Turn_Itr;
typedef Turn_Period::pointer Turn_Ptr;
@@ -142,13 +145,14 @@
void Average_Turn_Times (Turn_Period_Array &period_array, int weight = 1);
Turn_Period * Period_Ptr (Dtime time);
- Turn_Period * Period_Ptr (int period) { return (&at (period)); }
+ Turn_Period * Period_Ptr (int period) { return (Per (period) ? &at (period) : 0); }
Time_Periods * periods;
- int Period (Dtime time) { return (periods->Period (time)); }
+ int Period (Dtime time) { return ((periods > 0) ? periods->Period (time) : -1); }
int Num_Records (void) { return (num_records); }
private:
+ bool Per (int period) { return ((periods > 0 && period >= 0 && period < (int) size ())); }
int num_records;
};
typedef Turn_Period_Array::iterator Turn_Period_Itr;
Copied: version7/trunk/Transims70/Include/Turn_Diff_File.hpp (from rev 1708, version7/branches/aecom/Transims70/Include/Turn_Diff_File.hpp)
===================================================================
--- version7/trunk/Transims70/Include/Turn_Diff_File.hpp (rev 0)
+++ version7/trunk/Transims70/Include/Turn_Diff_File.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -0,0 +1,52 @@
+//********************************************************
+// Turn_Diff_File.hpp - Turn Movement File Input/Output
+//********************************************************
+
+#ifndef TURN_DIFF_FILE_HPP
+#define TURN_DIFF_FILE_HPP
+
+#include "APIDefs.hpp"
+#include "Db_Header.hpp"
+
+//---------------------------------------------------------
+// Turn_Diff_File Class definition
+//---------------------------------------------------------
+
+class SYSLIB_API Turn_Diff_File : public Db_Header
+{
+public:
+ Turn_Diff_File (Access_Type access, string format);
+ Turn_Diff_File (string filename, Access_Type access, string format);
+ Turn_Diff_File (Access_Type access = READ, Format_Type format = DEFAULT_FORMAT);
+ Turn_Diff_File (string filename, Access_Type access = READ, Format_Type format = DEFAULT_FORMAT);
+
+ int Node (void) { return (Get_Integer (node)); }
+ int Link (void) { return (Get_Integer (link)); }
+ int To_Link (void) { return (Get_Integer (to_link)); }
+ Dtime Start (void) { return (Get_Time (start)); }
+ Dtime End (void) { return (Get_Time (end)); }
+ double Turn (void) { return (Get_Double (turn)); }
+ double Base (void) { return (Get_Double (base)); }
+ double Diff (void) { return (Get_Double (diff)); }
+
+ void Node (int value) { Put_Field (node, value); }
+ void Link (int value) { Put_Field (link, value); }
+ void To_Link (int value) { Put_Field (to_link, value); }
+ void Start (Dtime value) { Put_Field (start, value); }
+ void End (Dtime value) { Put_Field (end, value); }
+ void Turn (double value) { Put_Field (turn, value); }
+ void Base (double value) { Put_Field (base, value); }
+ void Diff (double value) { Put_Field (diff, value); }
+
+ virtual bool Create_Fields (void);
+
+protected:
+ virtual bool Set_Field_Numbers (void);
+
+private:
+ void Setup (void);
+
+ int node, link, to_link, start, end, turn, base, diff;
+};
+
+#endif
Modified: version7/trunk/Transims70/Include/TypeDefs.hpp
===================================================================
--- version7/trunk/Transims70/Include/TypeDefs.hpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Include/TypeDefs.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -124,6 +124,13 @@
typedef Floats::reverse_iterator Flt_RItr;
typedef Floats::pointer Flt_Ptr;
+//---- an integer sorted array of floats ----
+
+typedef map <int, Floats> Flts_Map;
+typedef pair <int, Floats> Flts_Map_Data;
+typedef Flts_Map::iterator Flts_Map_Itr;
+typedef pair <Flts_Map_Itr, bool > Flts_Map_Stat;
+
//---- array of float arrays ----
typedef Vector <Floats> Flts_Array;
Modified: version7/trunk/Transims70/Include/Volume_Speed_Data.hpp
===================================================================
--- version7/trunk/Transims70/Include/Volume_Speed_Data.hpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/Include/Volume_Speed_Data.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -81,6 +81,8 @@
Time_Periods * periods;
int Num_Records (void) { return (num_records); }
+ Str_Map notes_map;
+
private:
int num_records;
};
@@ -113,6 +115,7 @@
double Spd_BA (void) { return (spd_ba); }
double Volume (void) { return (volume); }
double Speed (void) { return (speed); }
+ string Notes (void) { return (notes); }
void Link (int value) { link = value; }
void Start (Dtime value) { start = value; }
@@ -131,6 +134,7 @@
void Spd_BA (double value) { spd_ba = (float) value; }
void Volume (double value) { volume = (float) value; }
void Speed (double value) { speed = (float) value; }
+ void Notes (string value) { notes = value; }
void Add_Vol_Spd_AB (Volume_Speed_Data &data);
void Add_Vol_Spd_BA (Volume_Speed_Data &data);
@@ -163,6 +167,7 @@
float spd_ba;
float volume;
float speed;
+ string notes;
};
Modified: version7/trunk/Transims70/LinkSum/Control.cpp
===================================================================
--- version7/trunk/Transims70/LinkSum/Control.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/LinkSum/Control.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -11,7 +11,7 @@
void LinkSum::Program_Control (void)
{
int i, field, ngroup, num;
- bool binary;
+ bool binary, perf_flag;
String key, token;
Location_File *location_file;
@@ -32,6 +32,7 @@
Select_Service::Program_Control ();
+ perf_flag = System_File_Flag (PERFORMANCE);
turn_flag = System_File_Flag (TURN_DELAY);
Print (2, String ("%s Control Keys:") % Program ());
@@ -41,6 +42,9 @@
key = Get_Control_String (COMPARE_PERFORMANCE_FILE);
if (!key.empty ()) {
+ if (!perf_flag) {
+ Error ("A Performance File is Required for Compare Processing");
+ }
compare_file.File_Type ("Compare Performance File");
Print (1);
@@ -105,6 +109,26 @@
turn_compare_flag = true;
}
+ //---- open the new turn difference file ----
+
+ key = Get_Control_String (NEW_TURN_DIFFERENCE_FILE);
+
+ if (!key.empty ()) {
+ if (!turn_compare_flag) {
+ Error ("Compare Turn Delay File is Required for Turn Differences");
+ }
+ turn_diff_file.File_Type ("New Turn Difference File");
+ Print (1);
+
+ if (Check_Control_Key (NEW_TURN_DIFFERENCE_FORMAT)) {
+ turn_diff_file.Dbase_Format (Get_Control_String (NEW_TURN_DIFFERENCE_FORMAT));
+ }
+ turn_diff_file.Create (Project_Filename (key));
+ turn_diff_flag = true;
+ } else {
+ Warning ("New Turn Difference File is needed to Comparison Turns");
+ }
+
//---- select turn nodes----
key = exe->Get_Control_Text (TURN_NODE_RANGE);
@@ -114,6 +138,16 @@
exe->Error ("Adding Turn Node Ranges");
}
}
+ key = exe->Get_Control_String (TURN_NODE_FILE);
+
+ if (!key.empty ()) {
+ turn_node_file.File_Type ("Turn Node File");
+ turn_node_file.Open (Project_Filename (key));
+
+ while (turn_node_file.Read ()) {
+ turn_range.Add_Ranges (turn_node_file.Record_String ());
+ }
+ }
}
//---- create link activity file ----
@@ -121,6 +155,9 @@
key = Get_Control_String (NEW_LINK_ACTIVITY_FILE);
if (!key.empty ()) {
+ if (!perf_flag) {
+ Error ("A Performance File is needed for the Link Activity File");
+ }
if (!System_File_Flag (LOCATION)) {
Error ("A Location File is needed for the Link Activity File");
}
@@ -139,7 +176,7 @@
key = Get_Control_Text (COPY_LOCATION_FIELDS);
if (key.empty ()) {
- Error ("Location Field Names are Required for Link Activity File");
+ Error ("Location Field Names are Required for the Link Activity File");
}
link_db.File_Type ("Link Location Database");
@@ -171,6 +208,9 @@
key = Get_Control_String (NEW_ZONE_TRAVEL_FILE);
if (!key.empty ()) {
+ if (!perf_flag) {
+ Error ("A Performance File is needed for the Zone Travel File");
+ }
if (!System_File_Flag (LOCATION)) {
Error ("A Location File is needed for the Zone Travel File");
}
@@ -189,6 +229,9 @@
key = Get_Control_String (NEW_GROUP_TRAVEL_FILE);
if (!key.empty ()) {
+ if (!perf_flag) {
+ Error ("A Performance File is needed for the Group Travel File");
+ }
if (!System_File_Flag (LOCATION)) {
Error ("A Location File is needed for the Group Travel File");
}
@@ -213,6 +256,9 @@
if (ngroup > 0) {
Dir_Group group, *group_ptr;
+ if (!perf_flag) {
+ Error ("A Performance File is needed for Link Direction Files");
+ }
//---- process each group ----
for (i=1; i <= ngroup; i++) {
@@ -260,6 +306,10 @@
if (ngroup > 0) {
Data_Group group, *group_ptr;
+ if (!perf_flag) {
+ Error ("A Performance File is needed for Link Data Files");
+ }
+
//---- process each group ----
for (i=1; i <= ngroup; i++) {
@@ -297,6 +347,9 @@
key = Get_Control_String (NEW_DATA_SUMMARY_FILE);
if (!key.empty ()) {
+ if (!perf_flag) {
+ Error ("A Performance File is needed for the Data Summary File");
+ }
Print (1);
summary_file.File_Type ("New Data Summary File");
@@ -342,6 +395,9 @@
key = Get_Control_String (NEW_GROUP_SUMMARY_FILE);
if (!key.empty ()) {
+ if (!perf_flag) {
+ Error ("A Performance File is needed for the Group Summary File");
+ }
Print (1);
group_sum_file.File_Type ("New Group Summary File");
@@ -361,6 +417,9 @@
key = Get_Control_String (NEW_SPEED_CONTOUR_FILE);
if (!key.empty ()) {
+ if (!perf_flag) {
+ Error ("A Performance File is needed for the Speed Contour File");
+ }
Print (1);
speed_contour_file.File_Type ("New Speed Contour File");
Modified: version7/trunk/Transims70/LinkSum/Execute.cpp
===================================================================
--- version7/trunk/Transims70/LinkSum/Execute.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/LinkSum/Execute.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -109,6 +109,12 @@
Write_Turn_Data ();
}
+ //---- write the turn difference file ----
+
+ if (turn_diff_flag) {
+ Write_Turn_Difference ();
+ }
+
//---- print reports ----
for (int i=First_Report (); i != 0; i=Next_Report ()) {
Modified: version7/trunk/Transims70/LinkSum/LinkSum.cpp
===================================================================
--- version7/trunk/Transims70/LinkSum/LinkSum.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/LinkSum/LinkSum.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -13,14 +13,14 @@
LinkSum::LinkSum (void) : Select_Service ()
{
Program ("LinkSum");
- Version (7);
+ Version (8);
Title ("Summarize Link Performance Data");
System_File_Type required_files [] = {
- NODE, LINK, PERFORMANCE, END_FILE
+ NODE, LINK, END_FILE
};
System_File_Type optional_files [] = {
- CONNECTION, LANE_USE, LOCATION, TURN_DELAY, NEW_PERFORMANCE, NEW_TURN_DELAY, END_FILE
+ CONNECTION, LANE_USE, LOCATION, PERFORMANCE, TURN_DELAY, NEW_PERFORMANCE, NEW_TURN_DELAY, END_FILE
};
int file_service_keys [] = {
SAVE_LANE_USE_FLOWS, LINK_EQUIVALENCE_FILE, ZONE_EQUIVALENCE_FILE, 0
@@ -44,7 +44,10 @@
{ SELECT_BY_LINK_GROUP, "SELECT_BY_LINK_GROUP", LEVEL0, OPT_KEY, BOOL_KEY, "FALSE", BOOL_RANGE, NO_HELP },
{ COMPARE_TURN_DELAY_FILE, "COMPARE_TURN_DELAY_FILE", LEVEL0, OPT_KEY, IN_KEY, "", FILE_RANGE, NO_HELP },
{ COMPARE_TURN_DELAY_FORMAT, "COMPARE_TURN_DELAY_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, NO_HELP },
+ { NEW_TURN_DIFFERENCE_FILE, "NEW_TURN_DIFFERENCE_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP},
+ { NEW_TURN_DIFFERENCE_FORMAT, "NEW_TURN_DIFFERENCE_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, NO_HELP},
{ TURN_NODE_RANGE, "TURN_NODE_RANGE", LEVEL0, OPT_KEY, LIST_KEY, "ALL", RANGE_RANGE, NO_HELP },
+ { TURN_NODE_FILE, "TURN_NODE_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP},
{ NEW_LINK_ACTIVITY_FILE, "NEW_LINK_ACTIVITY_FILE", LEVEL0, OPT_KEY, OUT_KEY, "", FILE_RANGE, NO_HELP },
{ NEW_LINK_ACTIVITY_FORMAT, "NEW_LINK_ACTIVITY_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, NO_HELP },
{ COPY_LOCATION_FIELDS, "COPY_LOCATION_FIELDS", LEVEL0, OPT_KEY, TEXT_KEY, "", "", NO_HELP },
Modified: version7/trunk/Transims70/LinkSum/LinkSum.hpp
===================================================================
--- version7/trunk/Transims70/LinkSum/LinkSum.hpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/LinkSum/LinkSum.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -13,6 +13,7 @@
#include "Db_Array.hpp"
#include "TypeDefs.hpp"
#include "Data_Range.hpp"
+#include "Turn_Diff_File.hpp"
#define NUM_SUM_BINS 1000
#define NUM_PERCENTILES 9
@@ -39,7 +40,8 @@
COMPARE_PERFORMANCE_FILE = 1, COMPARE_PERFORMANCE_FORMAT,
COMPARE_LINK_MAP_FILE, COMPARE_LINK_MAP_FORMAT, SKIP_MAPPED_LINKS,
MINIMUM_LINK_VOLUME, PERSON_BASED_STATISTICS, SELECT_BY_LINK_GROUP,
- COMPARE_TURN_DELAY_FILE, COMPARE_TURN_DELAY_FORMAT, TURN_NODE_RANGE,
+ COMPARE_TURN_DELAY_FILE, COMPARE_TURN_DELAY_FORMAT, NEW_TURN_DIFFERENCE_FILE, NEW_TURN_DIFFERENCE_FORMAT,
+ TURN_NODE_RANGE, TURN_NODE_FILE,
NEW_LINK_ACTIVITY_FILE, NEW_LINK_ACTIVITY_FORMAT, COPY_LOCATION_FIELDS,
NEW_ZONE_TRAVEL_FILE, NEW_ZONE_TRAVEL_FORMAT,
NEW_GROUP_TRAVEL_FILE, NEW_GROUP_TRAVEL_FORMAT,
@@ -62,7 +64,7 @@
bool select_link_flag, activity_flag, zone_flag, group_flag, person_flag, periods_flag, ratios_flag, compare_perf_flag;
bool compare_flag, group_select, summary_flag, group_sum_flag, turn_flag, turn_compare_flag, link_map_flag, skip_link_flag;
- bool speed_contour_flag, flip_flag;
+ bool speed_contour_flag, flip_flag, turn_diff_flag;
int increment, num_inc, nerror;
double header_value, cap_factor, minimum_volume, congested_ratio;
String header_label;
@@ -76,8 +78,10 @@
Performance_File compare_file;
Turn_Delay_File turn_compare_file;
+ Turn_Diff_File turn_diff_file;
Data_Range turn_range;
+ Db_File turn_node_file;
Perf_Period_Array compare_perf_array;
Turn_Period_Array compare_turn_array;
@@ -144,6 +148,7 @@
void Write_Link_Data (Data_Group_Itr &group);
void Write_Link_Dir (Dir_Group_Itr &group);
void Write_Turn_Data (void);
+ void Write_Turn_Difference (void);
void Top_100_Report (int number);
void Top_100_Link_Header (void);
Modified: version7/trunk/Transims70/LinkSum/LinkSum.vcxproj
===================================================================
--- version7/trunk/Transims70/LinkSum/LinkSum.vcxproj 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/LinkSum/LinkSum.vcxproj 2018-07-08 18:32:12 UTC (rev 1709)
@@ -192,6 +192,7 @@
<ClCompile Include="Write_Link_Data.cpp" />
<ClCompile Include="Write_Link_Dir.cpp" />
<ClCompile Include="Write_Turn_Data.cpp" />
+ <ClCompile Include="Write_Turn_Diff.cpp" />
<ClCompile Include="Write_Zone.cpp" />
<ClCompile Include="Zone_Summary.cpp" />
</ItemGroup>
Modified: version7/trunk/Transims70/LinkSum/LinkSum.vcxproj.filters
===================================================================
--- version7/trunk/Transims70/LinkSum/LinkSum.vcxproj.filters 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/LinkSum/LinkSum.vcxproj.filters 2018-07-08 18:32:12 UTC (rev 1709)
@@ -118,5 +118,8 @@
<ClCompile Include="Speed_Contour.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="Write_Turn_Diff.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
</Project>
\ No newline at end of file
Modified: version7/trunk/Transims70/LinkSum/Write_Turn_Data.cpp
===================================================================
--- version7/trunk/Transims70/LinkSum/Write_Turn_Data.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/LinkSum/Write_Turn_Data.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -79,11 +79,14 @@
turn_data.To_Index (connect_ptr->To_Index ());
for (period=0; period < nperiod; period++) {
- period_ptr = &turn_period_array [period];
- if (index >= (int) period_ptr->size ()) continue;
+ period_ptr = turn_period_array.Period_Ptr (period);
+ if (period_ptr == 0) continue;
turn_ptr = period_ptr->Data_Ptr (index);
+ if (turn_ptr == 0) continue;
+ turn_period_array.periods->Period_Range (period, low, high);
+
turn_data.Start (low);
turn_data.End (high);
turn_data.Time (turn_ptr->Time ());
Copied: version7/trunk/Transims70/LinkSum/Write_Turn_Diff.cpp (from rev 1708, version7/branches/aecom/Transims70/LinkSum/Write_Turn_Diff.cpp)
===================================================================
--- version7/trunk/Transims70/LinkSum/Write_Turn_Diff.cpp (rev 0)
+++ version7/trunk/Transims70/LinkSum/Write_Turn_Diff.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -0,0 +1,120 @@
+//*********************************************************
+// Write_Turn_Diff.cpp - Write the Turn Difference File
+//*********************************************************
+
+#include "LinkSum.hpp"
+
+//---------------------------------------------------------
+// Write_Turn_Difference
+//---------------------------------------------------------
+
+void LinkSum::Write_Turn_Difference (void)
+{
+ int nrec, node, index, period, nperiod;
+ Dtime low, high;
+ bool select_turn_flag;
+
+ Ints_Map node_sort;
+ Ints_Map_Itr sort_itr;
+ Integers ints_rec;
+ Int_Itr int_itr;
+ Int_Map_Itr itr;
+ Dir_Itr dir_itr;
+ Dir_Data *dir_ptr;
+ Link_Data *link_ptr;
+ Node_Data *node_ptr;
+ Connect_Data *connect_ptr;
+ Turn_Period *period_ptr, *compare_ptr;
+ Turn_Data *turn_ptr, *base_ptr;
+
+ Show_Message (String ("Writing %s -- Record") % turn_diff_file.File_Type ());
+ Set_Progress ();
+
+ //---- construct the node link liste ----
+
+ select_turn_flag = (turn_range.size () > 0);
+ nperiod = time_periods.Num_Periods ();
+
+ for (itr = node_map.begin (); itr != node_map.end (); itr++) {
+ if (select_turn_flag && !turn_range.In_Range (itr->first)) continue;
+
+ node_sort.insert (Ints_Map_Data (itr->first, ints_rec));
+ }
+
+ //---- assign links to nodes ----
+
+ for (index=0, dir_itr = dir_array.begin (); dir_itr != dir_array.end (); dir_itr++, index++) {
+ link_ptr = &link_array [dir_itr->Link ()];
+
+ node = (dir_itr->Dir () == 0) ? link_ptr->Bnode () : link_ptr->Anode ();
+
+ node_ptr = &node_array [node];
+
+ sort_itr = node_sort.find (node_ptr->Node ());
+ if (sort_itr == node_sort.end ()) continue;
+
+ sort_itr->second.push_back (index);
+ }
+
+ //---- process each node ----
+
+ nrec = 0;
+
+ for (sort_itr = node_sort.begin (); sort_itr != node_sort.end (); sort_itr++) {
+ Show_Progress ();
+
+ for (int_itr = sort_itr->second.begin (); int_itr != sort_itr->second.end (); int_itr++) {
+
+ dir_ptr = &dir_array [*int_itr];
+ link_ptr = &link_array [dir_ptr->Link ()];
+
+ turn_diff_file.Link (link_ptr->Link ());
+
+ if (dir_ptr->Dir ()) {
+ node_ptr = &node_array [link_ptr->Anode ()];
+ } else {
+ node_ptr = &node_array [link_ptr->Bnode ()];
+ }
+ turn_diff_file.Node (node_ptr->Node ());
+
+ for (index = dir_ptr->First_Connect (); index >= 0; index = connect_ptr->Next_Index ()) {
+ connect_ptr = &connect_array [index];
+
+ dir_ptr = &dir_array [connect_ptr->To_Index ()];
+ link_ptr = &link_array [dir_ptr->Link ()];
+
+ turn_diff_file.To_Link (link_ptr->Link ());
+
+ for (period=0; period < nperiod; period++) {
+ period_ptr = turn_period_array.Period_Ptr (period);
+ if (period_ptr == 0) continue;
+
+ compare_ptr = compare_turn_array.Period_Ptr (period);
+ if (compare_ptr == 0) continue;
+
+ turn_ptr = period_ptr->Data_Ptr (index);
+ if (turn_ptr == 0) continue;
+
+ base_ptr = compare_ptr->Data_Ptr (index);
+ if (base_ptr == 0) continue;
+
+ turn_period_array.periods->Period_Range (period, low, high);
+ turn_diff_file.Start (low);
+ turn_diff_file.End (high);
+
+ turn_diff_file.Turn (turn_ptr->Turn ());
+ turn_diff_file.Base (base_ptr->Turn ());
+ turn_diff_file.Diff (turn_ptr->Turn () - base_ptr->Turn ());
+
+ if (!turn_diff_file.Write (false)) {
+ Error (String ("Writing %s") % turn_diff_file.File_Type ());
+ }
+ nrec++;
+ }
+ }
+ }
+ }
+ End_Progress ();
+
+ Print (2, "Number of New Turn Difference Records = ") << nrec;
+}
Modified: version7/trunk/Transims70/NetPrep/Control.cpp
===================================================================
--- version7/trunk/Transims70/NetPrep/Control.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/NetPrep/Control.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -78,6 +78,10 @@
script_file.Open (Project_Filename (key));
convert_flag = true;
}
+
+ //---- keep duplicate links ----
+
+ keep_dup_links = Get_Control_Flag (KEEP_DUPLICATE_LINKS);
}
//---- open the input node file ----
Modified: version7/trunk/Transims70/NetPrep/Input_Links.cpp
===================================================================
--- version7/trunk/Transims70/NetPrep/Input_Links.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/NetPrep/Input_Links.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -17,7 +17,7 @@
int i, anode, bnode, node, xa, ya, xb, yb, index, lanes, num, ft, at, spd, min_spd, num_approach, num_use, field;
int bearing_in, bearing_out, bear_in, bear_out;
double length, x1, y1, x2, y2, z1, z2, dx, dy, dz, ratio, speed, len;
- bool add_node_flag;
+ bool add_node_flag, duplicate_flag;
Db_Header *file;
Link_File *new_file;
@@ -325,9 +325,10 @@
//---- check for duplicate links ----
+ duplicate_flag = false;
ab_ptr = &ab_map;
ab_itr = ab_ptr->find (Int2_Key (anode, bnode));
-
+
if (ab_itr != ab_ptr->end ()) {
dir_ptr = &dir_array [ab_itr->second];
@@ -338,9 +339,11 @@
if (split_ab_flag) {
ab_ptr = &ab_map2;
- } else {
+ } else if (!keep_dup_links) {
Warning ("Duplicate Link Direction A-B = ") << anode << "-" << bnode;
continue;
+ } else {
+ duplicate_flag = true;
}
}
}
@@ -356,9 +359,11 @@
if (split_ab_flag) {
ab_ptr = &ab_map2;
- } else {
+ } else if (!keep_dup_links) {
Warning ("Duplicate Link Direction B-A = ") << bnode << "-" << anode;
continue;
+ } else {
+ duplicate_flag = true;
}
}
}
@@ -383,7 +388,7 @@
}
}
- if (ab_itr == ab_ptr->end ()) {
+ if (ab_itr == ab_ptr->end () || duplicate_flag) {
//---- create a new record ----
@@ -623,7 +628,7 @@
ab_stat = ab_ptr->insert (Int2_Map_Data (Int2_Key (anode, bnode), index));
- if (!ab_stat.second) {
+ if (!ab_stat.second && !keep_dup_links) {
Warning ("Duplicate Link Direction Number = ") << link_rec.Link ();
continue;
}
@@ -708,7 +713,7 @@
ab_stat = ab_ptr->insert (Int2_Map_Data (Int2_Key (bnode, anode), index));
- if (!ab_stat.second) {
+ if (!ab_stat.second && !keep_dup_links) {
Warning ("Duplicate Link Direction Number = ") << link_rec.Link ();
continue;
}
Modified: version7/trunk/Transims70/NetPrep/Input_Nodes.cpp
===================================================================
--- version7/trunk/Transims70/NetPrep/Input_Nodes.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/NetPrep/Input_Nodes.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -10,7 +10,7 @@
void NetPrep::Input_Nodes (void)
{
- int node, node_field, x_field, y_field, z_field, notes_field;
+ int node, node_field, x_field, y_field, z_field, notes_field, subarea_field;
double x, y, z;
Node_File *new_file;
@@ -40,6 +40,7 @@
}
node_field = file->Required_Field (NODE_FIELD_NAMES);
notes_field = file->Optional_Field (NOTES_FIELD_NAMES);
+ subarea_field = file->Optional_Field ("SUBAREA", "AREA");
//---- read each node record----
@@ -125,6 +126,7 @@
node_rec.Y (Round (y));
node_rec.Z (Round (z));
node_rec.Notes (file->Get_String (notes_field));
+ node_rec.Subarea (file->Get_Integer (subarea_field));
node_rec.Count (0);
map_stat = node_map.insert (Int_Map_Data (node, (int) node_array.size ()));
Modified: version7/trunk/Transims70/NetPrep/NetPrep.cpp
===================================================================
--- version7/trunk/Transims70/NetPrep/NetPrep.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/NetPrep/NetPrep.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -11,7 +11,7 @@
NetPrep::NetPrep (void) : Data_Service ()
{
Program ("NetPrep");
- Version (11);
+ Version (12);
Title ("Network Preparation Utility");
System_File_Type optional_files [] = {
@@ -27,6 +27,7 @@
{ INPUT_LINK_FILE, "INPUT_LINK_FILE", LEVEL0, OPT_KEY, IN_KEY, "", FILE_RANGE, NO_HELP },
{ INPUT_LINK_FORMAT, "INPUT_LINK_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP },
{ INPUT_LINK_SCRIPT, "INPUT_LINK_SCRIPT", LEVEL0, OPT_KEY, IN_KEY, "", FILE_RANGE, NO_HELP },
+ { KEEP_DUPLICATE_LINKS, "KEEP_DUPLICATE_LINKS", LEVEL0, OPT_KEY, BOOL_KEY, "FALSE", BOOL_RANGE, NO_HELP},
{ INPUT_NODE_FILE, "INPUT_NODE_FILE", LEVEL0, OPT_KEY, IN_KEY, "", FILE_RANGE, NO_HELP },
{ INPUT_NODE_FORMAT, "INPUT_NODE_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP },
{ INPUT_NODE_SCRIPT, "INPUT_NODE_SCRIPT", LEVEL0, OPT_KEY, IN_KEY, "", FILE_RANGE, NO_HELP },
@@ -101,7 +102,7 @@
fac_fld = at_fld = -1;
drop_length = split_length = num_loops = max_angle = min_length = next_loop = num_ratio = 0;
convert_flag = spdcap_flag = link_flag = node_flag = zone_flag = route_flag = new_zone_flag = connector_flag = false;
- link_shape_flag = node_shape_flag = zone_shape_flag = int_zone_flag = centroid_flag = expand_flag= false;
+ link_shape_flag = node_shape_flag = zone_shape_flag = int_zone_flag = centroid_flag = expand_flag= keep_dup_links = false;
units_flag = keep_node_flag = keep_link_flag = drop_node_flag = drop_link_flag = shape_flag = correct_flag = false;
length_flag = split_flag = split_ab_flag = collapse_flag = drop_flag = loop_flag = spacing_flag = false;
divided_flag = segment_flag = speed_flag = link_use_flag = approach_flag = link_node_flag = offset_flag = time_flag = false;
Modified: version7/trunk/Transims70/NetPrep/NetPrep.hpp
===================================================================
--- version7/trunk/Transims70/NetPrep/NetPrep.hpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/NetPrep/NetPrep.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -36,7 +36,8 @@
protected:
enum NetPrep_Keys {
- INPUT_LINK_FILE = 1, INPUT_LINK_FORMAT, INPUT_LINK_SCRIPT, INPUT_NODE_FILE, INPUT_NODE_FORMAT, INPUT_NODE_SCRIPT,
+ INPUT_LINK_FILE = 1, INPUT_LINK_FORMAT, INPUT_LINK_SCRIPT, KEEP_DUPLICATE_LINKS,
+ INPUT_NODE_FILE, INPUT_NODE_FORMAT, INPUT_NODE_SCRIPT,
INPUT_ZONE_FILE, INPUT_ZONE_FORMAT, INPUT_ZONE_SCRIPT, INPUT_SPDCAP_FILE, INPUT_SPDCAP_FORMAT,
INPUT_UNITS_OF_MEASURE, FACILITY_INDEX_FIELD, AREA_TYPE_INDEX_FIELD, CONVERSION_SCRIPT,
INTERNAL_ZONE_RANGE, KEEP_ZONE_CONNECTORS_AS_LOCALS,
@@ -71,7 +72,7 @@
int straight_diff, thru_diff, forward_diff, short_links, cross_min, cross_max, next_loop, num_ratio;
int num_periods, new_route, num_match;
bool convert_flag, spdcap_flag, link_flag, node_flag, zone_flag, route_flag, new_zone_flag, connector_flag;
- bool link_shape_flag, node_shape_flag, zone_shape_flag, int_zone_flag, centroid_flag, expand_flag;
+ bool link_shape_flag, node_shape_flag, zone_shape_flag, int_zone_flag, centroid_flag, expand_flag, keep_dup_links;
bool units_flag, keep_node_flag, keep_link_flag, drop_node_flag, drop_link_flag, shape_flag, correct_flag;
bool length_flag, split_flag, split_ab_flag, collapse_flag, drop_flag, short_flag, loop_flag, spacing_flag;
bool divided_flag, segment_flag, speed_flag, link_use_flag, approach_flag, link_node_flag, offset_flag, time_flag;
Modified: version7/trunk/Transims70/PlanPrep/Control.cpp
===================================================================
--- version7/trunk/Transims70/PlanPrep/Control.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/PlanPrep/Control.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -160,7 +160,7 @@
shift_rate = Get_Control_Double (SHIFT_START_PERCENTAGE);
shift_start_flag = (shift_rate > 0.0);
} else if (Check_Control_Key (SHIFT_END_PERCENTAGE)) {
- shift_rate = Get_Control_Double (SHIFT_START_PERCENTAGE);
+ shift_rate = Get_Control_Double (SHIFT_END_PERCENTAGE);
shift_end_flag = (shift_rate > 0.0);
}
if (shift_rate > 0.0) {
@@ -186,6 +186,8 @@
Error ("Shift Time Range is Out of Range");
}
shift_factor = (double) (high_to - low_to) / (high_from - low_from);
+
+ shift_select_flag = Get_Control_Flag (SHIFT_SELECTED_PLANS);
}
if (!thread_flag && plan_flag && (new_plan_flag || plan_skim_flag) && !merge_flag && !subarea_flag && !combine_flag && !repair_flag && !reroute_flag) {
Modified: version7/trunk/Transims70/PlanPrep/PlanPrep.cpp
===================================================================
--- version7/trunk/Transims70/PlanPrep/PlanPrep.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/PlanPrep/PlanPrep.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -11,7 +11,7 @@
PlanPrep::PlanPrep (void) : Select_Service ()
{
Program ("PlanPrep");
- Version (13);
+ Version (14);
Title ("Travel Plan Processing Utility");
System_File_Type optional_files [] = {
@@ -42,6 +42,11 @@
{ SHIFT_END_PERCENTAGE, "SHIFT_END_PERCENTAGE", LEVEL0, OPT_KEY, FLOAT_KEY, "0.0", "0.0..100.0", NO_HELP },
{ SHIFT_FROM_TIME_RANGE, "SHIFT_FROM_TIME_RANGE", LEVEL0, OPT_KEY, TEXT_KEY, "", TIME_RANGE, NO_HELP },
{ SHIFT_TO_TIME_RANGE, "SHIFT_TO_TIME_RANGE", LEVEL0, OPT_KEY, TEXT_KEY, "", TIME_RANGE, NO_HELP },
+ { SHIFT_SELECTED_PLANS, "SHIFT_SELECTED_PLANS", LEVEL0, OPT_KEY, BOOL_KEY, "FALSE", BOOL_RANGE, NO_HELP},
+ { REROUTE_PLAN_FILE, "REROUTE_PLAN_FILE", LEVEL0, OPT_KEY, IN_KEY, "", FILE_RANGE, NO_HELP },
+ { REROUTE_PLAN_FORMAT, "REROUTE_PLAN_FORMAT", LEVEL0, OPT_KEY, TEXT_KEY, "TAB_DELIMITED", FORMAT_RANGE, FORMAT_HELP },
+ { REROUTE_TIME_RANGE, "REROUTE_TIME_RANGE", LEVEL0, OPT_KEY, TEXT_KEY, "0:00..24:00", TIME_RANGE, NO_HELP },
+ { REROUTE_PERCENTAGE, "REROUTE_PERCENTAGE", LEVEL0, OPT_KEY, FLOAT_KEY, "100.0", "1.0..100.0", NO_HELP },
END_CONTROL
};
const char *reports [] = {
@@ -59,11 +64,14 @@
num_repair = repair_plans = num_subarea_merge = num_new_skims = num_constraints = num_merge_files = check_sum = check_sum_type = 0;
select_flag = merge_flag = subarea_flag = combine_flag = output_flag = new_plan_flag = new_trip_flag = new_select_flag = false;
repair_flag = skim_flag = plan_skim_flag = plan_flag = check_sum_flag = export_flag = false;
- shift_start_flag = shift_end_flag = false;
+ shift_start_flag = shift_end_flag = shift_select_flag = reroute_flag = false;
shift_rate = 0.0;
shift_factor = 1.0;
num_shifted = 0;
+ reroute_start = 0;
+ reroute_end = MIDNIGHT;
+
max_ratio = max_factor = 1.2;
plan_processing = 0;
Modified: version7/trunk/Transims70/PlanPrep/PlanPrep.hpp
===================================================================
--- version7/trunk/Transims70/PlanPrep/PlanPrep.hpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/PlanPrep/PlanPrep.hpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -28,7 +28,7 @@
enum PlanPrep_Keys {
MERGE_PLAN_FILE = 1, MERGE_PLAN_FORMAT, MERGE_SUBAREA_LEGS, REPAIR_PLAN_LEGS, CHECK_PLAN_SUMS,
CONSTRAIN_PARKRIDE_LOTS, MAX_PARKING_DEMAND_RATIO, CONSTRAIN_TRANSIT_LOADS, MAX_ROUTE_LOAD_FACTOR,
- SHIFT_START_PERCENTAGE, SHIFT_END_PERCENTAGE, SHIFT_FROM_TIME_RANGE, SHIFT_TO_TIME_RANGE,
+ SHIFT_START_PERCENTAGE, SHIFT_END_PERCENTAGE, SHIFT_FROM_TIME_RANGE, SHIFT_TO_TIME_RANGE, SHIFT_SELECTED_PLANS,
REROUTE_PLAN_FILE, REROUTE_PLAN_FORMAT, REROUTE_TIME_RANGE, REROUTE_PERCENTAGE,
};
virtual void Program_Control (void);
@@ -47,7 +47,7 @@
int check_sum, check_sum_type, num_reroute, num_shifted;
bool select_flag, merge_flag, subarea_flag, combine_flag, output_flag, new_plan_flag, new_trip_flag, new_select_flag;
bool repair_flag, plan_skim_flag, skim_flag, plan_flag, check_sum_flag, export_flag;
- bool park_list_flag, route_list_flag, shift_start_flag, shift_end_flag, reroute_flag;
+ bool park_list_flag, route_list_flag, shift_start_flag, shift_end_flag, shift_select_flag, reroute_flag;
double max_ratio, max_factor, shift_rate, shift_factor, reroute_percent;
Dtime low_from, high_from, low_to, high_to, reroute_start, reroute_end;
Time_Periods shift_from, shift_to;
Modified: version7/trunk/Transims70/PlanPrep/Process_Plan.cpp
===================================================================
--- version7/trunk/Transims70/PlanPrep/Process_Plan.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/PlanPrep/Process_Plan.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -13,7 +13,7 @@
string process_type;
Dtime shift, duration;
double prob;
- bool keep_flag, out_flag;
+ bool keep_flag, out_flag, shift_flag;
Trip_Index trip_index;
Time_Index time_index;
@@ -24,7 +24,7 @@
//---- selection checks ----
- if (!exe->Select_Plan_Data (*plan_ptr)) {
+ if (!exe->shift_select_flag && !exe->Select_Plan_Data (*plan_ptr)) {
keep_flag = false;
} else {
@@ -73,46 +73,55 @@
keep_flag = false;
} else {
+
+ if (exe->shift_select_flag) {
+ shift_flag = exe->Select_Plan_Data (*plan_ptr);
+ } else {
+ shift_flag = true;
+ }
- //---- shift start times ----
+ if (shift_flag) {
- if (exe->shift_start_flag) {
- out_flag = false;
+ //---- shift start times ----
- if (plan_ptr->Depart () >= exe->low_from && plan_ptr->Depart () <= exe->high_from) {
- prob = random_thread.Probability ();
+ if (exe->shift_start_flag) {
+ out_flag = false;
- if (exe->shift_rate > prob) {
- out_flag = true;
+ if (plan_ptr->Depart () >= exe->low_from && plan_ptr->Depart () <= exe->high_from) {
+ prob = random_thread.Probability ();
- duration = plan_ptr->Arrive () - plan_ptr->Depart ();
- shift = (int) (exe->shift_factor * (plan_ptr->Depart () - exe->low_from));
+ if (exe->shift_rate > prob) {
+ out_flag = true;
- plan_ptr->Depart (exe->low_to + shift);
- plan_ptr->Arrive (plan_ptr->Depart () + duration);
+ duration = plan_ptr->Arrive () - plan_ptr->Depart ();
+ shift = (int) (exe->shift_factor * (plan_ptr->Depart () - exe->low_from));
- plan_ptr->Start (plan_ptr->Depart ());
- plan_ptr->End (plan_ptr->Arrive ());
- num_shifted++;
+ plan_ptr->Depart (exe->low_to + shift);
+ plan_ptr->Arrive (plan_ptr->Depart () + duration);
+
+ plan_ptr->Start (plan_ptr->Depart ());
+ plan_ptr->End (plan_ptr->Arrive ());
+ num_shifted++;
+ }
+
}
- }
+ } else if (exe->shift_end_flag) { //---- shift the end time ----
+ out_flag = false;
- } else if (exe->shift_end_flag) { //---- shift the end time ----
- out_flag = false;
+ if (plan_ptr->Arrive () >= exe->low_from && plan_ptr->Arrive () <= exe->high_from) {
+ prob = random_thread.Probability ();
- if (plan_ptr->Arrive () >= exe->low_from && plan_ptr->Arrive () <= exe->high_from) {
- prob = random_thread.Probability ();
+ if (exe->shift_rate > prob) {
+ out_flag = true;
- if (exe->shift_rate > prob) {
- out_flag = true;
+ duration = plan_ptr->Arrive () - plan_ptr->Depart ();
+ shift = (int) (exe->shift_factor * (plan_ptr->Arrive () - exe->low_from));
- duration = plan_ptr->Arrive () - plan_ptr->Depart ();
- shift = (int) (exe->shift_factor * (plan_ptr->Arrive () - exe->low_from));
-
- plan_ptr->Arrive (exe->low_to + shift);
- plan_ptr->End (plan_ptr->Arrive ());
- num_shifted++;
+ plan_ptr->Arrive (exe->low_to + shift);
+ plan_ptr->End (plan_ptr->Arrive ());
+ num_shifted++;
+ }
}
}
}
Modified: version7/trunk/Transims70/PlanSelect/Control.cpp
===================================================================
--- version7/trunk/Transims70/PlanSelect/Control.cpp 2018-07-08 18:22:37 UTC (rev 1708)
+++ version7/trunk/Transims70/PlanSelect/Control.cpp 2018-07-08 18:32:12 UTC (rev 1709)
@@ -49,6 +49,12 @@
}
vol_cnt_file.Open (Project_Filename (key));
+ Mode_Range_Key (MODE_DELETE_LIMITS, delete_flag);
+ Mode_Range_Key (MODE_ADD_LIMITS, add_flag);
+
new_hhold = Get_Control_Integer (NEW_HOUSEHOLD_ID);
+
+ num_iter = Get_Control_Integer (NUMBER_OF_ITERATIONS);
}
+ if (num_iter == 0) num_iter = 1;
}
Modified: version7/trunk/Transims70/PlanSelect/PlanSelect.cpp
===================================================================
--- version7/trunk/Transims70/PlanSelect/PlanSelect.cpp 2018-07-08 18:22:37 UTC (rev 1708...
[truncated message content] |