gurobi属性:构造目标函数,构造列

1.构造目标函数
(1)一般的写法:
我们常见的目标函数写法通常是定义好式子z=f(x,y,...),然后用m.setObjective(z, GRB。MINIMIZE),这样的定义方式比较普遍。
这也是一般的写法。
(2)但还有一种写法,是在定义变量的时候来构造目标函数。

x = m.addVar (lb=0.0, ub=float(’inf’), obj=0.0, vtype=GRB.CONTINUOUS, name="", column=None )

此处的obj是变量在目标函数中的系数。
如果obj=0,即该变量不出现在目标函数中,也是默认的形式,我们见得最多。
但如果是x=m.addVar(lb=0, float(’inf’), obj=2, vtype=GRB.CONTINUOUS),那么目标函数中会出现z=2x一项。


2.column()
这是约束中的列相关的函数。会在列生成,分支定价算法中用到。
包含:系数和变量两大类。通常是临时变量。
添加的时候用addTerm(),删除的时候用remove()。
具体如下所示:

col_coef = [1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0]
rmp_con为gurobi前期定义的一系列(24个R0,...,R24)约束

# (1)列构造器,这里col_coef表示约束中的系数,rmp_con表示对应的约束,二者必须对应(维度一致)
rmp_col = Column(col_coef, rmp_con)   
# 

# (2)把新列(新变量,即新产生的pattern)添加到模型中
>>>其实对应的是s = m.addVar(lb,ub,obj,vtype,name,column),其中column表示GRBColumn对象,用于指>>>    定新变量s所属的一组约束
RMP.addVar(lb = 0.0,ub = 1, obj = path_length, vtype = GRB.CONTINUOUS, name = var_name, column = rmp_col)

你可能感兴趣的:(学习思考总结,运筹优化理论,备忘边角料,java,前端,javascript)