execute

open override fun execute(parents: MutableList<BinarySolution>): MutableList<BinarySolution>

Executes the pruning crossover on the given parents.

Workflow:

  1. Ensure both parents are BestSubsetSolution (lift if necessary).

  2. Normalize parent masks to exactly N bits.

  3. With probability probability, build:

    • Selective child = bitwise AND.

    • Inclusive child = bitwise OR. Otherwise, clone normalized parent masks.

  4. Ensure each child has at least one true bit.

  5. Materialize children as copies of parents with new bitsets installed.

  6. Reset caches/flags for safety.

Return

a mutable list with two children (BestSubsetSolution).

Parameters

parents

list of two parent solutions.

Throws

if fewer than 2 parents are supplied or bit lengths differ.