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(使用)或组AddTermsMultAdd)。方面也可以从一个表达式,使用删除

鉴于所有这些选项用于构建表达式,您可能想知道它是最快的。对于小表情,你不需要担心它们之间的性能差异。如果您正在构建很多非常大的表达式(100年代的术语),最有效的方法将一个调用AddTerms。使用AddTerm。添加个人条款是效率比较低,使用重载arithemetic运营商是最有效的选择。

将一个线性约束添加到你的模型,你通常构建一个或两个线性表达式对象(expr1expr2),然后使用一个重载的比较运算符来构建一个理由GRBModel.AddConstr。给几个例子:

< span > < / span > \ displaystyle \美元开始{数组}{l} \ mathrm{模型。AddConstr} (expr1 < = expr2) \ \……nstr} (expr1 = = 1) \ \ mathrm{模型。AddConstr} (2 * x + 3 * y < = 4) \ \{数组}< span > < / span >美元
一旦你添加一个约束模型,后续更改您用于构建约束表达式对象不会改变约束(可以使用GRBModel.ChgCoeff)。

个人在一个线性表达式可以查询使用GetVarGetCoeff方法。常数可以查询使用常数财产。您可以查询条件表达式中使用的数量大小财产。

注意,一个线性表达式可以包含多个项涉及相同的变量。这些重复的条件合并创建约束时的表情,但是他们可能是可见的,当检查个人条件表达式(例如,当使用GetVar)。



部分

尝试Gurobi免费

选择最适合你的评估许可,开始使用我们的专家团队提供技术指导和支持。

评估许可
得到一个免费的,功能齐全的许可证的Gurobi性能优化经验,支持,基准测试和调优服务我们提供我们产品的一部分。
学术许可
Gurobi支持教学和学术机构内使用的优化。我们提供免费的,功能齐全的Gurobi用于类的副本,并进行研究。
云试验

申请免费试用时间,所以你可以看到一个模型可以解决如何快速而方便地在云上。

<\/i>","library":"fa-solid"}}" data-widget_type="nav-menu.default">

Gurobi通讯