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

CPLEX中能否用stateFunction为区间变量关联无序状态集合?

在CPLEX中建模区间变量关联无序状态集合的方法

你可以在CPLEX中实现这类场景,之前的错误是因为alwaysEqual属于顶层约束,不能嵌套在逻辑表达式(比如or)中使用。针对区间变量关联无序状态集合的需求,CPLEX提供了alwaysIn约束来直接实现。

需求回顾

  • 状态函数myStateFunction的状态范围包含1、2、3
  • 区间product_1_Interval全程必须处于状态1或3
  • 区间product_2_Interval全程必须处于状态2或3

修改后的OPL代码示例

stateFunction myStateFunction;
dvar interval product_1_Interval;
dvar interval product_2_Interval;

subject to
{
    alwaysConstant (myStateFunction, 0, 155);
    alwaysConstant (myStateFunction, 156, 310);

    // 约束product_1_Interval处于状态1或3
    alwaysIn(myStateFunction, product_1_Interval, {1, 3});
    // 约束product_2_Interval处于状态2或3
    alwaysIn(myStateFunction, product_2_Interval, {2, 3});
}

关键说明

alwaysIn约束的作用是指定状态函数在目标区间的整个持续时间内,其值必须属于给定的状态集合,完美匹配你需要的无序状态集合关联场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:39:52