【问题标题】:How i can get sum of variables in choco solver我如何在 choco 求解器中获得变量总和
【发布时间】:2020-03-28 20:34:47
【问题描述】:

我有

IntVar[] orArea = new IntVar[N]; 
IntVar[] orCount = new IntVar[N]; 
IntVar[] orRows = new IntVar[N]; 
IntVar total_trim = model.intVar("trim", 0, 1000);
for (int i = 0; i < N; i++) {
    orRows[i] = model.intVar("or_" + i + "_rows",0, 5);
    orCount[i] = model.intVar("or_" + i + "_count", 0, O[i][2]);
    orArea[i] = model.intScaleView(orCount[i],O[i][0] * O[i][1]);
}

我想得到 IntVar 的面积总和

类似的东西:

IntVar totalAreas = orArea.sum();

并继续使用它

IntVar trimToOrder = total_trim.mul(1000000).div(totalAreas).intVar();
model.setObjective(Model.MINIMIZE, trimToOrder);

【问题讨论】:

    标签: java solver choco


    【解决方案1】:

    你可以像这样声明一个总和约束:

    IntVar totalAreas = model.intVar("totalAreas", 0, Stream.of(orArea).mapToInt(IntVar::getUB).sum());
    model.sum(orArea, "=", totalAreas).post();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多