Renamed ReducedPatternOptimization to ReducedModelOptimization
This commit is contained in:
parent
7aa41c87d8
commit
534efb98bb
|
|
@ -22,7 +22,7 @@
|
|||
#endif
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
// ReducedPatternOptimization::Results optResults;
|
||||
// ReducedModelOptimization::Results optResults;
|
||||
// optResults.load("/home/iason/Desktop/dlib_ensmallen_comparison/TestSets/"
|
||||
// "singlePattern_dlib_firstSubmission/12@single_reduced(100000_1.20)");
|
||||
// optResults.load("/home/iason/Coding/Projects/Approximating shapes with flat "
|
||||
|
|
@ -66,7 +66,7 @@ int main(int argc, char *argv[])
|
|||
std::cerr << "Input optimization settings file does not exist:"
|
||||
<< optimizationSettingsFilePath << std::endl;
|
||||
}
|
||||
ReducedPatternOptimization::Settings settings_optimization;
|
||||
ReducedModelOptimization::Settings settings_optimization;
|
||||
#ifdef POLYSCOPE_DEFINED
|
||||
// settings_optimization.save(optimizationSettingsFilePath.parent_path());
|
||||
// std::cout << "Save settings to:" << optimizationSettingsFilePath << std::endl;
|
||||
|
|
@ -99,7 +99,7 @@ int main(int argc, char *argv[])
|
|||
optimizationResultFolderExists = true;
|
||||
}
|
||||
|
||||
ReducedPatternOptimization::Results optimizationResults;
|
||||
ReducedModelOptimization::Results optimizationResults;
|
||||
constexpr bool shouldReoptimize = true;
|
||||
bool optimizationAlreadyComputed = false;
|
||||
if (!shouldReoptimize && optimizationResultFolderExists) {
|
||||
|
|
@ -203,7 +203,7 @@ int main(int argc, char *argv[])
|
|||
std::cout << "Saved results to:" << resultsOutputDir << std::endl;
|
||||
// optimizationResults.draw();
|
||||
|
||||
// ReducedPatternOptimization::Results optResults;
|
||||
// ReducedModelOptimization::Results optResults;
|
||||
// optResults.load("/home/iason/Desktop/dlib_ensmallen_comparison/TestSets/"
|
||||
// "singlePattern_dlib_firstSubmission/12@single_reduced(100000_1.20)");
|
||||
ReducedModelEvaluator::evaluateReducedModel(optimizationResults);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
//#define USE_SCENARIO_WEIGHTS
|
||||
|
||||
using namespace ReducedPatternOptimization;
|
||||
using namespace ReducedModelOptimization;
|
||||
|
||||
struct GlobalOptimizationVariables
|
||||
{
|
||||
|
|
@ -31,17 +31,17 @@ struct GlobalOptimizationVariables
|
|||
std::vector<double> objectiveValueHistory;
|
||||
std::vector<double> plotColors;
|
||||
std::array<double,
|
||||
ReducedPatternOptimization::OptimizationParameterIndex::NumberOfOptimizationVariables>
|
||||
ReducedModelOptimization::OptimizationParameterIndex::NumberOfOptimizationVariables>
|
||||
parametersInitialValue;
|
||||
std::array<double,
|
||||
ReducedPatternOptimization::OptimizationParameterIndex::NumberOfOptimizationVariables>
|
||||
ReducedModelOptimization::OptimizationParameterIndex::NumberOfOptimizationVariables>
|
||||
optimizationInitialValue;
|
||||
std::vector<int> simulationScenarioIndices;
|
||||
double minY{DBL_MAX};
|
||||
std::vector<double> minX;
|
||||
int numOfSimulationCrashes{false};
|
||||
int numberOfFunctionCalls{0};
|
||||
ReducedPatternOptimization::Settings optimizationSettings;
|
||||
ReducedModelOptimization::Settings optimizationSettings;
|
||||
vcg::Triangle3<double> baseTriangle;
|
||||
//Variables for finding the full pattern simulation forces
|
||||
std::shared_ptr<SimulationMesh> pFullPatternSimulationMesh;
|
||||
|
|
@ -60,7 +60,7 @@ struct GlobalOptimizationVariables
|
|||
std::vector<double> xMin;
|
||||
std::vector<double> xMax;
|
||||
std::vector<double> scenarioWeights;
|
||||
std::vector<ReducedPatternOptimization::Settings::ObjectiveWeights> objectiveWeights;
|
||||
std::vector<ReducedModelOptimization::Settings::ObjectiveWeights> objectiveWeights;
|
||||
} global;
|
||||
|
||||
double ReducedModelOptimizer::computeDisplacementError(
|
||||
|
|
@ -662,9 +662,8 @@ void ReducedModelOptimizer::initializeUpdateReducedPatternFunctions()
|
|||
|
||||
void ReducedModelOptimizer::initializeOptimizationParameters(
|
||||
const std::shared_ptr<SimulationMesh> &mesh,
|
||||
const std::array<ReducedPatternOptimization::xRange,
|
||||
ReducedPatternOptimization::NumberOfOptimizationVariables>
|
||||
&optimizationParameters)
|
||||
const std::array<ReducedModelOptimization::xRange,
|
||||
ReducedModelOptimization::NumberOfOptimizationVariables> &optimizationParameters)
|
||||
{
|
||||
|
||||
for (int optimizationParameterIndex = 0;
|
||||
|
|
@ -765,7 +764,7 @@ void ReducedModelOptimizer::computeDesiredReducedModelDisplacements(
|
|||
|
||||
void ReducedModelOptimizer::getResults(const FunctionEvaluation &optimalObjective,
|
||||
const Settings &settings,
|
||||
ReducedPatternOptimization::Results &results)
|
||||
ReducedModelOptimization::Results &results)
|
||||
{
|
||||
std::shared_ptr<SimulationMesh> &pReducedPatternSimulationMesh
|
||||
= global.reducedPatternSimulationJobs[global.simulationScenarioIndices[0]]->pMesh;
|
||||
|
|
@ -1007,7 +1006,7 @@ ReducedModelOptimizer::getFullPatternMaxSimulationForces(
|
|||
}
|
||||
|
||||
void ReducedModelOptimizer::runOptimization(const Settings &settings,
|
||||
ReducedPatternOptimization::Results &results)
|
||||
ReducedModelOptimization::Results &results)
|
||||
{
|
||||
global.objectiveValueHistory.clear();
|
||||
global.objectiveValueHistory_iteration.clear();
|
||||
|
|
@ -1595,7 +1594,7 @@ double ReducedModelOptimizer::computeFullPatternMaxSimulationForce(
|
|||
// ForceMagnitudeOptimization f(objectiveFunction); // Create function to be optimized.
|
||||
// arma::mat forceMagnitude_mat({forceMagnitude});
|
||||
// minimumError = optimizer.Optimize(f, forceMagnitude_mat);
|
||||
// std::cout << ReducedPatternOptimization::baseSimulationScenarioNames[scenario] << ": "
|
||||
// std::cout << ReducedModelOptimization::baseSimulationScenarioNames[scenario] << ": "
|
||||
// << optimalObjective << std::endl;
|
||||
// forceMagnitude = forceMagnitude_mat(0, 0);
|
||||
|
||||
|
|
@ -1610,20 +1609,20 @@ double ReducedModelOptimizer::computeFullPatternMaxSimulationForce(
|
|||
wasSuccessful = minimumError < objectiveEpsilon;
|
||||
|
||||
#ifdef POLYSCOPE_DEFINED
|
||||
std::cout << "Max " << ReducedPatternOptimization::baseSimulationScenarioNames[scenario]
|
||||
std::cout << "Max " << ReducedModelOptimization::baseSimulationScenarioNames[scenario]
|
||||
<< " magnitude:" << forceMagnitude << std::endl;
|
||||
if (!wasSuccessful) {
|
||||
SimulationJob job;
|
||||
job.pMesh = global.pFullPatternSimulationMesh;
|
||||
global.constructScenarioFunction(forceMagnitude, global.fullPatternInterfaceViPairs, job);
|
||||
std::cerr << ReducedPatternOptimization::baseSimulationScenarioNames[scenario]
|
||||
std::cerr << ReducedModelOptimization::baseSimulationScenarioNames[scenario]
|
||||
+ " max scenario magnitude was not succefully determined."
|
||||
<< std::endl;
|
||||
std::filesystem::path outputPath(
|
||||
std::filesystem::path("../nonConvergingJobs")
|
||||
.append(m_pFullPatternSimulationMesh->getLabel())
|
||||
.append("magFinal_"
|
||||
+ ReducedPatternOptimization::baseSimulationScenarioNames[scenario]));
|
||||
+ ReducedModelOptimization::baseSimulationScenarioNames[scenario]));
|
||||
std::filesystem::create_directories(outputPath);
|
||||
job.save(outputPath);
|
||||
std::terminate();
|
||||
|
|
@ -1813,12 +1812,12 @@ void ReducedModelOptimizer::computeObjectiveValueNormalizationFactors()
|
|||
if (global.optimizationSettings.normalizationStrategy
|
||||
== Settings::NormalizationStrategy::Epsilon) {
|
||||
const double epsilon_translationalDisplacement = global.optimizationSettings
|
||||
.translationNormalizationEpsilon;
|
||||
.translationEpsilon;
|
||||
global.translationalDisplacementNormalizationValues[simulationScenarioIndex]
|
||||
= std::max(fullPatternTranslationalDisplacementNormSum[simulationScenarioIndex],
|
||||
epsilon_translationalDisplacement);
|
||||
const double epsilon_rotationalDisplacement = global.optimizationSettings
|
||||
.rotationNormalizationEpsilon;
|
||||
.angularDistanceEpsilon;
|
||||
global.rotationalDisplacementNormalizationValues[simulationScenarioIndex]
|
||||
= std::max(fullPatternAngularDistance[simulationScenarioIndex],
|
||||
epsilon_rotationalDisplacement);
|
||||
|
|
@ -1831,7 +1830,7 @@ void ReducedModelOptimizer::computeObjectiveValueNormalizationFactors()
|
|||
|
||||
void ReducedModelOptimizer::optimize(
|
||||
const Settings &optimizationSettings,
|
||||
ReducedPatternOptimization::Results &results,
|
||||
ReducedModelOptimization::Results &results,
|
||||
const std::vector<BaseSimulationScenario> &desiredBaseSimulationScenarioIndices)
|
||||
{
|
||||
assert(!optimizationSettings.optimizationStrategy.empty());
|
||||
|
|
@ -1903,7 +1902,7 @@ void ReducedModelOptimizer::optimize(
|
|||
constexpr bool drawFullPatternSimulationResults = false;
|
||||
if (drawFullPatternSimulationResults) {
|
||||
global.fullPatternSimulationJobs[0]->pMesh->registerForDrawing(
|
||||
ReducedPatternOptimization::Colors::fullInitial);
|
||||
ReducedModelOptimization::Colors::fullInitial);
|
||||
}
|
||||
#endif
|
||||
results.wasSuccessful = true;
|
||||
|
|
@ -2002,7 +2001,7 @@ void ReducedModelOptimizer::optimize(
|
|||
if (drawFullPatternSimulationResults) {
|
||||
// SimulationResults fullPatternResults_linear = linearSimulator.executeSimulation(
|
||||
// pFullPatternSimulationJob);
|
||||
fullPatternResults.registerForDrawing(ReducedPatternOptimization::Colors::fullDeformed,
|
||||
fullPatternResults.registerForDrawing(ReducedModelOptimization::Colors::fullDeformed,
|
||||
true);
|
||||
// fullPatternResults_linear.labelPrefix += "_linear";
|
||||
// fullPatternResults_linear.registerForDrawing(ReducedModelOptimization::Colors::fullDeformed,
|
||||
|
|
|
|||
|
|
@ -65,11 +65,11 @@ public:
|
|||
// };
|
||||
// inline constexpr static ParameterLabels parameterLabels();
|
||||
|
||||
inline static std::array<std::string, ReducedPatternOptimization::NumberOfOptimizationVariables>
|
||||
inline static std::array<std::string, ReducedModelOptimization::NumberOfOptimizationVariables>
|
||||
parameterLabels = {"R", "A", "I2", "I3", "J", "Theta", "R"};
|
||||
constexpr static std::array<double, ReducedPatternOptimization::NumberOfBaseSimulationScenarios>
|
||||
constexpr static std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios>
|
||||
simulationScenariosResolution = {11, 11, 20, 20, 20};
|
||||
constexpr static std::array<double, ReducedPatternOptimization::NumberOfBaseSimulationScenarios>
|
||||
constexpr static std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios>
|
||||
baseScenarioWeights = {1, 1, 2, 3, 2};
|
||||
inline static int totalNumberOfSimulationScenarios
|
||||
= std::accumulate(simulationScenariosResolution.begin(),
|
||||
|
|
@ -79,15 +79,15 @@ public:
|
|||
inline static double initialHexagonSize{0.3};
|
||||
inline static VectorType patternPlaneNormal{0, 0, 1};
|
||||
void optimize(
|
||||
const ReducedPatternOptimization::Settings &xRanges,
|
||||
ReducedPatternOptimization::Results &results,
|
||||
const std::vector<ReducedPatternOptimization::BaseSimulationScenario> &simulationScenarios
|
||||
= std::vector<ReducedPatternOptimization::BaseSimulationScenario>(
|
||||
{ReducedPatternOptimization::Axial,
|
||||
ReducedPatternOptimization::Shear,
|
||||
ReducedPatternOptimization::Bending,
|
||||
ReducedPatternOptimization::Dome,
|
||||
ReducedPatternOptimization::Saddle}));
|
||||
const ReducedModelOptimization::Settings &xRanges,
|
||||
ReducedModelOptimization::Results &results,
|
||||
const std::vector<ReducedModelOptimization::BaseSimulationScenario> &simulationScenarios
|
||||
= std::vector<ReducedModelOptimization::BaseSimulationScenario>(
|
||||
{ReducedModelOptimization::Axial,
|
||||
ReducedModelOptimization::Shear,
|
||||
ReducedModelOptimization::Bending,
|
||||
ReducedModelOptimization::Dome,
|
||||
ReducedModelOptimization::Saddle}));
|
||||
double operator()(const Eigen::VectorXd &x, Eigen::VectorXd &) const;
|
||||
|
||||
ReducedModelOptimizer(const std::vector<size_t> &numberOfNodesPerSlot);
|
||||
|
|
@ -121,7 +121,7 @@ public:
|
|||
static void visualizeResults(
|
||||
const std::vector<std::shared_ptr<SimulationJob>> &fullPatternSimulationJobs,
|
||||
const std::vector<std::shared_ptr<SimulationJob>> &reducedPatternSimulationJobs,
|
||||
const std::vector<ReducedPatternOptimization::BaseSimulationScenario> &simulationScenarios,
|
||||
const std::vector<ReducedModelOptimization::BaseSimulationScenario> &simulationScenarios,
|
||||
const std::unordered_map<ReducedPatternVertexIndex, FullPatternVertexIndex>
|
||||
&reducedToFullInterfaceViMap);
|
||||
static void registerResultsForDrawing(
|
||||
|
|
@ -166,7 +166,7 @@ public:
|
|||
const double &normalizationFactor_translationalDisplacement,
|
||||
const double &normalizationFactor_rotationalDisplacement,
|
||||
const double &scenarioWeight,
|
||||
const ReducedPatternOptimization::Settings::ObjectiveWeights &objectiveWeights);
|
||||
const ReducedModelOptimization::Settings::ObjectiveWeights &objectiveWeights);
|
||||
static void constructAxialSimulationScenario(
|
||||
const double &forceMagnitude,
|
||||
const std::vector<std::pair<FullPatternVertexIndex, FullPatternVertexIndex>>
|
||||
|
|
@ -221,12 +221,11 @@ public:
|
|||
static void initializeUpdateReducedPatternFunctions();
|
||||
static double objective(const double &xValue);
|
||||
|
||||
void initializePatterns(
|
||||
PatternGeometry &fullPattern,
|
||||
PatternGeometry &reducedPattern,
|
||||
const std::array<ReducedPatternOptimization::xRange,
|
||||
ReducedPatternOptimization::NumberOfOptimizationVariables>
|
||||
&optimizationParameters);
|
||||
void initializePatterns(PatternGeometry &fullPattern,
|
||||
PatternGeometry &reducedPattern,
|
||||
const std::array<ReducedModelOptimization::xRange,
|
||||
ReducedModelOptimization::NumberOfOptimizationVariables>
|
||||
&optimizationParameters);
|
||||
|
||||
void setIntermediateResultsDirectoryPath(
|
||||
const std::filesystem::path &newIntermediateResultsDirectoryPath);
|
||||
|
|
@ -236,42 +235,42 @@ private:
|
|||
const SimulationResults &fullModelResults,
|
||||
const std::unordered_map<size_t, size_t> &displacementsReducedToFullMap,
|
||||
Eigen::MatrixX3d &optimalDisplacementsOfReducedModel);
|
||||
static void runOptimization(const ReducedPatternOptimization::Settings &settings,
|
||||
ReducedPatternOptimization::Results &results);
|
||||
static void runOptimization(const ReducedModelOptimization::Settings &settings,
|
||||
ReducedModelOptimization::Results &results);
|
||||
void computeMaps(PatternGeometry &fullModel, PatternGeometry &reducedPattern);
|
||||
void createSimulationMeshes(PatternGeometry &fullModel, PatternGeometry &reducedModel);
|
||||
static void initializeOptimizationParameters(
|
||||
const std::shared_ptr<SimulationMesh> &mesh,
|
||||
const std::array<ReducedPatternOptimization::xRange,
|
||||
ReducedPatternOptimization::NumberOfOptimizationVariables>
|
||||
const std::array<ReducedModelOptimization::xRange,
|
||||
ReducedModelOptimization::NumberOfOptimizationVariables>
|
||||
&optimizationParamters);
|
||||
|
||||
DRMSimulationModel simulator;
|
||||
void computeObjectiveValueNormalizationFactors();
|
||||
|
||||
static void getResults(const FunctionEvaluation &optimalObjective,
|
||||
const ReducedPatternOptimization::Settings &settings,
|
||||
ReducedPatternOptimization::Results &results);
|
||||
const ReducedModelOptimization::Settings &settings,
|
||||
ReducedModelOptimization::Results &results);
|
||||
double computeFullPatternMaxSimulationForce(
|
||||
const ReducedPatternOptimization::BaseSimulationScenario &scenario) const;
|
||||
const ReducedModelOptimization::BaseSimulationScenario &scenario) const;
|
||||
|
||||
#ifdef DLIB_DEFINED
|
||||
static double objective(const dlib::matrix<double, 0, 1> &x);
|
||||
#endif
|
||||
std::array<double, ReducedPatternOptimization::NumberOfBaseSimulationScenarios>
|
||||
std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios>
|
||||
getFullPatternMaxSimulationForces(
|
||||
const std::vector<ReducedPatternOptimization::BaseSimulationScenario>
|
||||
const std::vector<ReducedModelOptimization::BaseSimulationScenario>
|
||||
&desiredBaseSimulationScenarioIndices,
|
||||
const std::filesystem::path &intermediateResultsDirectoryPath);
|
||||
void computeScenarioWeights(const std::vector<ReducedPatternOptimization::BaseSimulationScenario>
|
||||
void computeScenarioWeights(const std::vector<ReducedModelOptimization::BaseSimulationScenario>
|
||||
&baseSimulationScenarios);
|
||||
std::array<double, ReducedPatternOptimization::NumberOfBaseSimulationScenarios>
|
||||
std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios>
|
||||
computeFullPatternMaxSimulationForces(
|
||||
const std::vector<ReducedPatternOptimization::BaseSimulationScenario>
|
||||
const std::vector<ReducedModelOptimization::BaseSimulationScenario>
|
||||
&desiredBaseSimulationScenario) const;
|
||||
std::vector<std::shared_ptr<SimulationJob>> createFullPatternSimulationJobs(
|
||||
const std::shared_ptr<SimulationMesh> &pMesh,
|
||||
const std::array<double, ReducedPatternOptimization::NumberOfBaseSimulationScenarios>
|
||||
const std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios>
|
||||
&baseScenarioMaxForceMagnitudes) const;
|
||||
};
|
||||
inline std::function<void(const double &newE,
|
||||
|
|
|
|||
Loading…
Reference in New Issue