Heuristic
Entropy-weighted heuristic move generator.
HeuristicMoveGenerator
dataclass
HeuristicMoveGenerator(
scorer: CandidateScorer,
params: SearchParams,
search_nodes: dict[int, EntropyNode],
)
Generates ranked candidate movesets using entropy-weighted scoring.
Implements the MoveGenerator protocol. The traversal sets
search_nodes before the search loop begins so the generator
can read per-node entropy.
search_nodes
instance-attribute
search_nodes: dict[int, EntropyNode]
Mapping of id(ConfigurationNode) -> entropy metadata node.
generate
generate(
node: ConfigurationNode, tree: ConfigurationTree
) -> Iterator[frozenset[LaneAddress]]
Yield candidate movesets ranked by moveset score (descending).
Steps: 1. Get entropy from traversal metadata node. 2. Score all (qubit, move_type, bus_id, direction) pairs. 3. Per-qubit: keep top C triples. 4. Group by (move_type, bus_id, direction), collect positive-score qubits. 5. Resolve conflicts within each group (greedy by score). 6. Build moveset per group, score with score_moveset, sort descending.
Source code in .venv/lib/python3.12/site-packages/bloqade/lanes/search/generators/heuristic.py
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | |