Refactoring

This commit is contained in:
Iason 2021-02-25 10:09:38 +02:00
parent 50c15751a3
commit f5fb395e12
4 changed files with 42 additions and 57 deletions

View File

@ -89,4 +89,4 @@ target_include_directories(${PROJECT_NAME}
)
link_directories(${MYSOURCES_SOURCE_DIR}/boost_graph/libs)
target_link_libraries(${PROJECT_NAME} -static Eigen3::Eigen matplot dlib::dlib)
target_link_libraries(${PROJECT_NAME} polyscope Eigen3::Eigen matplot dlib::dlib)

View File

@ -46,10 +46,10 @@ int main(int argc, char *argv[]) {
ReducedModelOptimizer::Settings settings_optimization;
settings_optimization.xRanges = {beamWidth, beamDimensionsRatio, beamE,
innerHexagonSize};
const bool input_numberOfFunctionCallsDefined = argc >= 5;
const bool input_numberOfFunctionCallsDefined = argc >= 4;
settings_optimization.numberOfFunctionCalls =
input_numberOfFunctionCallsDefined ? std::atoi(argv[4]) : 100;
settings_optimization.normalizeObjectiveValue = true;
input_numberOfFunctionCallsDefined ? std::atoi(argv[3]) : 100;
settings_optimization.shouldNormalizeObjectiveValue = true;
// Optimize pair
const std::string pairName =
@ -62,9 +62,9 @@ int main(int argc, char *argv[]) {
optimizer.optimize(settings_optimization);
// Export results
const bool input_resultDirectoryDefined = argc >= 6;
const bool input_resultDirectoryDefined = argc >= 5;
std::string optimizationResultsDirectory =
input_resultDirectoryDefined ? argv[5] : "OptimizationResults";
input_resultDirectoryDefined ? argv[4] : "OptimizationResults";
if (optimizationResults.numberOfSimulationCrashes != 0) {
const auto crashedJobsDirPath =
std::filesystem::path(optimizationResultsDirectory)

View File

@ -214,20 +214,20 @@ double ReducedModelOptimizer::objective(long n, const double *x) {
<< x[parameterIndex] << std::endl;
}
#ifdef POLYSCOPE_DEFINED
ReducedModelOptimizer::visualizeResults(
global.fullPatternSimulationJobs[simulationScenarioIndex],
global.reducedPatternSimulationJobs[simulationScenarioIndex],
global.reducedToFullInterfaceViMap, false);
//#ifdef POLYSCOPE_DEFINED
// ReducedModelOptimizer::visualizeResults(
// global.fullPatternSimulationJobs[simulationScenarioIndex],
// global.reducedPatternSimulationJobs[simulationScenarioIndex],
// global.reducedToFullInterfaceViMap, false);
ReducedModelOptimizer::visualizeResults(
global.fullPatternSimulationJobs[simulationScenarioIndex],
std::make_shared<SimulationJob>(
reducedPatternMaximumDisplacementSimulationJobs
[simulationScenarioIndex]),
global.reducedToFullInterfaceViMap, true);
polyscope::removeAllStructures();
#endif // POLYSCOPE_DEFINED
// ReducedModelOptimizer::visualizeResults(
// global.fullPatternSimulationJobs[simulationScenarioIndex],
// std::make_shared<SimulationJob>(
// reducedPatternMaximumDisplacementSimulationJobs
// [simulationScenarioIndex]),
// global.reducedToFullInterfaceViMap, true);
// polyscope::removeAllStructures();
//#endif // POLYSCOPE_DEFINED
}
error += thisSimulationScenarioError;
}
@ -582,7 +582,7 @@ void ReducedModelOptimizer::visualizeResults(
const std::shared_ptr<SimulationJob> &pReducedPatternSimulationJob,
const std::unordered_map<ReducedPatternVertexIndex, FullPatternVertexIndex>
&reducedToFullInterfaceViMap,
const bool draw = true) {
const bool &draw = true) {
FormFinder simulator;
std::shared_ptr<SimulationMesh> pFullPatternSimulationMesh =
pFullPatternSimulationJob->pMesh;
@ -613,7 +613,7 @@ void ReducedModelOptimizer::visualizeResults(
polyscope::show();
const std::string screenshotFilename =
"/home/iason/Coding/Projects/Approximating shapes with flat "
"patterns/RodModelOptimizationForPatterns/build/OptimizationResults/"
"patterns/RodModelOptimizationForPatterns/Results/"
"Images/" +
pFullPatternSimulationMesh->getLabel() + "_" + "noScenarioName";
// simulationScenarioStrings[simulationScenarioIndex];
@ -1101,23 +1101,9 @@ ReducedModelOptimizer::Results ReducedModelOptimizer::optimize(
Vector6d(0)),
fullModelResults.displacements, global.reducedToFullInterfaceViMap);
const double displacementMultiplier = 2;
// if (global.optimizeInnerHexagonSize) {
// displacementMultiplier = 2;
// } else {
// displacementMultiplier = 2;
// }
global.reducedPatternMaximumDisplacementNormSum[simulationScenarioIndex] =
displacementMultiplier *
std::max(errorOfMaxDisplacedReduced, errorOfNonDisplacedReduced);
// if (errorOfMaxDisplacedReduced > errorOfNonDisplacedReduced) {
// std::cout << "Max disp results in a bigger error for scenario "
// << simulationScenarioStrings[simulationScenarioIndex]
// << std::endl;
// } else {
// std::cout << "Zero disp results in a bigger error for scenario "
// << simulationScenarioStrings[simulationScenarioIndex]
// << std::endl;
// }
}
}
Results optResults = runOptimization(optimizationSettings);
@ -1127,10 +1113,8 @@ ReducedModelOptimizer::Results ReducedModelOptimizer::optimize(
optResults.reducedPatternSimulationJobs.push_back(
global.reducedPatternSimulationJobs[simulationScenarioIndex]);
}
// updateMesh(optResults.x.size(), optResults.x.data());
// optResults.draw();
optResults.draw();
// visualizeResults(simulationJobs, global.simulationScenarioIndices);
#ifdef POLYSCOPE_DEFINED
// visualizeResults(
// global.fullPatternSimulationJobs, global.reducedPatternSimulationJobs,

