gurobi环境、模型和c++头文件的问题
你好,我遇到一个问题GRBModel c++头文件。让我使用TSP来说明问题。
我写在主TSP模型。cpp文件。
和CutGeneration截平面结构。h头文件。
找到一个切平面,我需要解决的优化问题Gurobi(我知道TSP我们可以编写算法代替Gurobi模型,但我的问题真的需要Gurobi)。
避免阅读gurobi许可太多次,我试着从主要使用相同的gurobi环境。cpp文件来创建模型。
但在这种情况下我需要访问从主GRBEnv变量。cpp文件,所以我尝试先声明一个gurobi模型没有设置环境。然后在struc定义一个initilization函数。然后通过GRBEnv struc通过initilization函数。
但错误发生在附图。我不是一个专家的c++……,所以你能帮我吗?
因为在我的理解,我可以声明一个GurobiModel(本质上是一个类对象),然后构造细节(使用通过GRBEnv)。我的方法有什么问题吗?
-
你的代码是什么暗中做的是创建一个“模型”对象使用默认构造函数。然后,要创建另一个GRBModel对象传递“env”和分配使用赋值运算符“=”现有的“模型”。但GRBModel对象的赋值运算符是没有实现(Gurobi不支持此操作有充分的理由)。
你需要做的是使用指针。声明你的“模型”变量指向GRBModel对象的指针,也就是,
GRBModel *模型;
然后,在你的“印锑”功能,使用“新”运算符:
模型= new GRBModel (env);
最后,您需要确保您自毁“模型”指针再次使用“删除”操作符,当你不使用它了。
但可能会有一个更简单的解决方案。如果你需要解决Gurobi模型内切分离程序,您可以使用局部变量。是这样的:
空白separatecuts (GRBEnv env)
{
GRBModel模型= GRBModel (env);
…使用模型……
}我最后一次写c++已经很长一段时间以前,对我来说,但我仍然希望我说的话是正确的。
问候,
托拜厄斯
0 -
谢谢!现在一些小实例的代码能够工作。
只有一个小问题. .当excuted下面的代码时,
模型= new GRBModel (env);
每次系统分配一些新位置的指针模型之前,但我们不知道那个位置存储(我们动态地分配和删除模型)。
安全只是使用新的位置或者我们应该清楚一切最初存储在新的位置?
我没有找到任何gurobi功能,清除在某些变量和约束GRBModel…我应该做什么?
0
请登录留下你的评论。
评论
2的评论