在 Ipopt 的 eval_f 函数中无法访问在 C++ 类中初始化的属性

问题描述 投票:0回答:0

我正在开发一个利用 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 函数中访问它们时,它们似乎是空的。我怀疑可能存在我遗漏的范围界定或初始化问题。

有人可以指导我如何解决这个问题吗?任何建议或见解将不胜感激。

提前谢谢你!

c++ optimization initialization scoping ipopt
© www.soinside.com 2019 - 2024. All rights reserved.