代码之家  ›  专栏  ›  技术社区  ›  Patrick Trentin

FlatZin文件中的“float\u div”和“float\u times”约束是什么?

  •  1
  • Patrick Trentin  · 技术社区  · 7 年前

    mzn2fzn 在以下方面 锌矿 文件:

    var float: x1;
    var float: y1;
    var float: x2;
    var float: y2;
    constraint (x1 / y1) = 6.0;
    constraint x2 * y2 <= 5.0;
    solve satisfy;
    

    这就是结果 文件:

    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 --version
    G12 MiniZinc to FlatZinc converter, version 1.6.0
    Copyright (C) 2006-2012 The University of Melbourne and NICTA
    

    我有以下问题:

    有吗 你真的支持他们吗?


    请注意 我在 docs for FlatZinc 2.2.0 但是,我不明白为什么这些是由的1.6版生成的 当它的文档似乎没有提到其中任何一个时。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Dekker1    7 年前

    似乎是Flatzin 1.6文件中的疏忽导致了约束 float_div 和 float_times 没有记录。这些约束是支持浮点变量的解算器理解的内置函数的必要部分。它们不能重写为Flatzin内置的其他约束,这就是编译器将使用它们的原因。我要指出 int_div 和 int_times 在Flatzin旧版本的文档中记录了这些约束,并且可以从这些约束推断约束的含义。(我也有这样的印象,在转换为FlatZin2.2.0的过程中,它们的含义没有改变)

    Minizing附带的CP解算器Gecode支持这些约束。

    推荐文章