34 bool dimension_modified =
false;
42 dimension_modified |=
final_stage_constraints->update(n, t, xref, uref, sref, single_dt, x0,
final_stage_cost,
stage_preprocessor, dts, grid);
44 return dimension_modified;
51 else if (
x_lb.size() != x_dim)
56 else if (
x_ub.size() != x_dim)
61 else if (
u_lb.size() != u_dim)
66 else if (
u_ub.size() != u_dim)
78 std::make_shared<Edge>(dim, k, stage_fun, xk, stage_fun.isLinearNonIntegralStateTerm(k), stage_fun.isLsqFormNonIntegralStateTerm(k));
79 edges.push_back(edge);
87 std::make_shared<Edge>(dim, k, stage_fun, uk, stage_fun.isLinearNonIntegralControlTerm(k), stage_fun.isLsqFormNonIntegralControlTerm(k));
88 edges.push_back(edge);
96 std::make_shared<Edge>(dim, k, stage_fun, dt, stage_fun.isLinearNonIntegralDtTerm(k), stage_fun.isLsqFormNonIntegralDtTerm(k));
97 edges.push_back(edge);
105 std::make_shared<Edge>(dim, k, stage_fun, dt, stage_fun.isLinearNonIntegralDtTerm(k), stage_fun.isLsqFormNonIntegralDtTerm(k));
106 edges.push_back(edge);
113 Edge::Ptr edge = std::make_shared<Edge>(dim, k, stage_fun, xk, uk,
false,
false);
114 edges.push_back(edge);
121 Edge::Ptr edge = std::make_shared<Edge>(dim, k, stage_fun, uk, u_prev, u_prev_dt,
false,
false);
122 edges.push_back(edge);
129 Edge::Ptr edge = std::make_shared<Edge>(dim, k, stage_fun, xk, uk, dt,
false,
false);
130 edges.push_back(edge);
135 ScalarVertex& u_prev_dt, std::vector<BaseEdge::Ptr>& cost_edges,
136 std::vector<BaseEdge::Ptr>& eq_edges, std::vector<BaseEdge::Ptr>& ineq_edges)
153 std::vector<BaseEdge::Ptr>& cost_edges, std::vector<BaseEdge::Ptr>& eq_edges,
154 std::vector<BaseEdge::Ptr>& ineq_edges)
158 int dim =
stage_cost->getNonIntegralControlDeviationTermDimension(n);
162 Edge::Ptr edge = std::make_shared<Edge>(dim,
n, *
stage_cost, u_ref, u_prev, u_prev_dt,
false,
false);
163 cost_edges.push_back(edge);
173 eq_edges.push_back(edge);
183 ineq_edges.push_back(edge);
196 Edge::Ptr edge = std::make_shared<Edge>(dim, k, *
final_stage_cost, xf, final_stage_cost->isLinearNonIntegralStateTerm(k),
197 final_stage_cost->isLsqFormNonIntegralStateTerm(k));
213 final_stage_constraints->isLsqFormNonIntegralStateTerm(k));
#define PRINT_ERROR_NAMED(msg)
virtual int getNonIntegralControlTermDimension(int k) const
BaseEdge::Ptr getFinalStateCostEdge(int k, VectorVertex &xf)
Generic interface class for discretization grids.
FinalStageConstraint::Ptr final_stage_constraints
StageCost::Ptr stage_cost
void checkAndInitializeBoundDimensions(int x_dim, int u_dim)
virtual int getNonIntegralDtTermDimension(int k) const
Vertex implementation for scalar values.
void getFinalControlDeviationEdges(int n, VectorVertex &u_ref, VectorVertex &u_prev, ScalarVertex &u_prev_dt, std::vector< BaseEdge::Ptr > &cost_edges, std::vector< BaseEdge::Ptr > &eq_edges, std::vector< BaseEdge::Ptr > &ineq_edges)
virtual int getNonIntegralStateControlTermDimension(int k) const
std::shared_ptr< Edge > Ptr
constexpr const double CORBO_INF_DBL
Representation for infinity (double version)
FinalStageCost::Ptr final_stage_cost
std::shared_ptr< BaseEdge > Ptr
virtual int getNonIntegralControlDeviationTermDimension(int k) const
void getNonIntegralStageFunctionEdges(int k, VectorVertex &xk, VectorVertex &uk, ScalarVertex &dt, VectorVertex &u_prev, ScalarVertex &u_prev_dt, const StageFunction &stage_fun, std::vector< BaseEdge::Ptr > &edges)
BaseEdge::Ptr getFinalStateConstraintEdge(int k, VectorVertex &xf)
Interface class for reference trajectories.
virtual int getNonIntegralStateTermDimension(int k) const
Templated base edge class that stores an arbitary number of value.
Vertex implementation that stores an Eigen::VectorXd (dynamic dimension)
bool update(int n, double t, ReferenceTrajectoryInterface &xref, ReferenceTrajectoryInterface &uref, ReferenceTrajectoryInterface *sref, bool single_dt, const Eigen::VectorXd &x0, const std::vector< double > &dts, const DiscretizationGridInterface *grid)
StageInequalityConstraint::Ptr stage_inequalities
virtual int getNonIntegralStateControlDtTermDimension(int k) const
StageEqualityConstraint::Ptr stage_equalities
StagePreprocessor::Ptr stage_preprocessor