【问题标题】:How to get value of constraint after optimize model using Gurobi使用 Gurobi 优化模型后如何获取约束值
【发布时间】:2017-09-26 07:44:45
【问题描述】:

如果优化,我想知道模型后每个索引的约束sumPj 的值。这是约束:

for (int m = 0; m < M; m++)                
{
    for (int i = 0; i < C; i++)
    {
       GRBLinExpr sumPj = 0;
        foreach (int p in VehicleList[m])
        {
            sumPj.AddTerm(a[i].Column[p], z[p]);
        }
        master.AddConstr(sumPj <= y[m], "tj" + m + "," + i);
    }
}

我使用master.GetConstrByName("tj" + m + "," + i).Get(GRB.DoubleAttr.Slack),但显示错误值。

【问题讨论】:

  • y[m]-slack 呢?
  • @ErwinKalvelagen 不,它不起作用

标签: c# linear-programming gurobi


【解决方案1】:

我自己找到的。首先,我应该将 sumPj 作为一个多维数组。

GRBLinExpr[,] sumPj = new GRBLinExpr [M,C];
for (int m = 0; m < M; m++)                       
{

for (int i = 0; i < C; i++)
    {
        sumPj[m,i] = 0;
        foreach (int p in VehicleList[m])
        {
            sumPj[m,i].AddTerm(a[i].Column[p], z[p]);
        }
        master.AddConstr(sumPj[m,i] <= y[m], "tj" + m + "," + i);
    }
}

然后我添加优化后的值

for (int m = 0; m < M; ++m)
    {
      for (int i = 0; i < C; i++)
        {
          Console.WriteLine("C " + m + "," + (i + 1) + " " + sumPj[m,i].Value);
          Constraint[m, i] = sumPj[m,i].Value;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多