I covered this a bit with Alexandra Nelson from Perkins Eastman in the AU 2020 session Generative Design At Hogwarts. There is a package with the same name which has a permutation node you can utilize as well.

In a list of 5 items there are 5! or 120 possible ways to sort the list. Using a seeded shuffle it takes 473 searches to find all 120 possible orders. Thatâs almost 4x the amount of work. Worse yet because the results at seed 326 have no correlation to 327 or 325, generative designâs optimize feature is flying entirely blind - the optimization method might as well be tossed for REALLY BIG randomized methods from a standpoint of effective design exploration.

Meanwhile with a permutation-based solution you not only explore the space more rapidly (the 1/4 ratio expands to larger values as there is no pattern in the seeds), but there is a pattern (albeit not an easily identifiable one) in the exploration.

However the limitations to permutation-based exploration which may make it impractical. Currently the largest number which can be completely exposed by Dynamoâs Number Slider is 999,999,999,999,999 (999 trillion). Now this is a HUGE number, but it can rapidly be dwarfed by the scale of possible list permutations as youâre working in factorial space, which is indicated by the notation `!`

. For a sense of scope, this is how that content scales up:

1! = 1

2! = 2

3! = 6

4! = 24

5! = 120

6! = 720

7! = 5040

8! = 40320

9! = 362880

10! = 3628800

11! = 39916800

12! = 479001600

13! = 6227020800

14! = 87178291200

15! = 1307674368000

16! = 20922789888000

17! = 355687428096000

18! = 6402373705728000

As you can see, by the time we hit a list 18 items deep we exceed the limit of a slider in Dynamo, which means we are missing out on at least 6,000,000,000,000,000 possible sort orders, more than 90% of the options in the set. I did build the `nth permutation`

node in the `Generative Design at Hogwarts`

package to allow feeding a list of slider values summing each as a 10^15th in succession (effectively performing `(slider1* 10^15) + slider 2`

so you get up to 30 digits). However because all sliders are mutated evenly, optimize doesnât implement well here as the value of the first slider has more impact on the net result. If memory serves, I was effectively capped at 19 items.

There are other ways to explore larger sets, but generally speaking you should try and group items into bins, optimize the sequence of the bins, and then optimize the items in each bin, before finally merging and doing a fill or relaxation tool to âoccupyâ the voids left over.

Hope this helps!