在 Gecode 中,我使用优点函数在分支时选择变量。
为了计算变量v的优点,我需要访问一些其他变量值,但看起来在调用merit函数时,空间变量还没有被赋予任何价值观:
Exception: IntVar::val: Attempt to access value of unassigned variable.
我做错了吗?有没有办法在merit函数中访问变量值?
答案 0 :(得分:3)
问题在于,当您仍在搜索变量时,它不仅具有1个值,其域仍然大于1.这意味着变量可能仍然存在不同的值。在其域中只剩下一个值之前,您不能使用val
方法。
此问题有不同的解决方案,具体取决于您希望如何使用值域:
in
方法。如果值在变量的域中,则此方法返回true
。min
和max
方法来比较其域名。size
方法之前,您将使用val
方法检查基数(域的大小)是否为1。 / LI>
这些是最常见的情况,但有无数种方法可以与变量进行交互。请务必查看IntVar documentation,其中描述了IntVar
类的这些和所有其他方法。