You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CPLEX的execute块中实现含双层求和的公式

在CPLEX Execute块中实现双层嵌套求和的方法

在CPLEX的execute块里,双层嵌套求和无需拆分,直接通过嵌套循环遍历对应集合即可同步完成计算,以下是具体实现方案:

基础实现示例

假设你已在OPL中定义了外层求和集合I、内层求和集合J,以及涉及的决策变量/参数(比如x[I][J]),代码如下:

// 先定义集合与变量(示例)
{int} I = {1,2,3};
{int} J = {1,2};
dvar float x[I][J];

execute {
  var denominator = 0;
  // 外层循环遍历集合I的每个元素
  for(var i in I) {
    // 内层循环遍历集合J的每个元素
    for(var j in J) {
      // 替换为你公式中对应项的计算逻辑,比如x[i][j]或其他表达式
      denominator += x[i][j];
    }
  }
  // 验证计算结果
  writeln("分母计算值:", denominator);
}

带条件的嵌套求和

如果求和仅针对满足特定条件的索引对(比如i≠j),只需在循环内添加判断逻辑:

execute {
  var denominator = 0;
  for(var i in I) {
    for(var j in J) {
      if(i != j) { // 自定义条件
        denominator += x[i][j];
      }
    }
  }
}

注意事项

  • 若涉及的是参数而非决策变量,逻辑完全一致,直接调用参数值即可(比如param a[I][J];就用a[i][j]);
  • 循环顺序需与公式中的求和层级对应(外层对应第一个求和符号,内层对应第二个)。

内容的提问来源于stack exchange,提问作者user23351039

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 17:02:39