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);
|
||||
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 << "/"
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#include <dlib/optimization.h>
|
||||
|
||||
struct GlobalOptimizationVariables {
|
||||
const bool gShouldDraw = true;
|
||||
std::vector<Eigen::MatrixX3d> g_optimalReducedModelDisplacements;
|
||||
std::vector<SimulationJob> g_fullPatternSimulationJob;
|
||||
std::vector<std::shared_ptr<SimulationJob>> g_reducedPatternSimulationJob;
|
||||
|
@ -20,22 +19,21 @@ struct GlobalOptimizationVariables {
|
|||
std::vector<double> gObjectiveValueHistory;
|
||||
Eigen::Vector2d g_initialX;
|
||||
std::unordered_set<size_t> g_reducedPatternExludedEdges;
|
||||
// double g_initialParameters;
|
||||
Eigen::VectorXd g_initialParameters;
|
||||
std::vector<ReducedModelOptimizer::SimulationScenario>
|
||||
g_simulationScenarioIndices;
|
||||
std::vector<VectorType> g_innerHexagonVectors{6, VectorType(0, 0, 0)};
|
||||
double g_innerHexagonInitialPos = 0;
|
||||
double g_innerHexagonInitialPos{0};
|
||||
bool g_optimizeInnerHexagonSize{false};
|
||||
std::vector<SimulationResults> firstOptimizationRoundResults;
|
||||
int g_firstRoundIterationIndex{0};
|
||||
double minY{std::numeric_limits<double>::max()};
|
||||
double minY{DBL_MAX};
|
||||
std::vector<double> minX;
|
||||
std::vector<std::vector<double>> 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 {
|
||||
|
|
Loading…
Reference in New Issue