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

CPLEX中如何定义min/max求两数或数组最值?代码报错求助

在CPLEX OPL中正确使用min/max函数求解最值

1. 求解多个离散值的最值

OPL的min/max函数不支持直接传入逗号分隔的多个数值,需将这些值放入集合或数组中再调用函数:

方法一:使用集合字面量

float Y = min({2.3, 3, 4, 2, 13, 45});
float Z = max({2.3, 3, 4, 2, 13, 45});

方法二:先定义数组再计算

float vals[] = [2.3, 3, 4, 2, 13, 45];
float Y = min(vals);
float Z = max(vals);

2. 求解两数的最值

仅比较两个数时,用三元表达式更简洁:

float a = 2.3;
float b = 4;
float min_val = (a < b) ? a : b;
float max_val = (a > b) ? a : b;

3. 决策变量数组的最值计算

针对决策变量数组,需结合索引迭代范围使用:

dvar float x[1..5];
// 约束定义...
float min_x = min(i in 1..5) x[i];
float max_x = max(i in 1..5) x[i];

报错原因:你之前的写法min (2.3, 3, 4, 2, 13, 45)不符合OPL语法,min/max函数仅接收集合、数组或带索引的迭代范围,不支持直接传入多个逗号分隔的参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:58:09