Refactoring
This commit is contained in:
parent
50c15751a3
commit
f5fb395e12
|
|
@ -89,4 +89,4 @@ target_include_directories(${PROJECT_NAME}
|
||||||
)
|
)
|
||||||
|
|
||||||
link_directories(${MYSOURCES_SOURCE_DIR}/boost_graph/libs)
|
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)
|
||||||
|
|
|
||||||
10
src/main.cpp
10
src/main.cpp
|
|
@ -46,10 +46,10 @@ int main(int argc, char *argv[]) {
|
||||||
ReducedModelOptimizer::Settings settings_optimization;
|
ReducedModelOptimizer::Settings settings_optimization;
|
||||||
settings_optimization.xRanges = {beamWidth, beamDimensionsRatio, beamE,
|
settings_optimization.xRanges = {beamWidth, beamDimensionsRatio, beamE,
|
||||||
innerHexagonSize};
|
innerHexagonSize};
|
||||||
const bool input_numberOfFunctionCallsDefined = argc >= 5;
|
const bool input_numberOfFunctionCallsDefined = argc >= 4;
|
||||||
settings_optimization.numberOfFunctionCalls =
|
settings_optimization.numberOfFunctionCalls =
|
||||||
input_numberOfFunctionCallsDefined ? std::atoi(argv[4]) : 100;
|
input_numberOfFunctionCallsDefined ? std::atoi(argv[3]) : 100;
|
||||||
settings_optimization.normalizeObjectiveValue = true;
|
settings_optimization.shouldNormalizeObjectiveValue = true;
|
||||||
|
|
||||||
// Optimize pair
|
// Optimize pair
|
||||||
const std::string pairName =
|
const std::string pairName =
|
||||||
|
|
@ -62,9 +62,9 @@ int main(int argc, char *argv[]) {
|
||||||
optimizer.optimize(settings_optimization);
|
optimizer.optimize(settings_optimization);
|
||||||
|
|
||||||
// Export results
|
// Export results
|
||||||
const bool input_resultDirectoryDefined = argc >= 6;
|
const bool input_resultDirectoryDefined = argc >= 5;
|
||||||
std::string optimizationResultsDirectory =
|
std::string optimizationResultsDirectory =
|
||||||
input_resultDirectoryDefined ? argv[5] : "OptimizationResults";
|
input_resultDirectoryDefined ? argv[4] : "OptimizationResults";
|
||||||
if (optimizationResults.numberOfSimulationCrashes != 0) {
|
if (optimizationResults.numberOfSimulationCrashes != 0) {
|
||||||
const auto crashedJobsDirPath =
|
const auto crashedJobsDirPath =
|
||||||
std::filesystem::path(optimizationResultsDirectory)
|
std::filesystem::path(optimizationResultsDirectory)
|
||||||
|
|
|
||||||
|
|
@ -214,20 +214,20 @@ double ReducedModelOptimizer::objective(long n, const double *x) {
|
||||||
<< x[parameterIndex] << std::endl;
|
<< x[parameterIndex] << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef POLYSCOPE_DEFINED
|
//#ifdef POLYSCOPE_DEFINED
|
||||||
ReducedModelOptimizer::visualizeResults(
|
// ReducedModelOptimizer::visualizeResults(
|
||||||
global.fullPatternSimulationJobs[simulationScenarioIndex],
|
// global.fullPatternSimulationJobs[simulationScenarioIndex],
|
||||||
global.reducedPatternSimulationJobs[simulationScenarioIndex],
|
// global.reducedPatternSimulationJobs[simulationScenarioIndex],
|
||||||
global.reducedToFullInterfaceViMap, false);
|
// global.reducedToFullInterfaceViMap, false);
|
||||||
|
|
||||||
ReducedModelOptimizer::visualizeResults(
|
// ReducedModelOptimizer::visualizeResults(
|
||||||
global.fullPatternSimulationJobs[simulationScenarioIndex],
|
// global.fullPatternSimulationJobs[simulationScenarioIndex],
|
||||||
std::make_shared<SimulationJob>(
|
// std::make_shared<SimulationJob>(
|
||||||
reducedPatternMaximumDisplacementSimulationJobs
|
// reducedPatternMaximumDisplacementSimulationJobs
|
||||||
[simulationScenarioIndex]),
|
// [simulationScenarioIndex]),
|
||||||
global.reducedToFullInterfaceViMap, true);
|
// global.reducedToFullInterfaceViMap, true);
|
||||||
polyscope::removeAllStructures();
|
// polyscope::removeAllStructures();
|
||||||
#endif // POLYSCOPE_DEFINED
|
//#endif // POLYSCOPE_DEFINED
|
||||||
}
|
}
|
||||||
error += thisSimulationScenarioError;
|
error += thisSimulationScenarioError;
|
||||||
}
|
}
|
||||||
|
|
@ -582,7 +582,7 @@ void ReducedModelOptimizer::visualizeResults(
|
||||||
const std::shared_ptr<SimulationJob> &pReducedPatternSimulationJob,
|
const std::shared_ptr<SimulationJob> &pReducedPatternSimulationJob,
|
||||||
const std::unordered_map<ReducedPatternVertexIndex, FullPatternVertexIndex>
|
const std::unordered_map<ReducedPatternVertexIndex, FullPatternVertexIndex>
|
||||||
&reducedToFullInterfaceViMap,
|
&reducedToFullInterfaceViMap,
|
||||||
const bool draw = true) {
|
const bool &draw = true) {
|
||||||
FormFinder simulator;
|
FormFinder simulator;
|
||||||
std::shared_ptr<SimulationMesh> pFullPatternSimulationMesh =
|
std::shared_ptr<SimulationMesh> pFullPatternSimulationMesh =
|
||||||
pFullPatternSimulationJob->pMesh;
|
pFullPatternSimulationJob->pMesh;
|
||||||
|
|
@ -613,7 +613,7 @@ void ReducedModelOptimizer::visualizeResults(
|
||||||
polyscope::show();
|
polyscope::show();
|
||||||
const std::string screenshotFilename =
|
const std::string screenshotFilename =
|
||||||
"/home/iason/Coding/Projects/Approximating shapes with flat "
|
"/home/iason/Coding/Projects/Approximating shapes with flat "
|
||||||
"patterns/RodModelOptimizationForPatterns/build/OptimizationResults/"
|
"patterns/RodModelOptimizationForPatterns/Results/"
|
||||||
"Images/" +
|
"Images/" +
|
||||||
pFullPatternSimulationMesh->getLabel() + "_" + "noScenarioName";
|
pFullPatternSimulationMesh->getLabel() + "_" + "noScenarioName";
|
||||||
// simulationScenarioStrings[simulationScenarioIndex];
|
// simulationScenarioStrings[simulationScenarioIndex];
|
||||||
|
|
@ -1101,23 +1101,9 @@ ReducedModelOptimizer::Results ReducedModelOptimizer::optimize(
|
||||||
Vector6d(0)),
|
Vector6d(0)),
|
||||||
fullModelResults.displacements, global.reducedToFullInterfaceViMap);
|
fullModelResults.displacements, global.reducedToFullInterfaceViMap);
|
||||||
const double displacementMultiplier = 2;
|
const double displacementMultiplier = 2;
|
||||||
// if (global.optimizeInnerHexagonSize) {
|
|
||||||
// displacementMultiplier = 2;
|
|
||||||
// } else {
|
|
||||||
// displacementMultiplier = 2;
|
|
||||||
// }
|
|
||||||
global.reducedPatternMaximumDisplacementNormSum[simulationScenarioIndex] =
|
global.reducedPatternMaximumDisplacementNormSum[simulationScenarioIndex] =
|
||||||
displacementMultiplier *
|
displacementMultiplier *
|
||||||
std::max(errorOfMaxDisplacedReduced, errorOfNonDisplacedReduced);
|
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);
|
Results optResults = runOptimization(optimizationSettings);
|
||||||
|
|
@ -1127,10 +1113,8 @@ ReducedModelOptimizer::Results ReducedModelOptimizer::optimize(
|
||||||
optResults.reducedPatternSimulationJobs.push_back(
|
optResults.reducedPatternSimulationJobs.push_back(
|
||||||
global.reducedPatternSimulationJobs[simulationScenarioIndex]);
|
global.reducedPatternSimulationJobs[simulationScenarioIndex]);
|
||||||
}
|
}
|
||||||
// updateMesh(optResults.x.size(), optResults.x.data());
|
optResults.draw();
|
||||||
// optResults.draw();
|
|
||||||
|
|
||||||
// visualizeResults(simulationJobs, global.simulationScenarioIndices);
|
|
||||||
#ifdef POLYSCOPE_DEFINED
|
#ifdef POLYSCOPE_DEFINED
|
||||||
// visualizeResults(
|
// visualizeResults(
|
||||||
// global.fullPatternSimulationJobs, global.reducedPatternSimulationJobs,
|
// global.fullPatternSimulationJobs, global.reducedPatternSimulationJobs,
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ public:
|
||||||
std::vector<xRange> xRanges;
|
std::vector<xRange> xRanges;
|
||||||
int numberOfFunctionCalls{100};
|
int numberOfFunctionCalls{100};
|
||||||
double solutionAccuracy{1e-2};
|
double solutionAccuracy{1e-2};
|
||||||
bool normalizeObjectiveValue{true};
|
bool shouldNormalizeObjectiveValue{true};
|
||||||
|
|
||||||
std::string toString() const {
|
std::string toString() const {
|
||||||
std::string settingsString;
|
std::string settingsString;
|
||||||
|
|
@ -58,9 +58,10 @@ public:
|
||||||
}
|
}
|
||||||
settingsString += xRangesString;
|
settingsString += xRangesString;
|
||||||
}
|
}
|
||||||
settingsString += "FuncCalls=" + std::to_string(numberOfFunctionCalls) +
|
settingsString +=
|
||||||
|
"FuncCalls=" + std::to_string(numberOfFunctionCalls) +
|
||||||
" Accuracy=" + std::to_string(solutionAccuracy) +
|
" Accuracy=" + std::to_string(solutionAccuracy) +
|
||||||
" Norm=" + (normalizeObjectiveValue ? "yes" : "no");
|
" Norm=" + (shouldNormalizeObjectiveValue ? "yes" : "no");
|
||||||
|
|
||||||
return settingsString;
|
return settingsString;
|
||||||
}
|
}
|
||||||
|
|
@ -137,28 +138,22 @@ public:
|
||||||
&fullToReducedInterfaceViMap,
|
&fullToReducedInterfaceViMap,
|
||||||
std::unordered_map<FullPatternVertexIndex, ReducedPatternVertexIndex>
|
std::unordered_map<FullPatternVertexIndex, ReducedPatternVertexIndex>
|
||||||
&fullPatternOppositeInterfaceViMap);
|
&fullPatternOppositeInterfaceViMap);
|
||||||
static void
|
static void visualizeResults(
|
||||||
visualizeResults(const std::vector<std::shared_ptr<SimulationJob>>
|
const std::shared_ptr<SimulationJob> &fullPatternSimulationJobs,
|
||||||
&fullPatternSimulationJobs,
|
const std::shared_ptr<SimulationJob> &reducedPatternSimulationJobs,
|
||||||
const std::vector<std::shared_ptr<SimulationJob>>
|
|
||||||
&reducedPatternSimulationJobs,
|
|
||||||
const std::vector<SimulationScenario> &simulationScenarios,
|
|
||||||
const std::unordered_map<ReducedPatternVertexIndex,
|
const std::unordered_map<ReducedPatternVertexIndex,
|
||||||
FullPatternVertexIndex>
|
FullPatternVertexIndex>
|
||||||
&reducedToFullInterfaceViMap);
|
&reducedToFullInterfaceViMap,
|
||||||
|
const bool &shouldDraw);
|
||||||
|
|
||||||
static double computeError(const std::vector<Vector6d> &reducedPatternResults,
|
static double computeError(const std::vector<Vector6d> &reducedPatternResults,
|
||||||
const std::vector<Vector6d> &fullPatternResults,
|
const std::vector<Vector6d> &fullPatternResults,
|
||||||
const double &interfaceDisplacementNormSum,
|
|
||||||
const std::unordered_map<ReducedPatternVertexIndex,
|
const std::unordered_map<ReducedPatternVertexIndex,
|
||||||
FullPatternVertexIndex>
|
FullPatternVertexIndex>
|
||||||
&reducedToFullInterfaceViMap);
|
&reducedToFullInterfaceViMap,
|
||||||
|
const double &normalizationFactor);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void
|
|
||||||
visualizeResults(const std::vector<std::shared_ptr<SimulationJob>>
|
|
||||||
&fullPatternSimulationJobs,
|
|
||||||
const std::vector<SimulationScenario> &simulationScenarios);
|
|
||||||
static void computeDesiredReducedModelDisplacements(
|
static void computeDesiredReducedModelDisplacements(
|
||||||
const SimulationResults &fullModelResults,
|
const SimulationResults &fullModelResults,
|
||||||
const std::unordered_map<size_t, size_t> &displacementsReducedToFullMap,
|
const std::unordered_map<size_t, size_t> &displacementsReducedToFullMap,
|
||||||
|
|
@ -178,6 +173,12 @@ private:
|
||||||
const Eigen::MatrixX3d &optimalReducedPatternDisplacements);
|
const Eigen::MatrixX3d &optimalReducedPatternDisplacements);
|
||||||
static double objective(long n, const double *x);
|
static double objective(long n, const double *x);
|
||||||
FormFinder simulator;
|
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 {
|
struct ReducedModelOptimizer::Results {
|
||||||
double time{-1};
|
double time{-1};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue