コード例 #1
0
def data_generate(size=4,
                  score_to_win=zit_score_to_win,
                  AgentClass=GenerateDataAgent,
                  **kwargs):
    game = Game(size, score_to_win)
    agent = AgentClass(game, display=Display(), **kwargs)
    train_data, train_label = agent.play()
    return train_data, train_label
コード例 #2
0
ファイル: evaluate.py プロジェクト: martin-xia0/2048_Learning
def single_run(logger, models, size, score_to_win, AgentClass, **kwargs):
    game = Game(size, score_to_win)
    agent = AgentClass(logger=logger,
                       models=models,
                       game=game,
                       display=Display(),
                       **kwargs)
    agent.play(verbose=True)
    return game.score
コード例 #3
0
def single_run(size, model1, model2, model3, score_to_win, AgentClass,
               **kwargs):
    game = Game(size, score_to_win)
    agent = AgentClass(model1,
                       model2,
                       model3,
                       game,
                       display=Display(),
                       **kwargs)
    agent.play(verbose=False)
    return game.score
コード例 #4
0
ファイル: train.py プロジェクト: Edgeless-L/2048-api
import keras

from game2048.game import Game
from game2048.displays import Display, IPythonDisplay
from game2048.agents import ExpectiMaxAgent, Agent2
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D, BatchNormalization
from keras.optimizers import Adam
import numpy as np
from sklearn.model_selection import train_test_split

BATCH_SIZE = 128
NUM_CLASSES = 4
NUM_EPOCHS = 20

display1 = Display()
display2 = IPythonDisplay()
model = keras.models.load_model('model.h5')

image = []
label = []
for i in range(0, 10):
    game = Game(4, score_to_win=2048, random=False)
    agent = ExpectiMaxAgent(game, display=display1)

    while game.end == False:

        direction = agent.step()
        image.append(game.board)
        label.append(direction)
        game.move(direction)
コード例 #5
0
ファイル: learning1.py プロジェクト: aslklw/2048-api
import keras

BATCH_SIZE = 128
NUM_CLASSES = 4
NUM_EPOCHS = 20

from game2048.game import Game
from game2048.displays import Display, IPythonDisplay
from game2048.agents import ExpectiMaxAgent
from keras.models import Sequential, load_model
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D, BatchNormalization
from keras.optimizers import Adam
import numpy as np
from sklearn.model_selection import train_test_split

display1 = Display()
display2 = IPythonDisplay()
model = load_model('2048_new2_2048.h5')
image = []
label = []
#清空棋盘和方向的矩阵
count1 = 0
while count1 < 1:
    count = 0
    for j in range(0, 50):
        game = Game(4, score_to_win=1024, random=False)
        agent1 = ExpectiMaxAgent(game)
        #agent2 = MyOwnAgent(game, display=display1)
        while game.end == False:
            direction1 = agent1.step()  #用强Agent判断方向
コード例 #6
0
def single_run(size, ds, AgentClass, **kwargs):
    game = Game(size, 2048)
    agent = AgentClass(game, display=Display(), **kwargs)
    agent.play(dataset=ds, verbose=False, train=1)
コード例 #7
0
ファイル: get_data.py プロジェクト: martin-xia0/2048_Learning
def single_run(board_data, move_data, size, score_to_win, AgentClass, **kwargs):
    game = Game(size, score_to_win)
    agent = AgentClass(board_data=board_data, move_data=move_data, game=game, display=Display(), **kwargs)
    agent.play(verbose=True)
    return game.score
コード例 #8
0
import numpy as np
from game2048.game import Game
from game2048.agents import ExpectiMaxAgent
from game2048.agents import MyAgent
from game2048.displays import Display
import csv
import os

game_size = 4
score_to_win = 2048
iter_num = 3000

game = Game(game_size, score_to_win)
board = game.board
agenta = ExpectiMaxAgent(game, Display())
agentb = MyAgent(game, Display())
directiona = agenta.step()
directionb = agentb.step()
board = game.move(directionb)

i = 0
dic = {}
idx = 0

# save file
filename = '/home/olivia/PycharmProjects/2048/game2048/data/traindata10.csv'
if os.path.exists(filename):
    start = True
else:
    start = False
    os.mknod(filename)
コード例 #9
0
ファイル: test.py プロジェクト: snuffle-PX/2048-api
from game2048.agents import ExpectiMaxAgent
from game2048.game import Game
from game2048.my_agents import TrainAgent, TrainAgent2, TrainAgent_12
from game2048.displays import Display
import torch

GAME_SIZE = 4
SCORE_TO_WIN = 2048
N_TESTS = 10

