我正在开发一个利用 Ipopt 库进行优化的 C++ 程序。我有一个名为 IpoptOptimizer 的类,它有几个属性:
std::vector<double> startPoint;
ObjectData currentObject;
我使用初始化函数初始化这些属性,我在其中为它们赋值。但是,当我尝试在 eval_f 函数中访问这些属性时,它们似乎是空的。
这是我的代码的简化版本:
// Class definition
class IpoptOptimizer {
std::vector<double> startPoint;
ObjectData currentObject;
public:
void initialize(ObjectData obj) {
// Initialization code...
}
void startOptimization() {
// Optimization code...
}
double eval_f(const std::vector<double>& x) {
// Issue: Properties are empty here (e.g., startPoint, currentObject)
// Code that relies on these properties...
}
};
// Main function
int main() {
IpoptOptimizer optimizer;
// Initialization and optimization code...
}
我已验证属性已在初始化函数中正确初始化并具有有效值。但是,当我尝试在 eval_f 函数中访问它们时,它们似乎是空的。我怀疑可能存在我遗漏的范围界定或初始化问题。
有人可以指导我如何解决这个问题吗?任何建议或见解将不胜感激。
提前谢谢你!