• 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()。
    具体如下所示:

    1. 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]
    2. rmp_con为gurobi前期定义的一系列(24个R0,...,R24)约束
    3. # (1)列构造器,这里col_coef表示约束中的系数,rmp_con表示对应的约束,二者必须对应(维度一致)
    4. rmp_col = Column(col_coef, rmp_con)
    5. #
    6. # 1.0 R9 1.0 R10 0.0 R11 1.0 R12 0.0 R13 1.0 R14 0.0 R15 1.0 R16 1.0 R17 1.0 R18
    7. # 1.0 R19 0.0 R20 0.0 R21 0.0 R22 0.0 R23 0.0 R24 >
    8. # (2)把新列(新变量,即新产生的pattern)添加到模型中
    9. >>>其实对应的是s = m.addVar(lb,ub,obj,vtype,name,column),其中column表示GRBColumn对象,用于指>>> 定新变量s所属的一组约束
    10. RMP.addVar(lb = 0.0,ub = 1, obj = path_length, vtype = GRB.CONTINUOUS, name = var_name, column = rmp_col)

  • 相关阅读:
    关于处理第三方jar包的maven攻略
    (c语言)整形提升
    隐私计算迎来千亿级风口,一文讲清它的技术理论基础
    如何在Python中实现找到两个未知特征来从其余样本中聚类已知样本?
    状态模式和策略模式对比
    面试题-React(十五):React中的CSS编写方案及推荐
    使用 MAUI 在 Windows 和 Linux 上绘制 PPT 的图表
    理解记忆相关
    IDEA常用代码模板
    Twisted 框架简介
  • 原文地址:https://blog.csdn.net/sinat_41348401/article/details/133467206