Commited code for generating the first problem. The converged state could be improved(?).

This commit is contained in:
Iason 2020-12-17 19:25:27 +02:00
parent b32e7ff8a9
commit 0508d7c055
3 changed files with 19 additions and 11 deletions

View File

@ -65,12 +65,12 @@ int main(int argc, char *argv[]) {
ReducedModelOptimizer optimizer(numberOfNodesPerSlot);
// FlatPattern pattern("/home/iason/Models/TestSet_validPatterns/59.ply");
// optimizer.initialize(pattern, *reducedModels[1], {});
// optimizer.setInitialGuess({0.10073746137216238, 1.9611251949927333,
// 7.5940127902102867, 8.0260424171674654});
// Eigen::VectorXd optimalParameters = optimizer.optimize();
// optimizer.setInitialGuess({2, 2, 2, 2, 2});
FlatPattern pattern("/home/iason/Models/TestSet_validPatterns/59.ply");
optimizer.initialize(pattern, *reducedModels[1], {});
// optimizer.setInitialGuess({0.10073746137216238, 1.9611251949927333,
// 7.5940127902102867, 8.0260424171674654});
optimizer.setInitialGuess({2, 2, 2, 2, 2});
Eigen::VectorXd optimalParameters = optimizer.optimize(3);
std::string fullPatternsTestSetDirectory =
"/home/iason/Models/TestSet_validPatterns";

View File

@ -659,13 +659,21 @@ std::vector<SimulationJob> ReducedModelOptimizer::createScenarios(
return scenarios;
}
Eigen::VectorXd ReducedModelOptimizer::optimize() {
Eigen::VectorXd ReducedModelOptimizer::optimize(const int &simulationScenario) {
std::vector<SimulationJob> simulationJobs =
createScenarios(m_pFullModelSimulationMesh);
std::vector<Eigen::VectorXd> results;
for (int i = 0; i < simulationJobs.size(); i++) {
std::cout << "Running simulation job:" << i << std::endl;
const SimulationJob &job = simulationJobs[i];
if (simulationScenario == -1) { // run all scenarios
for (int i = 0; i < simulationJobs.size(); i++) {
std::cout << "Running simulation job:" << i << std::endl;
const SimulationJob &job = simulationJobs[i];
polyscope::removeAllStructures();
auto result = optimizeForSimulationJob(job);
results.push_back(result);
}
} else { // run chosen
std::cout << "Running simulation job:" << simulationScenario << std::endl;
const SimulationJob &job = simulationJobs[simulationScenario];
polyscope::removeAllStructures();
auto result = optimizeForSimulationJob(job);
results.push_back(result);

View File

@ -22,7 +22,7 @@ class ReducedModelOptimizer {
std::vector<double> initialGuess;
public:
Eigen::VectorXd optimize();
Eigen::VectorXd optimize(const int &simulationScenario = -1);
double operator()(const Eigen::VectorXd &x, Eigen::VectorXd &) const;
ReducedModelOptimizer(const std::vector<size_t> &numberOfNodesPerSlot);