diff --git a/backend/auto_operation/DiaPlanner.py b/backend/auto_operation/DiaPlanner.py index 6ffc840c..6f5c0901 100644 --- a/backend/auto_operation/DiaPlanner.py +++ b/backend/auto_operation/DiaPlanner.py @@ -44,7 +44,7 @@ def __init__(self, state: State) -> None: # ダイヤ自動更新の初期値を記述 def setup(self) -> None: - # 初期値として、列車0は八王子経由の特急とする + # 初期値として、列車0は八王子経由の特急とする→各停に変更 self.setDia(0, "shinjuku_down", False, 5, "shinjuku_b2", "shinjuku_b1") self.setDia(0, "sakurajosui_down", False, 0, "sakurajosui_b2", "sakurajosui_b5") self.setDia(0, "chofu_down", False, 5, "chofu_b2", "chofu_b4") @@ -56,15 +56,15 @@ def setup(self) -> None: # 初期値として、列車1は八王子経由の普通とする self.setDia(1, "shinjuku_down", False, 5, "shinjuku_b2", "shinjuku_b1") - self.setDia(1, "sakurajosui_down", True, 5, "sakurajosui_b1", "sakurajosui_b5") + self.setDia(1, "sakurajosui_down", False, 5, "sakurajosui_b2", "sakurajosui_b5") self.setDia(1, "chofu_down", False, 5, "chofu_b2", "chofu_b4") self.setDia(1, "hachioji_down", False, 5, "chofu_b4", "hachioji_b1") self.setDia(1, "hachioji_up", False, 5, "hachioji_b1", "hachioji_b2") self.setDia(1, "chofu_up", False, 5, "hachioji_b2", "chofu_b5") - self.setDia(1, "sakurajosui_up", True, 5, "sakurajosui_b4", "sakurajosui_b6") + self.setDia(1, "sakurajosui_up", False, 5, "sakurajosui_b3", "sakurajosui_b6") self.setDia(1, "shinjuku_up", False, 5, "sakurajosui_b6", "shinjuku_b2") - # 初期値として、列車2は橋本経由の特急とする + # 初期値として、列車2は橋本経由の特急とする→各停に変更 self.setDia(2, "shinjuku_down", False, 5, "shinjuku_b2", "shinjuku_b1") self.setDia(2, "sakurajosui_down", False, 0, "sakurajosui_b2", "sakurajosui_b5") self.setDia(2, "chofu_down", False, 5, "chofu_b1", "chofu_b3") @@ -76,12 +76,12 @@ def setup(self) -> None: # 初期値として、列車3は橋本経由の普通とする self.setDia(3, "shinjuku_down", False, 5, "shinjuku_b2", "shinjuku_b1") - self.setDia(3, "sakurajosui_down", True, 5, "sakurajosui_b1", "sakurajosui_b5") + self.setDia(3, "sakurajosui_down", False, 5, "sakurajosui_b2", "sakurajosui_b5") self.setDia(3, "chofu_down", False, 5, "chofu_b1", "chofu_b3") self.setDia(3, "hashimoto_down", False, 5, "chofu_b3", "hashimoto_b1") self.setDia(3, "hashimoto_up", False, 5, "hashimoto_b1", "hashimoto_b2") self.setDia(3, "chofu_up", False, 5, "hashimoto_b2", "chofu_b5") - self.setDia(3, "sakurajosui_up", True, 5, "sakurajosui_b4", "sakurajosui_b6") + self.setDia(3, "sakurajosui_up", False, 5, "sakurajosui_b3", "sakurajosui_b6") self.setDia(3, "shinjuku_up", False, 5, "sakurajosui_b6", "shinjuku_b2") # ダイヤ自動更新のルールを記述. 毎update時によぶ @@ -104,77 +104,78 @@ def update(self) -> None: # self.setDia(1, 1, False, 0, 2, 4) # print("[DiaPlanner.update] wait flag switched!") - # 桜上水下り線で退避していた列車の退避終了処理 - waitingTrain = self.__state.getTrainInSection( - self.__state.getSectionById("sakurajosui_b1") - ) # 桜上水下り退避線にいる列車 - if waitingTrain is not None and self.getDia(waitingTrain.id, "sakurajosui_down").wait: - for train in self.__state.trainList: - # sectionが変化した瞬間だけ、mileageがprevmileageより小さくなることを利用し、桜上水を出発した下り列車がいるか判断。いれば、追い抜きに成功したので、退避していたほうの退避フラグをリセット - if ( - train.currentSection.id == "sakurajosui_b5" - and train.mileage < train.prevMileage - ): - self.setDia( - waitingTrain.id, - "sakurajosui_down", - False, - 5, - "sakurajosui_b1", - "sakurajosui_b5", - ) - print(f"[DiaPlanner.update] train {waitingTrain.id} wait finish!") - # 退避を終えて出発した各停列車の退避フラグを再びTrueに戻す - sakurajosuiDepartedTrain = self.__state.getTrainInSection( - self.__state.getSectionById("sakurajosui_b5") - ) # 桜上水下りを出発後の列車を取得 - if sakurajosuiDepartedTrain is not None and ( - sakurajosuiDepartedTrain.id == 1 or sakurajosuiDepartedTrain.id == 3 - ): # 各停列車なら - self.setDia( - sakurajosuiDepartedTrain.id, - "sakurajosui_down", - True, - 5, - "sakurajosui_b1", - "sakurajosui_b5", - ) - - # 桜上水上り線で退避していた列車の退避終了処理 - waitingTrain = self.__state.getTrainInSection( - self.__state.getSectionById("sakurajosui_b4") - ) # 桜上水上り退避線にいる列車 - if waitingTrain is not None and self.getDia(waitingTrain.id, "sakurajosui_up").wait: - for train in self.__state.trainList: - # sectionが変化した瞬間だけ、mileageがprevmileageより小さくなることを利用し、桜上水を出発した上り列車がいるか判断。いれば、追い抜きに成功したので、退避していたほうの退避フラグをリセット - if ( - train.currentSection.id == "sakurajosui_b6" - and train.mileage < train.prevMileage - ): - self.setDia( - waitingTrain.id, - "sakurajosui_up", - False, - 5, - "sakurajosui_b4", - "sakurajosui_b6", - ) - print(f"[DiaPlanner.update] train {waitingTrain.id} wait finish!") - # 退避を終えて出発した各停列車の退避フラグを再びTrueに戻す - sakurajosuiDepartedTrain = self.__state.getTrainInSection( - self.__state.getSectionById("sakurajosui_b6") - ) # 桜上水上りを出発後の列車を取得 - if sakurajosuiDepartedTrain is not None and ( - sakurajosuiDepartedTrain.id == 1 or sakurajosuiDepartedTrain.id == 3 - ): # 各停列車なら - self.setDia( - sakurajosuiDepartedTrain.id, - "sakurajosui_up", - True, - 5, - "sakurajosui_b4", - "sakurajosui_b6", - ) + # いったん追い抜き関係アルゴリズムをコメントアウト + # # 桜上水下り線で退避していた列車の退避終了処理 + # waitingTrain = self.__state.getTrainInSection( + # self.__state.getSectionById("sakurajosui_b1") + # ) # 桜上水下り退避線にいる列車 + # if waitingTrain is not None and self.getDia(waitingTrain.id, "sakurajosui_down").wait: + # for train in self.__state.trainList: + # # sectionが変化した瞬間だけ、mileageがprevmileageより小さくなることを利用し、桜上水を出発した下り列車がいるか判断。いれば、追い抜きに成功したので、退避していたほうの退避フラグをリセット + # if ( + # train.currentSection.id == "sakurajosui_b5" + # and train.mileage < train.prevMileage + # ): + # self.setDia( + # waitingTrain.id, + # "sakurajosui_down", + # False, + # 5, + # "sakurajosui_b1", + # "sakurajosui_b5", + # ) + # print(f"[DiaPlanner.update] train {waitingTrain.id} wait finish!") + # # 退避を終えて出発した各停列車の退避フラグを再びTrueに戻す + # sakurajosuiDepartedTrain = self.__state.getTrainInSection( + # self.__state.getSectionById("sakurajosui_b5") + # ) # 桜上水下りを出発後の列車を取得 + # if sakurajosuiDepartedTrain is not None and ( + # sakurajosuiDepartedTrain.id == 1 or sakurajosuiDepartedTrain.id == 3 + # ): # 各停列車なら + # self.setDia( + # sakurajosuiDepartedTrain.id, + # "sakurajosui_down", + # True, + # 5, + # "sakurajosui_b1", + # "sakurajosui_b5", + # ) + + # # 桜上水上り線で退避していた列車の退避終了処理 + # waitingTrain = self.__state.getTrainInSection( + # self.__state.getSectionById("sakurajosui_b4") + # ) # 桜上水上り退避線にいる列車 + # if waitingTrain is not None and self.getDia(waitingTrain.id, "sakurajosui_up").wait: + # for train in self.__state.trainList: + # # sectionが変化した瞬間だけ、mileageがprevmileageより小さくなることを利用し、桜上水を出発した上り列車がいるか判断。いれば、追い抜きに成功したので、退避していたほうの退避フラグをリセット + # if ( + # train.currentSection.id == "sakurajosui_b6" + # and train.mileage < train.prevMileage + # ): + # self.setDia( + # waitingTrain.id, + # "sakurajosui_up", + # False, + # 5, + # "sakurajosui_b4", + # "sakurajosui_b6", + # ) + # print(f"[DiaPlanner.update] train {waitingTrain.id} wait finish!") + # # 退避を終えて出発した各停列車の退避フラグを再びTrueに戻す + # sakurajosuiDepartedTrain = self.__state.getTrainInSection( + # self.__state.getSectionById("sakurajosui_b6") + # ) # 桜上水上りを出発後の列車を取得 + # if sakurajosuiDepartedTrain is not None and ( + # sakurajosuiDepartedTrain.id == 1 or sakurajosuiDepartedTrain.id == 3 + # ): # 各停列車なら + # self.setDia( + # sakurajosuiDepartedTrain.id, + # "sakurajosui_up", + # True, + # 5, + # "sakurajosui_b4", + # "sakurajosui_b6", + # ) # 指定した列車の、指定した駅に対するダイヤを取得 def getDia(self, trainId: int, stationId: Station.StationId) -> Dia: diff --git a/backend/auto_operation/State.py b/backend/auto_operation/State.py index bd4aaadb..51f96ec6 100644 --- a/backend/auto_operation/State.py +++ b/backend/auto_operation/State.py @@ -367,7 +367,7 @@ def __init__(self) -> None: self.trainList.append( Train( 3, - self.getSectionById("sakurajosui_b4"), + self.getSectionById("sakurajosui_b3"), State.STRAIGHT_UNIT * 4, pidParam1, )