如何检查Prolo中的时间约束?

时间:2013-10-23 05:33:59

标签: time prolog

我是Prolog的初学者,我们有一项任务,我们必须制定增量出租车时间表。部分限制是我们使用的是24小时制。这些是我的恩赐:

%taxi_info(Taxi_id, Region, BeginningTime, EndTime, Capacity, CoordinateX, CoordinateY).
taxi_info(t11, r1, 6:00, 18:00,6, 43.668943, -79.386211).
taxi_info(t12, r2, 18:00, 6:00,3, 43.668943, -79.386211).

%customer_info(Party, Name, PickUpCoordinatesX, PickUpCoordinatesY, TimeOfPickUp).
customer_info(3, 'Fox', 43.6608633, -79.4013261, 21:30).

根据这里的信息,客户必须在21:30之前领取,而出租车t12是可用的。我该如何写出这个约束?

1 个答案:

答案 0 :(得分:0)

this other问题必须使用时间段进行计算,我建议使用类似于已分配给您的表示,并使用“服务”谓词来获取绝对时间点。

编辑这里是相关代码

timepoint(H:M, P) :-
   P is H*60 + M.

然后您的查询可以读取(过度简化,忽略所有其他刚刚没有表示的约束)

?- customer_info(_Party, Name, _PickUpCoordinatesX, _PickUpCoordinatesY, TimeOfPickUp),
   timepoint(TimeOfPickUp, T),
   taxi_info(Taxi_id, _Region, BeginningTime, EndTime, _Capacity, _CoordinateX, _CoordinateY),
   timepoint(BeginningTime, B),
   timepoint(EndTime, E),
   T >= B, T < E.