2013-10-23 67 views
2

我是Prolog的初學者,我們有一個任務,我們必須開發一個增量的出租車時間表。部分約束是我們使用24小時系統。這是我的吉文斯:在Prolog中檢查時間限制

%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

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.