Refactoring
This commit is contained in:
parent
3cd5bcf13d
commit
03c7d63e5b
|
@ -22,6 +22,7 @@ set(EXTERNAL_DEPS_DIR "C:/Users/iason/Downloads/ReducedModelOptimization/build/e
|
|||
else()
|
||||
set(EXTERNAL_DEPS_DIR "/home/iason/Coding/build/external dependencies/")
|
||||
endif()
|
||||
|
||||
##Create directory for the external libraries
|
||||
file(MAKE_DIRECTORY ${EXTERNAL_DEPS_DIR})
|
||||
|
||||
|
|
62
src/main.cpp
62
src/main.cpp
|
@ -75,40 +75,47 @@ int main(int argc, char *argv[]) {
|
|||
const std::filesystem::path crashedJobsDirPath(std::filesystem::path(optimizationResultsDirectory)
|
||||
.append("CrashedJobs")
|
||||
.append(optimizationName));
|
||||
optimizationResultFolderExists |= std::filesystem::exists(crashedJobsDirPath);
|
||||
if (std::filesystem::exists(crashedJobsDirPath)) {
|
||||
resultsOutputDir = crashedJobsDirPath.string();
|
||||
optimizationResultFolderExists = true;
|
||||
}
|
||||
const std::filesystem::path convergedJobsDirPath(
|
||||
std::filesystem::path(optimizationResultsDirectory)
|
||||
.append("ConvergedJobs")
|
||||
.append(optimizationName));
|
||||
optimizationResultFolderExists |= std::filesystem::exists(convergedJobsDirPath);
|
||||
if (std::filesystem::exists(convergedJobsDirPath)) {
|
||||
resultsOutputDir = convergedJobsDirPath.string();
|
||||
optimizationResultFolderExists = true;
|
||||
}
|
||||
|
||||
ReducedPatternOptimization::Results optimizationResults;
|
||||
// bool optimizationAlreadyComputed = false;
|
||||
// if (optimizationResultFolderExists) {
|
||||
// if (optimizationResults.settings == settings_optimization
|
||||
// && optimizationResults.load(resultsOutputDir)) {
|
||||
// optimizationAlreadyComputed = true;
|
||||
// }
|
||||
// }
|
||||
bool optimizationAlreadyComputed = false;
|
||||
if (optimizationResultFolderExists) {
|
||||
const bool resultsWereSuccessfullyLoaded = optimizationResults.load(resultsOutputDir);
|
||||
if (resultsWereSuccessfullyLoaded && optimizationResults.settings == settings_optimization) {
|
||||
optimizationAlreadyComputed = true;
|
||||
}
|
||||
}
|
||||
|
||||
// if (!optimizationAlreadyComputed) {
|
||||
const std::vector<size_t> numberOfNodesPerSlot{1, 0, 0, 2, 1, 2, 1};
|
||||
assert(interfaceNodeIndex == numberOfNodesPerSlot[0] + numberOfNodesPerSlot[3]);
|
||||
ReducedModelOptimizer optimizer(numberOfNodesPerSlot);
|
||||
optimizer.initializePatterns(fullPattern, reducedPattern, settings_optimization.xRanges.size());
|
||||
optimizer.optimize(settings_optimization, optimizationResults);
|
||||
optimizationResults.label = optimizationName;
|
||||
optimizationResults.baseTriangleFullPattern.copy(fullPattern);
|
||||
optimizationResults.settings = settings_optimization;
|
||||
if (!optimizationAlreadyComputed) {
|
||||
const std::vector<size_t> numberOfNodesPerSlot{1, 0, 0, 2, 1, 2, 1};
|
||||
assert(interfaceNodeIndex == numberOfNodesPerSlot[0] + numberOfNodesPerSlot[3]);
|
||||
ReducedModelOptimizer optimizer(numberOfNodesPerSlot);
|
||||
optimizer.initializePatterns(fullPattern,
|
||||
reducedPattern,
|
||||
settings_optimization.xRanges.size());
|
||||
optimizer.optimize(settings_optimization, optimizationResults);
|
||||
optimizationResults.label = optimizationName;
|
||||
optimizationResults.baseTriangleFullPattern.copy(fullPattern);
|
||||
optimizationResults.settings = settings_optimization;
|
||||
|
||||
// Export results
|
||||
if (optimizationResults.numberOfSimulationCrashes != 0) {
|
||||
resultsOutputDir = crashedJobsDirPath.string();
|
||||
// Export results
|
||||
if (optimizationResults.numberOfSimulationCrashes != 0) {
|
||||
resultsOutputDir = crashedJobsDirPath.string();
|
||||
} else {
|
||||
resultsOutputDir = convergedJobsDirPath.string();
|
||||
}
|
||||
optimizationResults.save(resultsOutputDir);
|
||||
// }
|
||||
|
||||
// Write results in csv
|
||||
csvFile csv_results({}, false);
|
||||
|
@ -124,11 +131,12 @@ int main(int argc, char *argv[]) {
|
|||
optimizationResults.writeResultsTo(settings_optimization, csv_results);
|
||||
settings_optimization.writeSettingsTo(csv_results);
|
||||
csv_results << endrow;
|
||||
}
|
||||
|
||||
//#ifdef POLYSCOPE_DEFINED
|
||||
// optimizationResults.saveMeshFiles();
|
||||
// optimizationResults.draw();
|
||||
//#endif
|
||||
//#ifdef POLYSCOPE_DEFINED
|
||||
// optimizationResults.saveMeshFiles();
|
||||
// optimizationResults.draw();
|
||||
//#endif
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1097,8 +1097,7 @@ double ReducedModelOptimizer::getFullPatternMaxSimulationForce(const BaseSimulat
|
|||
forceMagnitude,
|
||||
1e-8,
|
||||
1e8,
|
||||
optimizationEpsilon,
|
||||
200);
|
||||
optimizationEpsilon);
|
||||
break;
|
||||
case Dome:
|
||||
global.desiredMaxRotationAngle = vcg::math::ToRad(20.0);
|
||||
|
@ -1109,10 +1108,10 @@ double ReducedModelOptimizer::getFullPatternMaxSimulationForce(const BaseSimulat
|
|||
forceMagnitude,
|
||||
1e-8,
|
||||
1e8,
|
||||
vcg::math::ToRad(1.0),
|
||||
vcg::math::ToRad(1.0)
|
||||
// global.desiredMaxRotationAngle * 0.5,
|
||||
// optimizationEpsilon,
|
||||
500);
|
||||
);
|
||||
break;
|
||||
case Saddle:
|
||||
// global.desiredMaxDisplacementValue *= 2;
|
||||
|
@ -1121,15 +1120,13 @@ double ReducedModelOptimizer::getFullPatternMaxSimulationForce(const BaseSimulat
|
|||
(global.baseTriangle.cP(1)
|
||||
+ global.baseTriangle.cP(2))
|
||||
/ 2);
|
||||
// std::cout << "Saddle des disp:" << global.desiredMaxDisplacementValue << std::endl;
|
||||
global.constructScenarioFunction = &ReducedModelOptimizer::constructSaddleSimulationScenario;
|
||||
global.interfaceViForComputingScenarioError = global.fullPatternInterfaceViPairs[0].first;
|
||||
dlib::find_min_single_variable(&fullPatternMaxSimulationForceTranslationalObjective,
|
||||
forceMagnitude,
|
||||
1e-8,
|
||||
1e8,
|
||||
1e-2,
|
||||
150);
|
||||
1e-2);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1411,7 +1408,7 @@ void ReducedModelOptimizer::optimize(
|
|||
DRMSimulationModel::Settings simulationSettings;
|
||||
simulationSettings.shouldDraw = false;
|
||||
#ifdef POLYSCOPE_DEFINED
|
||||
const bool drawFullPatternSimulationResults = true;
|
||||
const bool drawFullPatternSimulationResults = false;
|
||||
;
|
||||
if (drawFullPatternSimulationResults) {
|
||||
global.fullPatternSimulationJobs[0]->pMesh->registerForDrawing(
|
||||
|
|
|
@ -30,7 +30,7 @@ class ReducedModelOptimizer
|
|||
std::unordered_map<size_t, std::unordered_set<size_t>> slotToNode;
|
||||
|
||||
public:
|
||||
constexpr static std::array<int, 5> simulationScenariosResolution = {4, 4, 4, 4, 4};
|
||||
constexpr static std::array<int, 5> simulationScenariosResolution = {10, 10, 20, 20, 20};
|
||||
inline static int totalNumberOfSimulationScenarios
|
||||
= std::accumulate(simulationScenariosResolution.begin(),
|
||||
simulationScenariosResolution.end(),
|
||||
|
|
Loading…
Reference in New Issue