run.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from TrainSystem import *
  2. from TrainCostModelBlock import StopSimulationException
  3. if __name__ == '__main__':
  4. import numpy as np
  5. # costs = {}
  6. # with open("Train.txt") as file:
  7. # for line in file:
  8. # if line == "\n": continue
  9. # K, cost = line.strip().split(" = ")
  10. # K = tuple([int(x) for x in K[1:-1].split(", ")])
  11. # cost = [float(x) for x in cost[1:-1].split(", ")]
  12. # costs[K] = cost
  13. costs = {}
  14. for Kp in np.arange(560, 585, 1):
  15. for Ki in np.arange(1, 15, 1):
  16. for Kd in np.arange(175, 200, 1):
  17. print(f"Running for Kp = {Kp}; Ki = {Ki}; Kd = {Kd}")
  18. try:
  19. cbd = TrainSystem("TrainSystem", DELTA_T, Kp, Ki, Kd)
  20. cbd.run(int(360/DELTA_T), delta_t=DELTA_T)
  21. cost = cbd.getSignal("cost")[-1][1]
  22. costS = sum([x for _, x in cbd.getSignal("cost")])
  23. costs[(Kp, Ki, Kd)] = cost, costS
  24. except StopSimulationException:
  25. print("INVALID!")
  26. costs[(Kp, Ki, Kd)] = float('inf'), float('inf')
  27. with open("Train.txt", 'a') as file:
  28. for K, cost in costs.items():
  29. file.write(f"{K} = {cost}\n")
  30. print("MINIMAL COST:", min(costs.items(), key=lambda x: x[1][0]))
  31. print("MAXIMAL COST:", max(costs.items(), key=lambda x: x[1][0]))
  32. print("MINIMAL SCOST:", min(costs.items(), key=lambda x: x[1][1]))
  33. print("MAXIMAL SCOST:", max(costs.items(), key=lambda x: x[1][1]))
  34. # cbd = TrainSystem("TrainSystem", DELTA_T, 580, 10, 180)
  35. # cbd.run(int(360/DELTA_T), delta_t=DELTA_T)
  36. # print("C1: ", min(cbd.getSignal("cost")[-1]))
  37. # print("C2: ", sum([x for _, x in cbd.getSignal("cost")]))
  38. # process simulation results
  39. # plot_signals(cbd, ['ActualVelocity', 'IdealVelocity'], 'Velocity of the Train')
  40. # plot_signals(cbd, ['PeopleDisplacement', 'Acceleration'], 'People Displacement and Acceleration')