I faced a problem when state changes in execution time and Act doesn't perform correctly. The plan is not applicable in the current state because of the new change. The Plan phase generates a new plan and adds to it to the set of plans for that goal. Act checks each plan to see which one is applicable. Although it doesn't pick the right plan. It picks the old plan which is not applicable in the current state, and when it executes the action it says this action is illegal in the state.
I removed the old plans from the set of plans and it solved the problem. There might be an issue in this method in SimpleAct:
def get_best_plan(self, world, goals, verbose)
I faced a problem when state changes in execution time and Act doesn't perform correctly. The plan is not applicable in the current state because of the new change. The Plan phase generates a new plan and adds to it to the set of plans for that goal. Act checks each plan to see which one is applicable. Although it doesn't pick the right plan. It picks the old plan which is not applicable in the current state, and when it executes the action it says this action is illegal in the state.