34 int numVariable_{ 0 };
35 int numConstraintEq_{ 0 };
36 int numConstraintIneq_{ 0 };
37 int numObjective_{ 0 };
40 int getNumConstraint()
const
42 return getNumConstraintEq() + getNumConstraintIneq();
44 int getNumObjConstr()
const
46 return getNumObjective() + getNumConstraint();
48 int getNumVariable()
const
52 int getNumObjective()
const
56 int getNumConstraintEq()
const
58 return numConstraintEq_;
60 int getNumConstraintIneq()
const
62 return numConstraintIneq_;
65 int& numVariable(){
return numVariable_;}
66 int& numConstraintEq(){
return numConstraintEq_;}
67 int& numConstraintIneq(){
return numConstraintIneq_;}
68 int& numObjective(){
return numObjective_;}
75 std::vector<int> idxVariable_;
76 std::vector<int> idxConstraint_;
83 double* lower_{
nullptr };
84 double* upper_{
nullptr };
86 size_t size()
const {
return size_; }
87 size_t& size(){
return size_;}
88 double* lower(){
return lower_;}
89 double* upper(){
return upper_;}
95 double* data_{
nullptr };
98 double* data()
const {
return data_;}
99 size_t& size(){
return size_;}
100 size_t size()
const {
return size_; }
101 double& operator[](
size_t index) {
return data_[index];}
102 double operator[](
size_t index)
const {
return data_[index];}
114 NLPVector& constraintEq(){
return constraintEq_;}
123 const NLPVector& variable()
const {
return variable_;}
133 NLPVector& objective(){
return objective_;}
134 NLPVector& constraintEq(){
return constraintEq_;}
135 NLPVector& constraintIneq(){
return constraintIneq_;}
163 virtual errc_t
evalJacobi(
int numVariable,
const double* variable,
int numConstraint,
int nnzJacobi,
double* nzElemjacobi)
const = 0;
170 virtual errc_t
evalGradient(
int numVariable,
const double* variable,
double* grad)
const = 0;
virtual errc_t getBounds(NLPBounds &bounds) const =0
获取问题的设计变量与约束的上下界
virtual errc_t getJacInfo(NLPJacInfo &info) const =0
获取问题的雅可比矩阵信息
virtual ~INLPProblem()=default
虚析构函数
virtual errc_t getInitialGuess(int numVariable, double *variable) const =0
获取初始猜测值(迭代初值/迭代起始点)
virtual errc_t evalJacobi(int numVariable, const double *variable, int numConstraint, int nnzJacobi, double *nzElemjacobi) const =0
计算非线性方程的解析(数值)Jacobi矩阵
virtual errc_t getInfo(NLPInfo &info) const =0
获取问题的维度信息等
virtual errc_t evalGradient(int numVariable, const double *variable, double *grad) const =0
计算目标函数梯度
virtual errc_t evalFitness(const NLPInput &input, NLPOutput &output) const =0
计算目标函数和约束
非线性规划问题的上下界值
定义 INLPProblem.hpp:107
非线性规划问题的维度信息
定义 INLPProblem.hpp:33
非线性规划问题输出
定义 INLPProblem.hpp:128
非线性规划问题的向量上下界
定义 INLPProblem.hpp:81
非线性规划问题的向量值
定义 INLPProblem.hpp:94