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)
|
||||
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;
|
||||
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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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};
|
||||
|
|
Loading…
Reference in New Issue