diff --git a/GA/ga.py b/GA/ga.py index 9cd036a..fc796e3 100644 --- a/GA/ga.py +++ b/GA/ga.py @@ -16,7 +16,7 @@ class GA(object): self.location = data self.to_process_idx = to_process_idx self.rectangles = rectangles - self.epochs = 1500 + self.epochs = 300 self.ga_choose_ratio = 0.2 self.mutate_ratio = 0.05 # fruits中存每一个个体是下标的list @@ -320,6 +320,7 @@ class GA(object): best_length = 1.0 / best_score # print(f"Epoch {i:3}: {best_length:.3f}") # print(1.0 / best_score) + # print(i) return tmp_best_one, 1.0 / best_score # if __name__ == '__main__': diff --git a/GA/main.py b/GA/main.py index b273801..189bbb4 100644 --- a/GA/main.py +++ b/GA/main.py @@ -20,7 +20,7 @@ best_col_boundaries = None # --------------------------- R = 3 C = 3 -params_file = 'params2' +params_file = 'params_50_50_3' with open(params_file + '.yml', 'r', encoding='utf-8') as file: diff --git a/env_partion_dist.py b/env_partion_dist.py index 6aa70a4..2f992df 100644 --- a/env_partion_dist.py +++ b/env_partion_dist.py @@ -89,7 +89,7 @@ class PartitionEnv(gym.Env): self.col_cuts[1] += 0.01 elif action == 8: self.col_cuts[1] -= 0.01 - elif action == 9: + elif action == 0: pass if self.row_cuts[0] < self.row_cuts[1] < self.row_cuts[2] < self.row_cuts[3] < self.row_cuts[4] and self.col_cuts[0] < self.col_cuts[1] < self.col_cuts[2]: @@ -100,13 +100,15 @@ class PartitionEnv(gym.Env): # 不满足条件,时间给一个很大的值 best_time = self.BASE_LINE * 2 else: - # 满足条件,继续进行路径规划 - # 每隔10步计算一次路径,第一次也需要计算路径,记录最佳路径 - if self.adjust_step % 10 == 0 or self.adjust_step == 1 or self.best_path is None: - best_time, self.best_path = self.ga_solver(rectangles) - else: - # 根据最佳路径计算当前时间 - best_time = self.get_best_time(self.best_path, rectangles) + # # 满足条件,继续进行路径规划 + # # 每隔10步计算一次路径,第一次也需要计算路径,记录最佳路径 + # if self.adjust_step % 10 == 0 or self.adjust_step == 1 or self.best_path is None: + # best_time, self.best_path = self.ga_solver(rectangles) + # else: + # # 根据最佳路径计算当前时间 + # best_time = self.get_best_time(self.best_path, rectangles) + self.best_path = [0, 1, 3, 5, 9, 7, 8, 10, 2, 4, 6, 0] + best_time = self.get_best_time(self.best_path, rectangles) else: # 调整不合法,时间给一个很大的值 @@ -240,10 +242,11 @@ class PartitionEnv(gym.Env): normalized_diff = np.tanh(time_diff / 200) # 20是缩放因子,可调整 # 计算轮次权重(折扣因子) - step_weight = 1 / (1 + np.exp(-self.adjust_step/10)) + # step_weight = 1 / (1 + np.exp(-self.adjust_step/10)) # 计算最终奖励 - reward = normalized_diff * step_weight # 10是缩放因子 + reward = normalized_diff + # * step_weight # 10是缩放因子 return reward diff --git a/human_action.py b/human_action.py index 04c7fca..12c67b0 100644 --- a/human_action.py +++ b/human_action.py @@ -9,8 +9,8 @@ state = env.reset() print('state:', state) # action_series = [[0.67], [0], [0], [0], [0.7]] -action_series = [1, 1, 1, 1, 1, 1] -action_series = [1] * 30 +action_series = [3, 3, 3, 5, 5, 1, 1, 1, 0, 0, 0] +# action_series = [1] * 30 # action_series = [[0.2], [0.4], [0.7], [0.5]] # action_series = [[-0.08], [-0.08], [0], [0]] diff --git a/solutions/dqn_params_50_50_3.json b/solutions/dqn_params_50_50_3.json index af7e7ba..2ca2987 100644 --- a/solutions/dqn_params_50_50_3.json +++ b/solutions/dqn_params_50_50_3.json @@ -1,10 +1,10 @@ { - "best_time": 9051.162633521315, + "best_time": 8848.626166217664, "row_cuts": [ 0, - 0.21000000000000002, - 0.4, - 0.7, + 0.2700000000000001, + 0.4700000000000001, + 0.76, 1 ], "col_cuts": [ @@ -13,17 +13,18 @@ 1 ], "best_path": [ + 0, + 1, + 3, + 5, + 9, 7, 8, - 0, - 6, + 10, 2, 4, - 10, - 9, - 5, - 3, - 1 + 6, + 0 ], - "timestamp": "2025-04-01 17:43:22" + "timestamp": "2025-04-01 20:05:51" } \ No newline at end of file diff --git a/visualization.py b/visualization.py index 1bb8edf..8db22e6 100644 --- a/visualization.py +++ b/visualization.py @@ -200,7 +200,7 @@ if __name__ == "__main__": # 需要修改的超参数 # --------------------------- params_file = 'params_50_50_3' - solution_file = r'solutions\trav_ga_params_50_50_3_parallel.json' + solution_file = r'solutions\finetune_params_50_50_3.json' with open(params_file + '.yml', 'r', encoding='utf-8') as file: params = yaml.safe_load(file)