From 0508d7c0555896523434574e95afe38c8bbfa455 Mon Sep 17 00:00:00 2001 From: Iason Date: Thu, 17 Dec 2020 19:25:27 +0200 Subject: [PATCH] Commited code for generating the first problem. The converged state could be improved(?). --- src/main.cpp | 12 ++++++------ src/reducedmodeloptimizer.cpp | 16 ++++++++++++---- src/reducedmodeloptimizer.hpp | 2 +- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 99e2949..e2cfacd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -65,12 +65,12 @@ int main(int argc, char *argv[]) { ReducedModelOptimizer optimizer(numberOfNodesPerSlot); - // FlatPattern pattern("/home/iason/Models/TestSet_validPatterns/59.ply"); - // optimizer.initialize(pattern, *reducedModels[1], {}); - // optimizer.setInitialGuess({0.10073746137216238, 1.9611251949927333, - // 7.5940127902102867, 8.0260424171674654}); - // Eigen::VectorXd optimalParameters = optimizer.optimize(); - // optimizer.setInitialGuess({2, 2, 2, 2, 2}); + FlatPattern pattern("/home/iason/Models/TestSet_validPatterns/59.ply"); + optimizer.initialize(pattern, *reducedModels[1], {}); + // optimizer.setInitialGuess({0.10073746137216238, 1.9611251949927333, + // 7.5940127902102867, 8.0260424171674654}); + optimizer.setInitialGuess({2, 2, 2, 2, 2}); + Eigen::VectorXd optimalParameters = optimizer.optimize(3); std::string fullPatternsTestSetDirectory = "/home/iason/Models/TestSet_validPatterns"; diff --git a/src/reducedmodeloptimizer.cpp b/src/reducedmodeloptimizer.cpp index 63c36bd..18b6cd8 100644 --- a/src/reducedmodeloptimizer.cpp +++ b/src/reducedmodeloptimizer.cpp @@ -659,13 +659,21 @@ std::vector ReducedModelOptimizer::createScenarios( return scenarios; } -Eigen::VectorXd ReducedModelOptimizer::optimize() { +Eigen::VectorXd ReducedModelOptimizer::optimize(const int &simulationScenario) { std::vector simulationJobs = createScenarios(m_pFullModelSimulationMesh); std::vector results; - for (int i = 0; i < simulationJobs.size(); i++) { - std::cout << "Running simulation job:" << i << std::endl; - const SimulationJob &job = simulationJobs[i]; + if (simulationScenario == -1) { // run all scenarios + for (int i = 0; i < simulationJobs.size(); i++) { + std::cout << "Running simulation job:" << i << std::endl; + const SimulationJob &job = simulationJobs[i]; + polyscope::removeAllStructures(); + auto result = optimizeForSimulationJob(job); + results.push_back(result); + } + } else { // run chosen + std::cout << "Running simulation job:" << simulationScenario << std::endl; + const SimulationJob &job = simulationJobs[simulationScenario]; polyscope::removeAllStructures(); auto result = optimizeForSimulationJob(job); results.push_back(result); diff --git a/src/reducedmodeloptimizer.hpp b/src/reducedmodeloptimizer.hpp index 8acf9f5..286ab8f 100644 --- a/src/reducedmodeloptimizer.hpp +++ b/src/reducedmodeloptimizer.hpp @@ -22,7 +22,7 @@ class ReducedModelOptimizer { std::vector initialGuess; public: - Eigen::VectorXd optimize(); + Eigen::VectorXd optimize(const int &simulationScenario = -1); double operator()(const Eigen::VectorXd &x, Eigen::VectorXd &) const; ReducedModelOptimizer(const std::vector &numberOfNodesPerSlot);