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.
|
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.
|
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
|
# Examples
|
||||||
|
|
||||||
## Belt Line with one slower belt
|
## Belt Line with one slower belt
|
||||||
|
|||||||
Reference in New Issue
Block a user