Add some more ideas
This commit is contained in:
@@ -84,6 +84,165 @@ For example an inserter will perform an intersection, because it can only accept
|
||||
But a belt will perform a union, because might have constraints coming from inserters taking from them and downstream belts so the items can take either path.
|
||||
Basically the constraints for every edge will be combined using an intersection with the constraints of the node itself, and then all downstream edge constraints will be combined using a union to form the final upstream constraint.
|
||||
|
||||
JOIN Operator: used to combine multiple "or" constraints, for example for combining downstream constraints.
|
||||
This is done by adding all the limits for items together.
|
||||
|
||||
CHAIN Operator: used to combine multiple "and" constraints.
|
||||
|
||||
### Representation
|
||||
A tree with 3 levels, each doing something different
|
||||
|
||||
The lowest level, selects by item.
|
||||
The next level limits the rate per item.
|
||||
The top level limits the total throughput.
|
||||
|
||||
|
||||
|
||||
### Examples
|
||||
{% carousel() %}
|
||||
{% carousel_item() %}
|
||||
Before propogation
|
||||
{% mermaid() %}
|
||||
---
|
||||
title: Inserter Feeding into Assembler
|
||||
---
|
||||
flowchart BT
|
||||
subgraph assembler
|
||||
direction BT
|
||||
root_1["unlimited"]
|
||||
1_first_limit["<= 5/s"]
|
||||
1_first_items["iron"]
|
||||
1_second_limit["<= 10/s"]
|
||||
1_second_items["copper wire"]
|
||||
|
||||
1_first_limit --> root_1
|
||||
1_second_limit --> root_1
|
||||
1_first_items --> 1_first_limit
|
||||
1_second_items --> 1_second_limit
|
||||
end
|
||||
|
||||
subgraph inserter with iron filter
|
||||
direction BT
|
||||
root_2["total <= 20/s"]
|
||||
2_first_limit["<= 20/s"]
|
||||
2_first_items["iron"]
|
||||
|
||||
2_first_limit --> root_2
|
||||
2_first_items --> 2_first_limit
|
||||
end
|
||||
{% end %}
|
||||
{% end %}
|
||||
|
||||
{% carousel_item() %}
|
||||
After first propogation step
|
||||
{% mermaid() %}
|
||||
---
|
||||
title: Inserter Feeding into Assembler
|
||||
---
|
||||
flowchart BT
|
||||
subgraph assembler
|
||||
direction BT
|
||||
root_1["unlimited"]
|
||||
1_first_limit["<= 5/s"]
|
||||
1_first_items["iron"]
|
||||
1_second_limit["<= 10/s"]
|
||||
1_second_items["copper wire"]
|
||||
|
||||
1_first_limit --> root_1
|
||||
1_second_limit --> root_1
|
||||
1_first_items --> 1_first_limit
|
||||
1_second_items --> 1_second_limit
|
||||
end
|
||||
|
||||
subgraph inserter with iron filter
|
||||
direction BT
|
||||
root_2["total <= 20/s"]
|
||||
2_first_limit["<= 20/s && <= 5/s"]
|
||||
2_first_items["iron"]
|
||||
2_second_limit["<= 0/s && <= 10/s"]
|
||||
2_second_items["copper wire"]
|
||||
|
||||
2_first_limit --> root_2
|
||||
2_second_limit --> root_2
|
||||
2_first_items --> 2_first_limit
|
||||
2_second_items --> 2_second_limit
|
||||
end
|
||||
{% end %}
|
||||
{% end %}
|
||||
|
||||
{% carousel_item() %}
|
||||
After second propogation step
|
||||
{% mermaid() %}
|
||||
---
|
||||
title: Inserter Feeding into Assembler
|
||||
---
|
||||
flowchart BT
|
||||
subgraph assembler
|
||||
direction BT
|
||||
root_1["unlimited"]
|
||||
1_first_limit["<= 5/s"]
|
||||
1_first_items["iron"]
|
||||
1_second_limit["<= 10/s"]
|
||||
1_second_items["copper wire"]
|
||||
|
||||
1_first_limit --> root_1
|
||||
1_second_limit --> root_1
|
||||
1_first_items --> 1_first_limit
|
||||
1_second_items --> 1_second_limit
|
||||
end
|
||||
|
||||
subgraph inserter with iron filter
|
||||
direction BT
|
||||
root_2["total <= 20/s"]
|
||||
2_first_limit["<= 5/s"]
|
||||
2_first_items["iron"]
|
||||
2_second_limit["<= 0/s"]
|
||||
2_second_items["copper wire"]
|
||||
|
||||
2_first_limit --> root_2
|
||||
2_second_limit --> root_2
|
||||
2_first_items --> 2_first_limit
|
||||
2_second_items --> 2_second_limit
|
||||
end
|
||||
{% end %}
|
||||
{% end %}
|
||||
|
||||
{% carousel_item() %}
|
||||
After final propogation step
|
||||
{% mermaid() %}
|
||||
---
|
||||
title: Inserter Feeding into Assembler
|
||||
---
|
||||
flowchart BT
|
||||
subgraph assembler
|
||||
direction BT
|
||||
root_1["unlimited"]
|
||||
1_first_limit["<= 5/s"]
|
||||
1_first_items["iron"]
|
||||
1_second_limit["<= 10/s"]
|
||||
1_second_items["copper wire"]
|
||||
|
||||
1_first_limit --> root_1
|
||||
1_second_limit --> root_1
|
||||
1_first_items --> 1_first_limit
|
||||
1_second_items --> 1_second_limit
|
||||
end
|
||||
|
||||
subgraph inserter with iron filter
|
||||
direction BT
|
||||
root_2["total <= 20/s"]
|
||||
2_first_limit["<= 5/s"]
|
||||
2_first_items["iron"]
|
||||
|
||||
2_first_limit --> root_2
|
||||
2_first_items --> 2_first_limit
|
||||
end
|
||||
{% end %}
|
||||
{% end %}
|
||||
|
||||
{% end %}
|
||||
|
||||
|
||||
# Examples
|
||||
|
||||
## Belt Line with one slower belt
|
||||
|
||||
Reference in New Issue
Block a user