def run_train(Env, curr_RL_Config): # run the training process """ Train the agents """ Num_neighbor = Env.n_Neighbor Num_d2d = Env.n_Veh Num_CH = Env.n_RB Num_D2D_feedback = curr_RL_Config.Num_Feedback # construct a BS agent BS_Agent = Agent(Num_d2d, Num_CH, Num_neighbor, Num_D2D_feedback, Env, curr_RL_Config) Num_Episodes = curr_RL_Config.Num_Episodes Num_Train_Step = curr_RL_Config.Num_Train_Steps # get the train loss [Train_Loss, Reward_Per_Train_Step, Reward_Per_Episode, Train_Q_mean, Train_Q_max_mean, Orig_Train_Q_mean, Orig_Train_Q_max_mean] \ = BS_Agent.train(Num_Episodes, Num_Train_Step) return [ Train_Loss, Reward_Per_Train_Step, Reward_Per_Episode, Train_Q_mean, Train_Q_max_mean, Orig_Train_Q_mean, Orig_Train_Q_max_mean ]
def load_trained_model(Env, curr_RL_Config): # load the trained C-Decision model for testing """ Load the trained DNN-RL model """ # parameters to construct a BS Agent object Num_neighbor = Env.n_Neighbor Num_d2d = Env.n_Veh Num_D2D_feedback = curr_RL_Config.Num_Feedback Num_CH = Env.n_RB # construct a BS agent BS_Agent = Agent(Num_d2d, Num_CH, Num_neighbor, Num_D2D_feedback, Env, curr_RL_Config) # load the Trained model weights # Training Parameters BATCH_SIZE = curr_RL_Config.Batch_Size num_episodes = curr_RL_Config.Num_Episodes num_train_steps = curr_RL_Config.Num_Train_Steps GAMMA = curr_RL_Config.Gamma V2I_Weight = curr_RL_Config.v2i_weight # load the trained results according to their corresponding simulation parameter settings curr_sim_set = 'Train-Result' + '-Feedback-' + str(Num_D2D_feedback) + '-BatchSize-' + str(BATCH_SIZE) \ + '-Gamma-' + str(GAMMA) + '-V2Iweight-' + str(V2I_Weight) folder = os.getcwd() + '\\' + curr_sim_set + '\\' if not os.path.exists(folder): os.makedirs(folder) print('Create the new folder in Testing main ', folder) model_dir = folder model_name = 'Q-Network_model_weights' + '-Episode-' + str(num_episodes) \ + '-Step-' + str(num_train_steps) + '-Batch-' + str(BATCH_SIZE) + '.h5' model_para = model_dir + model_name # save the Target Network's weights in case we need it target_model_name = 'Target-Network_model_weights' + '-Episode-' + str(num_episodes) + '-Step-' \ + str(num_train_steps) + '-Batch-' + str(BATCH_SIZE) + '.h5' target_model_para = model_dir + target_model_name # load Q-Function Network weights BS_Agent.brain.model.load_weights(model_para) # load Target Network weights BS_Agent.brain.target_model.load_weights(target_model_para) # for debugging print('Load the trained model successfully under this setting!') # return the agent with trained model return BS_Agent
def run_train(Env, curr_RL_Config): # run the training process """ Run the Training Process """ # parameters to construct a BS Agent object Num_neighbor = Env.n_Neighbor Num_d2d = Env.n_Veh Num_CH = Env.n_RB Num_D2D_feedback = curr_RL_Config.Num_Feedback BS_Agent = Agent(Num_d2d, Num_CH, Num_neighbor, Num_D2D_feedback, Env, curr_RL_Config) Num_Episodes = curr_RL_Config.Num_Episodes Num_Train_Step = curr_RL_Config.Num_Train_Steps # get the train loss [Train_Loss, Train_Q_mean, Train_Q_max_mean] = BS_Agent.train(Num_Episodes, Num_Train_Step) return [Train_Loss, Train_Q_mean, Train_Q_max_mean]