簡體   English   中英

從 CPLEX 遷移到 Gurobi 時替換 getImpl()

[英]a replace for getImpl() when migrating from CPLEX to Gurobi

我有一個使用 CPLEX 作為求解器的 C++ 大程序,我想進行更改以使用 CPLEX 以外的 Gurobi。 在其中一個頭文件中,我有以下代碼:

struct LessIloExtractable
{
  bool operator()( const IloExtractable& a, const IloExtractable& b) const
  {
     return a.getImpl() < b.getImpl();
  }
};

我做了如下一些更改,但不確定如何處理getImpl()

struct LessGRBExtractable
{
  bool operator()( const GRBModel& a, const GRBModel& b) const
  {
     return a.getImpl() < b.getImpl();
  }
};

Gurobi 不是 CPLEX 的克隆,因此我強烈建議您重構代碼而不是試圖強制它工作。 例如,IloExtractable 是 CPLEX 對象的基類,但 Gurobi C++ 對象沒有單個基類。 因此,如果您絕對必須按原樣移植代碼,您可能需要為多個 Gurobi 對象實現 operator() 方法,而不僅僅是 GRBModel。

如果這還沒有阻止您並且您絕對必須實現它,那么最好的選擇是修改和編譯 Gurobi C++ 接口對象,以便您可以公開默認實現中的私有屬性。 例如,對於 GRBModel,您可以公開私有 GRBmodel 屬性(注意大寫)。 您可以在 src/cpp 子目錄中找到 C++ 源代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM