Guide: How to Benchmark in Factorio, by BobAAAces.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
What do you do if you have one blueprint producing 941 items per minute and a second producing 1081 items per minute?
If you visit an LCM Calculator, you will discover the LCM is 1,017,221, (the multiplication of the two outputs), such that you'd need 941 copies of the latter and 1081 copies of the former.
But maybe you don't really want to copy both builds a thousand times. How few copies can you make, below your choice of maximum reasonable copies, while minimizing the error?
This python function, usable in a colab.research.google.com notebook, will give you that answer.
from math import ceil
from math import floor
def items_per_ticks_find_best_match(build_a_items, build_b_items, max_copies):
"""For two build's items produced per same # ticks, find best ratio of builds to region clone under max_copies for equal throughput UPS testing"""
build_a_copies, build_b_copies = 0, 0
best_rel_delta = 1.0
fewer_build_items, more_bldg_items = (min(build_a_items, build_b_items), max(build_a_items, build_b_items))
swapped = build_b_items < build_a_items
for less_bldg_copies in range(1, 1 + max_copies):
sm_bldg_items = fewer_build_items * less_bldg_copies
residual_items = min(
sm_bldg_items % more_bldg_items,
more_bldg_items - (sm_bldg_items % more_bldg_items)
)
more_bldg_copies = round(fewer_build_items * less_bldg_copies / more_bldg_items)
lg_bldg_items = more_bldg_copies * more_bldg_items
rel_delta = residual_items / lg_bldg_items
#print(fewer_build_items, more_bldg_items, less_bldg_copies, sm_bldg_items, residual_items, more_bldg_copies, swapped)
if rel_delta < best_rel_delta:
best_rel_delta = rel_delta
build_a_copies, build_b_copies = (less_bldg_copies, more_bldg_copies) if not swapped else (more_bldg_copies, less_bldg_copies)
print("Build A {: >5} items/ticks => Copies: {: >5}".format(build_a_items, build_a_copies))
print("Build B {: >5} items/ticks => Copies: {: >5}".format(build_b_items, build_b_copies))
print("Relative Delta: {}".format(best_rel_delta))
Plug in the two values for each build's output, and the maximum number of copies you're willing to entertain, and discover the copies of each build producing the least error!
If you were to select the entire 12 beacon furnace design (shown on left) to copy, you would have a lot of new copies that were not connected via red circuit wires to the combinators.
To keep the circuit wires connected (for copying the design to the east), add a power pole to the other direction and connect it with a red circuit wire (shown on right).
Now when you copy your 12 beacon design to the east, it will attach circuit wires horizontally and keep all the copies connected.