我正在編程Prolog中的任務調度程序。我有一組謂詞的定義,當一個任務可以被認爲是激活的,就像這樣:如何在Prolog中生成可執行任務列表?
task(id01).
task(id02).
task(id03).
task(id04).
activable(X) :-
task(X),
inactive(X),
conditions1(X).
activable(X) :-
task(X),
inactive(X)
conditions2(X).
activable(X) :-
task(X),
inactive(X),
conditions3(X).
我不知道我可以生成的所有激活的任務列表,激活其中任何一個之前。我試着像這樣的東西:
handle_activable([A|As]) :-
activable(A),
handle_activable(As).
handle_activable([]).
schedule :-
handle_activable(As),
activate_all(As).
但是當我打電話schedule/0
,我總是第一個任務檢查,task(id01)
和第一activable/1
條款的目標不斷。我知道這很愚蠢,但我找不到如何獲得可執行任務的列表。更簡單的是,如何生成任務列表......?
你認爲你會看到一個問題,如果'conditions1'和'conditions2' /'conditions3'對於同一個任務是'true'? – dasblinkenlight 2013-02-20 17:38:30
我們假設'conditions1','2'和'3'不能同時爲同一個任務執行。 – 2013-02-20 17:42:53