def reduce_methods(all_methods, i): original = len(all_methods) new_all_methods = [] for method in all_methods: print(method) if (method not in new_all_methods): new_all_methods.append(method) print("Length of the Duplicate-removed methods completion is " + str(len(new_all_methods))) remove_duplicate = len(new_all_methods) index = 0 import new_tihtn_planner new_methods_list = new_tihtn_planner.generate_methods( "satellite", new_all_methods) while (index < len(new_methods_list)): new_methods_list_copy = copy.deepcopy(new_methods_list) delete = new_methods_list_copy[index] del new_methods_list_copy[index] import satellite_method_completion time.sleep(1) fun_obj_list = [] for new_method_name in new_methods_list_copy: fun_obj = getattr(sys.modules["satellite_method_completion"], new_method_name) fun_obj_list.append(fun_obj) get_img = getattr(sys.modules["satellite"], "get_img") activate = getattr(sys.modules["satellite"], "activate") # auto_calibrate = getattr(sys.modules["satellite"], "auto_calibrate") removable = True for vi in range(1, i + 1): exec("import " + "validating_" + str(vi)) new_tihtn_planner.declare_methods('get_img', get_img) new_tihtn_planner.declare_methods('activate', activate) # new_tihtn_planner.declare_methods('auto_calibrate', auto_calibrate) exec("validating_" + str(vi) + ".add_methods(fun_obj_list)") exec("validating_" + str(vi) + ".reverse_methods()") print("Solving validating_" + str(vi) + ".py......") solution, generalized_methods = eval("validating_" + str(vi) + ".execute(False)") del sys.modules["validating_" + str(vi)] if (solution == []): removable = False break if (removable): print("A method is removed:") print(delete) new_methods_list = new_methods_list_copy else: index += 1 after_reduce = len(new_methods_list) print("Length of the reduced method completion is " + str(after_reduce)) return original, remove_duplicate, new_methods_list
def testing(reduced_methods, i): ft = open("result_of_" + str(i) + "training", "w") import new_tihtn_planner fun_obj_list = [] for new_method_name in reduced_methods: fun_obj = getattr(sys.modules["satellite_method_completion"], new_method_name) fun_obj_list.append(fun_obj) get_img = getattr(sys.modules["satellite"], "get_img") activate = getattr(sys.modules["satellite"], "activate") # auto_calibrate = getattr(sys.modules["satellite"], "auto_calibrate") testing_instances = os.listdir(testing_path) testing_instances.sort() total_testing = 0 solved_instance = 0 unsolved_instance = 0 for instance in testing_instances: if (instance.find("pyc") != -1): continue exec("import " + instance.split(".")[0]) new_tihtn_planner.declare_methods('get_img', get_img) new_tihtn_planner.declare_methods('activate', activate) # new_tihtn_planner.declare_methods('auto_calibrate', auto_calibrate) exec(instance.split(".")[0] + ".add_methods(fun_obj_list)") exec(instance.split(".")[0] + ".reverse_methods()") begin = time.clock() solution = [] generalized_methods = [] with eventlet.Timeout(1000, False): solution, generalized_methods = eval( instance.split(".")[0] + ".execute(False)") end = time.clock() total_time = end - begin total_testing += 1 if (solution == []): print("failed to solve: " + instance) ft.write(instance + "\t" + str(total_time) + "\t" + "failed\n") unsolved_instance += 1 else: print("successfully solved: " + instance + " " + str(total_time) + "s") ft.write(instance + "\t" + str(total_time) + "\t" + "successful\n") solved_instance += 1 del sys.modules[instance.split(".")[0]] ft.close() del sys.modules["satellite_method_completion"] print("number of total instance = " + str(total_testing)) print("number of solved instance = " + str(solved_instance)) print("number of unsolved instance = " + str(unsolved_instance)) return solved_instance
def reduce_methods(all_methods, i): original = len(all_methods) new_all_methods = [] for method in all_methods: print(method) if (method not in new_all_methods): new_all_methods.append(method) print("Length of the Duplicate-removed methods completion is " + str(len(new_all_methods))) remove_duplicate = len(new_all_methods) index = 0 import new_tihtn_planner new_methods_list = new_tihtn_planner.generate_methods( "logistics", new_all_methods) while (index < len(new_methods_list)): new_methods_list_copy = copy.deepcopy(new_methods_list) delete = new_methods_list_copy[index] del new_methods_list_copy[index] import logistics_method_completion time.sleep(1) fun_obj_list = [] for new_method_name in new_methods_list_copy: fun_obj = getattr(sys.modules["logistics_method_completion"], new_method_name) fun_obj_list.append(fun_obj) air_ship = getattr(sys.modules["logistic"], "air_ship") city_ship = getattr(sys.modules["logistic"], "city_ship") delievery__1 = getattr(sys.modules["logistic"], "delievery__1") delievery__2 = getattr(sys.modules["logistic"], "delievery__2") delievery__3 = getattr(sys.modules["logistic"], "delievery__3") delievery__4 = getattr(sys.modules["logistic"], "delievery__4") delievery__5 = getattr(sys.modules["logistic"], "delievery__5") removable = True for vi in range(1, i + 1): exec("import " + "validating_" + str(vi)) new_tihtn_planner.declare_methods('air_ship', air_ship) new_tihtn_planner.declare_methods('city_ship', city_ship) new_tihtn_planner.declare_methods('delievery', delievery__1, delievery__2, delievery__3, delievery__4, delievery__5) exec("validating_" + str(vi) + ".add_methods(fun_obj_list)") exec("validating_" + str(vi) + ".reverse_methods()") solution, generalized_methods = eval("validating_" + str(vi) + ".execute(False)") del sys.modules["validating_" + str(vi)] if (solution == []): removable = False break if (removable): print("A method is removed:") print(delete) new_methods_list = new_methods_list_copy else: index += 1 after_reduce = len(new_methods_list) print("Length of the reduced method completion is " + str(after_reduce)) return original, remove_duplicate, new_methods_list
def testing(reduced_methods, i): ft = open("result_of_" + str(i) + "training", "w") import new_tihtn_planner fun_obj_list = [] for new_method_name in reduced_methods: fun_obj = getattr(sys.modules["logistics_method_completion"], new_method_name) fun_obj_list.append(fun_obj) air_ship = getattr(sys.modules["logistic"], "air_ship") city_ship = getattr(sys.modules["logistic"], "city_ship") delievery__1 = getattr(sys.modules["logistic"], "delievery__1") delievery__2 = getattr(sys.modules["logistic"], "delievery__2") delievery__3 = getattr(sys.modules["logistic"], "delievery__3") delievery__4 = getattr(sys.modules["logistic"], "delievery__4") delievery__5 = getattr(sys.modules["logistic"], "delievery__5") testing_instances = os.listdir(testing_path) testing_instances.sort() total_testing = 0 solved_instance = 0 unsolved_instance = 0 for instance in testing_instances: if (instance.find("pyc") != -1): continue exec("import " + instance.split(".")[0]) new_tihtn_planner.declare_methods('air_ship', air_ship) new_tihtn_planner.declare_methods('city_ship', city_ship) new_tihtn_planner.declare_methods('delievery', delievery__1, delievery__2, delievery__3, delievery__4, delievery__5) exec(instance.split(".")[0] + ".add_methods(fun_obj_list)") exec(instance.split(".")[0] + ".reverse_methods()") begin = time.clock() solution = [] generalized_methods = [] with eventlet.Timeout(1000, False): solution, generalized_methods = eval( instance.split(".")[0] + ".execute(False)") end = time.clock() total_time = end - begin total_testing += 1 if (solution == []): print("failed to solve: " + instance) ft.write(instance + "\t" + str(total_time) + "\t" + "failed\n") unsolved_instance += 1 else: print("successfully solved: " + instance + " " + str(total_time) + "s") ft.write(instance + "\t" + str(total_time) + "\t" + "successful\n") solved_instance += 1 del sys.modules[instance.split(".")[0]] ft.close() del sys.modules["logistics_method_completion"] print("number of total instance = " + str(total_testing)) print("number of solved instance = " + str(solved_instance)) print("number of unsolved instance = " + str(unsolved_instance)) return solved_instance
def testing(reduced_methods, i): ft = open("result_of_" + str(i) + "training", "w") import new_tihtn_planner fun_obj_list = [] for new_method_name in reduced_methods: fun_obj = getattr(sys.modules["blockworld_method_completion"], new_method_name) fun_obj_list.append(fun_obj) tower5 = getattr(sys.modules["blockworld"], "tower5") tower4 = getattr(sys.modules["blockworld"], "tower4") tower3 = getattr(sys.modules["blockworld"], "tower3") tower2 = getattr(sys.modules["blockworld"], "tower2") tower1 = getattr(sys.modules["blockworld"], "tower1") make_clear__1 = getattr(sys.modules["blockworld"], "make_clear__1") make_clear__2 = getattr(sys.modules["blockworld"], "make_clear__2") testing_instances = os.listdir(testing_path) testing_instances.sort() total_testing = 0 solved_instance = 0 unsolved_instance = 0 for instance in testing_instances: if (instance.find("pyc") != -1): continue exec("import " + instance.split(".")[0]) new_tihtn_planner.declare_methods('tower5', tower5) new_tihtn_planner.declare_methods('tower4', tower4) new_tihtn_planner.declare_methods('tower3', tower3) new_tihtn_planner.declare_methods('tower2', tower2) new_tihtn_planner.declare_methods('tower1', tower1) new_tihtn_planner.declare_methods('make_clear', make_clear__1, make_clear__2) exec(instance.split(".")[0] + ".add_methods(fun_obj_list)") exec(instance.split(".")[0] + ".reverse_methods()") begin = time.clock() solution, generalized_methods = eval( instance.split(".")[0] + ".execute(False)") end = time.clock() total_time = end - begin total_testing += 1 if (solution == []): print("failed to solve: " + instance) ft.write(instance + "\t" + str(total_time) + "\t" + "failed\n") unsolved_instance += 1 else: print("successfully solved: " + instance + " " + str(total_time) + "s") ft.write(instance + "\t" + str(total_time) + "\t" + "successful\n") solved_instance += 1 del sys.modules[instance.split(".")[0]] ft.close() del sys.modules["blockworld_method_completion"] print("number of total instance = " + str(total_testing)) print("number of solved instance = " + str(solved_instance)) print("number of unsolved instance = " + str(unsolved_instance)) return solved_instance
def reduce_methods(all_methods, i): original = len(all_methods) new_all_methods = [] for method in all_methods: print(method) if (method not in new_all_methods): new_all_methods.append(method) print("Length of the Duplicate-removed methods completion is " + str(len(new_all_methods))) remove_duplicate = len(new_all_methods) index = 0 import new_tihtn_planner new_methods_list = new_tihtn_planner.generate_methods( "blockworld", new_all_methods) while (index < len(new_methods_list)): new_methods_list_copy = copy.deepcopy(new_methods_list) delete = new_methods_list_copy[index] del new_methods_list_copy[index] import blockworld_method_completion time.sleep(1) fun_obj_list = [] for new_method_name in new_methods_list_copy: fun_obj = getattr(sys.modules["blockworld_method_completion"], new_method_name) fun_obj_list.append(fun_obj) tower5 = getattr(sys.modules["blockworld"], "tower5") tower4 = getattr(sys.modules["blockworld"], "tower4") tower3 = getattr(sys.modules["blockworld"], "tower3") tower2 = getattr(sys.modules["blockworld"], "tower2") tower1 = getattr(sys.modules["blockworld"], "tower1") make_clear__1 = getattr(sys.modules["blockworld"], "make_clear__1") make_clear__2 = getattr(sys.modules["blockworld"], "make_clear__2") removable = True for vi in range(1, i + 1): exec("import " + "validating_" + str(vi)) new_tihtn_planner.declare_methods('tower5', tower5) new_tihtn_planner.declare_methods('tower4', tower4) new_tihtn_planner.declare_methods('tower3', tower3) new_tihtn_planner.declare_methods('tower2', tower2) new_tihtn_planner.declare_methods('tower1', tower1) new_tihtn_planner.declare_methods('make_clear', make_clear__1, make_clear__2) exec("validating_" + str(vi) + ".add_methods(fun_obj_list)") exec("validating_" + str(vi) + ".reverse_methods()") print("Solving validating_" + str(vi) + ".py......") solution, generalized_methods = eval("validating_" + str(vi) + ".execute(False)") del sys.modules["validating_" + str(vi)] if (solution == []): removable = False break if (removable): print("A method is removed:") print(delete) new_methods_list = new_methods_list_copy else: index += 1 after_reduce = len(new_methods_list) print("Length of the reduced method completion is " + str(after_reduce)) return original, remove_duplicate, new_methods_list
import blockworld for i in range(1, 51): print( "#################################################################################" ) print("Doing the " + str(i) + " iteration") f = open("result_of_" + str(i) + "_training", "w") tower5 = getattr(sys.modules["blockworld"], "tower5") tower4 = getattr(sys.modules["blockworld"], "tower4") tower3 = getattr(sys.modules["blockworld"], "tower3") tower2 = getattr(sys.modules["blockworld"], "tower2") tower1 = getattr(sys.modules["blockworld"], "tower1") make_clear__1 = getattr(sys.modules["blockworld"], "make_clear__1") make_clear__2 = getattr(sys.modules["blockworld"], "make_clear__2") new_tihtn_planner.declare_methods('tower5', tower5) new_tihtn_planner.declare_methods('tower4', tower4) new_tihtn_planner.declare_methods('tower3', tower3) new_tihtn_planner.declare_methods('tower2', tower2) new_tihtn_planner.declare_methods('tower1', tower1) new_tihtn_planner.declare_methods('make_clear', make_clear__1, make_clear__2) import_str = "import " + "training_" + str(i) exec(import_str) # print ("solving " + instance) pyhop_str = "training_" + str(i) + ".execute(True)" begin = time.clock() solution, generalized_methods = eval(pyhop_str) end = time.clock() total_time = end - begin
else: return False new_tihtn_planner.declare_operators(turn_to, switch_on, switch_off, calibrate, take_img) print('') new_tihtn_planner.print_operators() # define the methods def get_img(state, direction, mode): instrument = state.mode[mode][0] return [('activate', instrument, state.on_board[instrument], direction), ('take_img', state.on_board[instrument], direction, instrument, mode)], [[0, 1]] def activate(state, instrument, satellite, direction): # return [('switch_off', satellite), ('switch_on', instrument, satellite), ('auto_calibrate', instrument)], [[0, 1],[1, 2]] return [('switch_on', instrument, satellite)], [] # def auto_calibrate(state, instrument): # return [('calibrate', instrument, state.on_board[instrument], state.calib_target[instrument])], [] new_tihtn_planner.declare_methods('get_img', get_img) new_tihtn_planner.declare_methods('activate', activate) # new_tihtn_planner.declare_methods('auto_calibrate', auto_calibrate) new_tihtn_planner.print_methods()
1] == 'loc2': return [('air_ship', pkg, (copy.deepcopy(goal[0]), 'loc1')), ('city_ship', pkg, (copy.deepcopy(goal[0]), copy.deepcopy(goal[1])))], [[0, 1]] else: return False, [] def delievery__5(state, pkg, goal): if state.loc[pkg][0] != goal[0] and state.loc[pkg][1] == 'loc1' and goal[ 1] == 'loc1': return [('air_ship', pkg, (copy.deepcopy(goal[0]), 'loc1'))], [] else: return False, [] new_tihtn_planner.declare_methods('air_ship', air_ship) new_tihtn_planner.declare_methods('city_ship', city_ship) new_tihtn_planner.declare_methods('delievery', delievery__1, delievery__2, delievery__3, delievery__4, delievery__5) new_tihtn_planner.declare_priority({ 'delievery': 2, 'air_ship': 1, 'city_ship': 1 }) new_tihtn_planner.print_methods() ################################################################################### #可见,pshop中的state的表示是通过,字典来表示的
return [('city_ship', pkg, (copy.deepcopy(state.loc[pkg][0]), 'loc1')), ('air_ship', pkg, (copy.deepcopy(goal[0]), 'loc1')), ('city_ship', pkg, (copy.deepcopy(goal[0]), 'loc2'))], [[0, 1], [1, 2]] if state.loc[pkg][0] == goal[0] and state.loc[pkg][1] != goal[1]: return [('city_ship', pkg, goal)], [] if state.loc[pkg][0] != goal[0] and goal[ 1] == 'loc1' and state.loc[pkg][1] != 'loc1': return [('city_ship', pkg, (copy.deepcopy(state.loc[pkg][0]), 'loc1')), ('air_ship', pkg, (copy.deepcopy(goal[0]), 'loc1'))], [[0, 1]] if state.loc[pkg][1] == 'loc1' and goal[1] == 'loc2': return [('air_ship', pkg, (copy.deepcopy(goal[0]), 'loc1')), ('city_ship', pkg, (copy.deepcopy(goal[0]), copy.deepcopy(goal[1])))], [[0, 1]] if goal[1] == 'loc1': return [('air_ship', pkg, (copy.deepcopy(goal[0]), 'loc1'))], [] new_tihtn_planner.declare_methods('air_ship', air_ship) new_tihtn_planner.declare_methods('city_ship', city_ship) new_tihtn_planner.declare_methods('delievery', delievery) new_tihtn_planner.declare_priority({ 2: ['delievery'], 1: ['city_ship', 'air_ship'] }) new_tihtn_planner.print_methods() ################################################################################### #可见,pshop中的state的表示是通过,字典来表示的