Time 如何在Prolo中检查时间约束?

Time 如何在Prolo中检查时间约束?,time,prolog,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.

我是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出租车。如何编写约束条件?

问题必须使用时隙进行计算,我建议使用一种类似于分配给您的表示形式,以及一个“服务”谓词来获取绝对时间点

编辑这里是相关的代码

timepoint(H:M, P) :-
   P is H*60 + M.
然后您的查询可以读取(过于简化,忽略了刚才没有表示的所有其他约束)

?-客户信息(_方、名称、_PickupCoordinateX、_PickUpCoordinatesY、Pickup时间),
时间点(Pickup的时间,T),
出租车信息(出租车id、地区、开始时间、结束时间、通行能力、协调人、协调人),
时间点(开始时间,B),
时间点(结束时间,E),
T>=B,T
?- 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.