Gurobi——GRBModel

GRBModel

  Gurobi 模型对象。 常用的方法包括addVar(给模型增加一个新的决策变量)、addConstr(给模型增加一个新的约束)、optimize(优化当前模型)、get(检索一个属性的值)。

GRBModel GRBModel(const GRBEnv& env)

模型构造函数。

参数 详解
env 新模型的环境。
返回值 新模型对象。 模型最初不包含变量或约束。
GRBModel GRBModel(const GRBEnv& env,
 	  			  const string& filename)

  从文件中读取模型。 请注意,文件的类型编码在文件名后缀中。 有效的后缀是 .mps、.rew、.lp、.rlp、.dua、.dlp、.ilp 或 .opb。 这些文件可以被压缩,因此可以接受附加的 .zip、.gz、.bz2 或 .7z 后缀。

参数 详解
env 新模型的环境。
modelname 包含模型的文件的名称。
返回值 新模型对象。
GRBModel GRBModel(const GRBModel& model)

创建现有模型的副本。 请注意,由于 Gurobi 中的惰性更新方法,您必须在复制之前调用 update 。

参数 详解
model: 需要被复制的模型。
返回值 新模型对象。 模型是输入模型的克隆。

GRBModel::addConstr()

向模型添加单个线性约束。 多个签名(signatures)可用。

  •   GRBConstr 	addConstr(const GRBLinExpr& lhsExpr,
      			  	  	  char sense,
      			  	  	  const GRBLinExpr& rhsExpr,
      			  	  	  string name="" )
    

    向模型添加单个线性约束。

    参数 详解
    lhsExpr 新线性约束的左侧表达式。
    sense 感知新的线性约束(GRB_LESS_EQUAL、GRB_EQUAL 或 GRB_GREATER_EQUAL)。
    rhsExpr 新线性约束的右侧表达式。
    names(可选) 新约束的名称。
    返回值 新的约束对象。
  •   GRBConstr addConstr(const GRBLinExpr&	lhsExpr,
      			  	  	char 	sense,
      			  	  	GRBVar 	rhsVar,
      			  	  	string 	name="" )
    

    向模型添加单个线性约束。

    参数 详解
    lhsExpr 新线性约束的左侧表达式。
    sense 感知新的线性约束(GRB_LESS_EQUAL、GRB_EQUAL 或 GRB_GREATER_EQUAL)。
    rhsVar 新线性约束的右侧变量。
    name(可选) 新约束的名称。
    返回值 新的约束对象。
  •   GRBConstr addConstr (const GRBLinExpr& 	lhsExpr,
      				  	   char 	sense,
      				  	   double 	rhsVal,
      				  	   string 	name="")
    

    向模型添加单个线性约束。

    参数 详解
    lhsExpr 新线性约束的左侧表达式。
    sense 感知新的线性约束(GRB_LESS_EQUAL、GRB_EQUAL 或 GRB_GREATER_EQUAL)。
    rhsVal 新线性约束的右侧值。
    name(可选) 新约束的名称。
    返回值 新的约束对象。
  •   GRBConstr addConstr(GRBVar 	lhsVar,
      			  	  	  char 	sense,
      			  	  	  GRBVar 	rhsVar,
      			  	  	  string 	name="" )
    

    向模型添加单个线性约束。

    参数 详解
    lhsVar 新线性约束的左侧变量。
    sense 感知新的线性约束(GRB_LESS_EQUAL、GRB_EQUAL 或 GRB_GREATER_EQUAL)。
    rhsVar 新线性约束的右侧变量。
    name(可选) 新约束的名称。
    返回值 新的约束对象。
  •   GRBConstr addConstr(GRBVar 	lhsVar,
      			  	  	  char 	sense,
      			  	  	  double 	rhsVal,
      			  	  	  string 	name="")
    

    向模型添加单个线性约束。

    参数 详解
    lhsVar 新线性约束的左侧变量。
    sense 感知新的线性约束(GRB_LESS_EQUAL、GRB_EQUAL 或 GRB_GREATER_EQUAL)。
    rhsVal 新线性约束的右侧值。
    name(可选) 新约束的名称。
    返回值 新的约束对象。
  •   GRBConstr addConstr(GRBTempConstr& 	tc,
        	  			  string 	name="")
    

    向模型添加单个线性约束。

    参数 详解
    tc 临时约束对象,使用重载的比较运算符创建。 有关详细信息,请参阅 GRBTempConstr。
    name(可选) 新约束的名称。
    返回值 新的约束对象。

GRBModel::addVar()

向模型添加单个决策变量。
模板1

GRBVar 	addVar (double 	lb,
		  	  	double 	ub,
		  	  	double 	obj,
		  	  	char 	type,
		  	  	string 	name="" )

添加一个变量; 稍后将添加非零条目。