game = Game(GAME_SIZE, SCORE_TO_WIN)
agent = TrainAgent2(game,
                    display=Display(),
                    load_data=True,
                    train=False,
                    path='model3_dict_01_11.pkl')
for _ in range(50):
    agent.play(verbose=False)
    agent.new_game(game=Game(GAME_SIZE, SCORE_TO_WIN))
    print('Average time per step: {}'.format(agent.t / agent.step_counter))

print(agent.statistics)
print('steps: {}, errors: {}, differents: {}'.format(agent.step_counter,
                                                     agent.error_counter,
                                                     agent.diff_counter))
# torch.save(agent.net.state_dict(), 'model.pkl')
コード例 #10
0
ファイル: first_try.py プロジェクト: TigerABCD/2048-api
NUM_CLASSES = 4     #分类数目
NUM_EPOCHS = 20   #训练的迭代次数

from game2048.game import Game
from game2048.displays import Display
from game2048.agents import ExpectiMaxAgent,MyOwnAgent
from keras.models import Sequential,load_model
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
from keras.optimizers import RMSprop
import numpy as np
from sklearn.model_selection import train_test_split

image=[]
label=[]

display1 = Display()
display2 = Display()

stop_number = 2048
size = int(np.log2(stop_number)) +1    #跑到stop number时所需的one-hot编码位数

for i in range(0,500):   #跑500次棋盘,跑到stop_number停止
    game = Game(4, score_to_win=2048, random=False)
    agent = ExpectiMaxAgent(game, display=display1)  #使用强Agent
    
    while game.end==False:
        a=np.array(game.board)
        
        direction=agent.step()
        image.append(game.board)
        label.append(direction)
コード例 #11
0
ファイル: evaluate.py プロジェクト: Frank-cai/2048

if __name__ == '__main__':
    GAME_SIZE = 4
    SCORE_TO_WIN = 2048
    N_TESTS = 50
    '''====================
    Use your own agent here.'''
    from game2048.agents import MyAgent as TestAgent
    '''===================='''
    size = 4
    score_to_win = 2048

    # 59*16*12
    game = Game(size, score_to_win)
    agent = TestAgent(game, display=Display())

    scores = []
    agent.net7.load_state_dict(
        torch.load("net_3_params_7.pkl", map_location='cpu'))
    agent.net6.load_state_dict(
        torch.load("net_3_params_6.pkl", map_location='cpu'))
    agent.net5.load_state_dict(
        torch.load("net_3_params_5.pkl", map_location='cpu'))
    agent.net4.load_state_dict(
        torch.load("net_3_params_4.pkl", map_location='cpu'))
    agent.net2.load_state_dict(
        torch.load("net_3_params_2.pkl", map_location='cpu'))

    step = 0
    for i in range(N_TESTS):
コード例 #12
0
            "score": game.score,
            "end": game.end,
            "direction": direction,
            "control": control
        })

    return app


if __name__ == "__main__":
    GAME_SIZE = 4
    SCORE_TO_WIN = 8192
    APP_PORT = 5009
    APP_HOST = "0.0.0.0"

    from game2048.game import Game
    game = Game(size=GAME_SIZE, score_to_win=SCORE_TO_WIN)

    from game2048.agents import MonteCarloAgent
    print("WARNING: You are now using a MonteCarloAgent.")
    agent = MonteCarloAgent(game=game, display=Display())

    agent.play(verbose=True)
    print("Run the webapp at http://<any address for your local host>:%s/" %
          APP_PORT)
    if game.score > 2048:
        APP_PORT += 1
        app = get_flask_app(game, agent)
        app.run(port=APP_PORT, threaded=False, host=APP_HOST
                )  # IMPORTANT: `threaded=False` to ensure correct behavior
コード例 #13
0
ファイル: h_train.py プロジェクト: snuffle-PX/2048-api
from game2048.game import Game
from game2048.my_agents import TrainAgent
from game2048.HierarchicalAgent import HierarchicalAgent
from game2048.displays import Display
import torch

GAME_SIZE = 4
SCORE_TO_WIN = 4096
N_TESTS = 10
PATH = ('model3_dict_01_11.pkl', 'model3_dict1.pkl')
SAVE_PATH = ('model3_dict0.pkl', 'model3_dict1.pkl')

game = Game(GAME_SIZE, SCORE_TO_WIN, random=False)
agent = HierarchicalAgent(game, display=Display(), load_data=True, path=PATH)
for i in range(2000):
    agent.play(verbose=False)
    print("Game: {} Score: {}".format(i, agent.game.score))
    agent.new_game(game=Game(GAME_SIZE, SCORE_TO_WIN, random=False))
    agent.threshold *= 0.99
    # print("Steps: {} Errors: {}".format(agent.step_counter, agent.error_counter))
    if (i+1) % 100 == 0:
        torch.save(agent.net0.state_dict(), SAVE_PATH[0])
        torch.save(agent.net1.state_dict(), SAVE_PATH[1])

