我正在使用swi-prom和clpr库来求解对实数的约束。我通过从命令行调用swi-prom来做到这一点,然后通过另一个程序来解析输出。
例如,要求解诸如{F = 1.8 * C + 32}, {C = 25}.
之类的问题,我生成以下命令:
swipl
-g "use_module(library(clpr))"
-g "{F = 1.8 * C + 32}, {C = 25}, write("F -> "), write(F), write("\n")"
-g halt
和Swi-Prolog的输出为:
F -> 77.0
如果结果是一个纯数字,则效果很好,但如果结果再次是约束(或通常更复杂的解决方案),则效果很好。例如,对于{X > 3}, {Y < 5}, {X + Y = 10}.
,我在SWI-Progoging环境中获取解决方案{Y < 5.0, X = 10.0 - Y}
,但我没有找到将其写入命令行输出的方法。有办法做到吗?
您可以使用dump/3谓词,例如:
{X > 3}, {Y < 5}, {X + Y = 10}, dump([X,Y], [x,y], L), write(L).
生产:
[y=10.0-x,x>5.0]