本文整理汇总了C++中ExportStatementBlock::exportCode方法的典型用法代码示例。如果您正苦于以下问题:C++ ExportStatementBlock::exportCode方法的具体用法?C++ ExportStatementBlock::exportCode怎么用?C++ ExportStatementBlock::exportCode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ExportStatementBlock
的用法示例。
在下文中一共展示了ExportStatementBlock::exportCode方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: exportAcadoHeader
//.........这里部分代码省略.........
get(CG_COMPUTE_COVARIANCE_MATRIX, covCalc);
int linSolver;
get(LINEAR_ALGEBRA_SOLVER, linSolver);
bool useComplexArithmetic = false;
if( (LinearAlgebraSolver)linSolver == SIMPLIFIED_IRK_NEWTON ) useComplexArithmetic = true;
string fileName;
fileName = _dirName + "/" + _fileName;
map<string, pair<string, string> > options;
options[ modulePrefix + "_N" ] = make_pair(toString( ocp.getN() ), "Number of control/estimation intervals.");
options[ modulePrefix + "_NX" ] = make_pair(toString( ocp.getNX() ), "Number of differential variables.");
options[ modulePrefix + "_NXD" ] = make_pair(toString( ocp.getNDX() ), "Number of differential derivative variables.");
options[ modulePrefix + "_NXA" ] = make_pair(toString( ocp.getNXA() ), "Number of algebraic variables.");
options[ modulePrefix + "_NU" ] = make_pair(toString( ocp.getNU() ), "Number of control variables.");
options[ modulePrefix + "_NOD" ] = make_pair(toString( ocp.getNOD() ), "Number of online data values.");
options[ modulePrefix + "_NY" ] = make_pair(toString( solver->getNY() ), "Number of references/measurements per node on the first N nodes.");
options[ modulePrefix + "_NYN" ] = make_pair(toString( solver->getNYN() ), "Number of references/measurements on the last (N + 1)st node.");
Grid integrationGrid;
ocp.getIntegrationGrid(integrationGrid);
uint NIS = integrationGrid.getNumIntervals();
if( ocp.hasEquidistantControlGrid() ) options[ modulePrefix + "_RK_NIS" ] = make_pair(toString( NIS ), "Number of integration steps per shooting interval.");
RungeKuttaExport *rk_integrator = static_cast<RungeKuttaExport *>(integrator.get()); // Note: As long as only Runge-Kutta type methods are exported.
options[ modulePrefix + "_RK_NSTAGES" ] = make_pair(toString( rk_integrator->getNumStages() ), "Number of Runge-Kutta stages per integration step.");
options[ modulePrefix + "_INITIAL_STATE_FIXED" ] =
make_pair(toString( fixInitialState ), "Indicator for fixed initial state.");
options[ modulePrefix + "_WEIGHTING_MATRICES_TYPE" ] =
make_pair(toString( (unsigned)solver->weightingMatricesType() ), "Indicator for type of fixed weighting matrices.");
options[ modulePrefix + "_USE_LINEAR_TERMS" ] =
make_pair(toString( (unsigned)solver->usingLinearTerms() ), "Indicator for usage of non-hard-coded linear terms in the objective.");
options[ modulePrefix + "_HARDCODED_CONSTRAINT_VALUES" ] =
make_pair(toString( hardcodeConstraintValues ), "Flag indicating whether constraint values are hard-coded or not.");
options[ modulePrefix + "_USE_ARRIVAL_COST" ] =
make_pair(toString( useAC ), "Providing interface for arrival cost.");
options[ modulePrefix + "_COMPUTE_COVARIANCE_MATRIX" ] =
make_pair(toString( covCalc ), "Compute covariance matrix of the last state estimate.");
options[ modulePrefix + "_QP_NV" ] =
make_pair(toString( solver->getNumQPvars() ), "Total number of QP optimization variables.");
int qpSolution;
get(SPARSE_QP_SOLUTION, qpSolution);
if( (QPSolverName)qpSolver == QP_FORCES && (SparseQPsolutionMethods)qpSolution != BLOCK_CONDENSING_N2 ) {
ExportGaussNewtonForces *blockSolver = static_cast<ExportGaussNewtonForces*>(solver.get());
options[ modulePrefix + "_QP_NLB" ] =
make_pair(toString( blockSolver->getNumLowerBounds() ), "Total number of QP lower bound values.");
options[ modulePrefix + "_QP_NUB" ] =
make_pair(toString( blockSolver->getNumUpperBounds() ), "Total number of QP upper bound values.");
}
// QPDunes block based condensing:
if ( (SparseQPsolutionMethods)qpSolution == BLOCK_CONDENSING_N2 ) {
ExportGaussNewtonBlockCN2 *blockSolver = static_cast<ExportGaussNewtonBlockCN2*>(solver.get());
options[ modulePrefix + "_BLOCK_CONDENSING" ] =
make_pair(toString( 1 ), "User defined block based condensing.");
options[ modulePrefix + "_QP_NCA" ] =
make_pair(toString( blockSolver->getNumStateBoundsPerBlock()*blockSolver->getNumberOfBlocks() ), "Total number of QP affine constraints.");
}
else {
options[ modulePrefix + "_BLOCK_CONDENSING" ] =
make_pair(toString( 0 ), "User defined block based condensing.");
}
//
// ACADO variables and workspace
//
ExportStatementBlock variablesBlock;
stringstream variables;
if (collectDataDeclarations(variablesBlock, ACADO_VARIABLES) != SUCCESSFUL_RETURN)
return ACADOERROR( RET_UNABLE_TO_EXPORT_CODE );
variablesBlock.exportCode(variables, _realString, _intString, _precision);
ExportStatementBlock workspaceBlock;
stringstream workspace;
if (collectDataDeclarations(workspaceBlock, ACADO_WORKSPACE) != SUCCESSFUL_RETURN)
return ACADOERROR( RET_UNABLE_TO_EXPORT_CODE );
workspaceBlock.exportCode(workspace, _realString, _intString, _precision);
ExportStatementBlock functionsBlock;
stringstream functions;
if (collectFunctionDeclarations( functionsBlock ) != SUCCESSFUL_RETURN)
return ACADOERROR( RET_UNABLE_TO_EXPORT_CODE );
functionsBlock.exportCode(functions, _realString);
ExportCommonHeader ech(fileName, "", _realString, _intString, _precision);
ech.configure( moduleName, modulePrefix, useSinglePrecision, useComplexArithmetic, (QPSolverName)qpSolver,
options, variables.str(), workspace.str(), functions.str());
return ech.exportCode();
}
示例2: exportAcadoHeader
returnValue SIMexport::exportAcadoHeader( const std::string& _dirName,
const std::string& _fileName,
const std::string& _realString,
const std::string& _intString,
int _precision
) const
{
string moduleName;
get(CG_MODULE_NAME, moduleName);
int qpSolver;
get(QP_SOLVER, qpSolver);
int useSinglePrecision;
get(USE_SINGLE_PRECISION, useSinglePrecision);
string fileName;
fileName = _dirName + "/" + _fileName;
map<string, pair<string, string> > options;
DVector nMeasV = getNumMeas();
DVector nOutV = getDimOutputs();
options[ "ACADO_N" ] = make_pair(toString( getN() ), "Number of control/estimation intervals.");
options[ "ACADO_NX" ] = make_pair(toString( getNX() ), "Number of differential variables.");
options[ "ACADO_NXD" ] = make_pair(toString( getNDX() ), "Number of differential derivative variables.");
options[ "ACADO_NXA" ] = make_pair(toString( getNXA() ), "Number of algebraic variables.");
options[ "ACADO_NU" ] = make_pair(toString( getNU() ), "Number of control variables.");
options[ "ACADO_NOD" ] = make_pair(toString( getNOD() ), "Number of online data values.");
options[ "ACADO_NUMOUT" ] = make_pair(toString( nOutV.getDim() ), "Number of output functions.");
if( !nMeasV.isEmpty() && !nOutV.isEmpty() ) {
std::ostringstream acado_nout;
ExportVariable( "ACADO_NOUT",nOutV,STATIC_CONST_INT ).exportDataDeclaration(acado_nout);
std::ostringstream acado_nmeas;
ExportVariable( "ACADO_NMEAS",nMeasV,STATIC_CONST_INT ).exportDataDeclaration(acado_nmeas);
options[ "ACADO_OUTPUTS_DEFINED" ] = make_pair("\n" + acado_nout.str() + acado_nmeas.str(), "Dimension and measurements of the output functions per shooting interval.");
}
//
// ACADO variables and workspace
//
ExportStatementBlock variablesBlock;
stringstream variables;
if (collectDataDeclarations(variablesBlock, ACADO_VARIABLES) != SUCCESSFUL_RETURN)
return ACADOERROR( RET_UNABLE_TO_EXPORT_CODE );
variablesBlock.exportCode(variables, _realString, _intString, _precision);
ExportStatementBlock workspaceBlock;
stringstream workspace;
if (collectDataDeclarations(workspaceBlock, ACADO_WORKSPACE) != SUCCESSFUL_RETURN)
return ACADOERROR( RET_UNABLE_TO_EXPORT_CODE );
workspaceBlock.exportCode(workspace, _realString, _intString, _precision);
ExportStatementBlock functionsBlock;
stringstream functions;
if (collectFunctionDeclarations( functionsBlock ) != SUCCESSFUL_RETURN)
return ACADOERROR( RET_UNABLE_TO_EXPORT_CODE );
functionsBlock.exportCode(functions, _realString);
ExportCommonHeader ech(fileName, "", _realString, _intString, _precision);
ech.configure( moduleName, useSinglePrecision, false, (QPSolverName)qpSolver,
options, variables.str(), workspace.str(), functions.str());
return ech.exportCode();
}