2

我是 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 是可用的。我该如何编写该约束?

4

1 回答 1

0

这个另一个问题必须用时隙来计算,我建议了一个类似于分配给你的表示,以及一个“服务”谓词来获得绝对时间点。

编辑这里是相关代码

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.
于 2013-10-23T06:22:10.213 回答