我正在关注 Ivan Bratkos 的“人工智能第四版 Prolog 编程”,我目前正在阅读有关约束逻辑编程的内容。
书中有一个用于任务调度的小型优化示例,如下所示:
{Ta >= 0,
Ta + 2 =< Tb,
Ta + 2 =< Tc,
Tb + 3 =< Td,
Tc + 5 =< Tf,
Td + 4 =< Tf},
minimize(Tf).
在 swi-prolog 中导致
Ta = 0,
Tb = 2,
Td = 5,
Tf = 9,
{_G371>=0, _G377=2-_G371, _G371=<2, Tc=4-_G371}.
结果很好(尽管如果它像书中那样写 {Tc =< 4} {Tc >= 2} 会更漂亮),但我不明白为什么它添加了 '_G377=2- _G371'部分,-似乎很没必要……
为什么将这个额外的变量 (_G377) 添加到结果中?
如果其他人正在阅读这本书:我已将“Ta =< 0”更改为“Ta >= 0”,因为我认为“Ta =< 0”是书中的错误。