View File

@ -47,7 +47,7 @@ public:
std::vector<xRange> xRanges;
int numberOfFunctionCalls{100};
double solutionAccuracy{1e-2};
bool normalizeObjectiveValue{true};
bool shouldNormalizeObjectiveValue{true};
std::string toString() const {
std::string settingsString;
@ -58,9 +58,10 @@ public:
}
settingsString += xRangesString;
}
settingsString += "FuncCalls=" + std::to_string(numberOfFunctionCalls) +
" Accuracy=" + std::to_string(solutionAccuracy) +
" Norm=" + (normalizeObjectiveValue ? "yes" : "no");
settingsString +=
"FuncCalls=" + std::to_string(numberOfFunctionCalls) +
" Accuracy=" + std::to_string(solutionAccuracy) +
" Norm=" + (shouldNormalizeObjectiveValue ? "yes" : "no");
return settingsString;
}
@ -137,28 +138,22 @@ public:
&fullToReducedInterfaceViMap,
std::unordered_map<FullPatternVertexIndex, ReducedPatternVertexIndex>
&fullPatternOppositeInterfaceViMap);
static void
visualizeResults(const std::vector<std::shared_ptr<SimulationJob>>
&fullPatternSimulationJobs,
const std::vector<std::shared_ptr<SimulationJob>>
&reducedPatternSimulationJobs,
const std::vector<SimulationScenario> &simulationScenarios,
const std::unordered_map<ReducedPatternVertexIndex,
FullPatternVertexIndex>
&reducedToFullInterfaceViMap);
static void visualizeResults(
const std::shared_ptr<SimulationJob> &fullPatternSimulationJobs,
const std::shared_ptr<SimulationJob> &reducedPatternSimulationJobs,
const std::unordered_map<ReducedPatternVertexIndex,
FullPatternVertexIndex>
&reducedToFullInterfaceViMap,
const bool &shouldDraw);
static double computeError(const std::vector<Vector6d> &reducedPatternResults,
const std::vector<Vector6d> &fullPatternResults,
const double &interfaceDisplacementNormSum,
const std::unordered_map<ReducedPatternVertexIndex,
FullPatternVertexIndex>
&reducedToFullInterfaceViMap);
&reducedToFullInterfaceViMap,
const double &normalizationFactor);
private:
void
visualizeResults(const std::vector<std::shared_ptr<SimulationJob>>
&fullPatternSimulationJobs,
const std::vector<SimulationScenario> &simulationScenarios);
static void computeDesiredReducedModelDisplacements(
const SimulationResults &fullModelResults,
const std::unordered_map<size_t, size_t> &displacementsReducedToFullMap,
@ -178,6 +173,12 @@ private:
const Eigen::MatrixX3d &optimalReducedPatternDisplacements);
static double objective(long n, const double *x);
FormFinder simulator;
double static computeRawError(
const std::vector<Vector6d> &reducedPatternDisplacements,
const std::vector<Vector6d> &fullPatternDisplacements,
const std::unordered_map<ReducedPatternVertexIndex,
FullPatternVertexIndex>
&reducedToFullInterfaceViMap);
};
struct ReducedModelOptimizer::Results {
double time{-1};