FlatZinc 文件中的这些“float_div”和“float_times”约束是什么?
What are these `float_div` and `float_times` constraints in the FlatZinc file?
我刚刚尝试 运行 mzn2fzn
覆盖以下 MiniZinc 文件:
var float: x1;
var float: y1;
var float: x2;
var float: y2;
constraint (x1 / y1) = 6.0;
constraint x2 * y2 <= 5.0;
solve satisfy;
这是生成的 FlatZinc 文件:
var -1.7976931348623157e+308..5.0: FLOAT____00001 :: is_defined_var :: var_is_introduced;
var float: x1;
var float: x2;
var float: y1;
var float: y2;
constraint float_div(x1, y1, 6.0);
constraint float_times(x2, y2, FLOAT____00001) :: defines_var(FLOAT____00001);
solve satisfy;
mzn2fzn
版本如下:
~$ mzn2fzn --version
G12 MiniZinc to FlatZinc converter, version 1.6.0
Copyright (C) 2006-2012 The University of Melbourne and NICTA
我有以下问题:
- 什么是
float_div
约束,FlatZinc 1.6 Standard好像没有提到?
- 什么是
float_times
约束,FlatZinc 1.6 Standard好像没有提到?
FlatZinc 求解器真的支持它们吗?
N.B.其实我在docs for FlatZinc 2.2.0中找到了这些函数的踪迹,但是,我不明白为什么这些是由版本生成的mzn2fzn
的 1.6,其文档似乎未提及其中任何一个。
FlatZinc 1.6 的文档似乎疏忽了约束 float_div
和 float_times
没有记录。这些约束是 FlatZinc 内置函数的必要部分,可以被支持浮点变量的求解器理解。它们不能被重写为 FlatZinc 内置函数中的其他约束,这就是编译器将使用它们的原因。我会注意到 int_div
和 int_times
记录在旧版本 FlatZinc 的文档中,约束的含义可以从这些约束中推断出来。 (我也觉得他们的意思在转换为 FlatZinc 2.2.0 时没有改变)
Gecode,MiniZinc 附带的 CP 求解器,支持这些约束。
我刚刚尝试 运行 mzn2fzn
覆盖以下 MiniZinc 文件:
var float: x1;
var float: y1;
var float: x2;
var float: y2;
constraint (x1 / y1) = 6.0;
constraint x2 * y2 <= 5.0;
solve satisfy;
这是生成的 FlatZinc 文件:
var -1.7976931348623157e+308..5.0: FLOAT____00001 :: is_defined_var :: var_is_introduced;
var float: x1;
var float: x2;
var float: y1;
var float: y2;
constraint float_div(x1, y1, 6.0);
constraint float_times(x2, y2, FLOAT____00001) :: defines_var(FLOAT____00001);
solve satisfy;
mzn2fzn
版本如下:
~$ mzn2fzn --version
G12 MiniZinc to FlatZinc converter, version 1.6.0
Copyright (C) 2006-2012 The University of Melbourne and NICTA
我有以下问题:
- 什么是
float_div
约束,FlatZinc 1.6 Standard好像没有提到? - 什么是
float_times
约束,FlatZinc 1.6 Standard好像没有提到?
FlatZinc 求解器真的支持它们吗?
N.B.其实我在docs for FlatZinc 2.2.0中找到了这些函数的踪迹,但是,我不明白为什么这些是由版本生成的mzn2fzn
的 1.6,其文档似乎未提及其中任何一个。
FlatZinc 1.6 的文档似乎疏忽了约束 float_div
和 float_times
没有记录。这些约束是 FlatZinc 内置函数的必要部分,可以被支持浮点变量的求解器理解。它们不能被重写为 FlatZinc 内置函数中的其他约束,这就是编译器将使用它们的原因。我会注意到 int_div
和 int_times
记录在旧版本 FlatZinc 的文档中,约束的含义可以从这些约束中推断出来。 (我也觉得他们的意思在转换为 FlatZinc 2.2.0 时没有改变)
Gecode,MiniZinc 附带的 CP 求解器,支持这些约束。