GRBLinExpr
Gurobi线性表达式对象。线性表达式由一个常数项,加上一个捕获的coefficient-variable双线性项列表。线性表达式是用来构建约束。他们临时对象,通常短寿命。
的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(使用)或组AddTerms或MultAdd)。方面也可以从一个表达式,使用删除。
鉴于所有这些选项用于构建表达式,您可能想知道它是最快的。对于小表情,你不需要担心它们之间的性能差异。如果您正在构建很多非常大的表达式(100年代的术语),最有效的方法将一个调用AddTerms。使用AddTerm。添加个人条款是效率比较低,使用重载arithemetic运营商是最有效的选择。
将一个线性约束添加到你的模型,你通常构建一个或两个线性表达式对象(expr1
和expr2
),然后使用一个重载的比较运算符来构建一个理由GRBModel.AddConstr。给几个例子:
个人在一个线性表达式可以查询使用GetVar和GetCoeff方法。常数可以查询使用常数财产。您可以查询条件表达式中使用的数量大小财产。
注意,一个线性表达式可以包含多个项涉及相同的变量。这些重复的条件合并创建约束时的表情,但是他们可能是可见的,当检查个人条件表达式(例如,当使用GetVar)。
部分