属性的例子

Gurobi属性处理被设计成正交的,这意味着你只需要使用少量的例程来处理大量的属性。特别是:

  • 的名称和含义的各种Gurobi属性保持不变在不同编程语言api,尽管一些装饰在每个语言是必需的。
  • 给一个属性的类型(双、整数等)和编程语言你想使用它,你只需要确定合适的常规属性类型的语言来查询或修改属性。

考虑到属性,它抓住了上下界一个变量。你指的是在不同Gurobi api这个属性如下:

语言 属性
C GRB_DBL_ATTR_LB
c++ GRB_DoubleAttr_LB
Java GRB.DoubleAttr.LB
net GRB.DoubleAttr.LB,或者只是var.LB
Python GRB.Attr.LB,或者只是var.lb

查询该属性的值为一个单独的变量在不同的api,您将执行以下操作:

语言 属性查询示例
C GRBgetdblattrelement(模型、GRB_DBL_ATTR_LB var_index平均数);
c++ var.get(GRB_DoubleAttr_LB)
Java var.get(GRB.DoubleAttr.LB)
net var.Get(GRB.DoubleAttr.LB),或者只是var.LB
Python var.getAttr(GRB.Attr.LB),或者只是var.lb

api还包括日常查询属性值为多个变量或约束,这是更有效率。

属性是指使用一组枚举类型在c++、Java和。net(一个enum双值属性,一个用于int-valued属性,等等)。在C和Python,上面列出的名字仅仅是常量字符串值。例如,GRB_DBL_ATTR_LB在C层定义为:

#定义GRB_DBL_ATTR_LB“磅”
在C和Python,您可以选择使用字符串直接当调用属性的方法。如果您希望这样做,注意字符,下划线将被忽略。因此,MIN_COEFFMinCoeff是等价的。

很重要的一点需要注意是在属性修改懒惰的时尚。修改并不影响模型,直到下一个请求更新或优化模型(GRBupdatemodelGRBoptimize在C)。

请参考以下部分更详细的例子如何从我们的各种api查询或修改属性:

你也可以浏览我们的例子为了更好地了解如何使用我们的属性界面。



部分