print(agent.statistics)
torch.save(agent.net0.state_dict(), SAVE_PATH[0])
torch.save(agent.net1.state_dict(), SAVE_PATH[1])
コード例 #14
0
    author: 赵阳桁
    Trian model from pre-trained model

"""
from game2048.agents import ExpectiMaxAgent
from game2048.game import Game
from game2048.my_agents import TrainAgent, TrainAgent2
from game2048.displays import Display
import torch

GAME_SIZE = 4
SCORE_TO_WIN = 4096
N_TESTS = 10
PATH = 'model3_dict_01_11.pkl'
SAVE_PATH = 'model3_dict_new.pkl'

game = Game(GAME_SIZE, SCORE_TO_WIN, random=False)
agent = TrainAgent2(game, display=Display(), load_data=True, path=PATH)
for i in range(2000):
    agent.play(verbose=False)
    print("Game: {} Score: {}".format(i, agent.game.score))
    agent.new_game(game=Game(GAME_SIZE, SCORE_TO_WIN, random=False))
    agent.threshold *= 0.99
    print("Steps: {} Errors: {}".format(agent.step_counter,agent.error_counter))
    if (i+1)%100 == 0:
        torch.save(agent.net.state_dict(),SAVE_PATH)

print(agent.statistics)
torch.save(agent.net.state_dict(), SAVE_PATH)
# torch.save(agent.net, 'model.pkl')
コード例 #15
0
def single_run(size, score_to_win, AgentClass, model):
    game = Game(size, score_to_win)
    agent = AgentClass(game, display=Display())
    agent.import_model(model)
    agent.play(max_iter=5e3, verbose=False)
    return game.score
コード例 #16
0
from models.Final_Model import RCNN_model

model = RCNN_model()

model.load_weights("checkpoints/checkpoint.hdf5")


def reshape_board(board):
    res = np.zeros((4, 4), dtype=float)
    for i in range(4):
        for j in range(4):
            k = int(board[i, j])
            if k != 0:
                res[i, j] = np.log2(k) / 11

    res1 = res.T
    return np.hstack((res, res1))


game3 = Game(score_to_win=2048, random=False)
display3 = Display()

while game3.end == 0:
    display3.display(game3)
    # agent1 = ExpectiMaxAgent(game3)
    board = np.array([reshape_board(game3.board)])
    prediction = model.predict(board)
    step = np.argmax(prediction, axis=1)
    # step = agent1.step()

    game3.move(step)
コード例 #17
0
ファイル: evaluate.py プロジェクト: GniB23/2048-api
def single_run(size, score_to_win, AgentClass, sess):
    game = Game(size, score_to_win)
    agent = AgentClass(game, display=Display(), sess=sess)
    agent.build()   
    agent.play(verbose=True)
    return game.score
コード例 #18
0
import sys

sys.path.append("..")
from game2048.expectimax import board_to_move
from game2048.game import Game
from game2048.agents import ExpectiMaxAgent
from game2048.displays import Display
import csv, os

GAME_SIZE = 4
SCORE_TO_WIN = 2048
iter_num = 300

game = Game(GAME_SIZE, SCORE_TO_WIN)
board = game.board
agent = ExpectiMaxAgent(game, Display())
direction = agent.step()
board = game.move(direction)

i = 0
dic = {}
idx = 0

# ------------------------------------------------------
# save each board and its direction to a dict
# -------------------------------------------------------
filename = '/home/zhouykai/Workspace/MachinceLearning/Dataset_2048/Train.csv'
# filename = './Dataset/Train.csv'
if os.path.exists(filename):
    head = True
else:
コード例 #19
0
def single_run(size, score_to_win, AgentClass, **kwargs):
    game = Game(size, score_to_win)
    agent = AgentClass(game, display=Display(), **kwargs)
    agent.play(verbose=True)
    return game.score
コード例 #20
0
        else:
            print("Oh! No!")
        return train_data, train_label


# In[4]:

data_path = '/home/srtp/ML/2048-api-master/2048-api-master/cnn_train_data/'
print(data_path)

game_size = 4
zit_score_to_win = 2048
AgentClass = GenerateDataAgent

game = Game(game_size, zit_score_to_win)
agent = AgentClass(game, display=Display())

# In[5]:


def data_generate(size=4,
                  score_to_win=zit_score_to_win,
                  AgentClass=GenerateDataAgent,
                  **kwargs):
    game = Game(size, score_to_win)
    agent = AgentClass(game, display=Display(), **kwargs)
    train_data, train_label = agent.play()
    return train_data, train_label


# In[6]: