跳转到主要内容

如何getVar兆乏的年代?

回答

评论

1评论

  • JaromiłNajman
    Gurobi员工Gurobi员工

    嗨Viviana,

    getVarByName方法只返回一个变量的变量名完全符合模型变量。这意味着它是不够的一个变量只有一个字符串\ (\ texttt {val1的}\)。

    当您创建的变量时,您可以看到,变量名通过矩阵的维度变量扩展。

    N = 2
    M = 3
    val1 = m。addMVar (N,磅= 0.0,乌兰巴托=伽马线暴。无穷,vtype =伽马线暴。连续的,name = ' val1 ')
    val2 = m.addMVar ((N, M)磅= 0.0,乌兰巴托=伽马线暴。无穷,vtype =伽马线暴。连续的,name = ' val2 ')
    m.update ()
    打印(val1)
    打印(val2)

    = = = = = = = = = = = = = = = = = = = = = = =
    > <兆乏(2)>
    > ([< gurobi数组。Var val1 [0] >、< gurobi。Var val1 [1] >)
    > <兆乏(2、3)>
    > ([[< gurobi数组。Var val2 (0,0) >, < gurobi。Var val2 [0, 1] >,
    < gurobi。Var val2 (0, 2) >),
    (< gurobi。Var val2 (1,0) >, < gurobi。Var val2 [1] >,
    < gurobi。Var val2 [1, 2] >]])

    获得所有这些变量的名字你现在还必须提供的指标各自的变量名称的一部分

    res1 = {}
    它= {}
    因为我在范围(N):
    res1[我]= m.getVarByName (val1 (% d)的%(我)方式
    j的范围(米):
    它(i, j) = m.getVarByName (“val2 [% d % d] ' % (i, j))方式

    如果你还有访问\ \ texttt {val1, val2} \)对象优化完成后,你可以使用这些兆乏对象访问的值。

    m.optimize ()
    如果m。SolCount > 0: #避免属性错误如果没有可行点
    res1 = val1.X
    它= val2.X

    从一个方面说明,您使用\ (\ texttt {m} \)为模型对象和作为一个索引添加兆乏时

    val2 =.addMVar (n,),…)

    这可能导致任何类型的问题,应该被避免。

    请注意,有一个你pcoming研讨会在矩阵友好的API我们将讨论所有改变和改善矩阵API。

    最好的问候,
    Jaromił

    0

登录留下你的评论。