From 89bd63d2b5c1b9db0513547c01306cf8e3d0b06f Mon Sep 17 00:00:00 2001 From: iasonmanolas Date: Thu, 4 Feb 2021 16:38:52 +0200 Subject: [PATCH] Compiles on windows. Cannot be parallelized currently due to the global variables of ReducedModelOptimizer. Each thread needs to have its own copy but dynamic instantiation cannot be used for initializing it.. --- src/main.cpp | 5 ++--- src/reducedmodeloptimizer.cpp | 8 +++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 91d7354..b6f9446 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -121,15 +121,14 @@ int main(int argc, char *argv[]) { ReducedModelOptimizer optimizer(numberOfNodesPerSlot); optimizer.initializePatterns(*patternPairs[patternPairIndex].first, *patternPairs[patternPairIndex].second, - optimizationSpaceSamplingDisplacements, - optimizationExcludedEi); + optimizationExcludedEi); // optimizer.optimize({ReducedModelOptimizer::Axial}); ReducedModelOptimizer::Results optimizationResults = optimizer.optimize(settings); totalError += optimizationResults.objectiveValue; resultsPerPattern[patternPairIndex] = - std::make_pair(pPattern->getLabel(), optimizationResults); + std::make_pair(patternPairs[patternPairIndex].first->getLabel(), optimizationResults); totalNumberOfSimulationCrashes += optimizationResults.numberOfSimulationCrashes; // std::cout << "Have optimized " << ++patternsOptimized << "/" diff --git a/src/reducedmodeloptimizer.cpp b/src/reducedmodeloptimizer.cpp index e55c567..ab5025f 100644 --- a/src/reducedmodeloptimizer.cpp +++ b/src/reducedmodeloptimizer.cpp @@ -8,7 +8,6 @@ #include struct GlobalOptimizationVariables { - const bool gShouldDraw = true; std::vector g_optimalReducedModelDisplacements; std::vector g_fullPatternSimulationJob; std::vector> g_reducedPatternSimulationJob; @@ -20,22 +19,21 @@ struct GlobalOptimizationVariables { std::vector gObjectiveValueHistory; Eigen::Vector2d g_initialX; std::unordered_set g_reducedPatternExludedEdges; - // double g_initialParameters; Eigen::VectorXd g_initialParameters; std::vector g_simulationScenarioIndices; std::vector g_innerHexagonVectors{6, VectorType(0, 0, 0)}; - double g_innerHexagonInitialPos = 0; + double g_innerHexagonInitialPos{0}; bool g_optimizeInnerHexagonSize{false}; std::vector firstOptimizationRoundResults; int g_firstRoundIterationIndex{0}; - double minY{std::numeric_limits::max()}; + double minY{DBL_MAX}; std::vector minX; std::vector> failedSimulationsXRatio; int numOfSimulationCrashes{false}; int numberOfFunctionCalls{0}; } global; -#pragma omp threadprivate(global) +//#pragma omp threadprivate(global) // struct OptimizationCallback { // double operator()(const size_t &iterations, const Eigen::VectorXd &x, // const double &fval, Eigen::VectorXd &gradient) const {