MiniZinc数组切片约束报错:array comprehension类型错误解决方案咨询
MiniZinc数组切片约束问题解决方法
错误原因:你原代码中
0 in schedule[i..i+maxOn]的写法不符合MiniZinc语法,MiniZinc不支持直接用in操作符判断元素是否存在于数组切片中,这是触发类型错误的原因。正确代码实现:改用
exists遍历切片内的元素,判断是否存在值为0的元素,对应你Python循环的逻辑:
constraint forall(i in 0..length(schedule)-1 - maxOn) ( exists(j in i..i+maxOn) (schedule[j] == 0) );
- 逻辑说明:外层
forall遍历所有合法的切片起始索引,内层exists检查当前切片(从i到i+maxOn的元素)中是否存在0,和你Python中for i in range(len(schedule)-maxOn)后判断切片是否包含0的逻辑完全一致。
内容的提问来源于stack exchange,提问作者Emma van Kleef
相关产品推荐
相关产品推荐