参数 详解
lb 新变量的下限。
ub 新变量的上限。
obj 新变量的客观系数。
type 新变量的变量类型(GRB_CONTINUOUS、GRB_BINARY、GRB_INTEGER、GRB_SEMICONT 或 GRB_SEMIINT)。
names(可选) 新变量的名称。
返回值 新的变量对象。

模板2

GRBVar 	addVar (double 	lb,
		  	  	double 	ub,
		  	  	double 	obj,
		  	  	char 	type,
		  	  	int 	numnz,
		  	  	const GRBConstr* constrs,
		  	  	const double* 	 coeffs,
		  	  	string 	name="" )

添加一个变量,以及相关的非零系数。

参数 详解
lb 新变量的下限。
ub 新变量的上限。
obj 新变量的客观系数。
type 新变量的变量类型(GRB_CONTINUOUS、GRB_BINARY、GRB_INTEGER、GRB_SEMICONT 或 GRB_SEMIINT)。
numnz 这个新变量参与的约束数量。
constrs 变量参与的约束数组。
coeffs 变量参与的每个约束的系数数组。
names(可选) 新变量的名称。
返回值 新的变量对象。

模板3

GRBVar 	addVar (double 	lb,
		  	  	double 	ub,
		  	  	double 	obj,
		  	  	char 	type,
		  	  	const GRBColumn& 	col,
		  	  	string 	name="" )

添加一个变量,以及相关的非零系数。

参数 详解
lb 新变量的下限。
ub 新变量的上限。
obj 新变量的客观系数。
type 新变量的变量类型(GRB_CONTINUOUS、GRB_BINARY、GRB_INTEGER、GRB_SEMICONT 或 GRB_SEMIINT)。
col GRBColumn 对象,用于指定新变量所属的一组约束。
names(可选) 新变量的名称。
返回值 新的变量对象。

GRBModel::addVars()

向模型添加新的决策变量。

模板1

GRBVar*	addVars(int count,	
				char type=GRB_CONTINUOUS)

  向模型添加count个新的决策变量。 所有关联的属性都采用它们的默认值,但变量类型除外,它被指定为参数。

参数 详解
count 需要添加变量的数量
type (可选) 新加变量的类型,可选类型: GRB_CONTINUOUS, GRB_BINARY, GRB_INTEGER, GRB_SEMICONT, or GRB_SEMIINT
返回值 新变量对象的数组。 请注意,结果是堆分配的,并且必须由用户返回到堆中。

模板2

GRBVar* addVars(const double*  lb,
				const double*  ub,
				const double*  obj,
			    const char*  type,
				const string* names,
				int count )

  向模型添加计数新决策变量。 此函数名允许使用数组来保存各种变量属性(例如下限、上限等)。

参数 详解
lb 新变量的下限。 可以为 NULL,在这种情况下,变量的下限为 0.0。
ub 新变量的上限。 可以为 NULL,在这种情况下,变量获得无限的上限。
obj 新变量的客观系数(Objective coefficients)。 可以为 NULL,在这种情况下,变量的客观系数为 0.0。
type 新变量的变量类型(GRB_CONTINUOUS、GRB_BINARY、GRB_INTEGER、GRB_SEMICONT 或 GRB_SEMIINT)。 可以为 NULL,在这种情况下假定变量是连续的。
names 新变量的名称。 可以为 NULL,在这种情况下,所有变量都被赋予默认名称。
count 要添加的变量数。
返回值 新变量对象的数组。 请注意,结果是堆分配的,并且必须由用户返回到堆中。

模板3

GRBVar* addVars(const double*  lb,
  	  			const double*  ub,
  	  			const double*  obj,
  	  			const char*    type,
  	  			const string*  names,
  	  			const GRBColumn* cols,
  	  			int   count )

  向模型添加新的决策变量。 此函数允许使用 GRBColumn 对象数组指定每个新变量所属的一组约束。

参数 详解
lb 新变量的下限。 可以为 NULL,在这种情况下,变量的下限为 0.0。
ub 新变量的上限。 可以为 NULL,在这种情况下,变量获得无限的上限。
obj 新变量的客观系数。 可以为 NULL,在这种情况下,变量的客观系数为 0.0。
type 新变量的变量类型(GRB_CONTINUOUS、GRB_BINARY、GRB_INTEGER、GRB_SEMICONT 或 GRB_SEMIINT)。 可以为 NULL,在这种情况下假定变量是连续的。
names 新变量的名称。 可以为 NULL,在这种情况下,所有变量都被赋予默认名称。
cols GRBColumn 对象,用于指定每个新列所属的一组约束。
count 要添加的变量数。
返回值 新变量对象的数组。 请注意,结果是堆分配的,并且必须由用户返回到堆中。

参考

  1. C++ API Details
  2. GRBModel::addVar()
  3. GRBModel::addVars()

猜你喜欢

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