NIMBY Rails

NIMBY Rails

cega97 Feb 15, 2024 @ 8:40pm
Pax boarding order
I have issues when the demand is higher than the available service. I suppose the oldest pax should board the train, while in reality the newest seem to board (or some other order). This results in some pax stuck for hours and their satisfaction being low
< >
Showing 1-13 of 13 comments
Weird and Wry  [developer] Feb 16, 2024 @ 12:06am 
This is not a bug. Pax boarding order is left undefined on purpose to always allow for the best performance-wise boarding order. This is a deliberate tradeoff compared to a fair (oldest, for example) boarding order.
MirkoC407 Feb 16, 2024 @ 7:54am 
Please define "undefined" - my impression was always it was internal station number, i.e. station build order, which was having its own issues. At least I usually (1.10 and previous based obervations) saw people with shortest runs on the lines board which is, if not linked to travel distance, for sure linked to the fact I built most lines outwards and therefore station build order.

As someone who has written the first lines of code as a kid on an old Atari 800XL I know there is nothing undefined in computing.
Last edited by MirkoC407; Feb 16, 2024 @ 7:55am
xsrvmy Feb 16, 2024 @ 8:42am 
Originally posted by MirkoC407:
Please define "undefined" - my impression was always it was internal station number, i.e. station build order, which was having its own issues. At least I usually (1.10 and previous based obervations) saw people with shortest runs on the lines board which is, if not linked to travel distance, for sure linked to the fact I built most lines outwards and therefore station build order.

As someone who has written the first lines of code as a kid on an old Atari 800XL I know there is nothing undefined in computing.
I think "undefined" in this case means that there is no meaningful guarantee.
MirkoC407 Feb 16, 2024 @ 8:59am 
Originally posted by xsrvmy:
I think "undefined" in this case means that there is no meaningful guarantee.
That is a concept, computers don't really know. That's why I ask. My father (IT background) back then told me "Computers are dead stupid. They do exactly what you tell them to do in the way you tell them to do. Nothing more and nothing less.
Or to put it to an extreme he asked a question when he was giving lessons. Fair to say that in today's mobile phone ages some might struggle to understand the question. It was a software flow chart with an empty decision box and asked what is the question to fill in there. I was so kind to fill in the answer with a spoiler for you to try:

[You walk along the street]
[You see a phone booth]
[You have 30 Pf (minimum phone call fee in Germany before the Euro) with you]
< Do you want to make a phone call? >

This one perfectly showed to many of the trainees that human thinking is on one side superior to a computer because it did decide such a basic on itself, on the other side also inferior because it would think it is supposed to do something which it was not at all, because they started with questions one or two fields down the path like whom to call, do I know the number, etc.
So there must be a certain definition in which order the game decides to check the passengers. Because if it does not get instructions what to do and which way to do it, the game won't do anything at all. And knowing how it does it might help to do some workarounds for the missing "meaningful" order by creating an environment where the deciding factor is or at least tries to be in line with the desired order. If not for existing routes at least for the ones that we still build.
Last edited by MirkoC407; Feb 16, 2024 @ 9:04am
Weird and Wry  [developer] Feb 16, 2024 @ 9:08am 
Undefined in the sense that me, the developer, won't commit in any way to a specific ordering, in order to be able to change it in the future, or to pick an ordering that only makes sense from the POV of performance. In this regard it is similar to the concepts of "undefined behavior" and "unspecified behavior" exploited by C compilers, for example.
adlet Feb 16, 2024 @ 5:43pm 
Originally posted by MirkoC407:
That is a concept, computers don't really know. That's why I ask. My father (IT background) back then told me "Computers are dead stupid. They do exactly what you tell them to do in the way you tell them to do. Nothing more and nothing less.

This was and is true for legacy software, but the world is actually changing. Generative AI does not have preprogrammed paths and answers but evaluates the inputs and compares them against its base of knowledge it is trained on to suggest the outputs.

Originally posted by Weird and Wry:
Undefined in the sense that me, the developer, won't commit in any way to a specific ordering, in order to be able to change it in the future, or to pick an ordering that only makes sense from the POV of performance.

This is a very fair point. Grouping by destination (as done currently) helps with performance by minimizing calculations. Then presuming this remains true, what is a good logical order to sort out destinations, to minimize pax who are stuck at a station when trains are too few? Although one size fits all case probably does not exist, arguably it may be the length of the next leg (longest being higher priority). This is because there are likely fewer trains reaching further out along the same line, thus, fewer opportunities for those pax to leave (and thus prioritize them). Just a thought for consideration.

Carlos, one thing to remember though, whether you commit to it or not, it does impact how we build our networks. For example, I had to pay massive compensations at Tokyo station as pax were stuck unable to get on relatively few trains going past Takao (pax going to closer stations had boarding priority). Since I want to operate the real life schedule, my solution was to prohibit getting off these trains until they actually get close to Takao (very useful 1.11 feature, thank you!). Or I could have extended more trains to go past Takao. Either way, if and when you change the boading priority rules, pax boarding patterns will change, and we may need to adjust timetables on busier lines.

Perhaps one day NIMBY could use AI to have each station decide which pax to board first, to minimize failed trips. (joke:)).
Last edited by adlet; Feb 16, 2024 @ 5:45pm
MirkoC407 Feb 17, 2024 @ 3:41am 
Originally posted by adlet:
This was and is true for legacy software, but the world is actually changing. Generative AI does not have preprogrammed paths and answers but evaluates the inputs and compares them against its base of knowledge it is trained on to suggest the outputs.
There is no AI - the legacy rule I quoted still does apply. AI is just another script running, and this script was also programmed to follow a certain path. If it is a script coming with a compiler, all it does is taking away the task of developing this algorithm from the developer, for the price of loosing control over its execution and therefore possibly priorities.
Some of these scripts are just so sophisticated and make use of such an enormously large database (or even the whole internet) that a human might think they have a form of intelligence because they can access more data and process it much faster than a human.

This is a very fair point. Grouping by destination (as done currently) helps with performance by minimizing calculations. Then presuming this remains true, what is a good logical order to sort out destinations, to minimize pax who are stuck at a station when trains are too few? Although one size fits all case probably does not exist, arguably it may be the length of the next leg (longest being higher priority). This is because there are likely fewer trains reaching further out along the same line, thus, fewer opportunities for those pax to leave (and thus prioritize them). Just a thought for consideration.
+1 for furthest out board first

Carlos, one thing to remember though, whether you commit to it or not, it does impact how we build our networks. For example, I had to pay massive compensations at Tokyo station as pax were stuck unable to get on relatively few trains going past Takao (pax going to closer stations had boarding priority). Since I want to operate the real life schedule, my solution was to prohibit getting off these trains until they actually get close to Takao (very useful 1.11 feature, thank you!). Or I could have extended more trains to go past Takao. Either way, if and when you change the boading priority rules, pax boarding patterns will change, and we may need to adjust timetables on busier lines.
You don't need Tokyo for that, this even happens in Cardiff Central (probably the NIMBY coverage circle for Tokyo station reaches a population equal to the whole city of Cardiff), not even to think about Barcelona Sants in my other project.
Last edited by MirkoC407; Feb 17, 2024 @ 3:42am
adlet Feb 17, 2024 @ 9:54am 
Originally posted by MirkoC407:
There is no AI - the legacy rule I quoted still does apply. AI is just another script running, and this script was also programmed to follow a certain path. If it is a script coming with a compiler, all it does is taking away the task of developing this algorithm from the developer, for the price of loosing control over its execution and therefore possibly priorities.
Some of these scripts are just so sophisticated and make use of such an enormously large database (or even the whole internet) that a human might think they have a form of intelligence because they can access more data and process it much faster than a human.
A complete off topic, but that's not how I understand the AI software works. Clearly there is a normal code that spits out text or picture, places it on page, etc. and I think this software is fairly basic. But I think the text/etc. generation is not following preset scripts (if/else/etc. type things) but compares the patterns (words etc.) in the task at hand with those in its database and then suggests answers. I think words are all translated into numbers when it's doing it, so in this regard, there is no "I" in "AI" (it's not "intellect"), but it's similar to a portion of human's thought process (coming to solutions by pattern recognition/compilation of data). Of course other parts of human thought process are not there (e.g. truly new creative stuff). And I suspect the code here I think is also pretty basic, it's just simply a call into the database and then generating response, one word at a time.

By the way, I recently spent a day trying to get ChatGPT and then Bing Chat design a very simple tram line timetable, 30 minutes round trip, 10 minute interval during rush hour, 15 minutes daytime, 30 minutes late night/early morning. It was a miserable failure... Bing Chat did slightly better.
Last edited by adlet; Feb 17, 2024 @ 9:56am
MirkoC407 Feb 17, 2024 @ 11:14am 
OT cont. Even text generation is made of scripts and algorithms. If you tell a so called AI to do some "stupid" stuff like writing a lecture on the function of a coal power plant in the style of Shakespeare (I need something a little off the beaten path here for the example) then what will that thing do?
1. It will rush through its scientific database and sources (written by intelligent humans) to find all information about a coal power plant, quite helpfully there will be even complete articles on how such a thing works
2. It will also find some sources on Shakespeare's writing style - a computer is not able to analyze a text, but it can find articles where intelligent humans have done this.
3. An algorithm (written by an intelligent human) will combine the outcome of 1 and the patterns stated by 2 to write a text.

Computers are and hopefully remain dead stupid and do only what they are told - or as you write don't develop "intellect". And I hope that for the rest of my life this will stay that way. Because otherwise we are not too far from meeting naked men in restaurant parking spots asking us with a heavy Austrian accent for "our clothes, our gun and our motorbike" if you understand what I mean...
Last edited by MirkoC407; Feb 17, 2024 @ 11:20am
adlet Feb 17, 2024 @ 11:31am 
I don't disagree with how you described this process. What I am saying is that this process is pretty much what a human would do as well, if you asked a human to write an article on coal power plants in the style of Shakespear. Unless that human is an expert in both topics. Just will take longer. Depending on the human, the end result may be better or worse (and in all cases likely will be less verbose :) ). In fact, with Internet a widespread problem with students in colleges is a lot of them plagiarize content for their papers, effectively doing the same process as AI does. So yes it's not intellect in that it does not think, while we do, but it has a process that emulates the results of our thinking and gets close in many instances.

A colleague of mine who is developing our company's AI told me "expect something you would get from a professional with 3-4 years of experience on the job". Based on my personal experience I know I should expect more like something I would get from an elementary school student (and with about the same span of attention and focus on detail). But either way, you are getting something similar and that is created using a similar process even though with a very different underlying "moving parts". Kind of like, you can take a train or fly or walk (or swim) to your destination but you will ultimately get to the same place.
MirkoC407 Feb 17, 2024 @ 2:36pm 
Yes, we agree on how it works - I am basically struggling with the name "artificial intelligence" because this is a thing that cannot exist as of now, so it should have a more reasonable name. It is, other than you wrote, not the computer acting like a human intelligence when doing such tasks. It is a computer stupidly doing the stuff a human intelligence told it to do - three intelligences to be exact:

1. a developer who wrote all those routines, algorithms and scripts. That these vary in quality (one could say "level if intelligence") you found out in your little test. The results to the same question will vary by the level of intelligence that was put into writing the client. Depending on the type of question the results may vary. The client that fails on a mathematical question might deliver the best result to a lingual or musical one.

2. alle the authors of the sources that are the base of the information scroll. That these are needed and require a form of intelligence in their content, you found out as well. You cannot search the internet for reasonable sources for a timetable. There are many timetables around, but they are plain and unreviewed data, not intellectually edited and processed like a technical description of a power plant or the lingual characteristics of Shakespeare. So for your question to develop a timetable one intelligence is missing - on the data side. Without an interpretation what these numbers mean the computer does not know what to do with them. Also your question is pretty unusual for the clients around there that are more specialized in "cheating on homework" or do entertaining stuff.

3. the person asking a question - it was never more true than here that "one who asks a stupid question will get a stupid answer". As the client is unable to do an evaluation and interpretation of a question, it will just deliver an answer to exactly what it was asked.
Last edited by MirkoC407; Feb 17, 2024 @ 2:40pm
xsrvmy Feb 18, 2024 @ 12:30pm 
Here is a concrete example of this sort of unspecified behaviour/implementation detail:
Suppose you write a program with the explicitly stated goal of sorting a list of words by their first letter with no further requirement on their order. For the first attempt, you use a slow algorithm that preserves the order of the words. Now someone comes along, and write another program that calls your program, and depend on this specific property. This person has used your program's implementation detail, which you left unspecified. If you later update your program to use quick sort which would break their program, it is their fault for misusing your program in the first place.

WaW is considering the passenger boarding order here an implementation detail and has left it unspecified. It is behaviour that a well-functioning network would not depend on.
adlet Feb 18, 2024 @ 10:42pm 
Originally posted by xsrvmy:
...If you later update your program to use quick sort which would break their program, it is their fault for misusing your program in the first place...

It is behaviour that a well-functioning network would not depend on.

I understand your point and one could in theory add more cars into a train, more trains, build more lines, etc. Practically speaking there are many limitations - money, real estate occupied for other needs, terrain, government and popular sentiment, overdevelopment, etc. - and as a result, a lot of overcrowded lines in the world. I think Tokyo is known for its busier lines running at 125-200% of stated capacity - which NIMBY would not allow - and for people standing in line at the platforms to board the incoming trains. One could also say any network in the process of building is almost by definition not well-functioning - it is being built up to function better. Also, we players are often catching up on dozens or hundreds of years of transit network development that have happened in their chosen places, so building is almost a perpetual state.

Of course you have to have simplifications for the game's sake, so you can't run FIFO on boarding passengers. But likewise you can't really avoid dealing with overcrowded networks so the issue is relevant. It's definitely a very complex challenge, and probably to everyone's benefit to see if one can eventually figure out a reasonable solution. I don't think there is any fault here, it's a normal part of building complex networks to see what is and is not working and adapting - both the game and the networks, and Carlos has done an awesome job evolving and adding functionality to make it a great game, probably to his own detriment. So I hope it's all good dialog.
< >
Showing 1-13 of 13 comments
Per page: 1530 50