| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- from TrainSystem import *
- from TrainCostModelBlock import StopSimulationException
- if __name__ == '__main__':
- import numpy as np
- # costs = {}
- # with open("Train.txt") as file:
- # for line in file:
- # if line == "\n": continue
- # K, cost = line.strip().split(" = ")
- # K = tuple([int(x) for x in K[1:-1].split(", ")])
- # cost = [float(x) for x in cost[1:-1].split(", ")]
- # costs[K] = cost
- costs = {}
- for Kp in np.arange(560, 585, 1):
- for Ki in np.arange(1, 15, 1):
- for Kd in np.arange(175, 200, 1):
- print(f"Running for Kp = {Kp}; Ki = {Ki}; Kd = {Kd}")
- try:
- cbd = TrainSystem("TrainSystem", DELTA_T, Kp, Ki, Kd)
- cbd.run(int(360/DELTA_T), delta_t=DELTA_T)
- cost = cbd.getSignal("cost")[-1][1]
- costS = sum([x for _, x in cbd.getSignal("cost")])
- costs[(Kp, Ki, Kd)] = cost, costS
- except StopSimulationException:
- print("INVALID!")
- costs[(Kp, Ki, Kd)] = float('inf'), float('inf')
- with open("Train.txt", 'a') as file:
- for K, cost in costs.items():
- file.write(f"{K} = {cost}\n")
- print("MINIMAL COST:", min(costs.items(), key=lambda x: x[1][0]))
- print("MAXIMAL COST:", max(costs.items(), key=lambda x: x[1][0]))
- print("MINIMAL SCOST:", min(costs.items(), key=lambda x: x[1][1]))
- print("MAXIMAL SCOST:", max(costs.items(), key=lambda x: x[1][1]))
- # cbd = TrainSystem("TrainSystem", DELTA_T, 580, 10, 180)
- # cbd.run(int(360/DELTA_T), delta_t=DELTA_T)
- # print("C1: ", min(cbd.getSignal("cost")[-1]))
- # print("C2: ", sum([x for _, x in cbd.getSignal("cost")]))
- # process simulation results
- # plot_signals(cbd, ['ActualVelocity', 'IdealVelocity'], 'Velocity of the Train')
- # plot_signals(cbd, ['PeopleDisplacement', 'Acceleration'], 'People Displacement and Acceleration')
|