[REQUEST] Belts logistic system
Posted: Wed Jan 25, 2017 9:39 pm
I have an idea of making belt logistic system.
Introduction:
-------------
- When you build a factory at some point you scale up to areas in your factory, instead of individual buildings.
There should be a way to automate your mess with all the belts.
I tried to do it with combinators... There is so much mess with the cables, I don't like how it looks like at all...
The following entities maybe could give you some help with this.
I hope the following idea will look much more interesting, since it allows you to make logistic system with belts. Which should look quite good, at least i wanna see that
The idea in short
-------------
A research "Factory Logistic planning" gives you some additional machines,
and a global control system.
The system counts all the inputs and outputs of connected belts, and then decided which products should be but on belts to deliver them to the requested site.
So, the idea is about same as logistic robots, but is to be implemented on the ground: with belts, storages, inseters, loaders, and unloaders.
Long description
-------------
There are 3 types of components in ground logistic network:
- Ground Logistic Storages(chest, long chest, warehouse or parked train - whatever)
- Loader/unloader (or inserter)
- Belts
Organization
- Each ground logistic network have Central Storage Entity (best if its a warehouse)
- The network includes all the storages which are connected to Central Storage
- All other storages connected to it form a tree (or in more complex cases - a mesh with center)
- Because we have a tree, each store (except central) has a parent
- All connected storages can be ground requester chest or ground storage chests
- Central Storage Entity acts as a requester in all means
Precalculations
What is a connection
A connection is a belt with input and output loaders (or inserters),
or a inseter targeted directly to another chest.
Both cases have direction (obviosly).
The direction is outgoing if it is pointed FROM central storage and is incoming if going TO central storage.
Ground Logistic Requester
---
(Not the same as vanilla logistic chests, they exted and change idea of vanilla ones)
Parameters
Request - Each chest can have a request. It can be set manually as for vanilla chest or it can be calculated (calc process described below)
The chest will try to have this items at specified count, or a some more than specified.
Precalculations
Full request = [Request] + [Requests of other chests' who connected through this one]
For central storage entity it's the same - the full request for it is player's current goal (which he sets in GUI) plus all the requests of all the requesters
Item ranges - min and max for each item type. For the first run i suggest values min = [Full Request], max = [Full Request] * 2
Excess items - all the items types with count > max
Ground Logistic Storage
---
Parameters
Wanted item type - CAN have some types be set as primary types for this store. Will try to store only this items, but if other stores are occupies - will be filled up to the end.
Recommended first version limitations
Calculate only connections without any splitters and loopbacks - print red error on them. They can be calculated too, but have more complex computations to be done.
You really don't need them when using ground logistic network, because loopbacks are done with the network itself and instead of a spliter you can have additional requester chest.
On Tick work
Unloaders to outgoing connection of a requester
Check if requester on this connection have less then Full request - then put in requested items
Unloaders to incoming connection of requester (a belt or inseter pointed FROM requester)
Check if requester have too many items - then put them to connection
Unloaders to output connection of storage (a belt or inseter pointed TO requester)
Check if the storage have too many items less 5% empty space - then send them away, beginning from unwanted types (see params).
Check if the store have unwanted types and reciever storage have less than 90% empty space - then send them away, beginning from unwanted types (see params).
Unloaders to input connection of storage (a belt or inseter pointed FROM requester)
Check if central storage is less then it's request and this store have this item - if true - send the requested item
Loaders
Just load all the stuff, same as vanilla, no additional logic required.
I think this would be great if all this stuff would not have too many additional items to the game,
as I see it:
- It have a research for Ground Logistic Network
- This research allows you to connect EXISTING filtered inserters, stack inserters and loaders to Ground Logistic Network
- The connection is wireless (layed inside belts and inseters, no additional wires)
- So there is no special belts, or inserters or loaders
- There are special Ground Logistic Chests, which should not be mixed with robot logistic chests (this two networks will have much different throughput)
- Maybe there is a ground logistic network computaion center, which should be build, or this can be a big central storage
More complex ideas
Calculation of requests
Can go throuh the belts to inserters and find out which factory reciepies are used. Multiply by 10, sum and use as a request.
Grades - distance to the central storage
Set all grades to 0
Find all outgoing connected chests for central and set their outgoing grade to 1
Find all incoming connected chests for central and set their incoming grade to 1
For all chests with grade 0 - set grade = min(grade near me) + both inserters delay + belt's delay (calculated from it's range and speed)
Repeat, while at least one grade was changed on prev iteration
After this all chests can have at most two grades - incoming and outgoing.
Grades can be used to make path of items more optimal.
Introduction:
-------------
- When you build a factory at some point you scale up to areas in your factory, instead of individual buildings.
There should be a way to automate your mess with all the belts.
I tried to do it with combinators... There is so much mess with the cables, I don't like how it looks like at all...
The following entities maybe could give you some help with this.
I hope the following idea will look much more interesting, since it allows you to make logistic system with belts. Which should look quite good, at least i wanna see that

The idea in short
-------------
A research "Factory Logistic planning" gives you some additional machines,
and a global control system.
The system counts all the inputs and outputs of connected belts, and then decided which products should be but on belts to deliver them to the requested site.
So, the idea is about same as logistic robots, but is to be implemented on the ground: with belts, storages, inseters, loaders, and unloaders.
Long description
-------------
There are 3 types of components in ground logistic network:
- Ground Logistic Storages(chest, long chest, warehouse or parked train - whatever)
- Loader/unloader (or inserter)
- Belts
Organization
- Each ground logistic network have Central Storage Entity (best if its a warehouse)
- The network includes all the storages which are connected to Central Storage
- All other storages connected to it form a tree (or in more complex cases - a mesh with center)
- Because we have a tree, each store (except central) has a parent
- All connected storages can be ground requester chest or ground storage chests
- Central Storage Entity acts as a requester in all means
Precalculations
What is a connection
A connection is a belt with input and output loaders (or inserters),
or a inseter targeted directly to another chest.
Both cases have direction (obviosly).
The direction is outgoing if it is pointed FROM central storage and is incoming if going TO central storage.
Ground Logistic Requester
---
(Not the same as vanilla logistic chests, they exted and change idea of vanilla ones)
Parameters
Request - Each chest can have a request. It can be set manually as for vanilla chest or it can be calculated (calc process described below)
The chest will try to have this items at specified count, or a some more than specified.
Precalculations
Full request = [Request] + [Requests of other chests' who connected through this one]
For central storage entity it's the same - the full request for it is player's current goal (which he sets in GUI) plus all the requests of all the requesters
Item ranges - min and max for each item type. For the first run i suggest values min = [Full Request], max = [Full Request] * 2
Excess items - all the items types with count > max
Ground Logistic Storage
---
Parameters
Wanted item type - CAN have some types be set as primary types for this store. Will try to store only this items, but if other stores are occupies - will be filled up to the end.
Recommended first version limitations
Calculate only connections without any splitters and loopbacks - print red error on them. They can be calculated too, but have more complex computations to be done.
You really don't need them when using ground logistic network, because loopbacks are done with the network itself and instead of a spliter you can have additional requester chest.
On Tick work
Unloaders to outgoing connection of a requester
Check if requester on this connection have less then Full request - then put in requested items
Unloaders to incoming connection of requester (a belt or inseter pointed FROM requester)
Check if requester have too many items - then put them to connection
Unloaders to output connection of storage (a belt or inseter pointed TO requester)
Check if the storage have too many items less 5% empty space - then send them away, beginning from unwanted types (see params).
Check if the store have unwanted types and reciever storage have less than 90% empty space - then send them away, beginning from unwanted types (see params).
Unloaders to input connection of storage (a belt or inseter pointed FROM requester)
Check if central storage is less then it's request and this store have this item - if true - send the requested item
Loaders
Just load all the stuff, same as vanilla, no additional logic required.
I think this would be great if all this stuff would not have too many additional items to the game,
as I see it:
- It have a research for Ground Logistic Network
- This research allows you to connect EXISTING filtered inserters, stack inserters and loaders to Ground Logistic Network
- The connection is wireless (layed inside belts and inseters, no additional wires)
- So there is no special belts, or inserters or loaders
- There are special Ground Logistic Chests, which should not be mixed with robot logistic chests (this two networks will have much different throughput)
- Maybe there is a ground logistic network computaion center, which should be build, or this can be a big central storage
More complex ideas
Calculation of requests
Can go throuh the belts to inserters and find out which factory reciepies are used. Multiply by 10, sum and use as a request.
Grades - distance to the central storage
Set all grades to 0
Find all outgoing connected chests for central and set their outgoing grade to 1
Find all incoming connected chests for central and set their incoming grade to 1
For all chests with grade 0 - set grade = min(grade near me) + both inserters delay + belt's delay (calculated from it's range and speed)
Repeat, while at least one grade was changed on prev iteration
After this all chests can have at most two grades - incoming and outgoing.
Grades can be used to make path of items more optimal.