Esempio n. 1
0
 def __init__(self,action_dim,state_dim,agentParam,useLaw,useCenCritc,num_agent,CNN=False, width=None, height=None, channel=None):
     self.CNN = CNN
     self.device = agentParam["device"]
     if CNN:
         self.CNN_preprocessA = CNN_preprocess(width,height,channel)
         self.CNN_preprocessC = CNN_preprocess(width,height,channel)
         state_dim = self.CNN_preprocessA.get_state_dim()
     #if agentParam["ifload"]:
         #self.actor = torch.load(agentParam["filename"]+"actor_"+agentParam["id"]+".pth",map_location = torch.device('cuda'))
         #self.critic = torch.load(agentParam["filename"]+"critic_"+agentParam["id"]+".pth",map_location = torch.device('cuda'))
     #else:
     if useLaw:
         self.actor = ActorLaw(action_dim,state_dim).to(self.device)
     else:
         self.actor = Actor(action_dim,state_dim).to(self.device)
     if useCenCritc:
         self.critic = Centralised_Critic(state_dim,num_agent).to(self.device)
     else:
         self.critic = Critic(state_dim).to(self.device)
     self.action_dim = action_dim
     self.state_dim = state_dim
     self.noise_epsilon = 0.99
     self.constant_decay = 0.1
     self.optimizerA = torch.optim.Adam(self.actor.parameters(), lr = 0.001)
     self.optimizerC = torch.optim.Adam(self.critic.parameters(), lr = 0.001)
     self.lr_scheduler = {"optA":torch.optim.lr_scheduler.StepLR(self.optimizerA,step_size=1000,gamma=0.9,last_epoch=-1),
                          "optC":torch.optim.lr_scheduler.StepLR(self.optimizerC,step_size=1000,gamma=0.9,last_epoch=-1)}
     if CNN:
         # self.CNN_preprocessA = CNN_preprocess(width,height,channel)
         # self.CNN_preprocessC = CNN_preprocess
         self.optimizerA = torch.optim.Adam(itertools.chain(self.CNN_preprocessA.parameters(),self.actor.parameters()),lr=0.0001)
         self.optimizerC = torch.optim.Adam(itertools.chain(self.CNN_preprocessC.parameters(),self.critic.parameters()),lr=0.001)
         self.lr_scheduler = {"optA": torch.optim.lr_scheduler.StepLR(self.optimizerA, step_size=10000, gamma=0.9, last_epoch=-1),
                              "optC": torch.optim.lr_scheduler.StepLR(self.optimizerC, step_size=10000, gamma=0.9, last_epoch=-1)}
Esempio n. 2
0
 def __init__(self,
              action_dim,
              state_dim,
              CNN=False,
              width=None,
              height=None,
              channel=None,
              device='cpu'):
     self.CNN = CNN
     if CNN:
         self.CNN_preprocessA = CNN_preprocess(width, height, channel)
         self.CNN_preprocessC = CNN_preprocess(width, height, channel)
         state_dim = self.CNN_preprocessA.get_state_dim()
     self.device = device
     self.actor = Actor(action_dim, state_dim)
     self.critic = Critic(state_dim)
     self.action_dim = action_dim
     self.state_dim = state_dim
     self.noise_epsilon = 0.999
     self.constant_decay = 1
     self.optimizerA = torch.optim.Adam(self.actor.parameters(), lr=0.00001)
     self.optimizerC = torch.optim.Adam(self.critic.parameters(), lr=0.01)
     self.lr_scheduler = {
         "optA":
         torch.optim.lr_scheduler.StepLR(self.optimizerA,
                                         step_size=1000,
                                         gamma=1,
                                         last_epoch=-1),
         "optC":
         torch.optim.lr_scheduler.StepLR(self.optimizerC,
                                         step_size=1000,
                                         gamma=0.9,
                                         last_epoch=-1)
     }
     if CNN:
         # self.CNN_preprocessA = CNN_preprocess(width,height,channel)
         # self.CNN_preprocessC = CNN_preprocess
         self.optimizerA = torch.optim.Adam(itertools.chain(
             self.CNN_preprocessA.parameters(), self.actor.parameters()),
                                            lr=0.0001)
         self.optimizerC = torch.optim.Adam(itertools.chain(
             self.CNN_preprocessC.parameters(), self.critic.parameters()),
                                            lr=0.001)
         self.lr_scheduler = {
             "optA":
             torch.optim.lr_scheduler.StepLR(self.optimizerA,
                                             step_size=10000,
                                             gamma=1,
                                             last_epoch=-1),
             "optC":
             torch.optim.lr_scheduler.StepLR(self.optimizerC,
                                             step_size=10000,
                                             gamma=0.9,
                                             last_epoch=-1)
         }