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.