Nohome
No-home placement strategy: two-phase return assignment + entangling routing.
Instead of returning atoms to their original home positions after each CZ layer, this strategy assigns displaced qubits to optimal home sites that minimise future movement. The assignment uses the Hungarian algorithm with gamma-decayed future CZ partner proximity as a lookahead signal.
Phase 1 (return): Hungarian-pick a home layout, then route current → home
via fixed-target solve.
Phase 2 (entangling): Hungarian-pick CZ-staging targets (with optional
lookahead-aware blend), then route home → staging via fixed-target solve.
This mirrors how :class:PhysicalPlacementStrategy routes to pre-computed
CZ targets.
Both phases run in Rust via MoveSolver.solve_nohome.
NoHomePlacementStrategy
dataclass
NoHomePlacementStrategy(
arch_spec: ArchSpec,
strategy: SearchStrategy = (
lambda: SearchStrategy.IDS
)(),
max_expansions: int | None = 100,
restarts: int = 20,
deadlock_policy: DeadlockPolicy = (
lambda: DeadlockPolicy.MOVE_BLOCKERS
)(),
top_c: int | None = None,
gamma: float = 0.85,
lambda_lookahead: float = 0.5,
k_candidates: int = 8,
top_bus_signatures: int = 6,
bus_reward_rho: int = 1,
)
Bases: NoReturnStrategyBase
flowchart TD
bloqade.lanes.heuristics.physical.nohome.NoHomePlacementStrategy[NoHomePlacementStrategy]
bloqade.lanes.heuristics.physical._no_return_base.NoReturnStrategyBase[NoReturnStrategyBase]
bloqade.lanes.analysis.placement.strategy.PlacementStrategyABC[PlacementStrategyABC]
bloqade.lanes.heuristics.physical._no_return_base.NoReturnStrategyBase --> bloqade.lanes.heuristics.physical.nohome.NoHomePlacementStrategy
bloqade.lanes.analysis.placement.strategy.PlacementStrategyABC --> bloqade.lanes.heuristics.physical._no_return_base.NoReturnStrategyBase
click bloqade.lanes.heuristics.physical.nohome.NoHomePlacementStrategy href "" "bloqade.lanes.heuristics.physical.nohome.NoHomePlacementStrategy"
click bloqade.lanes.heuristics.physical._no_return_base.NoReturnStrategyBase href "" "bloqade.lanes.heuristics.physical._no_return_base.NoReturnStrategyBase"
click bloqade.lanes.analysis.placement.strategy.PlacementStrategyABC href "" "bloqade.lanes.analysis.placement.strategy.PlacementStrategyABC"
Two-phase placement: return assignment + entangling routing.
Parameters
arch_spec:
Architecture specification.
strategy:
Inner search strategy as a :class:SearchStrategy enum used for
the two routing phases. Default attr:
SearchStrategy.IDS.
max_expansions:
Maximum node expansions per solve call (shared across phases).
restarts:
Number of parallel restarts with perturbed scoring inside each
routing solve (return phase + entangling phase). The two-phase
Hungarian assignments themselves are deterministic; diversity
comes from the candidate-home-layout fan-out. Default 20.
deadlock_policy:
:class:DeadlockPolicy enum value controlling how the heuristic
generator handles deadlocks during routing. Default
attr:
DeadlockPolicy.MOVE_BLOCKERS.
gamma:
Discount factor for future CZ layer weights in the return
assignment (default 0.85).
lambda_lookahead:
Blend weight for future proximity penalty in the return
assignment (default 0.5).
k_candidates:
Maximum candidate holes per returner for cost-matrix pruning
(default 8).
top_bus_signatures:
Number of bus-reward variant assignments to generate (default
6). Each variant rewards edges sharing a high-coverage lane
signature, biasing the assignment toward layouts with parallel
routing.
bus_reward_rho:
Per-edge hop-count discount applied to edges using a top
signature when building bus-reward variant cost matrices
(default 1).
Notes
Unlike :class:NoReturnPlacementStrategy and
:class:RecedingHorizonNoReturnPlacementStrategy, this strategy does
not pass top_c to SolveOptions (it inherits the base default
None), matching the historical behaviour of the two-phase
solve_nohome entry point.