Gurobi——GRBLinExpr

GRBLinExpr

  Gurobi 线性表达式对象。 一个线性表达式由一个常数项和一个捕获线性项的系数变量对列表组成。 线性表达式用于构建约束。 它们是通常寿命较短的临时对象。

  GRBLinExpr 类是抽象基类GRBExpr 的子类。

  您通常使用重载运算符构建线性表达式。例如,如果 x 是 GRBVar 对象,则 x + 1 是 GRBLinExpr 对象。表达式可以由常量(例如 expr = 0)、变量(例如 expr = 1 * x + 2 * y)或其他表达式(例如 expr2 = 2 * expr1 + x 或 expr3 = expr1 + 2 * expr2)。您还可以修改现有表达式(例如 expr += x 或 expr2 -= expr1)。

  构建表达式的另一个选项是使用 addTerms 方法,它一次添加一组新术语。也可以使用 remove 从表达式中删除术语。

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

  • 您应该避免在循环中使用 expr = expr + x。这将导致表达式中的项数呈二次方的运行时。
  • 使用 expr += x(或 expr -= x)比 expr = expr + x 更有效。通过循环 += 语句构建大型表达式相当有效,但它不是最有效的方法。
  • 构建大型表达式的最有效方法是对 addTerms 进行一次调用。

  要将线性约束添加到您的模型,您通常会构建一个或两个线性表达式对象(expr1 和 expr2),然后使用重载的比较运算符来构建 GRBModel::addConstr 的参数。举几个例子:
在这里插入图片描述
  向模型添加约束后,对用于构建约束的表达式对象的后续更改将不会更改约束(您将为此使用 GRBModel::chgCoeff)。

  可以使用 getVar、getCoeff 和 getConstant 方法查询线性表达式中的各个项。 您可以使用 size 方法查询表达式中的项数。

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

GRBLinExpr()

线性表达式构造函数。 创建一个常量表达式或具有一个术语的表达式。

GRBLinExpr 	GRBLinExpr (double 	constant=0.0 )

创建一个常数线性表达式。

参数 详解
constant (optional) 表达式的常量值。
返回值 一个常量表达式对象。
GRBLinExpr 	GRBLinExpr(GRBVar 	var, double 	coeff=1.0 )

用一个词创建一个表达式。

参数 详解
var 表达式术语的变量。
coeff(可选) 表达式项的系数。
返回值 包含一个线性项的表达式对象。

GRBLinExpr::addTerms()

将新项添加到线性表达式中。

void addTerms (const double* coeffs,
			   const GRBVar* vars,
			   int count)
参数 详解
coeffs 新术语的系数。
vars 新术语的变量。
count 要添加到表达式的项数。

GRBLinExpr::clear()

将线性表达式设置为 0。

您应该改用重载的 expr = 0。 clear 方法主要是为了与我们对非重载语言的接口保持一致。

void clear()

GRBLinExpr::getConstant()

从线性表达式中检索常数项。

double getConstant ( )

返回值: 来自表达式的常量。

GRBLinExpr::getCoeff()

从表达式的单个项中检索系数。

double getCoeff ( int i )
参数 详解
i 兴趣系数指数。
返回值 表达式中索引 i 处的项的系数。

GRBLinExpr::getValue()

计算当前解的线性表达式的值。

double getValue()

返回值:当前解决方案的表达式的值。

GRBLinExpr::getVar()

从表达式的单个项中检索变量对象。

GRBVar 	getVar ( 	int 	i )
参数 详解
i 感兴趣项的索引。
返回值 表达式中索引 i 处术语的变量。

GRBLinExpr::operator=

设置一个表达式等于另一个表达式。

GRBLinExpr	operator=(const GRBLinExpr&	rhs)
参数 详解
rhs 源表达式。
返回值 新的表达式对象。

GRBLinExpr::operator+

将一个表达式添加到另一个表达式中,生成结果表达式。

GRBLinExpr 	operator+(const GRBLinExpr&	rhs)
参数 详解
rhs 要添加的表达式。
返回值 表达式对象,它等于调用表达式和参数表达式之和。

GRBLinExpr::operator-

从另一个表达式中减去一个表达式,产生一个结果表达式。

GRBLinExpr 	operator-(const GRBLinExpr&	rhs)
参数 详解
rhs 要减去的表达式。
返回值 表达式对象,它等于调用表达式减去参数表达式。

GRBLinExpr::operator+=

在调用表达式中添加一个表达式。

void  operator+=(const GRBLinExpr&  expr)
参数 详解
expr 要添加的表达式。
返回值 无。

GRBLinExpr::operator-=

从调用表达式中减去一个表达式。

void 	operator-= ( 	const GRBLinExpr& 	expr )
参数 详解
expr 要减去的表达式。
返回值 无。

GRBLinExpr::operator*=

将调用表达式乘以一个常数。

void 	operator*=(double 	multiplier)
参数 详解
multiplier 常数乘数。
返回值 无。

GRBLinExpr::remove()

从线性表达式中删除一项。

void remove(int i)

删除存储在表达式索引 i 处的项。

参数 详解
i 要删除的词条的索引。
boolean 	remove(GRBVar var)

从表达式中删除与变量 var 关联的所有项。

参数 详解
var 应删除其项的变量。
返回值 如果变量出现在线性表达式中(并且已被删除),则返回 true。

GRBLinExpr::size()

检索线性表达式中的项数(不包括常数)。

unsigned int size()

返回值:表达式中的项数。

猜你喜欢

转载自blog.csdn.net/qq_16775293/article/details/122715193