If a goal state exists in the initial state, and achieving other goal states requires>1, the resulting plan includes additional actions to (essentially) re-achieve the pre-existing goal state rather than using appropriate no-ops.
For example, if goal is {at(Truck, a), ~blocked(A,B)}
Then the resultant plan is something like this; ( = unecessary action)
move("bulldozer1", "A")
move("truck1", "A", "C")
unblock("bulldozer1", "A", "B")
move("truck1", "C", "A")*
NB: refers to JavaGP, latest version.
I believe this problem was fixed long ago. Apologies for taking so long to close here.