Optimization using the second reduced model.
This commit is contained in:
parent
cfdbe60f37
commit
97893cd618
|
|
@ -48,7 +48,7 @@ int main(int argc, char *argv[]) {
|
|||
ReducedModelOptimizer::xRange beamE{"E", 0.1, 1.9};
|
||||
ReducedModelOptimizer::xRange innerHexagonSize{"HexagonSize", 0.1, 0.9};
|
||||
// Test set of full patterns
|
||||
std::string fullPatternsTestSetDirectory = "TestSet";
|
||||
std::string fullPatternsTestSetDirectory = "../TestSet";
|
||||
if (!std::filesystem::exists(
|
||||
std::filesystem::path(fullPatternsTestSetDirectory))) {
|
||||
std::cerr << "Full pattern directory does not exist: "
|
||||
|
|
@ -87,7 +87,8 @@ int main(int argc, char *argv[]) {
|
|||
beamDimensionsRatio.toString() + " " +
|
||||
beamE.toString();
|
||||
std::cout << xRangesString << std::endl;
|
||||
settings.xRanges = {beamWidth, beamDimensionsRatio, beamE,innerHexagonSize};
|
||||
settings.xRanges = {beamWidth, beamDimensionsRatio, beamE,
|
||||
innerHexagonSize};
|
||||
// std::filesystem::path thisOptimizationDirectory(
|
||||
// std::filesystem::path("../OptimizationResults").append(xRangesString));
|
||||
// std::filesystem::create_directories(thisOptimizationDirectory);
|
||||
|
|
@ -103,7 +104,7 @@ int main(int argc, char *argv[]) {
|
|||
resultsPerPattern(patternPairs.size());
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
|
||||
#pragma omp parallel for
|
||||
//#pragma omp parallel for
|
||||
for (int patternPairIndex = 0; patternPairIndex < patternPairs.size();
|
||||
patternPairIndex++) {
|
||||
// const auto filepathString = filepath.string();
|
||||
|
|
|
|||
|
|
@ -155,8 +155,7 @@ double ReducedModelOptimizer::computeError(
|
|||
void updateMesh(long n, const double *x) {
|
||||
auto &global = tls[omp_get_thread_num()];
|
||||
std::shared_ptr<SimulationMesh> &pReducedPatternSimulationMesh =
|
||||
global
|
||||
.g_reducedPatternSimulationJob[global.simulationScenarioIndices[0]]
|
||||
global.g_reducedPatternSimulationJob[global.simulationScenarioIndices[0]]
|
||||
->pMesh;
|
||||
// const Element &elem = g_reducedPatternSimulationJob[0]->mesh->elements[0];
|
||||
// std::cout << elem.axialConstFactor << " " << elem.torsionConstFactor << "
|
||||
|
|
@ -250,7 +249,7 @@ double ReducedModelOptimizer::objective(long n, const double *x) {
|
|||
double error = 0;
|
||||
FormFinder simulator;
|
||||
FormFinder::Settings simulationSettings;
|
||||
simulationSettings.shouldDraw = true;
|
||||
// simulationSettings.shouldDraw = true;
|
||||
for (const int simulationScenarioIndex : global.simulationScenarioIndices) {
|
||||
SimulationResults reducedModelResults = simulator.executeSimulation(
|
||||
global.g_reducedPatternSimulationJob[simulationScenarioIndex],
|
||||
|
|
@ -296,8 +295,7 @@ double ReducedModelOptimizer::objective(long n, const double *x) {
|
|||
std::ofstream out(filename, std::ios_base::app);
|
||||
auto pMesh =
|
||||
global
|
||||
.g_reducedPatternSimulationJob[global
|
||||
.simulationScenarioIndices[0]]
|
||||
.g_reducedPatternSimulationJob[global.simulationScenarioIndices[0]]
|
||||
->pMesh;
|
||||
|
||||
for (size_t parameterIndex = 0; parameterIndex < n; parameterIndex++) {
|
||||
|
|
@ -540,8 +538,8 @@ void ReducedModelOptimizer::initializeOptimizationParameters(
|
|||
const std::shared_ptr<SimulationMesh> &mesh) {
|
||||
auto &global = tls[omp_get_thread_num()];
|
||||
global.numberOfOptimizationParameters = 3;
|
||||
global.g_initialParameters.resize(global.optimizeInnerHexagonSize
|
||||
? ++global.numberOfOptimizationParameters
|
||||
global.g_initialParameters.resize(
|
||||
global.optimizeInnerHexagonSize ? ++global.numberOfOptimizationParameters
|
||||
: global.numberOfOptimizationParameters);
|
||||
// Save save the beam stiffnesses
|
||||
// for (size_t ei = 0; ei < pReducedModelElementalMesh->EN(); ei++) {
|
||||
|
|
@ -694,8 +692,7 @@ ReducedModelOptimizer::Results ReducedModelOptimizer::runOptimization(
|
|||
result = dlib::find_min_global(
|
||||
objF, xMin, xMax, dlib::max_function_calls(settings.maxSimulations),
|
||||
std::chrono::hours(24 * 365 * 290), settings.solutionAccuracy);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
double (*objF)(double, double, double) = &objective;
|
||||
result = dlib::find_min_global(
|
||||
objF, xMin, xMax, dlib::max_function_calls(settings.maxSimulations),
|
||||
|
|
|
|||
Loading…
Reference in New Issue