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)或分组(使用AddTerms或MultAdd).还可以使用删除.
考虑到所有这些构建表达式的选项,您可能想知道哪一个是最快的。对于小表达式,您不需要担心它们之间的性能差异。如果您正在构建大量非常大的表达式(100个术语),最有效的方法将是单个调用AddTerms.使用AddTerm.添加单个项的效率略低,使用重载算术运算符是效率最低的选项。
要在你的模型中添加线性约束,你通常需要构建一个或两个线性表达式对象(expr1
和expr2
),然后使用重载比较运算符为其构建参数GRBModel。AddConstr.举几个例子:
一旦您向您的模型添加了一个约束,您用来构建约束的表达式对象的后续更改将不会更改约束(您将使用GRBModel。ChgCoeff)。
方法可以查询线性表达式中的单个项GetVar和GetCoeff方法。可以使用常数财产。方法可以查询表达式中的项数大小财产。
请注意,一个线性表达式可能包含涉及同一变量的多个项。当从一个表达式创建一个约束时,这些重复的术语会被合并,但是当在表达式中检查单个的术语时(例如,当使用GetVar).
部分