From 41919dfcce1f54c23c82642db54a043ca700be8b Mon Sep 17 00:00:00 2001 From: jdlph Date: Sat, 13 Mar 2021 19:31:46 -0500 Subject: [PATCH 1/9] adopt teestream.h for logging - this is mainly for being used as shared library in Path4GMNS - include teestream.h from DTALite_Refactor - comment out outputting orgine zone id and destination zone id in g_ReadInputData(). - cosmetic changes in main_api.cpp and FlashDTA.cpp --- src/v2/DLL_src/DP/DP.vcxproj | 4 +- src/v2/DLL_src/DP/FlashDTA.cpp | 109 ++++----------------------------- src/v2/DLL_src/DP/main_api.cpp | 49 +++++++-------- src/v2/DLL_src/DP/teestream.h | 80 ++++++++++++++++++++++++ 4 files changed, 118 insertions(+), 124 deletions(-) create mode 100644 src/v2/DLL_src/DP/teestream.h diff --git a/src/v2/DLL_src/DP/DP.vcxproj b/src/v2/DLL_src/DP/DP.vcxproj index 0c9567a..43c24c6 100644 --- a/src/v2/DLL_src/DP/DP.vcxproj +++ b/src/v2/DLL_src/DP/DP.vcxproj @@ -160,10 +160,10 @@ + - - + Create Create diff --git a/src/v2/DLL_src/DP/FlashDTA.cpp b/src/v2/DLL_src/DP/FlashDTA.cpp index 7a8252b..9cbe0f7 100644 --- a/src/v2/DLL_src/DP/FlashDTA.cpp +++ b/src/v2/DLL_src/DP/FlashDTA.cpp @@ -1,93 +1,19 @@ -// Portions Copyright 2019 -// Xuesong Zhou -// If you help write or modify the code, please also list your names here. -// The reason of having Copyright info here is to ensure all the modified version, as a whole, under the GPL -// and further prevent a violation of the GPL. - -// More about "How to use GNU licenses for your own software" -// http://www.gnu.org/licenses/gpl-howto.html - -#include "stdafx.h" - -// beginning of log file -//a class that simultaneously outputs to ostream and ofstream objects -//// http://www.cplusplus.com/forum/general/64174/#msg347154 +/* Portions Copyright 2019 Xuesong Zhou + * + * If you help write or modify the code, please also list your names here. + * The reason of having Copyright info here is to ensure all the modified version, as a whole, under the GPL + * and further prevent a violation of the GPL. + * + * More about "How to use GNU licenses for your own software" + * http://www.gnu.org/licenses/gpl-howto.html + */ + +#include "pch.h" #include - -template < typename C, typename T = std::char_traits > - -struct basic_teebuf : public std::basic_streambuf -{ - typedef std::basic_streambuf streambuf_type; - typedef typename T::int_type int_type; - - basic_teebuf(streambuf_type* buff_a, streambuf_type* buff_b) - : first(buff_a), second(buff_b) {} - -protected: - virtual int_type overflow(int_type c) - { - const int_type eof = T::eof(); - if (T::eq_int_type(c, eof)) return T::not_eof(c); - else - { - const C ch = T::to_char_type(c); - if (T::eq_int_type(first->sputc(ch), eof) || - T::eq_int_type(second->sputc(ch), eof)) - return eof; - else return c; - } - } - - virtual int sync() - { - return !first->pubsync() && !second->pubsync() ? 0 : -1; - } - -private: - streambuf_type* first; - streambuf_type* second; -}; - -template < typename C, typename T = std::char_traits > -struct basic_teestream : public std::basic_ostream -{ - // add more controls of the debug logs - // - int debug_level; - int log_sig; - int log_odme; - int log_path; - int log_dta; - int log_ue; - - - typedef std::basic_ostream stream_type; - typedef basic_teebuf streambuff_type; - - basic_teestream(stream_type& first, stream_type& second) - : stream_type(&stmbuf), stmbuf(first.rdbuf(), second.rdbuf()) {} - - basic_teestream(streambuff_type* first, streambuff_type* second) - : stream_type(&stmbuf), stmbuf(first, second) {} - - ~basic_teestream() { stmbuf.pubsync(); } - -private: streambuff_type stmbuf; -}; - -typedef basic_teebuf teebuf; -typedef basic_teestream teestream; - #include #include -#include -#include - -// end of log file +#include "teestream.h" -extern teestream log_out; -extern double SignalAPI(int iteration_number, int MainSigModual_mode, int signal_updating_output); #include "main_api.cpp"; #include "signal_api.cpp"; @@ -96,7 +22,6 @@ teestream log_out(std::cout, file); int main(int argc, TCHAR* argv[], TCHAR* envp[]) { - // reset all the log files to defult 0: not output; if want to output these logs set to 1 log_out << "STALite Log" << std::fixed << std::setw(12) << '\n'; log_out.debug_level = 0; @@ -114,8 +39,6 @@ int main(int argc, TCHAR* argv[], TCHAR* envp[]) bool flag_default = false; int default_volume = 1; - - CCSVParser parser_settings; parser_settings.IsFirstLineHeader = false; @@ -125,7 +48,6 @@ int main(int argc, TCHAR* argv[], TCHAR* envp[]) { if (parser_settings.SectionName == "[assignment]") { - int value_int; string assignment_mode_str; parser_settings.GetValueByFieldName("number_of_iterations", iteration_number, true, true); @@ -159,14 +81,11 @@ int main(int argc, TCHAR* argv[], TCHAR* envp[]) // the start interation of generating signals, if there is no signals set this number larger than the iteration number parser_settings.GetValueByFieldName("signal_updating_iterations", signal_updating_iterations, true, false); - break; // just one record } if (parser_settings.SectionName == "[log]") { - - parser_settings.GetValueByFieldName("sig", log_out.log_sig,false); parser_settings.GetValueByFieldName("odme", log_out.log_odme, false); parser_settings.GetValueByFieldName("path", log_out.log_path, false); @@ -184,7 +103,5 @@ int main(int argc, TCHAR* argv[], TCHAR* envp[]) return 0; } - - network_assignment(iteration_number, assignment_mode, column_updating_iterations, signal_updating_iterations); // obtain initial flow values - + network_assignment(iteration_number, assignment_mode, column_updating_iterations); // obtain initial flow values } diff --git a/src/v2/DLL_src/DP/main_api.cpp b/src/v2/DLL_src/DP/main_api.cpp index 40fdc91..31babb3 100644 --- a/src/v2/DLL_src/DP/main_api.cpp +++ b/src/v2/DLL_src/DP/main_api.cpp @@ -1,14 +1,17 @@ - -// Portions Copyright 2019 -// Xuesong (Simon) Zhou -// If you help write or modify the code, please also list your names here. -// The reason of having Copyright info here is to ensure all the modified version, as a whole, under the GPL -// and further prevent a violation of the GPL. - -// More about "How to use GNU licenses for your own software" -// http://www.gnu.org/licenses/gpl-howto.html - -#pragma warning( disable : 4305 4267 4018) +/* Portions Copyright 2019 Xuesong Zhou + * + * If you help write or modify the code, please also list your names here. + * The reason of having Copyright info here is to ensure all the modified version, as a whole, under the GPL + * and further prevent a violation of the GPL. + * + * More about "How to use GNU licenses for your own software" + * http://www.gnu.org/licenses/gpl-howto.html + */ + +#include "pch.h" + +#pragma warning(disable: 4305 4267 4018) +#pragma warning(disable: 4244) // stop warning: "conversion from 'int' to 'float', possible loss of data" #include #include #include @@ -24,8 +27,10 @@ #include #include #include -#include "MathLibrary.h" #include +#include "MathLibrary.h" +#include "teestream.h" + using namespace std; using std::string; using std::ifstream; @@ -58,19 +63,16 @@ using std::max; /* number_of_seconds_per_interval should satisify the ratio of 60/number_of_seconds_per_interval is an integer*/ - - // Linear congruential generator #define LCG_a 17364 #define LCG_c 0 #define LCG_M 65521 // it should be 2^32, but we use a small 16-bit number to save memory - -#define sprintf_s sprintf - FILE* g_pFileOutputLog = NULL; -ofstream g_fout("log.txt"); +std::ofstream file("log.csv"); +teestream g_fout(std::cout, file); + int g_debug_level = 0; int g_log_odme = 0; int g_log_path = 0; @@ -82,16 +84,11 @@ void fopen_ss(FILE **file, const char *fileName, const char *mode) *file = fopen(fileName, mode); } - void g_ProgramStop(); - //below shows where the functions used in Agentlite.cpp come from! //Utility.cpp -#pragma warning(disable: 4244) // stop warning: "conversion from 'int' to 'float', possible loss of data" - - class CCSVParser { public: @@ -3558,7 +3555,7 @@ void g_ReadInputData(Assignment& assignment) float value = g_zone_vector[o].obs_production * g_zone_vector[d].obs_attraction / max(0.0001f, total_attraction); fprintf(g_pFileODMatrix, "%d,%d,%.4f,\n", g_zone_vector[o].zone_id, g_zone_vector[d].zone_id, value); - g_fout << "o= " << g_zone_vector[o].zone_id << " d= " << g_zone_vector[d].zone_id << ":" << value << endl; + // g_fout << "o= " << g_zone_vector[o].zone_id << " d= " << g_zone_vector[d].zone_id << ":" << value << endl; } } @@ -3737,10 +3734,10 @@ void g_ReadInputData(Assignment& assignment) parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].beta, false, false); sprintf_s(VDF_field_name, "VDF_PHF%d", demand_period_id); - parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].PHF); + parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].PHF, false, false); sprintf_s (VDF_field_name, "VDF_mu%d", demand_period_id); - parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].mu); // mu should be per hour per link, so that we can calculate congestion duration and D/mu in BPR-X + parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].mu, false, false); // mu should be per hour per link, so that we can calculate congestion duration and D/mu in BPR-X //sprintf_s (VDF_field_name, "VDF_gamma%d", demand_period_id); // remove gamma //parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].gamma); diff --git a/src/v2/DLL_src/DP/teestream.h b/src/v2/DLL_src/DP/teestream.h new file mode 100644 index 0000000..4cc4f0e --- /dev/null +++ b/src/v2/DLL_src/DP/teestream.h @@ -0,0 +1,80 @@ +/* A class that simultaneously outputs to ostream and ofstream objects + * source: http://www.cplusplus.com/forum/general/64174/#msg347154 + * + * Minor changes by Peiheng Li include, + * 1. replacing typedef with using; + * 2. removing the empty space between std::char_traits and '>' in + * template > as compliers + * complying C++11 and higer can differentiate the ending ">>" with the istream + * operator ">>". + */ + +#ifndef GUARD_TEESTREAM_H +#define GUARD_TEESTREAM_H + +#include + +template > + +struct basic_teebuf : public std::basic_streambuf +{ + using streambuf_type = std::basic_streambuf; + using int_type = typename T::int_type; + + basic_teebuf(streambuf_type* buff_a, streambuf_type* buff_b) + : first(buff_a), second(buff_b) {} + +protected: + virtual int_type overflow(int_type c) + { + const int_type eof = T::eof(); + if (T::eq_int_type(c, eof)) return T::not_eof(c); + else + { + const C ch = T::to_char_type(c); + if (T::eq_int_type(first->sputc(ch), eof) || + T::eq_int_type(second->sputc(ch), eof)) + return eof; + else return c; + } + } + + virtual int sync() + { + return !first->pubsync() && !second->pubsync() ? 0 : -1; + } + +private: + streambuf_type* first; + streambuf_type* second; +}; + +template < typename C, typename T = std::char_traits> +struct basic_teestream : public std::basic_ostream +{ + // add more controls of the debug logs + int debug_level; + int log_sig; + int log_odme; + int log_path; + int log_dta; + int log_ue; + + using stream_type = std::basic_ostream; + using streambuff_type = basic_teebuf ; + + basic_teestream(stream_type& first, stream_type& second) + : stream_type(&stmbuf), stmbuf(first.rdbuf(), second.rdbuf()) {} + + basic_teestream(streambuff_type* first, streambuff_type* second) + : stream_type(&stmbuf), stmbuf(first, second) {} + + ~basic_teestream() { stmbuf.pubsync(); } + +private: streambuff_type stmbuf; +}; + +using teebuf = basic_teebuf; +using teestream = basic_teestream; + +#endif \ No newline at end of file From 28ac58e3f6da47ca9ffa6891ecd411545e563796 Mon Sep 17 00:00:00 2001 From: jdlph Date: Sat, 13 Mar 2021 19:41:34 -0500 Subject: [PATCH 2/9] repalce #pragma once with include guard --- src/v2/DLL_src/DP/MathLibrary.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/v2/DLL_src/DP/MathLibrary.h b/src/v2/DLL_src/DP/MathLibrary.h index 429091e..a85fcf7 100644 --- a/src/v2/DLL_src/DP/MathLibrary.h +++ b/src/v2/DLL_src/DP/MathLibrary.h @@ -1,4 +1,4 @@ -#pragma once +#ifndef GUARD_MATHLIBRARY_H #ifdef _WIN32 #define MATHLIBRARY_API __declspec(dllexport) @@ -7,4 +7,6 @@ #endif extern "C" MATHLIBRARY_API double add_c(int a, int b); -extern "C" MATHLIBRARY_API double network_assignment(int iteration_number, int assignment_mode, int column_updating_iterations); \ No newline at end of file +extern "C" MATHLIBRARY_API double network_assignment(int iteration_number, int assignment_mode, int column_updating_iterations); + +#endif \ No newline at end of file From 0914682d9f811bfda228b9350904e27a860f6236 Mon Sep 17 00:00:00 2001 From: Peiheng Li Date: Sun, 14 Mar 2021 14:14:56 -0400 Subject: [PATCH 3/9] remove MathLibrary.cpp from CMakeLists.txt - this source file is no longer in use - remove add_c() from MathLibrary.h which was defined in MathLibrary.cpp - replace sprintf_s with sprintf --- src/v2/DLL_src/DP/CMakeLists.txt | 2 +- src/v2/DLL_src/DP/MathLibrary.h | 1 - src/v2/DLL_src/DP/main_api.cpp | 14 +++++++------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/v2/DLL_src/DP/CMakeLists.txt b/src/v2/DLL_src/DP/CMakeLists.txt index 865a8b6..644ab64 100755 --- a/src/v2/DLL_src/DP/CMakeLists.txt +++ b/src/v2/DLL_src/DP/CMakeLists.txt @@ -21,7 +21,7 @@ endif() set(CMAKE_BUILD_TYPE "Release") set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) -add_library(DTALite_DLL SHARED MathLibrary.cpp main_api.cpp) +add_library(DTALite_DLL SHARED main_api.cpp) # using OpenMP, the second command is only needed for macOS find_package(OpenMP REQUIRED) diff --git a/src/v2/DLL_src/DP/MathLibrary.h b/src/v2/DLL_src/DP/MathLibrary.h index a85fcf7..fe57100 100644 --- a/src/v2/DLL_src/DP/MathLibrary.h +++ b/src/v2/DLL_src/DP/MathLibrary.h @@ -6,7 +6,6 @@ #define MATHLIBRARY_API #endif -extern "C" MATHLIBRARY_API double add_c(int a, int b); extern "C" MATHLIBRARY_API double network_assignment(int iteration_number, int assignment_mode, int column_updating_iterations); #endif \ No newline at end of file diff --git a/src/v2/DLL_src/DP/main_api.cpp b/src/v2/DLL_src/DP/main_api.cpp index 31babb3..67db42e 100644 --- a/src/v2/DLL_src/DP/main_api.cpp +++ b/src/v2/DLL_src/DP/main_api.cpp @@ -8,7 +8,7 @@ * http://www.gnu.org/licenses/gpl-howto.html */ -#include "pch.h" +// #include "pch.h" #pragma warning(disable: 4305 4267 4018) #pragma warning(disable: 4244) // stop warning: "conversion from 'int' to 'float', possible loss of data" @@ -3721,22 +3721,22 @@ void g_ReadInputData(Assignment& assignment) int demand_period_id = assignment.g_DemandPeriodVector[tau].demand_period_id; - sprintf_s (VDF_field_name, "VDF_fftt%d", demand_period_id); + sprintf (VDF_field_name, "VDF_fftt%d", demand_period_id); parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].FFTT,false,false); // FFTT should be per min - sprintf_s (VDF_field_name, "VDF_cap%d", demand_period_id); + sprintf (VDF_field_name, "VDF_cap%d", demand_period_id); parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].capacity, false, false); // capacity should be per period per link (include all lanes) - sprintf_s (VDF_field_name, "VDF_alpha%d", demand_period_id); + sprintf (VDF_field_name, "VDF_alpha%d", demand_period_id); parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].alpha, false, false); - sprintf_s (VDF_field_name, "VDF_beta%d", demand_period_id); + sprintf (VDF_field_name, "VDF_beta%d", demand_period_id); parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].beta, false, false); - sprintf_s(VDF_field_name, "VDF_PHF%d", demand_period_id); + sprintf(VDF_field_name, "VDF_PHF%d", demand_period_id); parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].PHF, false, false); - sprintf_s (VDF_field_name, "VDF_mu%d", demand_period_id); + sprintf (VDF_field_name, "VDF_mu%d", demand_period_id); parser_link.GetValueByFieldName(VDF_field_name, link.VDF_period[tau].mu, false, false); // mu should be per hour per link, so that we can calculate congestion duration and D/mu in BPR-X //sprintf_s (VDF_field_name, "VDF_gamma%d", demand_period_id); // remove gamma From c734fe8e7c3dfa29ff3b1798233a02ddde376817 Mon Sep 17 00:00:00 2001 From: jdlph Date: Sun, 14 Mar 2021 14:23:29 -0400 Subject: [PATCH 4/9] add executable on macOS and update .gitignore - do not track log.csv and .DS_Store --- .gitignore | 4 +++- test_dll/DTALite | Bin 0 -> 270024 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100755 test_dll/DTALite diff --git a/.gitignore b/.gitignore index dd5d034..68a2456 100644 --- a/.gitignore +++ b/.gitignore @@ -18,5 +18,7 @@ test_dll/link_performance.csv test_dll/agent.csv test_dll/solution.csv test_dll/log.txt +test_dll/log.csv # untrack build folder for building shared libraries -build/ \ No newline at end of file +build/ +.DS_Store \ No newline at end of file diff --git a/test_dll/DTALite b/test_dll/DTALite new file mode 100755 index 0000000000000000000000000000000000000000..c4e6ad809f23ed3cb5f84f1a637cab9e9b027c33 GIT binary patch literal 270024 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 Bso4Mk literal 0 HcmV?d00001 From f6874c9479495d4db7c55044761026ae6f947c0e Mon Sep 17 00:00:00 2001 From: jdlph Date: Sun, 14 Mar 2021 14:34:34 -0400 Subject: [PATCH 5/9] update CMakeLists.txt to specify C++11 - rename DLL_src to dll and Exe_src to exe --- src/v2/{DLL_src => dll}/DP/CMakeLists.txt | 5 +++++ src/v2/{DLL_src => dll}/DP/DP.vcxproj | 0 src/v2/{DLL_src => dll}/DP/FlashDTA.cpp | 0 src/v2/{DLL_src => dll}/DP/MathLibrary.h | 0 src/v2/{DLL_src => dll}/DP/framework.h | 0 src/v2/{DLL_src => dll}/DP/main_api.cpp | 0 src/v2/{DLL_src => dll}/DP/pch.cpp | 0 src/v2/{DLL_src => dll}/DP/pch.h | 0 src/v2/{DLL_src => dll}/DP/signal_api.cpp | 0 src/v2/{DLL_src => dll}/DP/teestream.h | 0 src/v2/{DLL_src => dll}/DTALiteDLL.sln | 0 src/v2/{Exe_src => exe}/AgentLite/AgentLite.vcxproj | 0 src/v2/{Exe_src => exe}/AgentLite/DTALite_main.cpp | 0 src/v2/{Exe_src => exe}/AgentLite/Resource.h | 0 src/v2/{Exe_src => exe}/AgentLite/main_api.cpp | 0 src/v2/{Exe_src => exe}/AgentLite/stdafx.cpp | 0 src/v2/{Exe_src => exe}/AgentLite/stdafx.h | 0 src/v2/{Exe_src => exe}/AgentLite/targetver.h | 0 src/v2/{Exe_src => exe}/DTALite.sln | 0 19 files changed, 5 insertions(+) rename src/v2/{DLL_src => dll}/DP/CMakeLists.txt (83%) rename src/v2/{DLL_src => dll}/DP/DP.vcxproj (100%) rename src/v2/{DLL_src => dll}/DP/FlashDTA.cpp (100%) rename src/v2/{DLL_src => dll}/DP/MathLibrary.h (100%) rename src/v2/{DLL_src => dll}/DP/framework.h (100%) rename src/v2/{DLL_src => dll}/DP/main_api.cpp (100%) rename src/v2/{DLL_src => dll}/DP/pch.cpp (100%) rename src/v2/{DLL_src => dll}/DP/pch.h (100%) rename src/v2/{DLL_src => dll}/DP/signal_api.cpp (100%) rename src/v2/{DLL_src => dll}/DP/teestream.h (100%) rename src/v2/{DLL_src => dll}/DTALiteDLL.sln (100%) rename src/v2/{Exe_src => exe}/AgentLite/AgentLite.vcxproj (100%) rename src/v2/{Exe_src => exe}/AgentLite/DTALite_main.cpp (100%) rename src/v2/{Exe_src => exe}/AgentLite/Resource.h (100%) rename src/v2/{Exe_src => exe}/AgentLite/main_api.cpp (100%) rename src/v2/{Exe_src => exe}/AgentLite/stdafx.cpp (100%) rename src/v2/{Exe_src => exe}/AgentLite/stdafx.h (100%) rename src/v2/{Exe_src => exe}/AgentLite/targetver.h (100%) rename src/v2/{Exe_src => exe}/DTALite.sln (100%) diff --git a/src/v2/DLL_src/DP/CMakeLists.txt b/src/v2/dll/DP/CMakeLists.txt similarity index 83% rename from src/v2/DLL_src/DP/CMakeLists.txt rename to src/v2/dll/DP/CMakeLists.txt index 644ab64..6e7a6dd 100755 --- a/src/v2/DLL_src/DP/CMakeLists.txt +++ b/src/v2/dll/DP/CMakeLists.txt @@ -8,6 +8,11 @@ elseif(UNIX) message("Building so or dylib file on ${CMAKE_SYSTEM_NAME}") endif() +# specify the C++ standard +# C++11 is necessary as teestream.h requires C++11 to be complied +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED True) + # enable OpenMP if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(CMAKE_CXX_FLAGS "-Xpreprocessor -fopenmp -lomp") diff --git a/src/v2/DLL_src/DP/DP.vcxproj b/src/v2/dll/DP/DP.vcxproj similarity index 100% rename from src/v2/DLL_src/DP/DP.vcxproj rename to src/v2/dll/DP/DP.vcxproj diff --git a/src/v2/DLL_src/DP/FlashDTA.cpp b/src/v2/dll/DP/FlashDTA.cpp similarity index 100% rename from src/v2/DLL_src/DP/FlashDTA.cpp rename to src/v2/dll/DP/FlashDTA.cpp diff --git a/src/v2/DLL_src/DP/MathLibrary.h b/src/v2/dll/DP/MathLibrary.h similarity index 100% rename from src/v2/DLL_src/DP/MathLibrary.h rename to src/v2/dll/DP/MathLibrary.h diff --git a/src/v2/DLL_src/DP/framework.h b/src/v2/dll/DP/framework.h similarity index 100% rename from src/v2/DLL_src/DP/framework.h rename to src/v2/dll/DP/framework.h diff --git a/src/v2/DLL_src/DP/main_api.cpp b/src/v2/dll/DP/main_api.cpp similarity index 100% rename from src/v2/DLL_src/DP/main_api.cpp rename to src/v2/dll/DP/main_api.cpp diff --git a/src/v2/DLL_src/DP/pch.cpp b/src/v2/dll/DP/pch.cpp similarity index 100% rename from src/v2/DLL_src/DP/pch.cpp rename to src/v2/dll/DP/pch.cpp diff --git a/src/v2/DLL_src/DP/pch.h b/src/v2/dll/DP/pch.h similarity index 100% rename from src/v2/DLL_src/DP/pch.h rename to src/v2/dll/DP/pch.h diff --git a/src/v2/DLL_src/DP/signal_api.cpp b/src/v2/dll/DP/signal_api.cpp similarity index 100% rename from src/v2/DLL_src/DP/signal_api.cpp rename to src/v2/dll/DP/signal_api.cpp diff --git a/src/v2/DLL_src/DP/teestream.h b/src/v2/dll/DP/teestream.h similarity index 100% rename from src/v2/DLL_src/DP/teestream.h rename to src/v2/dll/DP/teestream.h diff --git a/src/v2/DLL_src/DTALiteDLL.sln b/src/v2/dll/DTALiteDLL.sln similarity index 100% rename from src/v2/DLL_src/DTALiteDLL.sln rename to src/v2/dll/DTALiteDLL.sln diff --git a/src/v2/Exe_src/AgentLite/AgentLite.vcxproj b/src/v2/exe/AgentLite/AgentLite.vcxproj similarity index 100% rename from src/v2/Exe_src/AgentLite/AgentLite.vcxproj rename to src/v2/exe/AgentLite/AgentLite.vcxproj diff --git a/src/v2/Exe_src/AgentLite/DTALite_main.cpp b/src/v2/exe/AgentLite/DTALite_main.cpp similarity index 100% rename from src/v2/Exe_src/AgentLite/DTALite_main.cpp rename to src/v2/exe/AgentLite/DTALite_main.cpp diff --git a/src/v2/Exe_src/AgentLite/Resource.h b/src/v2/exe/AgentLite/Resource.h similarity index 100% rename from src/v2/Exe_src/AgentLite/Resource.h rename to src/v2/exe/AgentLite/Resource.h diff --git a/src/v2/Exe_src/AgentLite/main_api.cpp b/src/v2/exe/AgentLite/main_api.cpp similarity index 100% rename from src/v2/Exe_src/AgentLite/main_api.cpp rename to src/v2/exe/AgentLite/main_api.cpp diff --git a/src/v2/Exe_src/AgentLite/stdafx.cpp b/src/v2/exe/AgentLite/stdafx.cpp similarity index 100% rename from src/v2/Exe_src/AgentLite/stdafx.cpp rename to src/v2/exe/AgentLite/stdafx.cpp diff --git a/src/v2/Exe_src/AgentLite/stdafx.h b/src/v2/exe/AgentLite/stdafx.h similarity index 100% rename from src/v2/Exe_src/AgentLite/stdafx.h rename to src/v2/exe/AgentLite/stdafx.h diff --git a/src/v2/Exe_src/AgentLite/targetver.h b/src/v2/exe/AgentLite/targetver.h similarity index 100% rename from src/v2/Exe_src/AgentLite/targetver.h rename to src/v2/exe/AgentLite/targetver.h diff --git a/src/v2/Exe_src/DTALite.sln b/src/v2/exe/DTALite.sln similarity index 100% rename from src/v2/Exe_src/DTALite.sln rename to src/v2/exe/DTALite.sln From 124a3aa93201aa3ee825f1a4ca76a4aec67be56e Mon Sep 17 00:00:00 2001 From: jdlph Date: Sun, 14 Mar 2021 20:17:11 -0400 Subject: [PATCH 6/9] change argument list order in network_assignment() - the current order is int assignment_mode, int iteration_number, int column_updating_iterations, which is conistent with Python implementation - switch back to ofstream to store log.txt as cout will ruin Jupyder notebook --- src/v2/dll/DP/MathLibrary.h | 2 +- src/v2/dll/DP/main_api.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/v2/dll/DP/MathLibrary.h b/src/v2/dll/DP/MathLibrary.h index fe57100..4114cfa 100644 --- a/src/v2/dll/DP/MathLibrary.h +++ b/src/v2/dll/DP/MathLibrary.h @@ -6,6 +6,6 @@ #define MATHLIBRARY_API #endif -extern "C" MATHLIBRARY_API double network_assignment(int iteration_number, int assignment_mode, int column_updating_iterations); +extern "C" MATHLIBRARY_API double network_assignment(int assignment_mode, int iteration_number, int column_updating_iterations); #endif \ No newline at end of file diff --git a/src/v2/dll/DP/main_api.cpp b/src/v2/dll/DP/main_api.cpp index 67db42e..6536559 100644 --- a/src/v2/dll/DP/main_api.cpp +++ b/src/v2/dll/DP/main_api.cpp @@ -8,7 +8,7 @@ * http://www.gnu.org/licenses/gpl-howto.html */ -// #include "pch.h" + //#include "pch.h" #pragma warning(disable: 4305 4267 4018) #pragma warning(disable: 4244) // stop warning: "conversion from 'int' to 'float', possible loss of data" @@ -70,8 +70,8 @@ using std::max; FILE* g_pFileOutputLog = NULL; -std::ofstream file("log.csv"); -teestream g_fout(std::cout, file); +ofstream g_fout("log.txt"); +//teestream g_fout(std::cout, file); int g_debug_level = 0; int g_log_odme = 0; @@ -5731,7 +5731,7 @@ void CLink::CalculateTD_VDFunction() } -double network_assignment(int iteration_number, int assignment_mode, int column_updating_iterations) +double network_assignment(int assignment_mode, int iteration_number, int column_updating_iterations) { // for testing cout << "network assignment" << endl; From 2c98a96b1817313865e4b4edd74be60f79296c67 Mon Sep 17 00:00:00 2001 From: jdlph Date: Thu, 18 Mar 2021 21:47:26 -0400 Subject: [PATCH 7/9] restructure the directories - create folder DTALite and move all DTALite source files here - create path_engine and move all shortest path engine source files used to build shared library here - rename lib to bin where we store precompiled shared libraries - remove output files in test data sets --- .../v1}/AgentLite/AgentLite.vcxproj | 0 {src/cpp => DTALite/v1}/AgentLite/Debug.txt | 0 .../cpp => DTALite/v1}/AgentLite/FlashDTA.cpp | 0 {src/cpp => DTALite/v1}/AgentLite/ReadMe.txt | 0 {src/cpp => DTALite/v1}/AgentLite/Resource.h | 0 {src/cpp => DTALite/v1}/AgentLite/STALite.cpp | 0 .../cpp => DTALite/v1}/AgentLite/main_api.cpp | 0 .../v1}/AgentLite/signal_api.cpp | 0 {src/cpp => DTALite/v1}/AgentLite/stdafx.cpp | 0 {src/cpp => DTALite/v1}/AgentLite/stdafx.h | 0 {src/cpp => DTALite/v1}/AgentLite/targetver.h | 0 {src/cpp => DTALite/v1}/DTALite.sln | 0 {src => DTALite}/v2/dll/DP/CMakeLists.txt | 0 {src => DTALite}/v2/dll/DP/DP.vcxproj | 0 {src => DTALite}/v2/dll/DP/FlashDTA.cpp | 0 {src => DTALite}/v2/dll/DP/MathLibrary.h | 0 .../src_lib => DTALite/v2/dll}/DP/framework.h | 0 {src => DTALite}/v2/dll/DP/main_api.cpp | 0 .../src_lib => DTALite/v2/dll}/DP/pch.cpp | 0 .../src_lib => DTALite/v2/dll}/DP/pch.h | 0 {src => DTALite}/v2/dll/DP/signal_api.cpp | 0 {src => DTALite}/v2/dll/DP/teestream.h | 0 {src => DTALite}/v2/dll/DTALiteDLL.sln | 0 .../v2/exe/AgentLite/AgentLite.vcxproj | 0 .../v2/exe/AgentLite/DTALite_main.cpp | 0 {src => DTALite}/v2/exe/AgentLite/Resource.h | 0 .../v2/exe/AgentLite/main_api.cpp | 0 {src => DTALite}/v2/exe/AgentLite/stdafx.cpp | 0 {src => DTALite}/v2/exe/AgentLite/stdafx.h | 0 {src => DTALite}/v2/exe/AgentLite/targetver.h | 0 {src => DTALite}/v2/exe/DTALite.sln | 0 {lib => bin}/libstalite.dll | Bin {lib => bin}/libstalite_base.dll | Bin {lib => bin}/libstalite_base.so | Bin {src/python/src_lib => path_engine}/DP.sln | 0 .../src_lib => path_engine}/DP/DP.vcxproj | 0 .../src_lib => path_engine}/DP/Makefile | 0 .../DP/MathLibrary.cpp | 0 .../src_lib => path_engine}/DP/MathLibrary.h | 0 .../src_lib => path_engine}/DP/dllmain.cpp | 0 {src/v2/dll => path_engine}/DP/framework.h | 0 {src/v2/dll => path_engine}/DP/pch.cpp | 0 {src/v2/dll => path_engine}/DP/pch.h | 0 src/{python => }/dtalite_s.py | 0 src/{python => }/dtalite_s_v0.1.py | 0 test_dll/Braess's_Paradox/log.csv | 128 ------------------ test_dll/Braess's_Paradox/log.txt | 3 - test_dll/Chicago_Sketch/NeXTA.log | 0 test_dll/Chicago_Sketch/log.txt | 16 --- .../~$link_performance_comparison.xlsx | Bin 165 -> 0 bytes 50 files changed, 147 deletions(-) rename {src/cpp => DTALite/v1}/AgentLite/AgentLite.vcxproj (100%) rename {src/cpp => DTALite/v1}/AgentLite/Debug.txt (100%) rename {src/cpp => DTALite/v1}/AgentLite/FlashDTA.cpp (100%) rename {src/cpp => DTALite/v1}/AgentLite/ReadMe.txt (100%) rename {src/cpp => DTALite/v1}/AgentLite/Resource.h (100%) rename {src/cpp => DTALite/v1}/AgentLite/STALite.cpp (100%) rename {src/cpp => DTALite/v1}/AgentLite/main_api.cpp (100%) rename {src/cpp => DTALite/v1}/AgentLite/signal_api.cpp (100%) rename {src/cpp => DTALite/v1}/AgentLite/stdafx.cpp (100%) rename {src/cpp => DTALite/v1}/AgentLite/stdafx.h (100%) rename {src/cpp => DTALite/v1}/AgentLite/targetver.h (100%) rename {src/cpp => DTALite/v1}/DTALite.sln (100%) rename {src => DTALite}/v2/dll/DP/CMakeLists.txt (100%) rename {src => DTALite}/v2/dll/DP/DP.vcxproj (100%) rename {src => DTALite}/v2/dll/DP/FlashDTA.cpp (100%) rename {src => DTALite}/v2/dll/DP/MathLibrary.h (100%) rename {src/python/src_lib => DTALite/v2/dll}/DP/framework.h (100%) rename {src => DTALite}/v2/dll/DP/main_api.cpp (100%) rename {src/python/src_lib => DTALite/v2/dll}/DP/pch.cpp (100%) rename {src/python/src_lib => DTALite/v2/dll}/DP/pch.h (100%) rename {src => DTALite}/v2/dll/DP/signal_api.cpp (100%) rename {src => DTALite}/v2/dll/DP/teestream.h (100%) rename {src => DTALite}/v2/dll/DTALiteDLL.sln (100%) rename {src => DTALite}/v2/exe/AgentLite/AgentLite.vcxproj (100%) rename {src => DTALite}/v2/exe/AgentLite/DTALite_main.cpp (100%) rename {src => DTALite}/v2/exe/AgentLite/Resource.h (100%) rename {src => DTALite}/v2/exe/AgentLite/main_api.cpp (100%) rename {src => DTALite}/v2/exe/AgentLite/stdafx.cpp (100%) rename {src => DTALite}/v2/exe/AgentLite/stdafx.h (100%) rename {src => DTALite}/v2/exe/AgentLite/targetver.h (100%) rename {src => DTALite}/v2/exe/DTALite.sln (100%) rename {lib => bin}/libstalite.dll (100%) rename {lib => bin}/libstalite_base.dll (100%) rename {lib => bin}/libstalite_base.so (100%) rename {src/python/src_lib => path_engine}/DP.sln (100%) rename {src/python/src_lib => path_engine}/DP/DP.vcxproj (100%) rename {src/python/src_lib => path_engine}/DP/Makefile (100%) rename {src/python/src_lib => path_engine}/DP/MathLibrary.cpp (100%) rename {src/python/src_lib => path_engine}/DP/MathLibrary.h (100%) rename {src/python/src_lib => path_engine}/DP/dllmain.cpp (100%) rename {src/v2/dll => path_engine}/DP/framework.h (100%) rename {src/v2/dll => path_engine}/DP/pch.cpp (100%) rename {src/v2/dll => path_engine}/DP/pch.h (100%) rename src/{python => }/dtalite_s.py (100%) rename src/{python => }/dtalite_s_v0.1.py (100%) delete mode 100644 test_dll/Braess's_Paradox/log.csv delete mode 100644 test_dll/Braess's_Paradox/log.txt delete mode 100644 test_dll/Chicago_Sketch/NeXTA.log delete mode 100644 test_dll/Chicago_Sketch/log.txt delete mode 100644 test_dll/Chicago_Sketch/~$link_performance_comparison.xlsx diff --git a/src/cpp/AgentLite/AgentLite.vcxproj b/DTALite/v1/AgentLite/AgentLite.vcxproj similarity index 100% rename from src/cpp/AgentLite/AgentLite.vcxproj rename to DTALite/v1/AgentLite/AgentLite.vcxproj diff --git a/src/cpp/AgentLite/Debug.txt b/DTALite/v1/AgentLite/Debug.txt similarity index 100% rename from src/cpp/AgentLite/Debug.txt rename to DTALite/v1/AgentLite/Debug.txt diff --git a/src/cpp/AgentLite/FlashDTA.cpp b/DTALite/v1/AgentLite/FlashDTA.cpp similarity index 100% rename from src/cpp/AgentLite/FlashDTA.cpp rename to DTALite/v1/AgentLite/FlashDTA.cpp diff --git a/src/cpp/AgentLite/ReadMe.txt b/DTALite/v1/AgentLite/ReadMe.txt similarity index 100% rename from src/cpp/AgentLite/ReadMe.txt rename to DTALite/v1/AgentLite/ReadMe.txt diff --git a/src/cpp/AgentLite/Resource.h b/DTALite/v1/AgentLite/Resource.h similarity index 100% rename from src/cpp/AgentLite/Resource.h rename to DTALite/v1/AgentLite/Resource.h diff --git a/src/cpp/AgentLite/STALite.cpp b/DTALite/v1/AgentLite/STALite.cpp similarity index 100% rename from src/cpp/AgentLite/STALite.cpp rename to DTALite/v1/AgentLite/STALite.cpp diff --git a/src/cpp/AgentLite/main_api.cpp b/DTALite/v1/AgentLite/main_api.cpp similarity index 100% rename from src/cpp/AgentLite/main_api.cpp rename to DTALite/v1/AgentLite/main_api.cpp diff --git a/src/cpp/AgentLite/signal_api.cpp b/DTALite/v1/AgentLite/signal_api.cpp similarity index 100% rename from src/cpp/AgentLite/signal_api.cpp rename to DTALite/v1/AgentLite/signal_api.cpp diff --git a/src/cpp/AgentLite/stdafx.cpp b/DTALite/v1/AgentLite/stdafx.cpp similarity index 100% rename from src/cpp/AgentLite/stdafx.cpp rename to DTALite/v1/AgentLite/stdafx.cpp diff --git a/src/cpp/AgentLite/stdafx.h b/DTALite/v1/AgentLite/stdafx.h similarity index 100% rename from src/cpp/AgentLite/stdafx.h rename to DTALite/v1/AgentLite/stdafx.h diff --git a/src/cpp/AgentLite/targetver.h b/DTALite/v1/AgentLite/targetver.h similarity index 100% rename from src/cpp/AgentLite/targetver.h rename to DTALite/v1/AgentLite/targetver.h diff --git a/src/cpp/DTALite.sln b/DTALite/v1/DTALite.sln similarity index 100% rename from src/cpp/DTALite.sln rename to DTALite/v1/DTALite.sln diff --git a/src/v2/dll/DP/CMakeLists.txt b/DTALite/v2/dll/DP/CMakeLists.txt similarity index 100% rename from src/v2/dll/DP/CMakeLists.txt rename to DTALite/v2/dll/DP/CMakeLists.txt diff --git a/src/v2/dll/DP/DP.vcxproj b/DTALite/v2/dll/DP/DP.vcxproj similarity index 100% rename from src/v2/dll/DP/DP.vcxproj rename to DTALite/v2/dll/DP/DP.vcxproj diff --git a/src/v2/dll/DP/FlashDTA.cpp b/DTALite/v2/dll/DP/FlashDTA.cpp similarity index 100% rename from src/v2/dll/DP/FlashDTA.cpp rename to DTALite/v2/dll/DP/FlashDTA.cpp diff --git a/src/v2/dll/DP/MathLibrary.h b/DTALite/v2/dll/DP/MathLibrary.h similarity index 100% rename from src/v2/dll/DP/MathLibrary.h rename to DTALite/v2/dll/DP/MathLibrary.h diff --git a/src/python/src_lib/DP/framework.h b/DTALite/v2/dll/DP/framework.h similarity index 100% rename from src/python/src_lib/DP/framework.h rename to DTALite/v2/dll/DP/framework.h diff --git a/src/v2/dll/DP/main_api.cpp b/DTALite/v2/dll/DP/main_api.cpp similarity index 100% rename from src/v2/dll/DP/main_api.cpp rename to DTALite/v2/dll/DP/main_api.cpp diff --git a/src/python/src_lib/DP/pch.cpp b/DTALite/v2/dll/DP/pch.cpp similarity index 100% rename from src/python/src_lib/DP/pch.cpp rename to DTALite/v2/dll/DP/pch.cpp diff --git a/src/python/src_lib/DP/pch.h b/DTALite/v2/dll/DP/pch.h similarity index 100% rename from src/python/src_lib/DP/pch.h rename to DTALite/v2/dll/DP/pch.h diff --git a/src/v2/dll/DP/signal_api.cpp b/DTALite/v2/dll/DP/signal_api.cpp similarity index 100% rename from src/v2/dll/DP/signal_api.cpp rename to DTALite/v2/dll/DP/signal_api.cpp diff --git a/src/v2/dll/DP/teestream.h b/DTALite/v2/dll/DP/teestream.h similarity index 100% rename from src/v2/dll/DP/teestream.h rename to DTALite/v2/dll/DP/teestream.h diff --git a/src/v2/dll/DTALiteDLL.sln b/DTALite/v2/dll/DTALiteDLL.sln similarity index 100% rename from src/v2/dll/DTALiteDLL.sln rename to DTALite/v2/dll/DTALiteDLL.sln diff --git a/src/v2/exe/AgentLite/AgentLite.vcxproj b/DTALite/v2/exe/AgentLite/AgentLite.vcxproj similarity index 100% rename from src/v2/exe/AgentLite/AgentLite.vcxproj rename to DTALite/v2/exe/AgentLite/AgentLite.vcxproj diff --git a/src/v2/exe/AgentLite/DTALite_main.cpp b/DTALite/v2/exe/AgentLite/DTALite_main.cpp similarity index 100% rename from src/v2/exe/AgentLite/DTALite_main.cpp rename to DTALite/v2/exe/AgentLite/DTALite_main.cpp diff --git a/src/v2/exe/AgentLite/Resource.h b/DTALite/v2/exe/AgentLite/Resource.h similarity index 100% rename from src/v2/exe/AgentLite/Resource.h rename to DTALite/v2/exe/AgentLite/Resource.h diff --git a/src/v2/exe/AgentLite/main_api.cpp b/DTALite/v2/exe/AgentLite/main_api.cpp similarity index 100% rename from src/v2/exe/AgentLite/main_api.cpp rename to DTALite/v2/exe/AgentLite/main_api.cpp diff --git a/src/v2/exe/AgentLite/stdafx.cpp b/DTALite/v2/exe/AgentLite/stdafx.cpp similarity index 100% rename from src/v2/exe/AgentLite/stdafx.cpp rename to DTALite/v2/exe/AgentLite/stdafx.cpp diff --git a/src/v2/exe/AgentLite/stdafx.h b/DTALite/v2/exe/AgentLite/stdafx.h similarity index 100% rename from src/v2/exe/AgentLite/stdafx.h rename to DTALite/v2/exe/AgentLite/stdafx.h diff --git a/src/v2/exe/AgentLite/targetver.h b/DTALite/v2/exe/AgentLite/targetver.h similarity index 100% rename from src/v2/exe/AgentLite/targetver.h rename to DTALite/v2/exe/AgentLite/targetver.h diff --git a/src/v2/exe/DTALite.sln b/DTALite/v2/exe/DTALite.sln similarity index 100% rename from src/v2/exe/DTALite.sln rename to DTALite/v2/exe/DTALite.sln diff --git a/lib/libstalite.dll b/bin/libstalite.dll similarity index 100% rename from lib/libstalite.dll rename to bin/libstalite.dll diff --git a/lib/libstalite_base.dll b/bin/libstalite_base.dll similarity index 100% rename from lib/libstalite_base.dll rename to bin/libstalite_base.dll diff --git a/lib/libstalite_base.so b/bin/libstalite_base.so similarity index 100% rename from lib/libstalite_base.so rename to bin/libstalite_base.so diff --git a/src/python/src_lib/DP.sln b/path_engine/DP.sln similarity index 100% rename from src/python/src_lib/DP.sln rename to path_engine/DP.sln diff --git a/src/python/src_lib/DP/DP.vcxproj b/path_engine/DP/DP.vcxproj similarity index 100% rename from src/python/src_lib/DP/DP.vcxproj rename to path_engine/DP/DP.vcxproj diff --git a/src/python/src_lib/DP/Makefile b/path_engine/DP/Makefile similarity index 100% rename from src/python/src_lib/DP/Makefile rename to path_engine/DP/Makefile diff --git a/src/python/src_lib/DP/MathLibrary.cpp b/path_engine/DP/MathLibrary.cpp similarity index 100% rename from src/python/src_lib/DP/MathLibrary.cpp rename to path_engine/DP/MathLibrary.cpp diff --git a/src/python/src_lib/DP/MathLibrary.h b/path_engine/DP/MathLibrary.h similarity index 100% rename from src/python/src_lib/DP/MathLibrary.h rename to path_engine/DP/MathLibrary.h diff --git a/src/python/src_lib/DP/dllmain.cpp b/path_engine/DP/dllmain.cpp similarity index 100% rename from src/python/src_lib/DP/dllmain.cpp rename to path_engine/DP/dllmain.cpp diff --git a/src/v2/dll/DP/framework.h b/path_engine/DP/framework.h similarity index 100% rename from src/v2/dll/DP/framework.h rename to path_engine/DP/framework.h diff --git a/src/v2/dll/DP/pch.cpp b/path_engine/DP/pch.cpp similarity index 100% rename from src/v2/dll/DP/pch.cpp rename to path_engine/DP/pch.cpp diff --git a/src/v2/dll/DP/pch.h b/path_engine/DP/pch.h similarity index 100% rename from src/v2/dll/DP/pch.h rename to path_engine/DP/pch.h diff --git a/src/python/dtalite_s.py b/src/dtalite_s.py similarity index 100% rename from src/python/dtalite_s.py rename to src/dtalite_s.py diff --git a/src/python/dtalite_s_v0.1.py b/src/dtalite_s_v0.1.py similarity index 100% rename from src/python/dtalite_s_v0.1.py rename to src/dtalite_s_v0.1.py diff --git a/test_dll/Braess's_Paradox/log.csv b/test_dll/Braess's_Paradox/log.csv deleted file mode 100644 index 6706956..0000000 --- a/test_dll/Braess's_Paradox/log.csv +++ /dev/null @@ -1,128 +0,0 @@ -STALite Log -Step 1: Reading input data -Step 1.1: Reading section [demand_period] in setting.csv... -number of demand periods = 1 -Step 1.2: Reading section [link_type] in setting.csv... -important: traffic_flow_code on link type 1 is 0 -important: traffic_flow_code on link type 2 is 0 -number of link types = 3 -Step 1.3: Reading section [agent_type] in setting.csv... -number of agent typess = 1 -Step 1.4: Reading node data in node.csv... -number of nodes = 4 -Step 1.5: Initializing O-D zone vector... -number of zones = 4 -Step 1.6: Reading link data in link.csv... -number of links = 4 -number of links =12 -Step 1.7: Reading service arc in timing.csv... - -Step 1.8: Reading file section [demand_file_list] in setting.csv... -reading 1 capacity reduction scenario.. -number of timing records = 1 - -allocating 4D memory for 0 zones -allocating 3D memory for 0 - -Step 1.8: Reading file section [demand_file_list] in setting.csv... -o_zone_id:1, d_zone_id: 2, value = 4000.000000 -total_demand_volume is 4000.000000 - -Step 2: Assigning computing tasks to memory blocks... -There are 4 networks in memory. - -Step 3: Column Generation for Traffic Assignment... -Total Column Generation iteration: 20 - -Current iteration number:0 -Current CPU time: 0.005000 s - -Current iteration number:1 -Current CPU time: 0.014000 s - -Current iteration number:2 -Current CPU time: 0.018000 s - -Current iteration number:3 -Current CPU time: 0.021000 s - -Current iteration number:4 -Current CPU time: 0.028000 s - -Current iteration number:5 -Current CPU time: 0.032000 s - -Current iteration number:6 -Current CPU time: 0.040000 s - -Current iteration number:7 -Current CPU time: 0.051000 s - -Current iteration number:8 -Current CPU time: 0.055000 s - -Current iteration number:9 -Current CPU time: 0.060000 s - -Current iteration number:10 -Current CPU time: 0.064000 s - -Current iteration number:11 -Current CPU time: 0.070000 s - -Current iteration number:12 -Current CPU time: 0.073000 s - -Current iteration number:13 -Current CPU time: 0.076000 s - -Current iteration number:14 -Current CPU time: 0.082000 s - -Current iteration number:15 -Current CPU time: 0.086000 s - -Current iteration number:16 -Current CPU time: 0.091000 s - -Current iteration number:17 -Current CPU time: 0.095000 s - -Current iteration number:18 -Current CPU time: 0.100000 s - -Current iteration number:19 -Current CPU time: 0.102000 s - -Step 4: Column Pool Updating -Total Column Pool Updating iteration: 20 -Current iteration number: 0 -Current iteration number: 1 -Current iteration number: 2 -Current iteration number: 3 -Current iteration number: 4 -Current iteration number: 5 -Current iteration number: 6 -Current iteration number: 7 -Current iteration number: 8 -Current iteration number: 9 -Current iteration number: 10 -Current iteration number: 11 -Current iteration number: 12 -Current iteration number: 13 -Current iteration number: 14 -Current iteration number: 15 -Current iteration number: 16 -Current iteration number: 17 -Current iteration number: 18 -Current iteration number: 19 - -Done! -CPU Running Time for column pool updating: 0.039000 s -writing link_performance.csv.. -writing agent.csv.. -writing data for 4 zones -Output for assignment with 20 iterations. Traffic assignment completes! -CPU Running Time for outputting simulation results: 0.019000 s -free memory.. -done. diff --git a/test_dll/Braess's_Paradox/log.txt b/test_dll/Braess's_Paradox/log.txt deleted file mode 100644 index ab65158..0000000 --- a/test_dll/Braess's_Paradox/log.txt +++ /dev/null @@ -1,3 +0,0 @@ -Logging Time: 2021/1/26_10:21:26:104--------------------------------------- -Logging Time: 2021/1/26_10:22:36:605--------------------------------------- -Logging Time: 2021/1/26_17:30:12:879--------------------------------------- diff --git a/test_dll/Chicago_Sketch/NeXTA.log b/test_dll/Chicago_Sketch/NeXTA.log deleted file mode 100644 index e69de29..0000000 diff --git a/test_dll/Chicago_Sketch/log.txt b/test_dll/Chicago_Sketch/log.txt deleted file mode 100644 index e3bda7e..0000000 --- a/test_dll/Chicago_Sketch/log.txt +++ /dev/null @@ -1,16 +0,0 @@ -Step 1: Reading input data -Step 1.1: Reading section [demand_period] in setting.csv... -number of demand periods = 1 -Step 1.2: Reading section [link_type] in setting.csv... -important: traffic_flow_code on link type 1 is 0 -important: traffic_flow_code on link type 2 is 0 -number of link types = 3 -Step 1.3: Reading section [agent_type] in setting.csv... -number of agent typess = 1 -Step 1.4: Reading node data in node.csv... -number of nodes = 933 -Step 1.5: Initializing O-D zone vector... -number of zones = 387 -Step 1.6: Reading link data in link.csv... -Field VDF_PHF1 in file link.csv does not exist. Please check the file. -STALite Program stops. Press any key to terminate. Thanks! diff --git a/test_dll/Chicago_Sketch/~$link_performance_comparison.xlsx b/test_dll/Chicago_Sketch/~$link_performance_comparison.xlsx deleted file mode 100644 index 9bc76be6010255f0bf6c46e5d54ca3fee1f94834..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 ycmd;yC`~QS&r4T`%E&KOAR6#6L@<;xq%ssU Date: Sat, 20 Mar 2021 11:17:31 -0400 Subject: [PATCH 8/9] cosmetic updates on README - embed links - change headers - change referrences in Other referrences to lists --- README.md | 44 +++++++++++++++++++------------------------- test/NeXTA.log | 0 2 files changed, 19 insertions(+), 25 deletions(-) delete mode 100644 test/NeXTA.log diff --git a/README.md b/README.md index 8cff0e2..9b1c384 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,35 @@ # PythonDTALite -# Step 1: White paper and application papers: -Zhou, Xuesong, and Jeffrey Taylor. "DTALite: A queue-based mesoscopic traffic simulator for fast model evaluation and calibration." Cogent Engineering 1.1 (2014): 961345. -https://www.tandfonline.com/doi/full/10.1080/23311916.2014.961345 +## Step 1: White Paper and Application: +Zhou, Xuesong, and Jeffrey Taylor. "[DTALite: A queue-based mesoscopic traffic simulator for fast model evaluation and calibration.](https://www.tandfonline.com/doi/full/10.1080/23311916.2014.961345)" Cogent Engineering 1.1 (2014): 961345. -Application of DTALite: -Marshall, Norman L. "Forecasting the impossible: The status quo of estimating traffic flows with static traffic assignment and the future of dynamic traffic assignment." Research in Transportation Business & Management 29 (2018): 85-92. -https://www.sciencedirect.com/science/article/pii/S2210539517301232 +Marshall, Norman L. "[Forecasting the impossible: The status quo of estimating traffic flows with static traffic assignment and the future of dynamic traffic assignment.](https://www.sciencedirect.com/science/article/pii/S2210539517301232)" Research in Transportation Business & Management 29 (2018): 85-92. -# Step 2: Youtube teaching videos on use of DTALite/NEXTA packages -NeXTA/DTALite Workshop Webinar by Jeff Taylor -https://www.youtube.com/channel/UCUHlqojCQ4f7VvqroUhbaFA +## Step 2: Youtube Teaching Videos on Use of DTALite/NEXTA Packages +[NeXTA/DTALite Workshop Webinar](https://www.youtube.com/channel/UCUHlqojCQ4f7VvqroUhbaFA) by Jeff Taylor +## Step 3: Mini-Lesson on the Internal Algorithmic Details +[Mini-lessson](https://youtu.be/rorZAhNNOf0) : What is the best way to learn dynamic traffic simulation and network assignment for a beginner? Do you want to integrate a powerful traffic simulator in your deep learning framework? We would like to offer a collaborative learning experience through 500 lines of python codes and real-life data sets. This is part of our mini-lessons through teaching dialog. -# Step 3: Mini-lesson on the internal algorithmic details -https://youtu.be/rorZAhNNOf0 -(What is the best way to learn dynamic traffic simulation and network assignment for a beginner? Do you want to integrate a powerful traffic simulator in your deep learning framework? We would like to offer a collaborative learning experience through 500 lines of python codes and real-life data sets. This is part of our mini-lessons through teaching dialog.) +[Python source codes](https://github.com/asu-trans-ai-lab/DTALite/blob/main/src/python/dtalite_s.py) -Python source codes: https://github.com/asu-trans-ai-lab/DTALite/blob/main/src/python/dtalite_s.py +[C++ source codes](https://github.com/asu-trans-ai-lab/DTALite/blob/main/src/v2/Exe_src/AgentLite/main_api.cpp) -C++ source codes: https://github.com/asu-trans-ai-lab/DTALite/blob/main/src/v2/Exe_src/AgentLite/main_api.cpp +[Python DLL testing environment](https://github.com/asu-trans-ai-lab/DTALite/tree/main/DTALite_DLL_test) -Python DLL testing environment: https://github.com/asu-trans-ai-lab/DTALite/tree/main/DTALite_DLL_test +## Other References: +**1. Parallel computing algorithms**: Qu, Y., & Zhou, X. (2017). Large-scale dynamic transportation network simulation: A space-time-event parallel computing approach. Transportation research part c: Emerging technologies, 75, 1-16. -# Other references: -**(1)Parallel computing algorithms**: Qu, Y., & Zhou, X. (2017). Large-scale dynamic transportation network simulation: A space-time-event parallel computing approach. Transportation research part c: Emerging technologies, 75, 1-16. +**2. OD demand estimation**: Lu, C. C., Zhou, X., & Zhang, K. (2013). Dynamic origin–destination demand flow estimation under congested traffic conditions. Transportation Research Part C: Emerging Technologies, 34, 16-37. -**(2)OD demand estimation**: Lu, C. C., Zhou, X., & Zhang, K. (2013). Dynamic origin–destination demand flow estimation under congested traffic conditions. Transportation Research Part C: Emerging Technologies, 34, 16-37. +**3. Simplified emission estimation model**: Zhou, X., Tanvir, S., Lei, H., Taylor, J., Liu, B., Rouphail, N. M., & Frey, H. C. (2015). Integrating a simplified emission estimation model and mesoscopic dynamic traffic simulator to efficiently evaluate emission impacts of traffic management strategies. Transportation Research Part D: Transport and Environment, 37, 123-136. -**(3)Simplified emission estimation model**: Zhou, X., Tanvir, S., Lei, H., Taylor, J., Liu, B., Rouphail, N. M., & Frey, H. C. (2015). Integrating a simplified emission estimation model and mesoscopic dynamic traffic simulator to efficiently evaluate emission impacts of traffic management strategies. Transportation Research Part D: Transport and Environment, 37, 123-136. +**4. Eco-system optimal time-dependent flow assignment**: Lu, C. C., Liu, J., Qu, Y., Peeta, S., Rouphail, N. M., & Zhou, X. (2016). Eco-system optimal time-dependent flow assignment in a congested network. Transportation Research Part B: Methodological, 94, 217-239. -**(4)Eco-system optimal time-dependent flow assignment**: Lu, C. C., Liu, J., Qu, Y., Peeta, S., Rouphail, N. M., & Zhou, X. (2016). Eco-system optimal time-dependent flow assignment in a congested network. Transportation Research Part B: Methodological, 94, 217-239. +**5. Transportation-induced population exposure assessment**: Vallamsundar, S., Lin, J., Konduri, K., Zhou, X., & Pendyala, R. M. (2016). A comprehensive modeling framework for transportation-induced population exposure assessment. Transportation Research Part D: Transport and Environment, 46, 94-113. -**(5)Transportation-induced population exposure assessment**: Vallamsundar, S., Lin, J., Konduri, K., Zhou, X., & Pendyala, R. M. (2016). A comprehensive modeling framework for transportation-induced population exposure assessment. Transportation Research Part D: Transport and Environment, 46, 94-113. +**6. Integrated ABM and DTA**: Xiong, C., Shahabi, M., Zhao, J., Yin, Y., Zhou, X., & Zhang, L. (2020). An integrated and personalized traveler information and incentive scheme for energy efficient mobility systems. Transportation Research Part C: Emerging Technologies, 113, 57-73. -**(6)Integrated ABM and DTA**: Xiong, C., Shahabi, M., Zhao, J., Yin, Y., Zhou, X., & Zhang, L. (2020). An integrated and personalized traveler information and incentive scheme for energy efficient mobility systems. Transportation Research Part C: Emerging Technologies, 113, 57-73. +**7. State-wide transportation modeling**: Zhang. L. (2017) Maryland SHRP2 C10 Implementation Assistance – MITAMS: Maryland Integrated Analysis Modeling System, Maryland State Highway Administration -**(7)State-wide transportation modeling**: Zhang. L. (2017) Maryland SHRP2 C10 Implementation Assistance – MITAMS: Maryland Integrated Analysis Modeling System, Maryland State Highway Administration - -**(8)Workzone applications**: Schroeder, B, et al. Work zone traffic analysis & impact assessment. (2014) FHWA/NC/2012-36. North Carolina. Dept. of Transportation. Research and Analysis Group. +**8. Workzone applications**: Schroeder, B, et al. Work zone traffic analysis & impact assessment. (2014) FHWA/NC/2012-36. North Carolina. Dept. of Transportation. Research and Analysis Group. \ No newline at end of file diff --git a/test/NeXTA.log b/test/NeXTA.log deleted file mode 100644 index e69de29..0000000 From d8c52370e9148ec207f302d6d2b80dcaf1a4fc99 Mon Sep 17 00:00:00 2001 From: jdlph Date: Sat, 20 Mar 2021 12:23:31 -0400 Subject: [PATCH 9/9] Move DTALite executables from test_dll to bin --- {test_dll => bin}/DTALite | Bin {test_dll => bin}/DTALite.exe | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename {test_dll => bin}/DTALite (100%) rename {test_dll => bin}/DTALite.exe (100%) diff --git a/test_dll/DTALite b/bin/DTALite similarity index 100% rename from test_dll/DTALite rename to bin/DTALite diff --git a/test_dll/DTALite.exe b/bin/DTALite.exe similarity index 100% rename from test_dll/DTALite.exe rename to bin/DTALite.exe