CpE-345 - Modeling & Simulation: Modeling of the TGV (Train a Grande Vitesse) System and Simulation throughout its entire European network. (Lance Nanek, Fred Rassam, Brian Creswick, Michael Peterman)
Introduction: Quite possibly the most popular train in the world is the French invented TGV (Train A Grande Vitesse). In English, this translates to high speed train which may appear as an understatement to some as the TGV is the fastest train in the world holding the world speed record of 515.3 km/h (320.3 mph) set on May 18 th 1990. Nevertheless, it is important to consider that the TGV s maximum operating speed is 300km/h (186 mph) due to the desire to maintain acceptable maintenance costs. Our project consisted of modeling the entire European, although mostly French, TGV network which is composed of no less than 91 major stations and 100 tracks. Our model involves real world data which was transcribed from an official map found on the TGV s website (www.tgv.com). Thus the location of stations, the distances between stations and the operating speeds are all genuine and depict an accurate representation of a tried and tested scenario. One particularity of high speed train systems is that they must run on compliant tracks in order to operate at full speed (the tracks can only be slightly curved). This is clearly seen on the map of the TGV network where only a fraction of the network, emerging from Paris, is certified for use at 300 km/h. The remaining tracks, due to their curves, do not allow operation over the standard speed of 160 km/h. In addition to the high speed tracks and standard tracks, we have also modeled the marginal intermediate network which operates between 200-220 km/h (we used 210 as a value). Concerning the simulation itself, it is a synchronous distributed event-based simulation. The simulator first proceeds by reading the dataset we created for this purpose. After it has interpreted all 91 stations and 100 tracks, it will begin by assigning 50 trains to a variety of randomly selected stations. From thereon, the simulator will route the trains in accordance with the behaviors we have modeled. The question we are trying to answer with our simulation is which behavior is most effective?. The first behavior (method 1) could be considered the simple behavior; only one train is allowed on the track at one time. This simplistic behavior makes it impossible for a crash to occur. However, with this behavior, a lot of trains will have to wait at the station before the track is freed for their use. The second behavior (method 2) is known as the realistic behavior as we have done research to find out how such routing is actually done. Essentially, multiple trains are send at will on the same track as the driver will make sure crashes do not occur (more detail on this is available in the appendix). Finally, the third behavior (method 3) is referred to as the alternate behavior. This behavior follows the logic of the first one where only one train is allowed per track, however, the remaining trains will seek out an alternate path to destination rather than wait their turn at the station. Once again, we have decided to program this simulation using Java as it led to quicker development due to extensive internal libraries that simplified the task for the programmers. Initially, we had appreciated Java s random number generation features yet its distinct characteristic that drove us to success was its RMI (Remote Method Invocation) feature. This feature was critical in our ability to perform distributed computing, albeit synchronous, simulation. On a final note, this event-based simulation had a cutoff time after 200 minutes. The cutoff time and number of trains was chosen so that the simulations could be completed relatively fast, but still provide valuable comparisons and statistics for each routing behavior.
Analysis: The three simulations we ran all follow the same basic format. A routing behavior for all the trains to follow is first selected. Then station and track locations are read in by the program, the set number of trains generated, and the simulation is run. In the output all decisions taking place at the same time are grouped together. The simulation ends when the time count reaches or exceeds 200 minutes, but this can be set for longer or shorter as needed. All events that occur earlier than this time are simulated with the processing loop jumping whatever amount of time in between events is needed. At the end of each of the log files is a total of each train s idle time, the total running time and idle time for all trains, and the fraction of time spent idling overall. In all three behaviors the trains calculate the shortest paths to take to their destinations. Each behavior handles that track being busy in different ways, however. In the first and most naive behavior, if the track providing the shortest route has another train on it, the new train that needs it will idle until that train finishes and check again. This causes some high idle times and large potential waste of fuel (or electricity in our case). For example, one can analyze Train #45 s progress in the first simulation. The lines from the log shown below illustrate Train #45 looking ahead toward its destination and seeing that the track is occupied by Train #48. It decides to idle 32 minutes which is the expected eta for train #48 to finish: Train #45 is in transit, arrived at ST.DIE. Train #45 sees track from 53.3,12.1 to 56.0,13.8 as value 7. ***Train #45 sees train #48 on track and waits, eta: 32. After those 32 minutes pass, Train #45 then checks the track again, this time noticing that it is open, as Train #45 has reached the station and no new train is on the track: Train #45 is in transit, arrived at ST.DIE. Train #45 sees track from 53.3,12.1 to 56.0,13.8 as value 7. Train #45 takes track from 53.3,12.1 to 56.0,13.8, eta: 32. This is an example of the high idle times caused by this routing method. A trip segment that should have taken 32 minutes now takes more than twice that amount. The total time Train #45 spends idling in the simulation is 172 minutes; almost three hours total are spent waiting for other trains to reach the next station. On average, trains in this simulation idled 47.6% of the time. Trains using the second routing method move if the track is open or if all trains on the track are going the same direction. This simulates the zoning system used in modern train systems that lets trains going the same direction use the same track but avoid collision. This results in much lower idle time than in the first method. The code sections below from the beginning of the simulation show an example of how this method reduces idle times: Train #50 is in transit, arrived at BRUXELLES. Train #50 sees track from 43.4,3.5 to 46.2,2.8 as value 1. Train #50 sees track from 46.2,2.8 to 46.4,0.8 as value 100. Train #50 sees track from 46.2,2.8 to 42.3,1.0 as value 100. Train #50 sees track from 46.2,2.8 to 50.3,3.3 as value 100.
Train #50 takes track from 43.4,3.5 to 46.2,2.8, eta: 17. Train #43 is in transit, arrived at BRUXELLES. Train #43 sees track from 43.4,3.5 to 46.2,2.8 as value 3. Train #43 sees track from 46.2,2.8 to 46.4,0.8 as value 100. Train #43 sees track from 46.2,2.8 to 42.3,1.0 as value 100. Train #43 sees track from 46.2,2.8 to 50.3,3.3 as value 100. ***Train #43 takes track from 43.4,3.5 to 46.2,2.8 along with train #50, eta: 17. Using method 1, Train #43 would have to idle until train #50 completed it s trip and then check again to see if the track was clear. With this method, however, Train #43 can take the track at the same time as Train #50 provided they are going the same direction and it therefore achieves a lower travel time. There is still some waiting needed, however, as seen here: Train #34 is in transit, arrived at LILLE. Train #34 sees track from 37.8,1.8 to 43.4,3.5 as value 100. Train #34 sees track from 43.4,3.5 to 46.2,2.8 as value 3. Train #34 sees track from 43.4,3.5 to 48.3,4.3 as value 100. Train #34 sees track from 43.4,3.5 to 40.8,2.0 as value 100. Train #34 sees track from 43.4,3.5 to 41.8,4.4 as value 6. Train #34 sees track from 43.4,3.5 to 42.1,5.0 as value 6. ***Train #34 sees train #50 on track coming opposite direction and waits, eta: 17. Train #34 must wait, since Train #50 is now traveling in the opposite direction. If Train #34 were to move now, it would collide with train #34. Overall this method results in an average of only 13.3% of time spent idling. The third behavior analyzed involves finding of alternate routes. If the track a train would follow to its destination is occupied, the train checks an alternate route to its destination (the next shortest one). If both these tracks are occupied or there is no alternate route then the train waits the shortest time needed for one of the tracks to clear. This causes similar results as the first method as seen in the example below: Train #28 is in transit, arrived at ST.BRIEUC. Train #28 sees track from 28.5,14.9 to 25.6,13.3 as value 11. Train #28 sees track from 25.6,13.3 to 20.4,12.5 as value 100. ***Train #28 sees preferred track busy and alternate track busy/non-existant and waits, eta: 33. This method does help reduce idle time and simulation shows it results in an idle time between the other two methods. However, In a network like the one we are dealing with, alternate routes tend to add large distance penalty. Behavior 3 might be more effective in a more crowded, but also more closely spaced system like subways. The third method has an idle time of about 21%. Comparing the three routing behaviors, it is clear that the second behavior is the best. Its idle time was lower than the idle times of either of the other two behaviors and much more so than the base case. Method 3 s improvements over method 1 were not as considerable. Nonetheless, running the simulation on other train networks might reveal some interesting changes due to the distinct geometry of each network. Considering the current results, it is possible that an
improvement could be seen by combining behaviors 2 and 3. If a train s route is blocked by another train traveling in the opposite direction, it could then search for an alternate route when it would be waiting no matter what anyway. This could reduce idle time even further and only pay the distance penalty when needed. For the system modeled, however, method 3 s effects will likely be minimal. This is because the log file from behavior two illustrates that in a majority of cases there is no train traveling in the opposite direction and waiting due to this is already minimal (but might change with more trains in the system, for example, like during rush hour). Conclusion: This project is, without a doubt, the most applicable and comprehensive study that we have ever participated in. It is clear that this project is an colossal success as we were, not only able to realistically model the entire TGV network and simulate its behavior, but we were able to perform this task using synchronous distributed simulation and prove that the current routing system is in fact the most effective. Needless to say, the level of detail put into this and the pinpoint accuracy of our results can certainly intimidate a professional who does this for a living. Our simulator is easily configurable and can be adapted to a variety of scenarios; different networks can be used, different traffic/frequency and, as previously shown, different behaviors. Concerning our actual results, the general trend has been proven; the archaic yet improved routing algorithm is still very efficient. Naturally, one could complain that there are a lot of realworld characteristics that we did not model such as waiting time per station, acceleration/deceleration of the trains and random assignments versus compliance with the official schedule. First of all, it is clear that there are so many factors that taking them all into account would make our simulation too complex and, therefore, would skew our results for analysis. Concerning compliance with the already established schedule; it is irrelevant as the focus of our study to was compare different behaviors and not to try to analyze imperfections in the current system which are few are far between. Finally, one could conclude that idle time is a fairly insignificant factor for an electric train operating in a country that relies primarily on nuclear energy for its power (80%). Nevertheless, it goes without saying that idle time cannot really be a good thing both for technical and business purposes. Moreover, while we have not proven whether the alternate behavior actually saves the passengers some time, we are sure that they would rather ride alongside of the French countryside instead of having to wait at the station. On a final note, we can say that while synchronous distributed simulation was successful, we could have benefitted more from a asynchronous distributed simulation despite having computers of roughly the same processing power. In this case, runtime was not a detriment to analysis using the parameters we did. However, if results were needed in real time or more details were added into the simulation then the distributed computation capability would have been more valuable. Future versions could incorporate asynchronous simulation methods relatively easily as well. Trains are only affected by track conditions and nearby trains in close proximity and distant trains could be routed asynchronously from each other.
Appendix: Details on Realistic Routing Behaviors: Based on our research, it appears that the MTA, the Paris subway (the metro) and virtually all train systems in the world used the same behavior for routing their trains. This behavior in question heavily relies on signaling to know how close the other train is. For example the New York City subway system uses signals that are physically located at the side of the tracks. Lights are used and the tracks are divided into blocks or track sections to electrically detect if a train is present. The train s wheels and axles short circuit the two rails to show they are present in a block. Each block is either occupied or vacant. If it is occupied the signal is forced to be red. This enforces the separation between trains. A clear signal is green which means there are no trains in the block. All of the current subway track are signaled this way and have basically not changed since 1904. The signaling of high speed trains differ. Despite having similar departure frequency, as TGVs can depart within three minutes of another, high-speed trains require a different approach than conventional trains. The speeds of the trains are too high to rely on a driver to read the signals placed at the side of tracks. It would be too difficult and dangerous a task during poor weather and long periods of time. The TGV system uses cab signaling. This system transmits signaling information through the rails as electrical signals which are picked up by antennas which are placed under the train. The information is then processed by computers and displayed to the driver in the cab. This type of cab signal or track to transmission still leaves the driver in charge of driving the train. Programming of Cab Signaling System : As computer engineers, it is important that we understand the intricacies of such devices and not just their basic underlying principles of operation. The latest iteration of the signaling device that the TGV system uses is known as the TVM 430. This device actually has the capability of signaling trains traveling at 360 km/h. This provides some groundwork for the Next Generation TGV. What is most interesting about the TVM 430 is the manner in which they are programmed. Due to the very high regard to reliability in such situations, the TVM 430s are programmed in ADA running on Motorola 68020 class processors. The choice of using a very high level language such as ADA was strategic as ADA is often used in safety critical systems due to its intrinsic nature of supporting a variety of checksums which protect against access to unallocated memory, buffer overflow errors and off-by-one errors. In case the of the TVM 430, the device returns a 27-bit digital word to the train providing the driver with the necssary information. One last thing I would like to add is that ADA was invented in the 1970s by Jean Ichbiah of Honeywell / Bull, who happens to be the brother of the architect who built my apartment building in Paris, that man is also a friend of the family.
Maps & Pictures: This is the most important map as it is the map we used as a model to implement the TGV network in our simulation. Four stations listed were omitted for the sake of simplicity. They are the following: BOULOGNE, TOURS, LA BAULE, BAYONNE, TARBES
This map is quite interesting as it colorcodes the distance (in hours) to locations from Paris. From here, one can estimate where the high speed lines are located. Note M arseille (southeast) is in the 3-hour section. This map color-codes the High-Speed lines referring to the year they were installed.
Picture of TGVs (orange ones are 1 st generation) during maintenance. Picture of TGV waiting at the station in Zurich, Switzerland.
Two pictures of the Eurostar; the TGV that goes to London.
The latest generation of the TGV; the double-decker. TGV traveling past the French countryside. TGV.com - Official Website (http://www.tgv.com) TGVweb - TGV Basics (http://mercurio.iet.unipi.it/tgv/background.html) TGVweb - The TGV Signaling System (http://mercurio.iet.unipi.it/tgv/signals.html) TGVweb - The TGV Photo Gallery(http://mercurio.iet.unipi.it/tgv/images/index.html) TGVweb - The TGV World Speed Record (http://mercurio.iet.unipi.it/tgv/rec-intro.html) Ada Programming Language - Wikipedia Encyclopedia - (http://www.wikipedia.org/wiki/ada_programming_language) Adrita Bhor,"NYC Subway", University of California, Irvine (http://www.ics.uci.edu/~abhor/ics222/nyc_final.doc) Bibliography:
(DATASET MANUALLY TRANSCRIBED FROM MAP) EUROPE TGV NETWORK crica 2003 syntax: station1name station2name station1_x station1_y station2_x station2_x distance speed speed: 1 = 300kph, 2 = 210kph, 3 = 160kph Distance: 3.5 = 100km, 7 = 200 km... Thus, multiply distance by 28.57 to get values in km. Note: X,y and distance are acctually in mm; I figured the result would be the same (as in pixels) since it is all proportional LONDON CALAIS 34.7 0.1 37.8 1.8 3.2 3 CALAIS LILLE 37.8 1.8 43.4 3.5 6.1 1 LILLE BRUXELLES 43.4 3.5 46.2 2.8 3.0 1 BRUXELLES ANTWERPEN 46.2 2.8 46.4 0.8 2.0 3 BRUXELLES OOSTENDE 46.2 2.8 42.3 1.0 4.3 3 BRUXELLES LIEGE 46.2 2.8 50.3 3.3 3.6 3 LIEGE KOLN 50.3 3.3 54.4 2.2 4.7 3 KOLN DUSSELDORF 54.4 2.2 54.2 0.7 1.6 3 LILLE NAMUR 43.4 3.5 48.3 4.3 5.0 3 LILLE DUNKERQUE 43.4 3.5 40.8 2.0 3.3 1 LILLE LENS 43.4 3.5 41.8 4.4 1.8 3 LENS ARRAS 41.8 4.4 42.1 5.0 0.7 3 ARRAS DOUAI 42.1 5.0 43.4 4.7 1.4 3 DOUAI CAMBRAI 43.4 4.7 43.5 5.9 1.2 3 DOUAI VALENCIENNES 43.4 4.7 44.8 4.6 1.5 3 LILLE ARRAS 43.4 3.5 42.1 5.0 3.5 1 HAUTE PICARDIE ARRAS 42.5 7.6 42.1 5.0 2.8 1 HAUTE PICARDIE PARIS 42.5 7.6 41.5 11.6 4.1 1 PARIS ROUEN 41.5 11.6 37.3 9.2 4.8 3 ROUEN LE HAVRE 37.3 9.2 34.6 8.6 2.8 3 PARIS VENDOME 41.5 11.6 37.1 16.5 6.8 1 PARIS LE MANS 41.5 11.6 34.3 15.7 8.6 1 LE MANS RENNES 34.3 15.7 28.5 14.9 5.8 3 RENNES ST.BRIEUC 28.5 14.9 25.6 13.3 3.5 3 ST.BRIEUC BREST 25.6 13.3 20.4 12.5 5.5 3 QUIMPER LORIENT 20.7 14.9 22.6 16.0 2.3 3 LORIENT VANNES 22.6 16.0 25.4 17.2 3.1 3 VANNES RENNES 25.4 17.2 28.5 14.9 4.2 3 VANNES LE CROISIC 25.4 17.2 26.2 18.6 4.5 3 LE CROISIC NANTES 26.2 18.6 28.4 19.3 2.7 3 NANTES ANGERS 28.4 19.3 32.2 18.1 4.0 2 ANGERS SABLE 32.2 18.1 33.1 17.0 1.4 2 SABLE LE MANS 33.1 17.0 34.3 15.7 1.8 2 VENDOME ST.PIERRE-DES-CORPS 37.1 16.5 36.3 18.7 3.2 1 ANGERS ST.PIERRE-DES-CORPS 32.2 18.1 36.3 18.7 4.4 3
ST.PIERRE-DES-CORPS POITIERS 36.3 18.7 34.8 22.8 3.9 2 POTIERS ANGOULEME 34.8 22.8 34.3 26.6 4.5 2 ANGOULEME LIBOURNE 34.3 26.6 32.7 30.1 3.8 2 LIBOURNE BORDEAUX 32.7 30.1 31.8 30.4 1.0 2 POITERS NIORT 34.8 22.8 42.4 23.0 2.6 3 NOIRT LA ROCHELLE 42.4 23.0 30.2 23.8 2.4 3 BORDEAUX ARCACHON 31.8 30.4 29.8 31.5 2.7 3 ARCACHON DAX 29.8 31.5 30.0 35.6 4.5 3 DAX HENDAYE 30.0 35.6 28.3 37.2 2.3 3 DAX PAU 30.0 35.6 32.3 37.5 3.0 3 PAU LOURDES 32.3 37.5 33.4 38.4 1.5 3 BORDEAUX AGEN 31.8 30.4 34.4 32.2 3.2 3 AGEN MONTAUBAN 34.4 32.2 38.4 34.1 4.5 3 MONTAUBAN TOULOUSE 38.4 34.1 38.6 36.2 2.2 3 TOULOUSE CARCASSONNE 38.6 36.2 41.2 38.1 3.4 3 CARCASSONNE NARBONNE 41.2 38.1 43.6 38.5 2.6 3 NARBONNE PERPIGNAN 43.6 38.5 43.6 40.2 1.7 3 NARBONNE BEZIERS 43.6 38.5 44.2 37.3 1.5 3 BEZIERS MONTPELLIER 44.2 37.3 46.7 35.9 3.0 3 MONTPELLIER NIMES 46.7 35.9 48.4 34.8 2.1 3 NIMES AVIGNON 48.4 34.8 50.2 34.1 1.9 1 AVIGNON AIX-EN-PROVENCE50.2 34.1 52.0 36.2 2.8 1 AVIGNON MARSEILLE 50.2 34.1 52.0 36.9 4.1 2 MARSEILLE TOULON 52.0 36.9 54.1 37.7 2.3 3 TOULON LES ARCS-DRAGUIGNAN 54.1 37.7 55.6 36.4 2.0 3 LES ARCS-DRAGUIGNAN ST.RAPHAEL 55.6 36.4 56.6 36.3 1.0 3 ST.RAPHAEL CANNES 56.6 36.3 57.2 35.6 1.0 3 CANNES ANTIBES 57.2 35.6 57.7 35.1 0.6 3 ANTIBES NICE 57.7 35.1 58.2 34.8 0.7 3 NICE VENTIMIGLIA 58.2 34.8 59.4 34.1 1.5 3 AVIGNON VALENCE 50.2 34.1 50.4 29.3 5.3 1 VALENCE GRENOBLE 50.4 29.3 52.7 28.2 2.5 3 GRENOBLE MONTMELIAN 52.7 28.2 58.3 27.2 1.5 3 MONTMELIAN MODANE 58.3 27.2 55.5 28.6 2.4 3 MODANE TORINO 55.5 28.6 60.5 28.8 5.1 3 TORINO MILANO 60.5 28.8 62.9 27.4 2.8 3 MONTMELIAN CHAMBERY 52.7 28.2 53.3 26.6 0.8 3 CHAMBERY ANNECY 53.3 26.6 53.8 24.8 2.1 3 CHAMBERY GENEVE 53.3 26.6 53.7 23.4 3.6 3 ANNECY GENEVE 53.8 24.8 53.7 23.4 3.2 3 GENEVE MACON 53.7 23.4 49.2 23.1 4.8 3 MACON LYON-SATOLAS 49.2 23.1 50.3 25.8 3.0 1 LYON-SATOLAS GRENOBLE 50.3 25.8 52.7 28.2 3.8 3 LYON-SATOLAS ST.ETIENNE 50.3 25.8 48.3 27.3 3.0 3 LYON-SATOLAS VALENCE 50.3 25.8 50.4 29.3 3.5 1
MACON LE CREUSOT 49.2 23.1 48.0 20.2 3.2 1 LE CREUSOT PARIS 48.0 20.2 41.5 11.6 11.3 1 PARIS DIJON 41.5 11.6 50.0 18.5 11.1 1 DIJON CHALON-SUR-SAONE 50.0 18.5 49.5 20.8 2.6 3 CHALON-SUR-SAONE MACON 49.5 20.8 49.2 23.1 2.6 3 DIJON BESANCON 50.0 18.5 53.3 18.7 4.0 3 DIJON LAUSANNE 50.0 18.5 55.7 21.7 6.4 3 LAUSANNE BRIG 55.7 21.7 58.5 22.5 3.4 3 DIJON BERN 50.0 18.5 57.9 19.6 9.2 3 BERN ZURICH 57.9 19.6 60.6 17.7 3.4 3 DIJON NANCY 50.0 18.5 53.3 12.1 7.2 3 NANCY METZ 53.3 12.1 53.1 10.5 1.7 3 METZ LUXEMBOURG 53.1 10.5 52.1 7.2 3.6 3 METZ SAARBRUCKEN 53.1 10.5 55.8 8.9 3.5 3 METZ STRASBOURG 53.1 10.5 58.2 12.1 5.4 3 NANCY EPINAL 53.3 12.1 54.5 14.2 2.7 3 EPINAL REMIREMONT 54.5 14.2 54.8 15.2 1.1 3 NANCY ST.DIE 53.3 12.1 56.0 13.8 3.4 3 NANCY STRASBOURG 53.3 12.1 58.2 12.1 5.2 3 STATIONS ON MAP OMITTED: BOULOGNE,TOURS,LA BAULE,BAYONNE,TARBES