- CMake >= 3.16
- Catch2 (downloaded by CMake)
- or-tools (downloaded by CMake)
- glog (downloaded by CMake)
- cxxopts (downloaded by CMake)
- rapidjson (downloaded by CMake)
When in project root run the following.
cmake -S . -B build
cmake --build buildApplication binaries will be placed in ./build/app/, test binaries go to ./build/tests/.
When new files are added to the project, cmake -S . -B build always needs to be run, as CMake makes a file list in
configure time and only tracks changes in those files. When files are only updated this command can be skipped.
If CMake crashes with errors related to or-tools dependencies, try adding -DBUILD_DEPS=ON.
Tests can be run through Catch binary
./build/tests/mlcmst_tests - option docs.
Another option is to run them with CMake - cmake --build build -t test.
The project provides three apps. They will be generated by build in <build_path>/app/ directory. Their purpose is
briefly described here. For further usage information please run <app_path> -h.
generation- generates MLCCNetwork instances, according to provided specificationtest_case_wrapper- wraps MLCCNetwork instances with lower bound for MLCMST solutions, outputs test casesbenchmark- runs specified solvers on provided test cases and presents gathered statistics
- Add to the the paper short description of main design of this project and computation results.
- Verify that GA, VNS, GRASP heuristics give expected results and fix if not.
- In places where random numbers are used (generators, heuristics), not everywhere seeds are accepted and even if they are, they are often used for only seeding some of the randomness. This should be taken care of.