The codebase lacks consistent bounds checking, leading to overflows in g/h/f-values. While often caused by high action costs, for some heuristics like hadd or hff, this already occurs for moderate-sized STRIPS tasks (see issue240).
Current workarounds, like clamping in h^{add}, are undocumented.
We want a unified approach to handling these overflows. Key points from a discussion:
1. Reporting: Detect and report when bounds are exceeded.
2. Performance: Arbitrary-precision integers (e.g., GMP) are considered overkill and would impact performance too heavily in tight loops.
3. 64-bit Quantities: Moving to 64-bit signed integers for specific values would increase the limit 9,223,372,036,854,775,807 (significantly reducing limitations).
4. Templatization: Templatizing certain components (similar to variable domain sizes in the past) would allow us to balance expressiveness and speed by switching representations where needed.
|