Skip to content

Commit 2a09da5

Browse files
authored
Merge pull request #25 from P6-CMMR/test_merged
Test merged
2 parents eb5e47d + 4f9e138 commit 2a09da5

16 files changed

Lines changed: 291 additions & 39 deletions

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ set(CMAKE_CXX_EXTENSIONS OFF)
1717

1818
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
1919

20+
# Project root macro
21+
add_definitions(-DPROJECT_ROOT="${CMAKE_SOURCE_DIR}")
22+
2023
if(WIN32)
2124
set(CMAKE_CXX_FLAGS_DEBUG "/W4 /Od /DEBUG")
2225
set(CMAKE_CXX_FLAGS_RELEASE "/O2")
@@ -96,4 +99,6 @@ list(APPEND CMAKE_PREFIX_PATH "${ORTOOLS_EXTRACT_DIR}")
9699
find_package(ortools REQUIRED)
97100

98101
add_subdirectory(src)
102+
103+
enable_testing()
99104
add_subdirectory(tests)

include/result.hpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,12 @@ class Result {
3030
_globalAvgDuration(globalAvgDuration),
3131
_globalAvgCost(globalAvgCost) {}
3232

33+
explicit Result(const std::filesystem::path &inputPath) { loadResult(inputPath); };
34+
3335
static Result aggregateResults(const Results &results);
3436

3537
void saveToFile(const std::filesystem::path &outputPath, bool prettify) const;
38+
void loadResult(const std::filesystem::path &inputPath);
3639

3740
TraceLists getTraceLists() const noexcept;
3841
SimulatorSettings getSimSettings() const noexcept;
@@ -44,10 +47,10 @@ class Result {
4447
friend struct glz::meta<Result>;
4548

4649
TraceLists _traceLists;
47-
SimulatorSettings _simSettings;
48-
size_t _droppedRequests;
49-
double _globalAvgDuration;
50-
double _globalAvgCost;
50+
SimulatorSettings _simSettings{};
51+
size_t _droppedRequests{};
52+
double _globalAvgDuration{};
53+
double _globalAvgCost{};
5154
};
5255

5356
using Results = std::vector<Result>;

include/scheduler.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ class Scheduler {
1919
static SchedulerResult scheduleBatch(Environment &env, Requests &requests,
2020
bool useWeightedParking);
2121

22-
private:
2322
static constexpr int MAX_SEARCH_TIME = 60000;
2423
static constexpr int PARKING_NODES_TO_VISIT = 1;
2524
static constexpr int UNASSIGNED_PENALTY = 10000;

include/trace.hpp

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,42 +11,49 @@
1111
namespace palloc {
1212
class Assignment {
1313
public:
14+
explicit Assignment() {}
1415
explicit Assignment(Coordinate dropoffCoordinate, Coordinate parkingCoordinate,
1516
uint32_t requestDuration, uint32_t routeDuration)
1617
: _dropoffCoordinate(dropoffCoordinate),
1718
_parkingCoordinate(parkingCoordinate),
1819
_requestDuration(requestDuration),
1920
_routeDuration(routeDuration) {}
2021

22+
uint32_t getRequestDuration() const noexcept;
23+
2124
private:
2225
friend struct glz::meta<Assignment>;
2326

24-
Coordinate _dropoffCoordinate;
25-
Coordinate _parkingCoordinate;
27+
Coordinate _dropoffCoordinate{};
28+
Coordinate _parkingCoordinate{};
2629

27-
uint32_t _requestDuration;
28-
uint32_t _routeDuration;
30+
uint32_t _requestDuration{};
31+
uint32_t _routeDuration{};
2932
};
3033

3134
using Assignments = std::vector<Assignment>;
3235

3336
class Trace {
3437
public:
38+
explicit Trace() {}
3539
explicit Trace(uint32_t timestep, uint32_t currentTimeOfDay, size_t numberOfRequests,
3640
size_t numberOfOngoingSimulations, uint32_t availableParkingSpots, double cost,
37-
double averageDuration, size_t droppedRequests, Assignments assignments)
41+
double averageDuration, size_t droppedRequests, size_t earlyRequests,
42+
Assignments assignments)
3843
: _assignments(std::move(assignments)),
3944
_numberOfRequests(numberOfRequests),
4045
_numberOfOngoingSimulations(numberOfOngoingSimulations),
4146
_availableParkingSpots(availableParkingSpots),
4247
_droppedRequests(droppedRequests),
48+
_earlyRequests(earlyRequests),
4349
_timestep(timestep),
4450
_currentTimeOfDay(currentTimeOfDay),
4551
_cost(cost),
4652
_averageDuration(averageDuration) {}
4753

4854
size_t getNumberOfOngoingSimulations() const noexcept;
4955
size_t getDroppedRequests() const noexcept;
56+
size_t getEarlyRequests() const noexcept;
5057
size_t getNumberOfRequests() const noexcept;
5158

5259
uint32_t getAvailableParkingSpots() const noexcept;
@@ -56,21 +63,24 @@ class Trace {
5663
double getCost() const noexcept;
5764
double getAverageDuration() const noexcept;
5865

66+
Assignments getAssignments() const noexcept;
67+
5968
private:
6069
friend struct glz::meta<Trace>;
6170

6271
Assignments _assignments;
6372

64-
size_t _numberOfRequests;
65-
size_t _numberOfOngoingSimulations;
66-
uint32_t _availableParkingSpots;
67-
size_t _droppedRequests;
73+
size_t _numberOfRequests{};
74+
size_t _numberOfOngoingSimulations{};
75+
uint32_t _availableParkingSpots{};
76+
size_t _droppedRequests{};
77+
size_t _earlyRequests{};
6878

69-
uint32_t _timestep;
70-
uint32_t _currentTimeOfDay;
79+
uint32_t _timestep{};
80+
uint32_t _currentTimeOfDay{};
7181

72-
double _cost;
73-
double _averageDuration;
82+
double _cost{};
83+
double _averageDuration{};
7484
};
7585

7686
using TraceList = std::list<Trace>;
@@ -88,12 +98,13 @@ struct glz::meta<palloc::Assignment> {
8898
template <>
8999
struct glz::meta<palloc::Trace> {
90100
using T = palloc::Trace;
91-
static constexpr auto value = glz::object(
92-
"timestep", &T::_timestep, "current_time_of_day", &T::_currentTimeOfDay,
93-
"number_of_requests", &T::_numberOfRequests, "number_of_ongoing_simulations",
94-
&T::_numberOfOngoingSimulations, "available_parking_spots", &T::_availableParkingSpots,
95-
"cost", &T::_cost, "average_duration", &T::_averageDuration, "dropped_requests",
96-
&T::_droppedRequests, "assignments", &T::_assignments);
101+
static constexpr auto value =
102+
glz::object("timestep", &T::_timestep, "current_time_of_day", &T::_currentTimeOfDay,
103+
"number_of_requests", &T::_numberOfRequests, "number_of_ongoing_simulations",
104+
&T::_numberOfOngoingSimulations, "available_parking_spots",
105+
&T::_availableParkingSpots, "cost", &T::_cost, "average_duration",
106+
&T::_averageDuration, "dropped_requests", &T::_droppedRequests,
107+
"early_requests", &T::_earlyRequests, "assignments", &T::_assignments);
97108
};
98109

99110
#endif

scripts/linter.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ for file in $(find . -name '*.cpp' -o -name '*.hpp' | grep -v -e '^./build/' -e
4040

4141
echo "Running clang-tidy on: $file"
4242
clang-tidy -p build \
43-
-checks='boost-*,bugprone-*,performance-*,readability-*,portability-*,clang-analyzer-*,cppcoreguidelines-*' \
43+
-checks='bugprone-*,performance-*,readability-*,portability-*,clang-analyzer-*,cppcoreguidelines-*misc-*' \
4444
-fix \
4545
-extra-arg=-std=c++23 \
4646
-extra-arg=-I$(pwd)/build/include \

scripts/run_experiment.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ show_help() {
4242
# Default values
4343
MAX_DURATION=600
4444
DURATION_END=0
45-
MAX_ARRIVAL=60
45+
MAX_ARRIVAL=0
4646
ARRIVAL_END=0
4747
REQUEST_RATE=10.0
4848
REQUEST_RATE_END=0

scripts/setup.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,10 @@ fi
173173
echo "Generating environment file..."
174174
python3 generate_environment.py
175175

176+
echo "Generating test data file..."
177+
cd ../tests
178+
python3 generate_test_data.py
179+
176180
echo "Shutting down OSRM backend..."
177181
sudo docker stop $CONTAINER_ID > /dev/null
178182
sudo docker rm $CONTAINER_ID > /dev/null

src/CMakeLists.txt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
file(GLOB_RECURSE LIB_SOURCES "${PROJECT_SOURCE_DIR}/src/*.cpp")
22
list(FILTER LIB_SOURCES EXCLUDE REGEX ".*palloc\\.cpp$")
33

4-
add_library(libpalloc STATIC ${LIB_SOURCES})
5-
target_include_directories(libpalloc PUBLIC ${CMAKE_SOURCE_DIR}/include)
6-
target_link_libraries(libpalloc PUBLIC ortools::ortools glaze::glaze)
7-
set_target_properties(libpalloc PROPERTIES PREFIX "")
8-
94
add_executable(${PROJECT_NAME} "${PROJECT_SOURCE_DIR}/src/palloc.cpp")
10-
target_link_libraries(${PROJECT_NAME} PRIVATE libpalloc)
11-
set_source_files_properties(palloc.cpp PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers")
5+
if(LIB_SOURCES)
6+
add_library(libpalloc STATIC ${LIB_SOURCES})
7+
target_include_directories(libpalloc PUBLIC ${CMAKE_SOURCE_DIR}/include)
8+
target_link_libraries(libpalloc PUBLIC ortools::ortools glaze::glaze)
9+
set_target_properties(libpalloc PROPERTIES PREFIX "")
10+
target_link_libraries(${PROJECT_NAME} PRIVATE libpalloc)
11+
endif()
12+
13+
set_source_files_properties(${PROJECT_NAME}.cpp PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers")

src/result.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,19 @@ void Result::saveToFile(const std::filesystem::path &outputPath, bool prettify)
4040
}
4141
}
4242

43+
void Result::loadResult(const std::filesystem::path &inputPath) {
44+
if (!std::filesystem::exists(inputPath)) {
45+
throw std::runtime_error("Result file does not exist: " + inputPath.string());
46+
}
47+
48+
const auto error = glz::read_file_json(*this, inputPath.string(), std::string{});
49+
if (error) {
50+
const auto errorStr = glz::format_error(error, std::string{});
51+
throw std::runtime_error("Failed to read result file: " + inputPath.string() +
52+
"\nwith error: " + errorStr);
53+
}
54+
}
55+
4356
TraceLists Result::getTraceLists() const noexcept { return _traceLists; }
4457

4558
SimulatorSettings Result::getSimSettings() const noexcept { return _simSettings; }

src/simulator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ void Simulator::simulateRun(Environment env, const SimulatorSettings &simSetting
211211
std::reduce(availableParkingSpots.begin(), availableParkingSpots.end());
212212
traces.emplace_back(timestep, currentTimeOfDay, requests.size(), simulations.size(),
213213
totalAvailableParkingSpots, batchCost, batchAverageDuration,
214-
droppedRequests, assignments);
214+
droppedRequests, earlyRequests.size(), assignments);
215215

216216
runCost += batchCost;
217217
runDuration += batchAverageDuration;

0 commit comments

Comments
 (0)