Example #1
0
def main():
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    device = torch.device('cpu')
    num_action = 2
    num_state = 4
    num_process = 5

    global_Actor = NeuralNet.ActorNet(inputs=num_state,
                                      outputs=num_action,
                                      num_hidden_layers=2,
                                      hidden_dim=8).to(device)
    #summary(global_Actor, input_size=(10,num_state))
    global_Critic = NeuralNet.CriticNet(inputs=num_state,
                                        outputs=1,
                                        num_hidden_layers=2,
                                        hidden_dim=8).to(device)
    #summary(global_Critic, input_size=(10,num_state))
    batch_size = 64
    GAMMA = 0.95
    max_episodes = 5000
    max_step = 1000
    global_Actor.share_memory()
    global_Critic.share_memory()

    processes = []
    processes_socket = []
    processes_agent = []
    mp.set_start_method('spawn')
    print("MP start method:", mp.get_start_method())

    ip = '110.76.78.109'
    port = 1111
    for rank in range(num_process):
        processes_socket.append(0)
        processes_socket[rank] = ClientSocket.MySocket(port, 'f', 'ffff?f')
        processes_agent.append(0)
        processes_agent[rank] = Agent.Brain(GlobalActorNet=global_Actor,
                                            GlobalCriticNet=global_Critic,
                                            device=device,
                                            socket=processes_socket[rank],
                                            num_action=num_action,
                                            max_episodes=max_episodes,
                                            max_step=max_step,
                                            batch_size=batch_size,
                                            GAMMA=GAMMA)
        p = mp.Process(target=processes_agent[rank].train, args=())
        p.start()
        processes.append(p)

    for p in processes:
        p.join()
Example #2
0
def main():

    processes = []
    processes_socket = []
    processes_agent = []

    device = torch.device('cpu')
    num_action = 2
    num_state = 4
    num_process = 1

    batch_size = 64
    GAMMA = 0.95
    max_episodes = 5000
    max_step = 1000

    global_Actor = NeuralNet.ActorNet(inputs=num_state,
                                      outputs=num_action,
                                      num_hidden_layers=2,
                                      hidden_dim=8).to(device)
    global_Critic = NeuralNet.CriticNet(inputs=num_state,
                                        outputs=1,
                                        num_hidden_layers=2,
                                        hidden_dim=8).to(device)

    dic = torch.load(f"D:/modelDict/actor/modelDict.pt")
    global_Actor.load_state_dict(torch.load("D:/modelDict/actor/modelDict.pt"))
    global_Critic.load_state_dict(
        torch.load("D:/modelDict/critic/modelDict.pt"))

    port = 1111
    for rank in range(num_process):
        processes_socket.append(0)
        processes_socket[rank] = ClientSocket.MySocket(port, 'f', 'ffff?f')
        processes_agent.append(0)
        processes_agent[rank] = Agent.Brain(GlobalActorNet=global_Actor,
                                            GlobalCriticNet=global_Critic,
                                            device=device,
                                            socket=processes_socket[rank],
                                            num_action=num_action,
                                            max_episodes=max_episodes,
                                            max_step=max_step,
                                            batch_size=batch_size,
                                            GAMMA=GAMMA)
        p = mp.Process(target=processes_agent[rank].test,
                       args=(global_Actor, global_Critic))
        p.start()
        processes.append(p)

    for p in processes:
        p.join()