MiniZinc决策变量非连续范围

问题描述 投票:0回答:1

除了编写太多的约束之外,当它不是一个连续的整数序列时,定义数组决策变量范围的最佳方法是什么?

例如:枚举产品= {product_1,product_2,product_3,product_4};

数组[产品] var 0..2:x; // var 0,3,10:y的连续数组[PRODUCTS]; ///非连续的序列和错误

我也尝试使用int的集合

例如int:y_range = 0,1,3;

枚举产品= {product_1,product_2,product_3,product_4};

数组[产品] var 0..2:x; // var y_range的连续数组[PRODUCTS]:y; ///非连续的序列和错误

但没有成功..

variables range minizinc
1个回答
1
投票

MiniZinc允许使用非连续域。你的语法似乎只是犯了一个错误。以下代码有效:

enum PRODUCTS ={product_1,product_2,product_3,product_4};
array [PRODUCTS] of var {0,3,10} : y;

请注意,初始化变量域的非连续集合文字需要大括号({})。

© www.soinside.com 2019 - 2024. All rights reserved.