News:

Simutrans Tools
Know our tools that can help you to create add-ons, install and customize Simutrans.

[idea]TimeTables

Started by THLeaderH, March 14, 2015, 08:15:40 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

THLeaderH

Hello, everyone. I'm enjoying simutrans and I really appreciate the devotion of the simutrans dev team.
I think that the timetable feature make simutrans more interesting. Though I know that the request of timetables feature once denied in this forum, I have a concrete idea to realize this. So, please let me explain.

Now simutrans has a waiting logic that covers both waiting time and filling level. However, this logic cannot solve the problem that a train often fail to overtake another train. (See figure1.jpg)

I want to set timetables so that I can control vehicles when to depart and realize smoother traffic.

My basic concepts are as follows.

  • Use "Cycle Time" to set timetables.
  • Vehicles wait to depart till the time which is defined in timetables.

I think that using [ts] (1[ts] = 512[msec]) is good as a time unit since [msec] ( = 0.001 second) is a too short unit.

I'll show you how to use the timetalbes feature. (I made some images to explain it :D)


  • Open the "Cycle Setting" window from the "Options" window. (Push the "Cycle Setting" button.) (See figure2.png)
  • In the "Cycle Setting" window, Decide how long the cycle in [ts]. You can make more than one cycles. In this explanation, I set "1000[ts]" to the length of the cycle of cycle 1. In the image, the length of the cycle of cycle 2 is set "1200"[ts] and current time is "723"[ts]. You can set the current time to 0 by using "Reset to Zero" button. (See figure3.png)
  • Open the timetable window from the schedule window of a vehicle. (Push the "TimeTable" button.) (See figure4.jpg)
  • In the "TimeTable" window, set the departure time. You don't have to set the time of all stations. "N/A" is set in the box of the station which the departure time isn't set to. You also have to decide which cycle the vehicle belongs to. In the figure, the train belongs to "cycle 1". I set 1000[ts] to the length of "cycle 1", so I can set departure time in a range of 0 ~ 999. (See figure5.png)
These are the steps to use the timetables. I think that we should make the Line Management window which can set departure times to many vehicles since setting times to each vehicles using the windows of each vehicles is too dull.

By the way, my idea has one problem. If a vehicle is delayed even for 1[ts], the vehicle has to wait till the next cycle. So, I think that we should allow some range of a delay.
Set "delay torelance" in the "TimeTable" window. For example;
The length of the cycle which the vehicle belongs to is 2000[ts]. The vehicle arrives at the station at the time of 1400[ts] whose departure time is 1200[ts]. In other words, the vehicle is delayed for 200[ts].
If "delay torelance" is more than 10%, the vehicle departs immediately since this vehicles is regarded as being delayed.
If "delay torelance" is less than 10%, the vehicle waits till the time "1200[ts]" comes because this vehicles is regarded as being too early.

Please feel free for asking me when you have any questions. I hope this feature will be included in simutrans of a future version.

Ters

This has been discussed many times before and several problems have come up there that have not been resolved. Your proposal doesn't look much different from the wait for load time-out Simutrans already has, except that vehicles are forced to wait also when full, which is suboptimal.

Vladki

Perhaps you would want to try simutans-experimental, which has more conwoy-spacing options.

THLeaderH

QuoteYour proposal doesn't look much different from the wait for load time-out Simutrans already has, except that vehicles are forced to wait also when full, which is suboptimal.
I should have explain the necessity more in detail, sorry.
I know that current waiting logic can make APPROXIMATE regular interval of trains. Please look at figure6.jpg. This picture indicates how to make regular interval. I set waiting time of 1/32 month at "waiting spot". Generally, this method is available only at the ends of the line.
However, intervals of the trains gets random as trains go on the track. The difference of the amounts of load of trains, the confluence of the track, the difference of performances of each trains,  and so on make train intervals random. As a result, I cannot control train movements automatically and trains often fail to overtake other trains. (A express train frequently fail to overtake a local train. This is odd, isn't it?)
My timetable idea can solve this problem because departure times are not affected by these effects. I explained how to solve it in my first post.

Quoteseveral problems have come up there that have not been resolved.
What are the "several problems"? I might suggest solutions for some of those.

QuotePerhaps you would want to try simutans-experimental, which has more conwoy-spacing options.
I'll try simutrans-experimental but what convoy-spacing options does the simutrans-experimental have?
The option that simutrans-experimental has can solve this problem?


Thank you for the replies to my post, Ters and Vladki :)

isidoro

What your suggestion improves compared to present version of ST is that you can "link" absolute times for several lines.  In present implementation of ST, it is true that you can set approximate intervals for the vehicles of *one* line, but it doesn't work when dealing with several lines that have to synchronize among each other.

One of the arguments expressed against timetables was that of micromanagement...


THLeaderH

QuoteOne of the arguments expressed against timetables was that of micromanagement...
I searched "micromanagement" in this forum and got a lot of results. Reading those, I assumed that micromanagement problem is the complexity and dulness of managing the vast numbers of vehicles. Is it true?

I think that micromanagement is inevitable when using timetables. In simutrans, we often manage thousands of vehicles. It is not practical to set timetables, timing, and so on to each vehicles individually.
My idea doesn't force players to set timetables of ALL vehicles. It is OK in my idea for vehicles to belong to no "Cycle" and have no timetable. When in their play-style players set a limit of the number of vehicles which are managed with timetables, micromanagement problem doesn't get severe, I think.

Vladki

Simutrans experimental, has additional options in schedule. Read in full detail here: http://forum.simutrans.com/index.php?topic=9241.0
Basically you can set how often a convoy is allowed to leave specified station (typically terminus) - specified in convoys/month. This allows you to keep regular intervals. There is also an option for time offset that can help to depart the fast train earlier than slow train.

Ters

What I see as the problems with trying to have different vehicles times to each other is that the time and distance scales in Simutrans is so small that delays will be much more serious than in the real world. The kind of aftereffects you see in the real world when a train or plane is an hour or more delayed would happen all the time in Simutrans.

THLeaderH

QuoteBasically you can set how often a convoy is allowed to leave specified station (typically terminus) - specified in convoys/month. This allows you to keep regular intervals. There is also an option for time offset that can help to depart the fast train earlier than slow train.
As Vladki put it, simutrans-experimental can realize what I want to do though it has the problem that it doesn't allow any delay. I'm very sorry for taking your time on such a meaningless discussion. I'll see simutrans-experimental boards, and try it.

By the way, the reason why I started this discussion was that I couldn't make a patch program due to the very complicated source code of simutrans. It didn't seem that new-comer developers can grasp the overview of the simutrans program. I couldn't tell even which file I should modify to write about a specific part. How a lot of simutrans developers are coding? Do they read only raw sorce code files to know what and how they should modify?

Ters

Quote from: THLeaderH on March 16, 2015, 10:00:13 AM
Do they read only raw sorce code files to know what and how they should modify?

Yes. That and asking other developers. Which is true for a lot of other software projects, if not all. I've certainly never encountered a software project where you don't have to learn the source code to work on the source code. Simutrans' major problem has been that the code was written in German, and is so far only partially translated to English.

KneeOn

For what its worth, Experimentals excellent convoy spacing is undone when setting timing points in the middle of a route. A delay tolerence would be useful for trains sat in the middle of the route (pulse stations) vice a terminus where trackspace is slightly less of a premium.

DrSuperGood

The main problem with experimental's system is that there is no concept of "running late". If a time slot is missed then it always waits until the next one, even if that is a considerable time later. The result for an intermediate station usually is that a backlog of trains occur (bad average speed) as the next train runs into it due to it consuming its time slot. In real life the train would arrive late and depart late but try to make up time elsewhere.

It also does not factor load/unload times when scheduling, allocating convoys with long load times (ships mostly, which take hours to load) time slots which are impossible.

A fix could be to allow time tolerances for stops before it counts a slot as having been missed. For example a service with trains every 30 minutes could have a 5 minute time tolerance allowing a train running up to 5 minutes late to still count as being in the previous time slot and is instructed to depart ASAP. The next train to arrive would then be allocated the time slot in 25 minutes from that time. This still would not help the problem that excessive waiting at synchronization stops lowers average speed and so decreases revenue, a slight mechanic change might be required to support them financially.

Ters

Beyond subjective aesthetics, the only issue solved with timetabling is bunching up of vehicles. This in turn causes unhappy "passengers", because the stops fill up to above capacity, then all vehicles arrive in rapid succession, leaving the stops no time to fill up in between. The capacity for all the potential passengers is there, but it's not being used.

In my experience, the main cause of this is that lesser loaded vehicles catch up with full loaded ones. Other effects should balance out over time, but this effect only intensifies itself, as the trailing vehicles get less passengers the more they catch up, thereby catching up more. The only reason I can think of for this behaviour is that fuller vehicles are heavier than emptier vehicles. The latter therefore reaches top speed quicker after stoping at stops, yielding for other traffic, and making turns. In pak64, the weight of passenger may make up over a third of a fully loaded bus' weight. While this ratio might be very realistic, the effect it has on vehicle speed is much more pronounced in Simutrans than in the real world.

The simplest solution to the main problem as I see it, would likely be to make passengers, and perhaps also mail, weightless. For other cargo, I think it's normal to always fully load them, which ties the vehicles to the delivery rate of the producing factory. Making accelaration almost instantaneous would also kind of work for buses, but not for trains, since the same locomotives can be used for both passengers and freight.

isidoro

I wouldn't say subjective aesthetics and bunching (which in itself is a good reason alone) are the only reasons.

Timetables are widely used in transportation.  With timetables, ST would be more realistic and that is a goal in itself.  Using timetables you can plan your travel ahead, and the traffic designer can make a better use of the network or favour some combinations better than others.

The main problem I see with them is, however, micromanagement...  In Cities in Motion, there were timetables and it was a pain to fill them up when the default wasn't suitable.


Ters

Quote from: isidoro on April 26, 2015, 12:19:36 AM
Timetables are widely used in transportation.  With timetables, ST would be more realistic and that is a goal in itself.

Simutrans is light-years from realistic timetabling. The scale of both time and space works against it, as Simutrans vehicles spend a higher proportion of its time in junctions bringing it in conflict with other trains than real vehicles, at least when compared to how long they take to reach top speed. It would also require a much more hands-on approach to routing, so as to keep slower trains out of the path of an express that is running late and is desperate to make in time. Therefore, I was only considering timetabling as a means to ensure that vehicles arrive/depart from stops at near fixed intervals.

prissi

Again, just six years late bu now timetables are in r9996