Minizinc中的实例化



我正在阅读"最小化教程";是Kim Marriott写的

变量实例化和类型的组合称为type-inst。当您开始使用Minizinc时,您无疑会看到type-inst错误的示例。

类型错误到底是什么?

我相信这个术语在现在的MiniZinc文献中并不经常使用,但是对于MiniZinc中的每个值,编译器都会跟踪两件事:它的类型(int, bool, float等),以及它是决策变量(在求解时不知道)还是问题参数(在为求解器重写模型时必须知道)。这两件事一起被称为类型实例化或Type -inst。

type-inst错误是由编译器的类型检查器给出的错误。这些错误可能发生在很多地方,比如在声明中声明的类型实例化与右侧不匹配,或者if-then-else函数的两端有不同的类型实例化,或者调用的参数与函数声明的类型实例化不匹配。

导致这些错误的不匹配可能来自type-inst的任何一方:类型不兼容(例如使用float而不是bool),或者您使用了只允许问题参数的决策变量。这些问题通常是由模型中的错误引起的,通常可以通过更改所使用的值或使用不同的语言结构来轻松解决。

注意MiniZinc确实允许子类型:允许使用bool而不是int,并且它被转换为0/1值。同样,你可以用整数值代替浮点数,也可以用形参代替变量。

最新版本的MiniZinc教程可以在它的文档中找到:https://www.minizinc.org/doc-latest/en/part_2_tutorial.html

最新更新