|
🛰️航天仿真算法库 SpaceAST 0.0.1
|
#include <NLPProblem.hpp>
Public 成员函数 | |
| NLPProblem (INLPProblem *problem) | |
| errc_t | getInfo (NLPInfo &info) const |
| errc_t | getJacInfo (NLPJacInfo &info) const |
| errc_t | getBounds (NLPBounds &bounds) const |
| errc_t | evalFitness (const NLPInput &input, NLPOutput &output) const |
| std::vector< double > | evalFitness (const std::vector< double > &x) const |
| errc_t | evalFitness (const std::vector< double > &x, std::vector< double > &f) const |
| errc_t | evalFitness (int numVariable, double *variable, int numObjective, double *objective, int numConstrEq, double *constrEq, int numConstrIneq, double *constrIneq) const |
| errc_t | evalJacobi (int numVariable, const double *variable, int numConstraint, int nnzJacobi, double *nzElemjacobi) const |
| errc_t | evalGradient (int numVariable, const double *variable, double *grad) const |
| errc_t | getInitialGuess (int numVariable, double *variable) const |
| std::vector< double > | evalConstraint (const std::vector< double > &variable) const |
| errc_t | evalConstraint (const std::vector< double > &variable, std::vector< double > &constraint) const |
| errc_t | evalConstraint (int numVariable, const double *variable, int numConstraint, double *contraint) const |
| errc_t | evalObjective (int numVariable, const double *variable, int numObjective, double *objective) const |
| errc_t | evalObjective (int numVariable, const double *variable, double &objective) const |
| errc_t | evalGradientCD (double ustep, int ndim, const double *x, double *grad) const |
| errc_t | evalGradientFD (double ustep, int ndim, const double *x, double *grad) const |
| errc_t | evalGradientBD (double ustep, int ndim, const double *x, double *grad) const |
| errc_t | evalNLEJacobiCD (double ustep, int ndim, const double *x_input, int nConstraint, double *colmaj_jacobi) const |
| errc_t | evalNLEJacobiFD (double ustep, int ndim, const double *x_input, int nConstraint, double *colmaj_jacobi) const |
| errc_t | evalNLEJacobiBD (double ustep, int ndim, const double *x_input, int nConstraint, double *colmaj_jacobi) const |
| errc_t | evalNLEJacobiCCSFD (double ustep, int ndim, const double *xinput, int m, const int *iFuncRow, const int *idxNNZElem, double *jacobi_sparse_value) const |
| errc_t | evalNLENNZJacCCSNan (int ndim, const double *x_initguess, int m, std::vector< int > &iFunRow, std::vector< int > &idxNNZElem) const |
| errc_t | evalNLENNZJacNan (int ndim, const double *x_initguess, int m, int &nnz_jac) const |
| errc_t | evalNLENNZJacCOONan (int ndim, const double *x_initguess, int m, std::vector< int > &iFunRow, std::vector< int > &jVarCol) const |
| errc_t | evalNLENNZJacCOOSnJac (int ndim, const double *x_initguess, int m, std::vector< int > &iFunRow, std::vector< int > &jVarCol) |
Protected 成员函数 | |
| A_DISABLE_COPY (NLPProblem) | |
Protected 属性 | |
| INLPProblem * | m_problem |
| NLPInfo | m_probInfo |
非线性规划问题与相关函数
| std::vector< double > ast::NLPProblem::evalConstraint | ( | const std::vector< double > & | variable | ) | const |
计算约束
| variable | 设计变量 |
| errc_t ast::NLPProblem::evalConstraint | ( | const std::vector< double > & | variable, |
| std::vector< double > & | constraint ) const |
计算约束
| variable | 设计变量 |
| constraint | 不等式约束 + 等式约束 |
| std::vector< double > ast::NLPProblem::evalFitness | ( | const std::vector< double > & | x | ) | const |
计算目标函数与约束
| x | 设计变量 |
| errc_t ast::NLPProblem::evalFitness | ( | const std::vector< double > & | x, |
| std::vector< double > & | f ) const |
计算目标函数与约束
| x | 设计变量 |
| f | 目标函数 + 等式约束 + 不等式约束 |
| errc_t ast::NLPProblem::evalFitness | ( | int | numVariable, |
| double * | variable, | ||
| int | numObjective, | ||
| double * | objective, | ||
| int | numConstrEq, | ||
| double * | constrEq, | ||
| int | numConstrIneq, | ||
| double * | constrIneq ) const |
计算目标函数与约束
| numVariable | |
| variable | |
| numObjective | |
| objective | |
| numConstrEq | |
| constrEq | |
| numConstrIneq | |
| constrIneq |
| errc_t ast::NLPProblem::evalGradient | ( | int | numVariable, |
| const double * | variable, | ||
| double * | grad ) const |
计算目标函数的梯度向量
| numVariable | |
| variable |
| errc_t ast::NLPProblem::evalGradientCD | ( | double | ustep, |
| int | ndim, | ||
| const double * | x, | ||
| double * | grad ) const |
一些实用函数
中心差分求解梯度.
| errc_t ast::NLPProblem::evalJacobi | ( | int | numVariable, |
| const double * | variable, | ||
| int | numConstraint, | ||
| int | nnzJacobi, | ||
| double * | nzElemjacobi ) const |
计算非线性方程的解析(数值)Jacobi矩阵
| ndim | 维度 |
| x_input | 变量 |
| nzElemjacobi | jacobi矩阵非零元素 |
| errc_t ast::NLPProblem::evalNLEJacobiCCSFD | ( | double | ustep, |
| int | ndim, | ||
| const double * | xinput, | ||
| int | m, | ||
| const int * | iFuncRow, | ||
| const int * | idxNNZElem, | ||
| double * | jacobi_sparse_value ) const |
根据输入的CCS稀疏模式计算Jacobi计算
| ndim | |
| ustep | |
| xinput | |
| iFuncRow | |
| idxNNZElem | |
| jacobi_sparse_value | 大小至少为nnz,即不小于idxNNZElem[ndim] |
| errc_t ast::NLPProblem::evalNLENNZJacCCSNan | ( | int | ndim, |
| const double * | x_initguess, | ||
| int | m, | ||
| std::vector< int > & | iFunRow, | ||
| std::vector< int > & | idxNNZElem ) const |
输出CCS格式描述的稀疏模式
| ndim | |
| x_initguess | |
| iFunRow | 每个非零元素的行索引,元素按照列主排序 |
| idxNNZElem | 每一列第一个元素的索引 |
| errc_t ast::NLPProblem::evalNLENNZJacCOONan | ( | int | ndim, |
| const double * | x_initguess, | ||
| int | m, | ||
| std::vector< int > & | iFunRow, | ||
| std::vector< int > & | jVarCol ) const |
利用IEEE-754标准的NaN传播规则计算jacobi矩阵的稀疏模式(编译时浮点模式不能为fast) 需要x的init guess值作为输入,已获得合法解/防止非法输入产生意外的NaN 输出COO格式描述的稀疏模式
| iFunRow | 行索引 |
| jVarCol | 列索引 |
| errc_t ast::NLPProblem::evalNLENNZJacCOOSnJac | ( | int | ndim, |
| const double * | x_initguess, | ||
| int | m, | ||
| std::vector< int > & | iFunRow, | ||
| std::vector< int > & | jVarCol ) |
使用snopt的snjac函数计算Jacobi矩阵的稀疏模式 输出COO格式描述的稀疏模式
| ndim | |
| x_initguess | |
| m | |
| iFunRow | |
| jVarCol |
| errc_t ast::NLPProblem::evalNLENNZJacNan | ( | int | ndim, |
| const double * | x_initguess, | ||
| int | m, | ||
| int & | nnz_jac ) const |
计算jacobi矩阵中的非零元素数量
| ndim | |
| x_initguess | |
| m | |
| nnz_jac |