GlobalOptimization - ProkopHapala/SimpleSimulationEngine GitHub Wiki
Short Term Road map
distance metric for two rotation states (and related force transforms)
dimer method for one molecule with 7 DOFs (pos,qrot)
then extend to (configuration space collision dynamics) with N sample configurations (N>2)
then add forces from frozen atoms, or some other external forcefield (e.g. some valley)
Few water molecules (3-8) relax by basin hopping and distinguished by hash-map accelerated comparison
Dimer method with our-projectiong R=const constrain (rather than inter-configuration force) to allow stiff constrain without compromising relaxation time step dt
Generate initial configuration by border search manner with pos on rectangura grid and rot by connectivity graph
Tests / prototypes:
/python/test_Molecular.py should be modified such that molecular geometry can be transfered easily
/python/test_MolecularDist.py should test comparison of cluster geometries with and without hashmap (compare speed and robustness)
optimize electrostatics by fast multipole method in /python/test_Multipole.py
Mutation strategies
Move just single molecule - cost of such move is small since collision can be computed efficiently against pre-computed hash-map of all other atoms
move the molecule along it's soft DOFs. These DOFs can be found by several ways
small elementary moves of the molecule (rotations, translations ... by 0.2A )
statistics of previously sampled configurations
Mutation box - if mutation is bounded to rather small move (1.0-3.0A) of single molecule, it is enough to test collision just with subset of atoms inside that box, which is much faster than operation on all atoms.
Dimer method for individual molecules
or more configuration space collision dynamics (collision between N configurations; dimer method is special case for N=2 )
needs to compute distance metric for two rotation states (and corresponding force transformations) - it can be done by cosine-distance between vectors of rotation matrix
we need special Optimizer for just 1 molecule (7 DOFs; pos,qrot) which optimize with respect to 2 forces: (1) atom-wise short range collision forces from static atoms of the rest of the system (accelerated by grid or hashmap) (2) 7DOFs configuration space collision forces with N own replicas (previously sampled configurations of the same molecule)
Acceleration by bounding sphere tree - it does not need global uniform grid-like parametrization, which is hard for rotations and internal coordinates, but only distance metric. Therefore it should be more general and much easier to implement.
Nevertheless, for single-molecule mutations simple const-length list of configurations should be sufficient, because the number of configurations N during one mutations is quite small (order ~10). We forget the configurations with biggest distance from current conf.
Border search in posXrot-space - border search is quite efficient due to regular structure of space paving and just on energy/force/collision evalutation per mutation. However, rotation space cannot be paved by regular grid for topological reasons. Therefore we have to use less regularly distributed samples with neighborhood stored as connectivity graph. Total search space is than direct product of translation grid and rotation mesh. This rotation neighborhoods can be optimized for case of symmetric molecules (where some rotations are equivalent).
Pos-then-rot dynamics - two step dynamics where (i) molecule moved to particual position, and than (ii) several rotations are tried. The advantage is two fold - (i) it can be easily tested whether the configuration was visited before (grid-map) (ii) Evaluation of atom-wise interactions can be optimized since we know that atoms of molecule are limited in particular box.
Spherical minimum - for given position of molecular center precompute radial dependence of minimal energy over all rotations.