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

CPLEX编写i ∈ V^a∪ V^s约束及集合交集遍历写法咨询

CPLEX OPL约束写法修正说明

你提供的原有写法存在两处错误,不符合你的需求:

1. 集合范围匹配错误

你明确要求约束适用范围是i ∈ V^a ∪ V^s(两个集合的并集),但现有代码中Exp1使用inter关键字计算的是两个集合的交集,和需求不符。如果要取并集,需要改用union关键字。
如果你的实际需求确实是遍历两个集合的交集,仅描述时笔误写错了范围,这部分可以保留inter不用修改。

2. forall作用域语法错误

你现有代码中forall仅将第一个求和式纳入了遍历逻辑,第二个求和式和等式判断都在forall的作用域之外,相当于只有第一个求和值会随i迭代变化,第二个求和是全局固定值,完全不符合你要为每个i单独生成约束的要求,需要把整个等式都放到forall的作用范围内。

修正后的参考代码如下:

{int} Arr_node; // 对应集合V^a
{int} Loco_start; // 对应集合V^s
// 取两个集合的并集匹配需求范围
{int} Exp1 = Arr_node union Loco_start;
 
// 整个约束等式放在forall作用域内,为每个i生成独立约束
forall(i in Exp1) {
  sum(<i,j> in A2) x[<i,j>] + sum(<i,j,k> in A3) y[<i,j,k>] == 1;
}

内容的提问来源于stack exchange,提问作者Jack-5M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:09:00