在Gecode中,我使用评价函数在分支时选择变量。
为了计算变量 v 的优点,我需要访问一些其他变量值,但看起来在调用优点函数时,空间变量尚未分配任何值:
Exception: IntVar::val: Attempt to access value of unassigned variable.
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?有没有办法访问评价函数中的变量值?
问题是,当您仍在搜索变量时,它不仅有 1 个值,而且其定义域仍然大于 1。这意味着变量可能仍然可以采用不同的值。除非其域中只剩下一个值,否则不允许使用该val方法。
根据您想要如何使用值域,此问题有不同的解决方案:
in方法。true如果该值在变量的域中,则此方法返回。min和max方法来比较它们的域。size如果该值仅在分配时相关,那么您将在使用该方法之前使用该方法检查基数(域的大小)是否为 1 val。这些是最常见的情况,但与变量交互的方式有无数种。请务必检查IntVar 文档IntVar,其中描述了该类的这些方法和所有其他方法。