约束规划 opl语言
本文主要基于ILOG的约束规划(Constraint Programming)模块求解调度问题,因此主要介绍调度相关的函数
依据运筹学建模,主要介绍变量和约束
参考文献:https://doi.org/10.1007/s10601-018-9281-x
这篇文献是IBM在Constraint期刊发表的CPO模块介绍,更加详细,本文只是对其进行了摘要和翻译,想要更全面的了解CP模块,可以查看此文献。
后续会对docplex的cp模块进行介绍,但基本内容都是关于区间变量和关系约束这两块。
Interval Variables
basic interval variables
区间变量表示调度中占据一段时间的活动或者任务,并且其在调度问题中的时间位置是不确定的,也就是不知道任务是在什么时候开始。
区间变量由开始时间和结束时间组成。并且区间变量是可选的,也就是我们设置的区间变量可能在解中出现,也可以不出现。
所以可以应用于以下场景:
- 可选任务:任务未必一定全部加工
- 备选资源,但这些资源并非全部使用,而是选择一部分
- 模式选择:任务有多种工作模式,但只能选一个
- 可选路径:任务的加工过程有多个,但只选择一条
- hierarchical description of a project as a work-breakdown structure with tasks decomposed
into sub-task