From 78b916040fe1a518929a4ff54a3a7af06b9f9a4f Mon Sep 17 00:00:00 2001 From: Erik Strand <erik.strand@cba.mit.edu> Date: Thu, 16 Apr 2020 11:34:30 -0400 Subject: [PATCH] Ensure everything can be built without vis I now regret choosing to use a cmake option for this, since I want vis and no vis executables to co-exist in the same project. For now I just have two separate build folders, but I think I should overhaul everything to use a template based strategy soon. --- CMakeLists.txt | 4 +++- optimization/optimizers/cma_es/CMakeLists.txt | 9 +++++---- optimization/optimizers/cma_es/cma_es_log.h | 2 +- optimization/optimizers/cma_es/main.cpp | 12 +++++++++--- .../conjugate_gradient_descent/CMakeLists.txt | 9 +++++---- .../optimizers/conjugate_gradient_descent/main.cpp | 12 +++++++++--- .../optimizers/gradient_descent/CMakeLists.txt | 9 +++++---- .../gradient_descent/gradient_descent_log.h | 2 +- optimization/optimizers/gradient_descent/main.cpp | 12 +++++++++--- optimization/optimizers/nelder_mead/CMakeLists.txt | 9 +++++---- optimization/optimizers/nelder_mead/main.cpp | 12 +++++++++--- 11 files changed, 61 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a9a749..5027b37 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,4 +22,6 @@ add_subdirectory(external) add_subdirectory(optimization) add_subdirectory(test) -make_meta_plot_target() +if (VISUALIZE) + make_meta_plot_target() +endif() diff --git a/optimization/optimizers/cma_es/CMakeLists.txt b/optimization/optimizers/cma_es/CMakeLists.txt index 710da45..1eefff0 100644 --- a/optimization/optimizers/cma_es/CMakeLists.txt +++ b/optimization/optimizers/cma_es/CMakeLists.txt @@ -1,8 +1,9 @@ +add_executable(cma_es + main.cpp +) +target_link_libraries(cma_es optimization_lib cma-es clara) + if (VISUALIZE) - add_executable(cma_es - main.cpp - ) - target_link_libraries(cma_es optimization_lib cma-es clara) make_plot_target(cma_es 2d ARGS -d 2) make_plot_target(cma_es 10d ARGS -d 10 -n 10000) endif() diff --git a/optimization/optimizers/cma_es/cma_es_log.h b/optimization/optimizers/cma_es/cma_es_log.h index 613186a..00aff53 100644 --- a/optimization/optimizers/cma_es/cma_es_log.h +++ b/optimization/optimizers/cma_es/cma_es_log.h @@ -27,7 +27,7 @@ struct CmaEsState { struct CmaEsLog { inline void reserve(uint32_t n) VIS_ONLY_METHOD; template <typename Objective> - inline void initialize(Objective const&); + inline void initialize(Objective const&) VIS_ONLY_METHOD; inline void push_back( double const* const* points, double const* values, diff --git a/optimization/optimizers/cma_es/main.cpp b/optimization/optimizers/cma_es/main.cpp index 44a837d..e79cb58 100644 --- a/optimization/optimizers/cma_es/main.cpp +++ b/optimization/optimizers/cma_es/main.cpp @@ -1,14 +1,18 @@ #include "clara.hpp" #include "cma_es.h" -#include "cma_es_vis.h" #include "objectives/paraboloid.h" #include "objectives/rosenbrock.h" -#include "utils/eigen_json.h" #include <iostream> + +#ifdef VISUALIZE +#include "cma_es_vis.h" +#include "utils/eigen_json.h" #include <fstream> -using namespace optimization; using json = nlohmann::json; +#endif + +using namespace optimization; //-------------------------------------------------------------------------------------------------- int main(int const argc, char const** argv) { @@ -66,6 +70,7 @@ int main(int const argc, char const** argv) { std::cout << "n generations: " << optimizer.n_iterations() << '\n'; std::cout << "final point: " << minimum << '\n'; + #ifdef VISUALIZE if (!log_file_path.empty()) { json data = optimizer; std::ofstream log_file(log_file_path); @@ -77,6 +82,7 @@ int main(int const argc, char const** argv) { std::ofstream vis_file(vis_file_path); vis_file << data.dump(4) << '\n'; } + #endif return 0; } diff --git a/optimization/optimizers/conjugate_gradient_descent/CMakeLists.txt b/optimization/optimizers/conjugate_gradient_descent/CMakeLists.txt index 273708d..d03a805 100644 --- a/optimization/optimizers/conjugate_gradient_descent/CMakeLists.txt +++ b/optimization/optimizers/conjugate_gradient_descent/CMakeLists.txt @@ -1,8 +1,9 @@ +add_executable(conjugate_gradient_descent + main.cpp +) +target_link_libraries(conjugate_gradient_descent optimization_lib clara) + if (VISUALIZE) - add_executable(conjugate_gradient_descent - main.cpp - ) - target_link_libraries(conjugate_gradient_descent optimization_lib clara) make_plot_target(conjugate_gradient_descent 2d ARGS -d 2) make_plot_target(conjugate_gradient_descent 10d ARGS -d 10) endif() diff --git a/optimization/optimizers/conjugate_gradient_descent/main.cpp b/optimization/optimizers/conjugate_gradient_descent/main.cpp index 6ef1544..ce156ba 100644 --- a/optimization/optimizers/conjugate_gradient_descent/main.cpp +++ b/optimization/optimizers/conjugate_gradient_descent/main.cpp @@ -1,14 +1,18 @@ #include "clara.hpp" #include "conjugate_gradient_descent.h" -#include "conjugate_gradient_descent_vis.h" #include "objectives/paraboloid.h" #include "objectives/rosenbrock.h" -#include "utils/eigen_json.h" #include <iostream> + +#ifdef VISUALIZE +#include "conjugate_gradient_descent_vis.h" +#include "utils/eigen_json.h" #include <fstream> -using namespace optimization; using json = nlohmann::json; +#endif + +using namespace optimization; //-------------------------------------------------------------------------------------------------- int main(int const argc, char const** argv) { @@ -56,6 +60,7 @@ int main(int const argc, char const** argv) { std::cout << "n evaluations: " << optimizer.n_evaluations() << '\n'; std::cout << "final point: " << minimum << '\n'; + #ifdef VISUALIZE if (!log_file_path.empty()) { json data = optimizer; std::ofstream log_file(log_file_path); @@ -67,6 +72,7 @@ int main(int const argc, char const** argv) { std::ofstream vis_file(vis_file_path); vis_file << data.dump(4) << '\n'; } + #endif return 0; } diff --git a/optimization/optimizers/gradient_descent/CMakeLists.txt b/optimization/optimizers/gradient_descent/CMakeLists.txt index c2c7703..a1f0d4b 100644 --- a/optimization/optimizers/gradient_descent/CMakeLists.txt +++ b/optimization/optimizers/gradient_descent/CMakeLists.txt @@ -1,8 +1,9 @@ +add_executable(gradient_descent + main.cpp +) +target_link_libraries(gradient_descent optimization_lib clara) + if (VISUALIZE) - add_executable(gradient_descent - main.cpp - ) - target_link_libraries(gradient_descent optimization_lib clara) make_plot_target(gradient_descent 2d ARGS -d 2 -l 0.0015) make_plot_target(gradient_descent 10d ARGS -d 10 -l 0.0005 -n 10000) endif() diff --git a/optimization/optimizers/gradient_descent/gradient_descent_log.h b/optimization/optimizers/gradient_descent/gradient_descent_log.h index 1d2a8a2..7011c07 100644 --- a/optimization/optimizers/gradient_descent/gradient_descent_log.h +++ b/optimization/optimizers/gradient_descent/gradient_descent_log.h @@ -20,7 +20,7 @@ template <int32_t N> struct GradientDescentLog { void reserve(uint32_t n) VIS_ONLY_METHOD; template <typename Objective> - void initialize(Objective const&); + void initialize(Objective const&) VIS_ONLY_METHOD; void push_back( VectorNs<N> const& point, Scalar value, diff --git a/optimization/optimizers/gradient_descent/main.cpp b/optimization/optimizers/gradient_descent/main.cpp index 8545769..47820b6 100644 --- a/optimization/optimizers/gradient_descent/main.cpp +++ b/optimization/optimizers/gradient_descent/main.cpp @@ -1,14 +1,18 @@ #include "clara.hpp" #include "gradient_descent.h" -#include "gradient_descent_vis.h" #include "objectives/paraboloid.h" #include "objectives/rosenbrock.h" -#include "utils/eigen_json.h" #include <iostream> + +#ifdef VISUALIZE +#include "gradient_descent_vis.h" +#include "utils/eigen_json.h" #include <fstream> -using namespace optimization; using json = nlohmann::json; +#endif + +using namespace optimization; //-------------------------------------------------------------------------------------------------- int main(int const argc, char const** argv) { @@ -53,6 +57,7 @@ int main(int const argc, char const** argv) { std::cout << "n evaluations: " << n_steps << '\n'; std::cout << "final point: " << minimum << '\n'; + #ifdef VISUALIZE if (!log_file_path.empty()) { json data = optimizer; std::ofstream log_file(log_file_path); @@ -64,6 +69,7 @@ int main(int const argc, char const** argv) { std::ofstream vis_file(vis_file_path); vis_file << data.dump(4) << '\n'; } + #endif return 0; } diff --git a/optimization/optimizers/nelder_mead/CMakeLists.txt b/optimization/optimizers/nelder_mead/CMakeLists.txt index cd984f8..dd74919 100644 --- a/optimization/optimizers/nelder_mead/CMakeLists.txt +++ b/optimization/optimizers/nelder_mead/CMakeLists.txt @@ -1,8 +1,9 @@ +add_executable(nelder_mead + main.cpp +) +target_link_libraries(nelder_mead optimization_lib clara) + if (VISUALIZE) - add_executable(nelder_mead - main.cpp - ) - target_link_libraries(nelder_mead optimization_lib clara) make_plot_target(nelder_mead 2d ARGS -d 2) make_plot_target(nelder_mead 10d ARGS -d 10 -n 10000) endif() diff --git a/optimization/optimizers/nelder_mead/main.cpp b/optimization/optimizers/nelder_mead/main.cpp index e752226..b2819e2 100644 --- a/optimization/optimizers/nelder_mead/main.cpp +++ b/optimization/optimizers/nelder_mead/main.cpp @@ -1,14 +1,18 @@ #include "clara.hpp" #include "nelder_mead.h" -#include "nelder_mead_vis.h" #include "objectives/paraboloid.h" #include "objectives/rosenbrock.h" -#include "utils/eigen_json.h" #include <iostream> + +#ifdef VISUALIZE +#include "nelder_mead_vis.h" +#include "utils/eigen_json.h" #include <fstream> -using namespace optimization; using json = nlohmann::json; +#endif + +using namespace optimization; //-------------------------------------------------------------------------------------------------- int main(int const argc, char const** argv) { @@ -49,6 +53,7 @@ int main(int const argc, char const** argv) { std::cout << "n evaluations: " << optimizer.n_evaluations() << '\n'; std::cout << "final point: " << minimum << '\n'; + #ifdef VISUALIZE if (!log_file_path.empty()) { json data = optimizer; std::ofstream log_file(log_file_path); @@ -60,6 +65,7 @@ int main(int const argc, char const** argv) { std::ofstream vis_file(vis_file_path); vis_file << data.dump(4) << '\n'; } + #endif return 0; } -- GitLab