GRBLinExpr


GRBLinExpr

古罗比线性表达式对象。一个线性表达式包含一个常数项,加上一个捕获线性项的系数变量对列表。线性表达式用于构建约束。它们是短暂的对象,通常寿命很短。

GRBLinExpr类是抽象基类的子类GRBExpr

在支持操作符重载的. net语言中,通常使用重载的操作符构建线性表达式。例如,如果x是一个GRBVar对象,然后x + 1是一个GRBLinExpr对象。表达式可以由常量(例如,expr = 0)、变量(例如,Expr = 1 * x + 2 * y),或从其他表达(例如,Expr2 = 2 * expr1 + x,或Expr3 = expr1 + 2 * expr2).你也可以修改现有的表达式(例如,expr + = x,或expr2 - = expr1).

构建表达式的另一种选择是从空表达式开始(使用GRBLinExpr构造函数),然后添加术语。术语可以单独添加(使用AddTerm)或分组(使用AddTermsMultAdd).还可以使用删除

请注意,构建表达式的成本在很大程度上取决于您使用的方法。虽然在构建小表达式时,你通常可以忽略这个问题,但在构建大表达式时,你应该注意一些效率问题:

  • 你应该避免使用Expr = Expr + xexpr + = x在一个循环中。它会导致运行时在表达式的项数上是二次的。
  • 使用AddTerm在循环中是相当有效的,但它不是最有效的方法。
  • 构建大型表达式的最有效方法是对AddTerms

方法可以查询线性表达式中的单个项GetVarGetCoeff方法。可以使用常数财产。方法可以查询表达式中的项数大小财产。

请注意,一个线性表达式可能包含涉及同一变量的多个项。当从一个表达式创建一个约束时,这些重复的术语会被合并,但是当在表达式中检查单个的术语时(例如,当使用GetVar).



部分