Commited code for generating the first problem. The converged state could be improved(?).
This commit is contained in:
parent
b32e7ff8a9
commit
0508d7c055
12
src/main.cpp
12
src/main.cpp
|
@ -65,12 +65,12 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
ReducedModelOptimizer optimizer(numberOfNodesPerSlot);
|
ReducedModelOptimizer optimizer(numberOfNodesPerSlot);
|
||||||
|
|
||||||
// FlatPattern pattern("/home/iason/Models/TestSet_validPatterns/59.ply");
|
FlatPattern pattern("/home/iason/Models/TestSet_validPatterns/59.ply");
|
||||||
// optimizer.initialize(pattern, *reducedModels[1], {});
|
optimizer.initialize(pattern, *reducedModels[1], {});
|
||||||
// optimizer.setInitialGuess({0.10073746137216238, 1.9611251949927333,
|
// optimizer.setInitialGuess({0.10073746137216238, 1.9611251949927333,
|
||||||
// 7.5940127902102867, 8.0260424171674654});
|
// 7.5940127902102867, 8.0260424171674654});
|
||||||
// Eigen::VectorXd optimalParameters = optimizer.optimize();
|
optimizer.setInitialGuess({2, 2, 2, 2, 2});
|
||||||
// optimizer.setInitialGuess({2, 2, 2, 2, 2});
|
Eigen::VectorXd optimalParameters = optimizer.optimize(3);
|
||||||
|
|
||||||
std::string fullPatternsTestSetDirectory =
|
std::string fullPatternsTestSetDirectory =
|
||||||
"/home/iason/Models/TestSet_validPatterns";
|
"/home/iason/Models/TestSet_validPatterns";
|
||||||
|
|
|
@ -659,13 +659,21 @@ std::vector<SimulationJob> ReducedModelOptimizer::createScenarios(
|
||||||
return scenarios;
|
return scenarios;
|
||||||
}
|
}
|
||||||
|
|
||||||
Eigen::VectorXd ReducedModelOptimizer::optimize() {
|
Eigen::VectorXd ReducedModelOptimizer::optimize(const int &simulationScenario) {
|
||||||
std::vector<SimulationJob> simulationJobs =
|
std::vector<SimulationJob> simulationJobs =
|
||||||
createScenarios(m_pFullModelSimulationMesh);
|
createScenarios(m_pFullModelSimulationMesh);
|
||||||
std::vector<Eigen::VectorXd> results;
|
std::vector<Eigen::VectorXd> results;
|
||||||
for (int i = 0; i < simulationJobs.size(); i++) {
|
if (simulationScenario == -1) { // run all scenarios
|
||||||
std::cout << "Running simulation job:" << i << std::endl;
|
for (int i = 0; i < simulationJobs.size(); i++) {
|
||||||
const SimulationJob &job = simulationJobs[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();
|
polyscope::removeAllStructures();
|
||||||
auto result = optimizeForSimulationJob(job);
|
auto result = optimizeForSimulationJob(job);
|
||||||
results.push_back(result);
|
results.push_back(result);
|
||||||
|
|
|
@ -22,7 +22,7 @@ class ReducedModelOptimizer {
|
||||||
std::vector<double> initialGuess;
|
std::vector<double> initialGuess;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Eigen::VectorXd optimize();
|
Eigen::VectorXd optimize(const int &simulationScenario = -1);
|
||||||
double operator()(const Eigen::VectorXd &x, Eigen::VectorXd &) const;
|
double operator()(const Eigen::VectorXd &x, Eigen::VectorXd &) const;
|
||||||
|
|
||||||
ReducedModelOptimizer(const std::vector<size_t> &numberOfNodesPerSlot);
|
ReducedModelOptimizer(const std::vector<size_t> &numberOfNodesPerSlot);
|
||||||
|
|
Loading…
Reference in New Issue