Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
    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()
Exemplo n.º 9
0
            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的表示是通过,字典来表示的
Exemplo n.º 10
0
        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的表示是通过,字典来表示的