TODO: explain the ideas here

Abstract class

MoveStrategy(ensembles, group, replace)

Each MoveStrategy describes one aspect of the approach to the overall MoveScheme.

Shooting strategies

OneWayShootingStrategy([selector, …])

Strategy for OneWayShooting.

ForwardShootingStrategy([selector, …])

Strategy for ForwardShooting only.

TwoWayShootingStrategy(modifier[, selector, …])

Strategy to make a group of 2-way shooting movers.

Replica exchange strategies

NearestNeighborRepExStrategy([ensembles, …])

Make the NN replica exchange scheme among ordered ensembles.

AllSetRepExStrategy([ensembles, group, replace])

Make the replica exchange strategy with all ensembles in each sublist.

SelectedPairsRepExStrategy([ensembles, …])

Add replica exchange swap for specific pairs of ensembles.

Replica motion type strategies

ReplicaExchangeStrategy([ensembles, group, …])

Converts EnsembleHops to ReplicaExchange (single replica to default)

EnsembleHopStrategy([ensembles, group, …])

Converts ReplicaExchange to EnsembleHop.

Path reversal strategies

PathReversalStrategy([ensembles, group, replace])

Creates PathReversalMovers for the strategy.

Minus move strategies

MinusMoveStrategy([engine, ensembles, …])

Takes a given scheme and makes the minus mover.

SingleReplicaMinusMoveStrategy([engine, …])

Takes a given scheme and makes a single-replica minus mover.

Global organization strategies

OrganizeByMoveGroupStrategy([ensembles, …])

Default global strategy.

OrganizeByEnsembleStrategy([ensembles, …])

Global strategy to organize by ensemble first.

PoorSingleReplicaStrategy([ensembles, …])

Organizes by ensemble, then readjusts the weights to have a bunch of null moves.