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..
This commit is contained in:
parent
6012b1ef5a
commit
89bd63d2b5
|
|
@ -121,15 +121,14 @@ int main(int argc, char *argv[]) {
|
||||||
ReducedModelOptimizer optimizer(numberOfNodesPerSlot);
|
ReducedModelOptimizer optimizer(numberOfNodesPerSlot);
|
||||||
optimizer.initializePatterns(*patternPairs[patternPairIndex].first,
|
optimizer.initializePatterns(*patternPairs[patternPairIndex].first,
|
||||||
*patternPairs[patternPairIndex].second,
|
*patternPairs[patternPairIndex].second,
|
||||||
optimizationSpaceSamplingDisplacements,
|
optimizationExcludedEi);
|
||||||
optimizationExcludedEi);
|
|
||||||
// optimizer.optimize({ReducedModelOptimizer::Axial});
|
// optimizer.optimize({ReducedModelOptimizer::Axial});
|
||||||
ReducedModelOptimizer::Results optimizationResults =
|
ReducedModelOptimizer::Results optimizationResults =
|
||||||
optimizer.optimize(settings);
|
optimizer.optimize(settings);
|
||||||
|
|
||||||
totalError += optimizationResults.objectiveValue;
|
totalError += optimizationResults.objectiveValue;
|
||||||
resultsPerPattern[patternPairIndex] =
|
resultsPerPattern[patternPairIndex] =
|
||||||
std::make_pair(pPattern->getLabel(), optimizationResults);
|
std::make_pair(patternPairs[patternPairIndex].first->getLabel(), optimizationResults);
|
||||||
totalNumberOfSimulationCrashes +=
|
totalNumberOfSimulationCrashes +=
|
||||||
optimizationResults.numberOfSimulationCrashes;
|
optimizationResults.numberOfSimulationCrashes;
|
||||||
// std::cout << "Have optimized " << ++patternsOptimized << "/"
|
// std::cout << "Have optimized " << ++patternsOptimized << "/"
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
#include <dlib/optimization.h>
|
#include <dlib/optimization.h>
|
||||||
|
|
||||||
struct GlobalOptimizationVariables {
|
struct GlobalOptimizationVariables {
|
||||||
const bool gShouldDraw = true;
|
|
||||||
std::vector<Eigen::MatrixX3d> g_optimalReducedModelDisplacements;
|
std::vector<Eigen::MatrixX3d> g_optimalReducedModelDisplacements;
|
||||||
std::vector<SimulationJob> g_fullPatternSimulationJob;
|
std::vector<SimulationJob> g_fullPatternSimulationJob;
|
||||||
std::vector<std::shared_ptr<SimulationJob>> g_reducedPatternSimulationJob;
|
std::vector<std::shared_ptr<SimulationJob>> g_reducedPatternSimulationJob;
|
||||||
|
|
@ -20,22 +19,21 @@ struct GlobalOptimizationVariables {
|
||||||
std::vector<double> gObjectiveValueHistory;
|
std::vector<double> gObjectiveValueHistory;
|
||||||
Eigen::Vector2d g_initialX;
|
Eigen::Vector2d g_initialX;
|
||||||
std::unordered_set<size_t> g_reducedPatternExludedEdges;
|
std::unordered_set<size_t> g_reducedPatternExludedEdges;
|
||||||
// double g_initialParameters;
|
|
||||||
Eigen::VectorXd g_initialParameters;
|
Eigen::VectorXd g_initialParameters;
|
||||||
std::vector<ReducedModelOptimizer::SimulationScenario>
|
std::vector<ReducedModelOptimizer::SimulationScenario>
|
||||||
g_simulationScenarioIndices;
|
g_simulationScenarioIndices;
|
||||||
std::vector<VectorType> g_innerHexagonVectors{6, VectorType(0, 0, 0)};
|
std::vector<VectorType> g_innerHexagonVectors{6, VectorType(0, 0, 0)};
|
||||||
double g_innerHexagonInitialPos = 0;
|
double g_innerHexagonInitialPos{0};
|
||||||
bool g_optimizeInnerHexagonSize{false};
|
bool g_optimizeInnerHexagonSize{false};
|
||||||
std::vector<SimulationResults> firstOptimizationRoundResults;
|
std::vector<SimulationResults> firstOptimizationRoundResults;
|
||||||
int g_firstRoundIterationIndex{0};
|
int g_firstRoundIterationIndex{0};
|
||||||
double minY{std::numeric_limits<double>::max()};
|
double minY{DBL_MAX};
|
||||||
std::vector<double> minX;
|
std::vector<double> minX;
|
||||||
std::vector<std::vector<double>> failedSimulationsXRatio;
|
std::vector<std::vector<double>> failedSimulationsXRatio;
|
||||||
int numOfSimulationCrashes{false};
|
int numOfSimulationCrashes{false};
|
||||||
int numberOfFunctionCalls{0};
|
int numberOfFunctionCalls{0};
|
||||||
} global;
|
} global;
|
||||||
#pragma omp threadprivate(global)
|
//#pragma omp threadprivate(global)
|
||||||
// struct OptimizationCallback {
|
// struct OptimizationCallback {
|
||||||
// double operator()(const size_t &iterations, const Eigen::VectorXd &x,
|
// double operator()(const size_t &iterations, const Eigen::VectorXd &x,
|
||||||
// const double &fval, Eigen::VectorXd &gradient) const {
|
// const double &fval, Eigen::VectorXd &gradient) const {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue