Author Topic: Clarification on factory_enforce_demand  (Read 4167 times)

0 Members and 1 Guest are viewing this topic.

Offline colonyan

Clarification on factory_enforce_demand
« on: April 18, 2016, 03:58:57 PM »

factory_enforce_demand can be used and enabled on final consumer as well. When passenger/mail arrives there, it consumes freights faster. Does this boosted consumption rate is reflected toward the freight proportion of city growth?

Offline DrSuperGood

Re: Clarification on factory_enforce_demand
« Reply #1 on: April 18, 2016, 11:44:13 PM »
You talking about passenger bonus?

In Simutrans standard the city growth from freight is based on fraction satisfaction of end consumers. As industries consume more due to bonuses the amount of points in freight remains the same however earning them will require more freight be delivered to match the demand of the consumer.

Offline colonyan

Re: Clarification on factory_enforce_demand
« Reply #2 on: April 19, 2016, 12:45:01 AM »
You talking about passenger bonus?

In Simutrans standard the city growth from freight is based on fraction satisfaction of end consumers. As industries consume more due to bonuses the amount of points in freight remains the same however earning them will require more freight be delivered to match the demand of the consumer.

Yes passenger/mail boost.
So if I understood what you said, boosted final consumer requires more freights demand satisfied than non boosted one?
For an example,
A - boosted final consumer shop : 100 unit/month
B - non boosted consumer shop : 50 unit/month
A requires 50 unit of freight more than B to obtain same effect for population growth.

Offline DrSuperGood

Re: Clarification on factory_enforce_demand
« Reply #3 on: April 20, 2016, 03:15:11 AM »
Quote
A requires 50 unit of freight more than B to obtain same effect for population growth.
That is correct.

You must remember that passenger and mail pickup fraction does also factor into growth. If you purposely do not deliver commuters to consumers so that consumption is low and easy to supply then you will also lose out on growth from the passengers and mail not delivered.

Offline colonyan

Re: Clarification on factory_enforce_demand
« Reply #4 on: April 20, 2016, 12:14:45 PM »
Quote
You must remember that passenger and mail pickup fraction does also factor into growth. If you purposely do not deliver commuters to consumers so that consumption is low and easy to supply then you will also lose out on growth from the passengers and mail not delivered.

That is very interesting insight.
So, to balance the cost of not delivering passenger and mail to factory must be pretty important since servicing passenger and mail involves extra work... and extra goods to supply too.

Thank you for your inputs!

Offline DrSuperGood

Re: Clarification on factory_enforce_demand
« Reply #5 on: April 21, 2016, 12:25:57 AM »
Quote
So, to balance the cost of not delivering passenger and mail to factory must be pretty important since servicing passenger and mail involves extra work... and extra goods to supply too.
That is usually a positive since more goods will mean more profit in most cases.

At some stage Simutrans needs better industry spawn logic so that consumers can always be supplied. Currently it is possible for a boosted consumer to use more product than all linked producers can supply.

Example is pak128 supermarket (or another of the consumers) with textiles. Even with 3 linked and boosted textile mills with all their suppliers boosted and connected the supermarket will still be short a lot of product.

Offline Leartin

Re: Clarification on factory_enforce_demand
« Reply #6 on: April 21, 2016, 06:13:31 AM »
Example is pak128 supermarket (or another of the consumers) with textiles. Even with 3 linked and boosted textile mills with all their suppliers boosted and connected the supermarket will still be short a lot of product.

End consumers can be thought of as "sinks" for the products. They need to consume equally or more than is produced on the map in order for each industry supplying to them to run at max capacity. Otherwise, producers will shut down after a while, or not produce to their full extent if using your JIT2. Either way, you would have less stuff to deliver, and the game is about delivering stuff.
On the other hand, what benefit does the player have for completely supplying a supermarket? The game gives no real feedback how that would be a good thing. Sure, you can boost the growing speed of your cities, but that's not obvious and shouldn't be, and shouldn't be something players actively try to achieve but a side effect.

Offline colonyan

