コード例 #1
0
    def reward(self, tcube):
        # def reward(self):

        if utils.perc_solved_cube(self.cube) == 1:
            return 1000, True

        return (utils.perc_solved_cube(self.cube) -
                utils.perc_solved_cube(tcube)) * 100, False
コード例 #2
0
ファイル: player.py プロジェクト: Debjoy10/rubix_solver
    transformation = [choice(list(action_map_small.keys())) for z in range(saa)]
    my_formula = pc.Formula(transformation)
    cube(my_formula)

    run = True
    print("********************************************************")
    print("START : ")
    

    print([cube])
    print("********************************************************")
    time.sleep(3)

    while run:            

        if perc_solved_cube(cube) == 1:
            run = False
            print("Solved")
            break
        # Take the biggest Q value (= the best action)
        flat_cube = np.array(flatten_1d_b(cube)).reshape([1, 324])

        Qs = sess.run(myAgent.output, feed_dict = {myAgent.state_in: flat_cube})
        # print("Ideal : "+str(my_formula.reverse()))
        print("Q values:")
        print(Qs)

        # Take the biggest Q value (= the best action)
        choice = np.argmax(Qs)
        
        # lookup     = ["R", "L","D","U","B","F","R'", "L'","D'","U'","B'","F'"] #We are not accounting for half turns
コード例 #3
0
ファイル: solve.py プロジェクト: moyinwong/Qube-model
def solve(Cube):

    file_path = "auto.h5"

    model = get_model()

    model.load_weights(file_path)

    cube = Cube
    cube.score = 0

    list_sequences = [[cube]]

    existing_cubes = set()

    action_list = []

    success = False

    for j in range(50):

        X = [flatten_1d_b(x[-1]) for x in list_sequences]

        value, policy = model.predict(np.array(X), batch_size=1024)

        new_list_sequences = []

        for x, policy in zip(list_sequences, policy):

            new_sequences = [x + [x[-1].copy()(action)] for action in action_map]

            pred = np.argsort(policy)

            take_action = list(action_map.keys())[pred[-1]]

            # append action
            action_list.append(take_action)

            cube_1 = x[-1].copy()(list(action_map.keys())[pred[-1]])

            new_list_sequences.append(x + [cube_1])


        # print("new_list_sequences", len(new_list_sequences))
        last_states_flat = [flatten_1d_b(x[-1]) for x in new_list_sequences]
        value, _ = model.predict(np.array(last_states_flat), batch_size=1024)
        value = value.ravel().tolist()

        for x, v in zip(new_list_sequences, value):
                    x[-1].score = v if str(x[-1]) not in existing_cubes else -1

        new_list_sequences.sort(key=lambda x: x[-1].score , reverse=True)

        new_list_sequences = new_list_sequences[:100]

        existing_cubes.update(set([str(x[-1]) for x in new_list_sequences]))

        list_sequences = new_list_sequences

        list_sequences.sort(key=lambda x: perc_solved_cube(x[-1]), reverse=True)

        prec = perc_solved_cube((list_sequences[0][-1]))

        if prec == 1:
            success = True
            break

    return success, action_list
コード例 #4
0
            new_list_sequences.append(x + [cube_1])
            new_list_sequences.append(x + [cube_2])

        print("new_list_sequences", len(new_list_sequences))
        last_states_flat = [flatten_1d_b(x[-1]) for x in new_list_sequences]
        value, _ = model.predict(np.array(last_states_flat), batch_size=1024)
        value = value.ravel().tolist()
        for x, v in zip(new_list_sequences, value):
            x[-1].score = v if str(x[-1]) not in existing_cubes else -1

        new_list_sequences.sort(key=lambda x: x[-1].score, reverse=True)

        new_list_sequences = new_list_sequences[:100]

        existing_cubes.update(set([str(x[-1]) for x in new_list_sequences]))

        list_sequences = new_list_sequences

        list_sequences.sort(key=lambda x: perc_solved_cube(x[-1]),
                            reverse=True)

        prec = perc_solved_cube((list_sequences[0][-1]))

        print(prec)

        if prec == 1:
            break

    print(perc_solved_cube(list_sequences[0][-1]))
    print(list_sequences[0][-1])
コード例 #5
0
        last_states_flat = [flatten_1d_b(x[-1]) for x in new_list_sequences]
        value, _ = model.predict(np.array(last_states_flat), batch_size=1024)
        value = value.ravel().tolist()

        for x, v in zip(new_list_sequences, value):
            x[-1].score = v if str(x[-1]) not in existing_cubes else -1

        new_list_sequences.sort(key=lambda x: x[-1].score , reverse=True)

        new_list_sequences = new_list_sequences[:100]

        existing_cubes.update(set([str(x[-1]) for x in new_list_sequences]))

        list_sequences = new_list_sequences

        list_sequences.sort(key=lambda x: perc_solved_cube(x[-1]), reverse=True)

        #print(list_sequences[0])

        preview_cube(take_action)
        print([preview_cube])

        prec = perc_solved_cube((list_sequences[0][-1]))

        #print(prec)

        if prec == 1:
            break

    #print(list_sequences[0])
    #print(perc_solved_cube(list_sequences[0][-1]))
コード例 #6
0
import utils
#https://github.com/adrianliaw/PyCuber/blob/version2/examples/sample_program.py
#To declare a cube object
mycube = pc.Cube()

st = utils.flatten_1d_b(mycube)

print(st)

# k=["R","S"]
# #Formula is for set of actions taken
# my_formula = pc.Formula(k[0])

# mycube(my_formula)
# print(mycube)
# #Reversing the actions
# my_formula.reverse()

# #A object for Algo
alg = pc.Formula()
#Random arrangement
random_alg = alg.random()

# random_alg = random_alg[:10]

# print(random_alg)

mycube(random_alg)
print(utils.perc_solved_cube(mycube))

print(mycube)