<aside> 💡 These weights should not be confused with Field iWeights (which have a different function).

</aside>

Since version 1.2, Assembler makes use of weights to give more nuance to its decisional process.

Handles, AssemblyObjects and Rules all have weights, which by default are set to 1. Rule weights are integer, while Handles and AO are floating point values.

Weights are used during sender candidate selection: while building an Assemblage with non-random Heuristics, weights are included in the computation to decide the most suitable sender candidate. For each candidate sender AO, a Candidate Factor $C_f$ is computed as follows:

$$ C_f = R_w + AO_w + H_w $$

Where:

If two or more sender candidates have the same computed values (i.e. Field scalar value), the one with larger $C_f$ prevails. In case of more than one winner, the first found prevails. For more detailed information, see Why do the order of an AssemblyObject in the Set and the order of rules in the Heuristic Set matter?

To understand more in depth decision and dimensionality, see The logic of choice.

When multiple sender candidates satisfy the initial criteria, weights affect the choice of AOs in an assemblage as follows:

As you might have already surmised, weights work in a relative way: if all other weights are 1, a single weight value of 1.001 will have the same effect of a value of 1000.

Suppose you have 3 rules (rule A, rule B and rule C), and you want rule A to prevail over B and C and rule B to prevail on C but not on A. In this case: weight A > weight B > weight C, and all these value combinations satisfy the condition and lead to the same result:

weight A 3 102 3000 30000
weight B 2 101 2000 200
weight C 1 100 1000 1

Increasing the largest weight only, while leaving all the others untouched, won’t affect the result.