Re: Clarification on factory_enforce_demand
« Reply #7 on: April 21, 2016, 04:07:53 PM »
Two cases.
1. Consumption is greater than production. Which makes me guess flow of trains will become constant and easier to control.

2. Consumption is lesser than production. Which makes me guess flow of trains will be irregular due to just_in_time effect. Maybe requires more robust and adaptive track layout? (Not sure what i'm talking about...)

Maybe it is a matter of preference in what a player seeks while playing simutrans? Its hard to tell what preference from above 2 cases.


As of me, simutrans is about growing cities. Transportation is just the mean. Its like gardening with cities.




Offline DrSuperGood

Re: Clarification on factory_enforce_demand
« Reply #8 on: April 22, 2016, 02:34:15 AM »
JIT2 was meant to fix the freight flow issues but still has a number of problems which were noticed during more extensive testing.

The overall idea is that producers and factories seldom run a full capacity in a proper transport network with all consumers running at maximum rate. This is so that there is some flexibility for sharing producers and factories with multiple consumers, at least until more are added onto the transport network. It also makes the most sense realistically as shops and other consumers in real life usually have "stock" rather than running empty as everything sells out instantly.

Offline Leartin

Re: Clarification on factory_enforce_demand
« Reply #9 on: April 22, 2016, 08:44:13 AM »
The overall idea is that producers and factories seldom run a full capacity in a proper transport network with all consumers running at maximum rate. This is so that there is some flexibility for sharing producers and factories with multiple consumers, at least until more are added onto the transport network. It also makes the most sense realistically as shops and other consumers in real life usually have "stock" rather than running empty as everything sells out instantly.

Realistically, there are times in factories where there isn't enough work, people are working less hours and less stuff gets produced. But that are really bad times when workers fear for their jobs. And then there are times when all workers have to work overtime and do nightshifts just to meet a deadline while there are increased demands. Of course, there is a middle ground of normal productivity. which I would call 100%. This is what the factory would like to produce steadily, since both sending people home and people working overtime costs more money. The productivity of the factory is measured by what they can produce, and can be expanded however needed.

On the other end, you get consumers. I claim there is way less fluctuation in consumers, there isn't suddenly "more work to do". But what is the productivity of a store? If you are using the same logic as with factories, it's how many products could be possibly sold, no matter if there is actually a customer for them.

Just for a moment, I want you to think of how many iphones an average apple store can sell on release day, versus how many products are sold their on a normal day. Now if those release days are the apple store working at 100% productivity, how high would productivity be the rest of the year? Is ten percent a reasonable estimate?


Now, your idea is to show only half of the chain. You say the amount a factory works depends on how much the store sells, the store never sells out, so the factory needs to have a higher potential but actually works at a lower capacity, which would be what I called normal productivity. So far, that's acceptable. However, you "forgot" to apply the same logic for the store itself, which should be restricted by the demand of the people, not by it's own productivity, just like factories.


Just for the sake of argument, introduce a new variable to represent how much customers buy at the store. Hypothetically, give each store a variable reach radius, and count the amount of pax inside that radius (preferably only from res buildings). Additionally, give it the max number of people that store could serve. Now you can calculate a usage percentage, which will then be used to calculate how quickly the goods at that store deplete.

Why do that? Because right now, consumers spawn rather randomly and bring their own industry chain with them, and it seems industry chains get expanded on if a consumer does not get enough goods, which means if you only want a few end consumers but many producers, the consumers need to have high productivity. By implementing "customers" and "customer needs", you can calculate how many customers could potentially be served by the stores on the map, and create new stores of the type that has the highest demand. Additionally, when placing them you could at least try not to let their reach radius overlap.

I say for the sake of argument, because right now I don't really care whether that's programmable in a reasonable amount of work, or how much it would impact performance. It's just about how to gain the realism you claim to want through JIT2. Without that extra step, JIT2 is not more realistic than any of the other JITs, and full capacity for consumers rather than producers just a baseless preference, not an argueably better system.

Btw, you could implement JIT2 backwards - instead of smaller consumers and bigger producers that are artificially restricted, just have smaller producers and bigger consumers that calculate how quickly they have to get rid of their goods so it fits the rate new goods come in - just so the shop always has something in stock. Would make as much sense.

Offline Vladki

Re: Clarification on factory_enforce_demand
« Reply #10 on: April 22, 2016, 04:23:43 PM »
We already have final consumers boosted by arriving passengers, think of them as customers buying stuff. No need to progtam anything, maybe just fiddle with base production and pax boost.

Offline Leartin

Re: Clarification on factory_enforce_demand
« Reply #11 on: April 22, 2016, 05:06:23 PM »
I won't think of pax as customers buying stuff, since that's inconsistent. You can have pax boosting any kind of factory, and they are workers. It only makes sense that's the case for consumers as well.
Plus, that was not even the point - it's the demand that consumers should work on 100% while everything else doesn't which makes no sense.

Offline DrSuperGood

Re: Clarification on factory_enforce_demand
« Reply #12 on: April 22, 2016, 05:27:46 PM »
Quote
Now, your idea is to show only half of the chain. You say the amount a factory works depends on how much the store sells, the store never sells out, so the factory needs to have a higher potential but actually works at a lower capacity, which would be what I called normal productivity. So far, that's acceptable. However, you "forgot" to apply the same logic for the store itself, which should be restricted by the demand of the people, not by it's own productivity, just like factories.


Just for the sake of argument, introduce a new variable to represent how much customers buy at the store. Hypothetically, give each store a variable reach radius, and count the amount of pax inside that radius (preferably only from res buildings). Additionally, give it the max number of people that store could serve. Now you can calculate a usage percentage, which will then be used to calculate how quickly the goods at that store deplete.

Why do that? Because right now, consumers spawn rather randomly and bring their own industry chain with them, and it seems industry chains get expanded on if a consumer does not get enough goods, which means if you only want a few end consumers but many producers, the consumers need to have high productivity. By implementing "customers" and "customer needs", you can calculate how many customers could potentially be served by the stores on the map, and create new stores of the type that has the highest demand. Additionally, when placing them you could at least try not to let their reach radius overlap.
Consumers spawn every population milestone so consumption is already proportional to population to some extent.

Quote
I say for the sake of argument, because right now I don't really care whether that's programmable in a reasonable amount of work, or how much it would impact performance. It's just about how to gain the realism you claim to want through JIT2. Without that extra step, JIT2 is not more realistic than any of the other JITs, and full capacity for consumers rather than producers just a baseless preference, not an argueably better system.
In real life production is mostly limited by demand. Apple is a bad example because they use limited supply at release for popularity and to boost demand. A good example would be a crisp factory since they will raise their crisp production based on demand. Ultimatly the consumers set the demand in simutrans industry model so they have the final say.

I do agree with you that having consumer demand vary with local population instead of being fixed would be a good thing. However one could also implement this by spawning more but smaller consumers every linear population milestone but that brings other problems.

Quote
Btw, you could implement JIT2 backwards - instead of smaller consumers and bigger producers that are artificially restricted, just have smaller producers and bigger consumers that calculate how quickly they have to get rid of their goods so it fits the rate new goods come in - just so the shop always has something in stock. Would make as much sense.
Yes but in real life all steps of the industry and underloaded, otherwise they would expand. In any case computing such logic is quite difficult and I am considering it from time to time.

Offline Vladki

Re: Clarification on factory_enforce_demand
« Reply #13 on: April 25, 2016, 06:59:41 AM »
Considering pax arriving to final consumers as customers instead of employees makes imho sense also for traffic simulation. Typical shop has much more customers than employees.

If you want strict distinction between those, check out the latest development ideas for experimental.

Offline Leartin

Re: Clarification on factory_enforce_demand
« Reply #14 on: April 26, 2016, 02:57:50 PM »
Sorry for the late answer.

Consumers spawn every population milestone so consumption is already proportional to population to some extent.
Yes it is.
But don't factories spawn depending on demand/supply, somewhat complementing existing producers and consumers? So, if a consumer consumes more than is currently produced, more suppliars will spawn, and if too much is produced, more consumers will spawn? See, dependance on demands is already in the game without JIT2 ;)
I don't think it really counts, and I don't think you think it really counts, so let's skip that idea.

In real life production is mostly limited by demand.
In real life production is mostly limited by demand of customers. Which is what I am saying - replacing customers with consumers is not like in real life.

Apple is a bad example because they use limited supply at release for popularity and to boost demand.
That has nothing to do with what I was talking about, it wasn't about producing stuff, it was about selling them, and the "productivity" of an apple store on release day. It's similar to a toy store the week before christmas, if you like that example more.

A good example would be a crisp factory since they will raise their crisp production based on demand.
But how? Do they have some lever they have to set to "90%" instead of "80%" and their machines magically produce more crisps?

Which timespan are we talking about? I recently was to Weber Hydrauliks, they show a weekly statistic on screen of how many orders they got and how many they should get - most weeks are too subpar, but one or two spike that much higher so it evens out. This is regular for companies and really too short-timed to be simulated in Simutrans.
So what would Weber Hydrauliks do if there were several weeks with a higher amount of orders than expected? Again, first reaction would be to work overtime, maybe even nightshifts - which is costly, but better than losing a contract. But that's not maintainable, so if they really keep getting new orders in, they have to expand. Now surely, they don't have to build a new extension or even a new factory somewhere else, for starters, they can reduce their common room to a quarter the original size - which is what they actually did last year, and would be represented in Simutrans by simply changing the base production rate.

But look - this is exactly what I mean. Your crisps factory will not "just produce more than usual", at least not for long, just as a first response.
There are actually two variables here: Let's say A for average production, and M of maximal production. A factory will try to run at A, but can do M if needs be. If it runs at M for a while, it should expand, so the former M becomes the new A, and M is even higher.

But that destinction does not currently exist in Simutrans. You only have a percentag. Question is: What does it mean?

IF 100% is akin to A, you are right in having shops run at 100% constantly, but wrong in not having suppliers do the same.
IF 100% is akin to M, you are right in having suppliers run lower than that usually, but wrong for having shops running at 100%

So no matter how you see it, both is wrong. Which begs the question why it would be better to be wrong in this way, rather than being wrong by having suppliers running at 100% and shops not - especially since factories are much closer to 100% of what it could potentially do than shops.

Ultimatly the consumers set the demand in simutrans industry model so they have the final say.
Just a side note: This is only true with JIT1 and JIT2, not with JIT0 - which is probably the "original" way the game was played, right? Thus, it's not a "rule of Simutrans" that consumers set everything, it's game mode dependant.


In general: I am not against the idea behind JIT2. I just really dislike that you seem to see reaching 100% for consumers is some kind of goal for everyone, and creating consumers with the intention to not be satisfied even with many suppliers somehow wrong. As a transportation simulator, it makes a lot more sense to "transport away 100% of all stuff produced".
Now you have your arguements for why you think your way is the best, and they are not bad. But everytime you use real life as an example, someone could come and use even more real life to make the opposite point, and everything looks different again. Thus, unless there is a better industry model for how many industries (consumers and producers) are spawned when and where, which can be toggled by enough parameters for creators to do exactly what they want and players to tweak it to their needs - there can't be a single solution that's best for everyone.

Offline DrSuperGood

Re: Clarification on factory_enforce_demand
« Reply #15 on: April 26, 2016, 06:36:46 PM »
Quote
See, dependance on demands is already in the game without JIT2
JIT2 alters how goods are ordered so that they are ordered gradually instead of endless bursts, and not how factories are placed or linked.

Quote
In general: I am not against the idea behind JIT2. I just really dislike that you seem to see reaching 100% for consumers is some kind of goal for everyone, and creating consumers with the intention to not be satisfied even with many suppliers somehow wrong. As a transportation simulator, it makes a lot more sense to "transport away 100% of all stuff produced".
It makes sense to transport 100% of everything that needs transporting. The idea is the game logic has some structure behind "what needs transporting" otherwise you end up like OpenTTD where you could transport it anywhere you wanted.

Offline Leartin

Re: Clarification on factory_enforce_demand
« Reply #16 on: April 27, 2016, 04:33:46 AM »
Well, since you keep avoiding the main point, there is no use in continuing this.