diff --git a/apps/plots.py b/apps/plots.py index 777ffd2566f1dd822a89ce90d6d1a22823dd15fd..277cd656d121a3d924d263285c2076cfe82e6898 100644 --- a/apps/plots.py +++ b/apps/plots.py @@ -48,11 +48,13 @@ def add_points(fig, ax, points): ax.plot(x, y, 'k.') return fig, ax -# points is a list of numpy arrays of dim n x 2 +# polygons is a list of numpy arrays, for which each row gives a vertex def add_polygons(fig, ax, polygons): for polygon in polygons: - p = mpl.patches.Polygon(polygon, True, fill=False, color="black", zorder=2) + # only plot first two dims + p = mpl.patches.Polygon(polygon[:,0:2], True, fill=False, color="black", zorder=2) ax.add_patch(p) + # theoretically patch collections could be more efficient #p = PatchCollection(patches, alpha=0.4) #ax.add_collection(p) return fig, ax diff --git a/cmake/make_plot_target.cmake b/cmake/make_plot_target.cmake index 3c58735a50af00c7395c77f0aa7d27613de44667..5c0ea60c922ae49d958bf7d97180f621d37b520f 100644 --- a/cmake/make_plot_target.cmake +++ b/cmake/make_plot_target.cmake @@ -1,22 +1,24 @@ # TODO Enable arguments to be passed to the C++ executable -function(make_plot_target TARGET) +function(make_plot_target TARGET ID) + message(${ID}) + cmake_parse_arguments(PLOT "" "" "ARGS" ${ARGN}) if (VISUALIZE) add_custom_command( - OUTPUT ${TARGET}_log.json ${TARGET}_vis.json - COMMAND ${TARGET} ${TARGET}_log.json ${TARGET}_vis.json + OUTPUT ${TARGET}_log_${ID}.json ${TARGET}_vis_${ID}.json + COMMAND ${TARGET} ${TARGET}_log_${ID}.json ${TARGET}_vis_${ID}.json ${PLOT_ARGS} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${TARGET} ) add_custom_command( - OUTPUT ${TARGET}_plot.pdf - COMMAND python3 ${CMAKE_SOURCE_DIR}/apps/plots.py ${TARGET}_vis.json ${TARGET}_plot.pdf + OUTPUT ${TARGET}_plot_${ID}.pdf + COMMAND python3 ${CMAKE_SOURCE_DIR}/apps/plots.py ${TARGET}_vis_${ID}.json ${TARGET}_plot_${ID}.pdf WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS ${CMAKE_SOURCE_DIR}/apps/plots.py ${TARGET}_vis.json + DEPENDS ${CMAKE_SOURCE_DIR}/apps/plots.py ${TARGET}_vis_${ID}.json ) - add_custom_target(${TARGET}_plot - DEPENDS ${TARGET}_plot.pdf + add_custom_target(${TARGET}_plot_${ID} + DEPENDS ${TARGET}_plot_${ID}.pdf ) endif() endfunction() diff --git a/optimization/optimizers/conjugate_gradient_descent/CMakeLists.txt b/optimization/optimizers/conjugate_gradient_descent/CMakeLists.txt index 85359f49630c66a8bfada7eefcf23a3d7bed2196..273708d2097d919733a9f461dfd034e2c1ec856c 100644 --- a/optimization/optimizers/conjugate_gradient_descent/CMakeLists.txt +++ b/optimization/optimizers/conjugate_gradient_descent/CMakeLists.txt @@ -3,5 +3,6 @@ if (VISUALIZE) main.cpp ) target_link_libraries(conjugate_gradient_descent optimization_lib clara) - make_plot_target(conjugate_gradient_descent) + 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/gradient_descent/CMakeLists.txt b/optimization/optimizers/gradient_descent/CMakeLists.txt index cf64b2f10cb82025678a533a90d08ea6b50a269d..e66c1437d1fabc91d480df3c6a1fc85f61a888ec 100644 --- a/optimization/optimizers/gradient_descent/CMakeLists.txt +++ b/optimization/optimizers/gradient_descent/CMakeLists.txt @@ -3,5 +3,6 @@ if (VISUALIZE) main.cpp ) target_link_libraries(gradient_descent optimization_lib clara) - make_plot_target(gradient_descent) + make_plot_target(gradient_descent 2d ARGS -d 2) + make_plot_target(gradient_descent 10d ARGS -d 10) endif() diff --git a/optimization/optimizers/nelder_mead/CMakeLists.txt b/optimization/optimizers/nelder_mead/CMakeLists.txt index feb04084dd19f3189ed394f0cf7146690152956a..e057569b3d516dc5a064b938b9507e038425bf7f 100644 --- a/optimization/optimizers/nelder_mead/CMakeLists.txt +++ b/optimization/optimizers/nelder_mead/CMakeLists.txt @@ -3,5 +3,6 @@ if (VISUALIZE) main.cpp ) target_link_libraries(nelder_mead optimization_lib clara) - make_plot_target(nelder_mead) + make_plot_target(nelder_mead 2d ARGS -d 2) + make_plot_target(nelder_mead 10d ARGS -d 10) endif()