🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ast::NLPProblem类 参考

#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 属性

INLPProblemm_problem
 
NLPInfo m_probInfo
 

详细描述

非线性规划问题与相关函数

成员函数说明

◆ evalConstraint() [1/2]

std::vector< double > ast::NLPProblem::evalConstraint ( const std::vector< double > & variable) const

计算约束

参数
variable设计变量
返回
不等式约束 + 等式约束

◆ evalConstraint() [2/2]

errc_t ast::NLPProblem::evalConstraint ( const std::vector< double > & variable,
std::vector< double > & constraint ) const

计算约束

参数
variable设计变量
constraint不等式约束 + 等式约束
返回

◆ evalFitness() [1/3]

std::vector< double > ast::NLPProblem::evalFitness ( const std::vector< double > & x) const

计算目标函数与约束

参数
x设计变量
返回
目标函数 + 等式约束 + 不等式约束

◆ evalFitness() [2/3]

errc_t ast::NLPProblem::evalFitness ( const std::vector< double > & x,
std::vector< double > & f ) const

计算目标函数与约束

参数
x设计变量
f目标函数 + 等式约束 + 不等式约束
返回
错误码

◆ evalFitness() [3/3]

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
返回

◆ evalGradient()

errc_t ast::NLPProblem::evalGradient ( int numVariable,
const double * variable,
double * grad ) const

计算目标函数的梯度向量

参数
numVariable
variable
返回

◆ evalGradientCD()

errc_t ast::NLPProblem::evalGradientCD ( double ustep,
int ndim,
const double * x,
double * grad ) const

一些实用函数

中心差分求解梯度.

◆ evalJacobi()

errc_t ast::NLPProblem::evalJacobi ( int numVariable,
const double * variable,
int numConstraint,
int nnzJacobi,
double * nzElemjacobi ) const

计算非线性方程的解析(数值)Jacobi矩阵

参数
ndim维度
x_input变量
nzElemjacobijacobi矩阵非零元素

◆ evalNLEJacobiCCSFD()

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]
返回

◆ evalNLENNZJacCCSNan()

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每一列第一个元素的索引
返回

◆ evalNLENNZJacCOONan()

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列索引
返回
false: 用户要求停止

◆ evalNLENNZJacCOOSnJac()

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
返回

◆ evalNLENNZJacNan()

errc_t ast::NLPProblem::evalNLENNZJacNan ( int ndim,
const double * x_initguess,
int m,
int & nnz_jac ) const

计算jacobi矩阵中的非零元素数量

参数
ndim
x_initguess
m
nnz_jac
返回


该类的文档由以下文件生成: