我是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是可用的。我该如何写出这个约束?
答案 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.