Hi everyone,
I am experimenting with this planner: Prolog Planner (unm.edu)
I already modified the planner a bit to allow for the action incrementValue which works.
My actions look like this:
move(plus(), [value(someVal, X)], [incrementValue(someVal, X , 1)]).
move(minus(), [value(someVal, X)], [incrementValue(someVal, X , -1)]).
And it works fine.
go([value(someVal, 10)], [value(someVal, 5)])
OUTPUT:
moves are:
minus()
minus()
minus()
minus()
minus()
But now I want to extend the functionality by changing the value based on X:
move(plus(), [value(someVal, X), X >= 10], [incrementValue(someVal, X , 1)]).
move(plus(), [value(someVal, X), X < 10], [incrementValue(someVal, X , 0.1)]).
But this does not work currently. To compare the precondition to the state the algorithm uses:
member(X,[X|_]).
member(X,[_|T]):-member(X,T).
member_set(E, S) :- member(E, S).
subset([], _).
subset([H|T], S) :-
member_set(H, S),
subset(T, S).
conditions_met(P, S) :- subset(P, S).
As far as I understand it the X condition is not checked here, as it is only checked if P is a subset on S and not if P is true given the statements in S. Can you give me a hint how I can really evaluate those statements?
I am quite new to Prolog so I am glad for any help and would even appreciate some tutoring or pay for it maybe. Thanks a lot