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

IBM ILOG CPLEX数组长度、求和及两数组sumproduct计算问题

IBM ILOG CPLEX 数组长度、求和、sumproduct实现方案

修正后可直接运行的完整代码

// 先定义数组,无需提前声明索引范围
int s = [11,1,1,1,1,1,1,1,1,1];
// 计算s的长度赋值给a
int a = s.size;
range m = 1..a;

// 计算s的元素总和赋值给b
int b = sum(i in m) s[i];

// 定义二维数组q
int q[m] = [[4,5,0,2],[3,2,1,0],[0,1,4,5],[3,2,0,1],[2,1,3,2],[4,3,2,1],[3,4,2,0],[5,0,3,1],[0,4,3,3],[4,0,4,1]];
// 取q第一行的长度作为第二维长度赋值给c
int c = q[1].size;
range o = 1..c;

// 直接通过推导式计算sumproduct结果赋值给d
int d[o] = [sum(i in m) s[i] * q[i][k] | k in o];

各需求实现说明

  • 数组长度获取:OPL中数组内置size属性可直接返回数组元素个数,一维数组直接调用数组名.size,二维数组取任意一行的size即可得到第二维的长度(需保证所有行长度一致)
  • 数组求和:直接使用CPLEX内置的sum()聚合函数,遍历数组索引范围累加元素即可
  • sumproduct计算:通过数组推导式结合sum()函数,遍历公共行维度,对每个列维度下的对应元素相乘后求和,一行即可完成所有列的sumproduct计算,无需单独写forall循环赋值

运行后变量结果完全符合预期:a=10,b=20,c=4,d = [68, 72, 22, 36]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 02:30:01