From f5fb395e128f1ca66781ffab94681a38c07ba58a Mon Sep 17 00:00:00 2001 From: Iason Date: Thu, 25 Feb 2021 10:09:38 +0200 Subject: [PATCH] Refactoring --- CMakeLists.txt | 2 +- src/main.cpp | 10 ++++---- src/reducedmodeloptimizer.cpp | 48 ++++++++++++----------------------- src/reducedmodeloptimizer.hpp | 39 ++++++++++++++-------------- 4 files changed, 42 insertions(+), 57 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 85d0601..2b725de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,4 +89,4 @@ target_include_directories(${PROJECT_NAME} ) link_directories(${MYSOURCES_SOURCE_DIR}/boost_graph/libs) -target_link_libraries(${PROJECT_NAME} -static Eigen3::Eigen matplot dlib::dlib) +target_link_libraries(${PROJECT_NAME} polyscope Eigen3::Eigen matplot dlib::dlib) diff --git a/src/main.cpp b/src/main.cpp index 07b512b..eee3863 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -46,10 +46,10 @@ int main(int argc, char *argv[]) { ReducedModelOptimizer::Settings settings_optimization; settings_optimization.xRanges = {beamWidth, beamDimensionsRatio, beamE, innerHexagonSize}; - const bool input_numberOfFunctionCallsDefined = argc >= 5; + const bool input_numberOfFunctionCallsDefined = argc >= 4; settings_optimization.numberOfFunctionCalls = - input_numberOfFunctionCallsDefined ? std::atoi(argv[4]) : 100; - settings_optimization.normalizeObjectiveValue = true; + input_numberOfFunctionCallsDefined ? std::atoi(argv[3]) : 100; + settings_optimization.shouldNormalizeObjectiveValue = true; // Optimize pair const std::string pairName = @@ -62,9 +62,9 @@ int main(int argc, char *argv[]) { optimizer.optimize(settings_optimization); // Export results - const bool input_resultDirectoryDefined = argc >= 6; + const bool input_resultDirectoryDefined = argc >= 5; std::string optimizationResultsDirectory = - input_resultDirectoryDefined ? argv[5] : "OptimizationResults"; + input_resultDirectoryDefined ? argv[4] : "OptimizationResults"; if (optimizationResults.numberOfSimulationCrashes != 0) { const auto crashedJobsDirPath = std::filesystem::path(optimizationResultsDirectory) diff --git a/src/reducedmodeloptimizer.cpp b/src/reducedmodeloptimizer.cpp index 0b70a03..0edbe87 100644 --- a/src/reducedmodeloptimizer.cpp +++ b/src/reducedmodeloptimizer.cpp @@ -214,20 +214,20 @@ double ReducedModelOptimizer::objective(long n, const double *x) { << x[parameterIndex] << std::endl; } -#ifdef POLYSCOPE_DEFINED - ReducedModelOptimizer::visualizeResults( - global.fullPatternSimulationJobs[simulationScenarioIndex], - global.reducedPatternSimulationJobs[simulationScenarioIndex], - global.reducedToFullInterfaceViMap, false); + //#ifdef POLYSCOPE_DEFINED + // ReducedModelOptimizer::visualizeResults( + // global.fullPatternSimulationJobs[simulationScenarioIndex], + // global.reducedPatternSimulationJobs[simulationScenarioIndex], + // global.reducedToFullInterfaceViMap, false); - ReducedModelOptimizer::visualizeResults( - global.fullPatternSimulationJobs[simulationScenarioIndex], - std::make_shared( - reducedPatternMaximumDisplacementSimulationJobs - [simulationScenarioIndex]), - global.reducedToFullInterfaceViMap, true); - polyscope::removeAllStructures(); -#endif // POLYSCOPE_DEFINED + // ReducedModelOptimizer::visualizeResults( + // global.fullPatternSimulationJobs[simulationScenarioIndex], + // std::make_shared( + // reducedPatternMaximumDisplacementSimulationJobs + // [simulationScenarioIndex]), + // global.reducedToFullInterfaceViMap, true); + // polyscope::removeAllStructures(); + //#endif // POLYSCOPE_DEFINED } error += thisSimulationScenarioError; } @@ -582,7 +582,7 @@ void ReducedModelOptimizer::visualizeResults( const std::shared_ptr &pReducedPatternSimulationJob, const std::unordered_map &reducedToFullInterfaceViMap, - const bool draw = true) { + const bool &draw = true) { FormFinder simulator; std::shared_ptr pFullPatternSimulationMesh = pFullPatternSimulationJob->pMesh; @@ -613,7 +613,7 @@ void ReducedModelOptimizer::visualizeResults( polyscope::show(); const std::string screenshotFilename = "/home/iason/Coding/Projects/Approximating shapes with flat " - "patterns/RodModelOptimizationForPatterns/build/OptimizationResults/" + "patterns/RodModelOptimizationForPatterns/Results/" "Images/" + pFullPatternSimulationMesh->getLabel() + "_" + "noScenarioName"; // simulationScenarioStrings[simulationScenarioIndex]; @@ -1101,23 +1101,9 @@ ReducedModelOptimizer::Results ReducedModelOptimizer::optimize( Vector6d(0)), fullModelResults.displacements, global.reducedToFullInterfaceViMap); const double displacementMultiplier = 2; - // if (global.optimizeInnerHexagonSize) { - // displacementMultiplier = 2; - // } else { - // displacementMultiplier = 2; - // } global.reducedPatternMaximumDisplacementNormSum[simulationScenarioIndex] = displacementMultiplier * std::max(errorOfMaxDisplacedReduced, errorOfNonDisplacedReduced); - // if (errorOfMaxDisplacedReduced > errorOfNonDisplacedReduced) { - // std::cout << "Max disp results in a bigger error for scenario " - // << simulationScenarioStrings[simulationScenarioIndex] - // << std::endl; - // } else { - // std::cout << "Zero disp results in a bigger error for scenario " - // << simulationScenarioStrings[simulationScenarioIndex] - // << std::endl; - // } } } Results optResults = runOptimization(optimizationSettings); @@ -1127,10 +1113,8 @@ ReducedModelOptimizer::Results ReducedModelOptimizer::optimize( optResults.reducedPatternSimulationJobs.push_back( global.reducedPatternSimulationJobs[simulationScenarioIndex]); } - // updateMesh(optResults.x.size(), optResults.x.data()); - // optResults.draw(); + optResults.draw(); - // visualizeResults(simulationJobs, global.simulationScenarioIndices); #ifdef POLYSCOPE_DEFINED // visualizeResults( // global.fullPatternSimulationJobs, global.reducedPatternSimulationJobs, diff --git a/src/reducedmodeloptimizer.hpp b/src/reducedmodeloptimizer.hpp index 66913c4..2e93d4c 100644 --- a/src/reducedmodeloptimizer.hpp +++ b/src/reducedmodeloptimizer.hpp @@ -47,7 +47,7 @@ public: std::vector xRanges; int numberOfFunctionCalls{100}; double solutionAccuracy{1e-2}; - bool normalizeObjectiveValue{true}; + bool shouldNormalizeObjectiveValue{true}; std::string toString() const { std::string settingsString; @@ -58,9 +58,10 @@ public: } settingsString += xRangesString; } - settingsString += "FuncCalls=" + std::to_string(numberOfFunctionCalls) + - " Accuracy=" + std::to_string(solutionAccuracy) + - " Norm=" + (normalizeObjectiveValue ? "yes" : "no"); + settingsString += + "FuncCalls=" + std::to_string(numberOfFunctionCalls) + + " Accuracy=" + std::to_string(solutionAccuracy) + + " Norm=" + (shouldNormalizeObjectiveValue ? "yes" : "no"); return settingsString; } @@ -137,28 +138,22 @@ public: &fullToReducedInterfaceViMap, std::unordered_map &fullPatternOppositeInterfaceViMap); - static void - visualizeResults(const std::vector> - &fullPatternSimulationJobs, - const std::vector> - &reducedPatternSimulationJobs, - const std::vector &simulationScenarios, - const std::unordered_map - &reducedToFullInterfaceViMap); + static void visualizeResults( + const std::shared_ptr &fullPatternSimulationJobs, + const std::shared_ptr &reducedPatternSimulationJobs, + const std::unordered_map + &reducedToFullInterfaceViMap, + const bool &shouldDraw); static double computeError(const std::vector &reducedPatternResults, const std::vector &fullPatternResults, - const double &interfaceDisplacementNormSum, const std::unordered_map - &reducedToFullInterfaceViMap); + &reducedToFullInterfaceViMap, + const double &normalizationFactor); private: - void - visualizeResults(const std::vector> - &fullPatternSimulationJobs, - const std::vector &simulationScenarios); static void computeDesiredReducedModelDisplacements( const SimulationResults &fullModelResults, const std::unordered_map &displacementsReducedToFullMap, @@ -178,6 +173,12 @@ private: const Eigen::MatrixX3d &optimalReducedPatternDisplacements); static double objective(long n, const double *x); FormFinder simulator; + double static computeRawError( + const std::vector &reducedPatternDisplacements, + const std::vector &fullPatternDisplacements, + const std::unordered_map + &reducedToFullInterfaceViMap); }; struct ReducedModelOptimizer::Results { double time{-1};