GCC Code Coverage Report


Directory: ./
File: unittest/factory/solver.cpp
Date: 2025-05-13 10:30:51
Exec Total Coverage
Lines: 0 60 0.0%
Branches: 0 49 0.0%

Line Branch Exec Source
1 ///////////////////////////////////////////////////////////////////////////////
2 // BSD 3-Clause License
3 //
4 // Copyright (C) 2019-2024, LAAS-CNRS, New York University,
5 // Max Planck Gesellschaft, University of Edinburgh,
6 // Heriot-Watt University
7 // Copyright note valid unless otherwise stated in individual files.
8 // All rights reserved.
9 ///////////////////////////////////////////////////////////////////////////////
10
11 #include "solver.hpp"
12
13 #include "crocoddyl/core/solvers/box-ddp.hpp"
14 #include "crocoddyl/core/solvers/box-fddp.hpp"
15 #include "crocoddyl/core/solvers/ddp.hpp"
16 #include "crocoddyl/core/solvers/fddp.hpp"
17 #ifdef CROCODDYL_WITH_IPOPT
18 #include "crocoddyl/core/solvers/ipopt.hpp"
19 #endif
20
21 namespace crocoddyl {
22 namespace unittest {
23
24 const std::vector<SolverTypes::Type> SolverTypes::all(SolverTypes::init_all());
25
26 std::ostream& operator<<(std::ostream& os, SolverTypes::Type type) {
27 switch (type) {
28 case SolverTypes::SolverKKT:
29 os << "SolverKKT";
30 break;
31 case SolverTypes::SolverDDP:
32 os << "SolverDDP";
33 break;
34 case SolverTypes::SolverFDDP:
35 os << "SolverFDDP";
36 break;
37 case SolverTypes::SolverBoxDDP:
38 os << "SolverBoxDDP";
39 break;
40 case SolverTypes::SolverBoxFDDP:
41 os << "SolverBoxFDDP";
42 break;
43 #ifdef CROCODDYL_WITH_IPOPT
44 case SolverTypes::SolverIpopt:
45 os << "SolverIpopt";
46 break;
47 #endif
48 case SolverTypes::NbSolverTypes:
49 os << "NbSolverTypes";
50 break;
51 default:
52 break;
53 }
54 return os;
55 }
56
57 SolverFactory::SolverFactory() {}
58
59 SolverFactory::~SolverFactory() {}
60
61 std::shared_ptr<crocoddyl::SolverAbstract> SolverFactory::create(
62 SolverTypes::Type solver_type,
63 std::shared_ptr<crocoddyl::ActionModelAbstract> model,
64 std::shared_ptr<crocoddyl::ActionModelAbstract> model2,
65 std::shared_ptr<crocoddyl::ActionModelAbstract> modelT, size_t T) const {
66 std::shared_ptr<crocoddyl::SolverAbstract> solver;
67 std::vector<std::shared_ptr<crocoddyl::ActionModelAbstract> > running_models;
68 const size_t halfway = T / 2;
69 for (size_t i = 0; i < halfway; ++i) {
70 running_models.push_back(model);
71 }
72 for (size_t i = 0; i < T - halfway; ++i) {
73 running_models.push_back(model2);
74 }
75
76 std::shared_ptr<crocoddyl::ShootingProblem> problem =
77 std::make_shared<crocoddyl::ShootingProblem>(model->get_state()->zero(),
78 running_models, modelT);
79
80 switch (solver_type) {
81 case SolverTypes::SolverKKT:
82 solver = std::make_shared<crocoddyl::SolverKKT>(problem);
83 break;
84 case SolverTypes::SolverDDP:
85 solver = std::make_shared<crocoddyl::SolverDDP>(problem);
86 break;
87 case SolverTypes::SolverFDDP:
88 solver = std::make_shared<crocoddyl::SolverFDDP>(problem);
89 break;
90 case SolverTypes::SolverBoxDDP:
91 solver = std::make_shared<crocoddyl::SolverBoxDDP>(problem);
92 break;
93 case SolverTypes::SolverBoxFDDP:
94 solver = std::make_shared<crocoddyl::SolverBoxFDDP>(problem);
95 break;
96 #ifdef CROCODDYL_WITH_IPOPT
97 case SolverTypes::SolverIpopt:
98 solver = std::make_shared<crocoddyl::SolverIpopt>(problem);
99 break;
100 #endif
101 default:
102 throw_pretty(__FILE__ ": Wrong SolverTypes::Type given");
103 break;
104 }
105 return solver;
106 }
107
108 } // namespace unittest
109 } // namespace crocoddyl
110