14 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
15 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::ConstraintContainerAD()
17 stateControlD_.setZero();
19 fIntermediate_ = [&](
const Eigen::Matrix<CGScalar, STATE_DIM + CONTROL_DIM, 1>& stateinput) {
20 return this->evaluateIntermediateCodegen(stateinput);
23 fTerminal_ = [&](
const Eigen::Matrix<CGScalar, STATE_DIM + CONTROL_DIM, 1>& stateinput) {
24 return this->evaluateTerminalCodegen(stateinput);
27 intermediateCodegen_ =
28 std::shared_ptr<JacCG>(
new JacCG(fIntermediate_, STATE_DIM + CONTROL_DIM, getIntermediateConstraintsCount()));
30 std::shared_ptr<JacCG>(
new JacCG(fTerminal_, STATE_DIM + CONTROL_DIM, getTerminalConstraintsCount()));
34 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
35 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::ConstraintContainerAD(
const state_vector_t&
x,
36 const input_vector_t&
u,
40 stateControlD_ <<
x,
u;
44 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
45 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::ConstraintContainerAD(
const ConstraintContainerAD& arg)
46 : LinearConstraintContainer<STATE_DIM, CONTROL_DIM,
SCALAR>(arg),
47 fIntermediate_(arg.fIntermediate_),
48 fTerminal_(arg.fTerminal_),
49 sparsityIntermediateRows_(arg.sparsityIntermediateRows_),
50 sparsityStateIntermediateRows_(arg.sparsityStateIntermediateRows_),
51 sparsityStateIntermediateCols_(arg.sparsityStateIntermediateCols_),
52 sparsityInputIntermediateRows_(arg.sparsityInputIntermediateRows_),
53 sparsityInputIntermediateCols_(arg.sparsityInputIntermediateCols_),
54 sparsityTerminalRows_(arg.sparsityTerminalRows_),
55 sparsityStateTerminalRows_(arg.sparsityStateTerminalRows_),
56 sparsityStateTerminalCols_(arg.sparsityStateTerminalCols_),
57 sparsityInputTerminalRows_(arg.sparsityInputTerminalRows_),
58 sparsityInputTerminalCols_(arg.sparsityInputTerminalCols_),
59 stateControlD_(arg.stateControlD_)
61 constraintsIntermediate_.resize(arg.constraintsIntermediate_.size());
62 constraintsTerminal_.resize(arg.constraintsTerminal_.size());
64 for (
size_t i = 0;
i < constraintsIntermediate_.size(); ++
i)
65 constraintsIntermediate_[
i] =
66 std::shared_ptr<ConstraintBase<STATE_DIM, CONTROL_DIM, SCALAR>>(arg.constraintsIntermediate_[
i]->clone());
68 for (
size_t i = 0;
i < constraintsTerminal_.size(); ++
i)
69 constraintsTerminal_[
i] =
70 std::shared_ptr<ConstraintBase<STATE_DIM, CONTROL_DIM, SCALAR>>(arg.constraintsTerminal_[
i]->clone());
72 intermediateCodegen_ =
73 std::shared_ptr<JacCG>(
new JacCG(fIntermediate_, STATE_DIM + CONTROL_DIM, getIntermediateConstraintsCount()));
75 std::shared_ptr<JacCG>(
new JacCG(fTerminal_, STATE_DIM + CONTROL_DIM, getTerminalConstraintsCount()));
78 initializeIntermediate();
83 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
84 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::ConstraintContainerAD_Raw_Ptr_t
85 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::clone()
const 87 return new ConstraintContainerAD(*
this);
91 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
92 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::~ConstraintContainerAD()
96 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
97 void ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::addIntermediateConstraint(
98 std::shared_ptr<ConstraintBase<STATE_DIM, CONTROL_DIM, SCALAR>> constraint,
101 constraintsIntermediate_.push_back(constraint);
105 constraint->getName(name);
106 std::cout <<
"''" << name <<
"'' added as AD intermediate constraint " << std::endl;
109 fIntermediate_ = [&](
const Eigen::Matrix<CGScalar, STATE_DIM + CONTROL_DIM, 1>& stateinput) {
110 return this->evaluateIntermediateCodegen(stateinput);
113 intermediateCodegen_->update(fIntermediate_, STATE_DIM + CONTROL_DIM, getIntermediateConstraintsCount());
115 this->initializedIntermediate_ =
false;
119 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
120 void ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::addTerminalConstraint(
121 std::shared_ptr<ConstraintBase<STATE_DIM, CONTROL_DIM, SCALAR>> constraint,
124 constraintsTerminal_.push_back(constraint);
128 constraint->getName(name);
129 std::cout <<
"''" << name <<
"'' added as AD terminal constraint " << std::endl;
132 fTerminal_ = [&](
const Eigen::Matrix<CGScalar, STATE_DIM + CONTROL_DIM, 1>& stateinput) {
133 return this->evaluateTerminalCodegen(stateinput);
136 terminalCodegen_->update(fTerminal_, STATE_DIM + CONTROL_DIM, getTerminalConstraintsCount());
138 this->initializedTerminal_ =
false;
141 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
142 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::VectorXs
143 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::evaluateIntermediate()
145 if (!this->initializedIntermediate_)
146 throw std::runtime_error(
"evaluateIntermediateConstraints not initialized yet. Call 'initialize()' before");
148 return intermediateCodegen_->forwardZero(stateControlD_);
152 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
153 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::VectorXs
154 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::evaluateTerminal()
156 if (!this->initializedTerminal_)
157 throw std::runtime_error(
"evaluateTerminalConstraints not initialized yet. Call 'initialize()' before");
159 return terminalCodegen_->forwardZero(stateControlD_);
163 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
164 size_t ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::getIntermediateConstraintsCount()
168 for (
auto constraint : constraintsIntermediate_)
169 count += constraint->getConstraintSize();
175 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
176 size_t ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::getTerminalConstraintsCount()
179 for (
auto constraint : constraintsTerminal_)
180 count += constraint->getConstraintSize();
186 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
187 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::VectorXs
188 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::jacobianStateSparseIntermediate()
190 if (!this->initializedIntermediate_)
191 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
193 MatrixXs jacTot = intermediateCodegen_->jacobian(stateControlD_);
198 jacSparse.resize(getJacobianStateNonZeroCountIntermediate());
199 for (
size_t i = 0;
i < getJacobianStateNonZeroCountIntermediate(); ++
i)
200 jacSparse(
i) = (jacTot.template leftCols<STATE_DIM>())(
201 sparsityStateIntermediateRows_(
i), sparsityStateIntermediateCols_(
i));
207 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
208 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::MatrixXs
209 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::jacobianStateIntermediate()
211 if (!this->initializedIntermediate_)
212 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
214 MatrixXs jacTot = intermediateCodegen_->jacobian(stateControlD_);
215 return jacTot.template leftCols<STATE_DIM>();
219 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
220 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::VectorXs
221 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::jacobianStateSparseTerminal()
223 if (!this->initializedTerminal_)
224 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
226 MatrixXs jacTot = terminalCodegen_->jacobian(stateControlD_);
228 jacSparse.resize(getJacobianStateNonZeroCountTerminal());
229 for (
size_t i = 0;
i < getJacobianStateNonZeroCountTerminal(); ++
i)
231 (jacTot.template leftCols<STATE_DIM>())(sparsityStateTerminalRows_(
i), sparsityStateTerminalCols_(
i));
237 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
238 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::MatrixXs
239 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::jacobianStateTerminal()
241 if (!this->initializedTerminal_)
242 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
244 MatrixXs jacTot = terminalCodegen_->jacobian(stateControlD_);
245 return jacTot.template leftCols<STATE_DIM>();
249 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
250 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::VectorXs
251 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::jacobianInputSparseIntermediate()
253 MatrixXs jacTot = intermediateCodegen_->jacobian(stateControlD_);
255 jacSparse.resize(getJacobianInputNonZeroCountIntermediate());
256 for (
size_t i = 0;
i < getJacobianInputNonZeroCountIntermediate(); ++
i)
257 jacSparse(
i) = (jacTot.template rightCols<CONTROL_DIM>())(
258 sparsityInputIntermediateRows_(
i), sparsityInputIntermediateCols_(
i));
264 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
265 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::MatrixXs
266 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::jacobianInputIntermediate()
268 if (!this->initializedIntermediate_)
269 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
271 MatrixXs jacTot = intermediateCodegen_->jacobian(stateControlD_);
272 return jacTot.template rightCols<CONTROL_DIM>();
276 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
277 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::VectorXs
278 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::jacobianInputSparseTerminal()
280 if (!this->initializedTerminal_)
281 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
283 MatrixXs jacTot = terminalCodegen_->jacobian(stateControlD_);
285 jacSparse.resize(getJacobianInputNonZeroCountTerminal());
286 for (
size_t i = 0;
i < getJacobianInputNonZeroCountTerminal(); ++
i)
288 (jacTot.template rightCols<CONTROL_DIM>())(sparsityInputTerminalRows_(
i), sparsityInputTerminalCols_(
i));
294 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
295 typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::MatrixXs
296 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::jacobianInputTerminal()
298 if (!this->initializedTerminal_)
299 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
301 MatrixXs jacTot = terminalCodegen_->jacobian(stateControlD_);
302 return jacTot.template rightCols<CONTROL_DIM>();
306 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
307 void ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::sparsityPatternStateIntermediate(Eigen::VectorXi& iRows,
308 Eigen::VectorXi& jCols)
310 if (!this->initializedIntermediate_)
311 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
313 iRows = sparsityStateIntermediateRows_;
314 jCols = sparsityStateIntermediateCols_;
318 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
319 void ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::sparsityPatternStateTerminal(Eigen::VectorXi& iRows,
320 Eigen::VectorXi& jCols)
322 if (!this->initializedTerminal_)
323 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
325 iRows = sparsityStateTerminalRows_;
326 jCols = sparsityStateTerminalCols_;
330 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
331 void ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::sparsityPatternInputIntermediate(Eigen::VectorXi& iRows,
332 Eigen::VectorXi& jCols)
334 if (!this->initializedIntermediate_)
335 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
337 iRows = sparsityInputIntermediateRows_;
338 jCols = sparsityInputIntermediateCols_;
342 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
343 void ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::sparsityPatternInputTerminal(Eigen::VectorXi& iRows,
344 Eigen::VectorXi& jCols)
346 if (!this->initializedTerminal_)
347 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
349 iRows = sparsityInputTerminalRows_;
350 jCols = sparsityInputTerminalCols_;
354 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
355 size_t ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::getJacobianStateNonZeroCountIntermediate()
357 if (!this->initializedIntermediate_)
358 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
360 return sparsityStateIntermediateRows_.rows();
364 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
365 size_t ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::getJacobianStateNonZeroCountTerminal()
367 if (!this->initializedTerminal_)
368 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
370 return sparsityStateTerminalRows_.rows();
374 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
375 size_t ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::getJacobianInputNonZeroCountIntermediate()
377 if (!this->initializedIntermediate_)
378 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
380 return sparsityInputIntermediateRows_.rows();
384 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
385 size_t ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::getJacobianInputNonZeroCountTerminal()
387 if (!this->initializedTerminal_)
388 throw std::runtime_error(
"Constraints not initialized yet. Call 'initialize()' before");
390 return sparsityInputTerminalRows_.rows();
394 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
395 bool ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::initializeIntermediate()
397 Eigen::VectorXi sparsityRows;
398 Eigen::VectorXi sparsityCols;
400 if (getIntermediateConstraintsCount() > 0)
407 intermediateCodegen_->compileJIT(settings,
"intermediateConstraints");
408 intermediateCodegen_->getSparsityPatternJacobian(sparsityRows, sparsityCols);
410 std::cout <<
"sparsityPattern Intermediate: " << std::endl
411 << intermediateCodegen_->getSparsityPatternJacobian() << std::endl;
412 assert(sparsityRows.rows() == sparsityRows.rows());
414 int nonZerosState = (sparsityCols.array() < STATE_DIM).count();
415 int nonZerosInput = (sparsityCols.array() >= STATE_DIM).count();
417 sparsityStateIntermediateRows_.resize(nonZerosState);
418 sparsityStateIntermediateCols_.resize(nonZerosState);
419 sparsityInputIntermediateRows_.resize(nonZerosInput);
420 sparsityInputIntermediateCols_.resize(nonZerosInput);
424 this->lowerBoundsIntermediate_.resize(getIntermediateConstraintsCount());
425 this->upperBoundsIntermediate_.resize(getIntermediateConstraintsCount());
427 for (
auto constraint : constraintsIntermediate_)
429 size_t constraintSize = constraint->getConstraintSize();
430 this->lowerBoundsIntermediate_.segment(count, constraintSize) = constraint->getLowerBound();
431 this->upperBoundsIntermediate_.segment(count, constraintSize) = constraint->getUpperBound();
432 count += constraintSize;
435 size_t stateIndex = 0;
436 size_t inputIndex = 0;
438 for (
int i = 0;
i < sparsityRows.rows(); ++
i)
440 if (sparsityCols(
i) <
static_cast<int>(STATE_DIM))
442 sparsityStateIntermediateRows_(stateIndex) = sparsityRows(
i);
443 sparsityStateIntermediateCols_(stateIndex) = sparsityCols(
i);
448 sparsityInputIntermediateRows_(inputIndex) = sparsityRows(
i);
449 sparsityInputIntermediateCols_(inputIndex) = sparsityCols(
i) - STATE_DIM;
459 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
460 bool ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::initializeTerminal()
462 Eigen::VectorXi sparsityRows;
463 Eigen::VectorXi sparsityCols;
465 if (getTerminalConstraintsCount() > 0)
472 terminalCodegen_->compileJIT(settings,
"terminalConstraints");
473 terminalCodegen_->getSparsityPatternJacobian(sparsityRows, sparsityCols);
475 std::cout <<
"sparsityPattern Terminal: " << std::endl
476 << terminalCodegen_->getSparsityPatternJacobian() << std::endl;
477 assert(sparsityRows.rows() == sparsityRows.rows());
479 int nonZerosState = (sparsityCols.array() < STATE_DIM).count();
480 int nonZerosInput = (sparsityCols.array() >= STATE_DIM).count();
482 sparsityStateTerminalRows_.resize(nonZerosState);
483 sparsityStateTerminalCols_.resize(nonZerosState);
484 sparsityInputTerminalRows_.resize(nonZerosInput);
485 sparsityInputTerminalCols_.resize(nonZerosInput);
489 this->lowerBoundsTerminal_.resize(getTerminalConstraintsCount());
490 this->upperBoundsTerminal_.resize(getTerminalConstraintsCount());
492 for (
auto constraint : constraintsTerminal_)
494 size_t constraintSize = constraint->getConstraintSize();
495 this->lowerBoundsTerminal_.segment(count, constraintSize) = constraint->getLowerBound();
496 this->upperBoundsTerminal_.segment(count, constraintSize) = constraint->getUpperBound();
497 count += constraintSize;
500 size_t stateIndex = 0;
501 size_t inputIndex = 0;
503 for (
int i = 0;
i < sparsityRows.rows(); ++
i)
505 if (sparsityCols(
i) <
static_cast<int>(STATE_DIM))
507 sparsityStateTerminalRows_(stateIndex) = sparsityRows(
i);
508 sparsityStateTerminalCols_(stateIndex) = sparsityCols(
i);
513 sparsityInputTerminalRows_(inputIndex) = sparsityRows(
i);
514 sparsityInputTerminalCols_(inputIndex) = sparsityCols(
i) -
static_cast<int>(STATE_DIM);
524 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
525 void ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::update()
527 stateControlD_ << this->x_, this->u_;
531 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
532 Eigen::Matrix<typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::CGScalar, Eigen::Dynamic, 1>
533 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::evaluateIntermediateCodegen(
534 const Eigen::Matrix<CGScalar, STATE_DIM + CONTROL_DIM, 1>& stateinput)
537 Eigen::Matrix<CGScalar, Eigen::Dynamic, 1> gLocal;
539 for (
auto constraint : constraintsIntermediate_)
541 size_t constraint_dim = constraint->getConstraintSize();
542 gLocal.conservativeResize(count + constraint_dim);
543 gLocal.segment(count, constraint_dim) = constraint->evaluateCppadCg(
544 stateinput.segment(0, STATE_DIM), stateinput.segment(STATE_DIM, CONTROL_DIM), CGScalar(0.0));
545 count += constraint_dim;
551 template <
size_t STATE_DIM,
size_t CONTROL_DIM,
typename SCALAR>
552 Eigen::Matrix<typename ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::CGScalar, Eigen::Dynamic, 1>
553 ConstraintContainerAD<STATE_DIM, CONTROL_DIM, SCALAR>::evaluateTerminalCodegen(
554 const Eigen::Matrix<CGScalar, STATE_DIM + CONTROL_DIM, 1>& stateinput)
557 Eigen::Matrix<CGScalar, Eigen::Dynamic, 1> gLocal;
559 for (
auto constraint : constraintsTerminal_)
561 size_t constraint_dim = constraint->getConstraintSize();
562 gLocal.conservativeResize(count + constraint_dim);
563 gLocal.segment(count, constraint_dim) = constraint->evaluateCppadCg(
564 stateinput.segment(0, STATE_DIM), stateinput.segment(STATE_DIM, CONTROL_DIM), CGScalar(0.0));
565 count += constraint_dim;
bool createSparseJacobian_
ct::core::ControlVector< control_dim > u
Definition: LoadFromFileTest.cpp:21
clear all close all load ct GNMSLog0 mat reformat t
Definition: gnmsPlot.m:6
CppAD::AD< CppAD::cg::CG< double > > SCALAR
for i
Definition: mpc_unittest_plotting.m:14
ct::core::DerivativesCppadCG< state_dim, control_dim > JacCG
ct::core::StateVector< state_dim > x
Definition: LoadFromFileTest.cpp:20
Eigen::Matrix< double, nStates, 1 > state_vector_t
const bool verbose
Definition: ConstraintComparison.h:18