v2DM-DOCI  1.0
simanneal::SimulatedAnnealing Class Reference

#include <SimulatedAnnealing.h>

+ Collaboration diagram for simanneal::SimulatedAnnealing:

Public Member Functions

 SimulatedAnnealing (const CheMPS2::Hamiltonian &)
 
 SimulatedAnnealing (CheMPS2::Hamiltonian &&)
 
virtual ~SimulatedAnnealing ()
 
bool accept_function (double)
 
void optimize ()
 
void optimize_mpi ()
 
double calc_new_energy ()
 
void calc_energy ()
 
double get_energy () const
 
void Set_max_angle (double)
 
void Set_delta_angle (double)
 
void Set_start_temp (double)
 
void Set_delta_temp (double)
 
simanneal::UnitaryMatrixget_Optimal_Unitary ()
 
CheMPS2::HamiltoniangetHam () const
 
OrbitalTransformgetOrbitalTf () const
 
doci2DM::MethodgetMethod () const
 
void UseBoundaryPoint ()
 
void UsePotentialReduction ()
 
doci2DM::PotentialReductiongetMethod_PR () const
 
doci2DM::BoundaryPointgetMethod_BP () const
 

Private Attributes

std::unique_ptr< doci2DM::Methodmethod
 
std::unique_ptr< CheMPS2::Hamiltonianham
 Holds the current hamiltonian. More...
 
std::unique_ptr< simanneal::OrbitalTransformorbtrans
 the actual orbital transform More...
 
std::unique_ptr< simanneal::UnitaryMatrixopt_unitary
 the current unitary More...
 
double energy
 energy of current iteration More...
 
double start_temp
 the start temperatur More...
 
double delta_temp
 the change in temperatur between steps More...
 
double delta_angle
 the change in the angle allows in steps More...
 
double max_angle
 the maximum allows angle More...
 
unsigned int steps
 the number of steps done More...
 
unsigned int max_steps
 max number of steps More...
 
double cur_temp
 current temperature More...
 
unsigned int unaccepted
 number of unaccepted steps More...
 
bool stop_running
 bool to indicate if we should quite the optimalisation More...
 
std::random_device rd
 the real random input (hopefully) More...
 
std::mt19937_64 mt
 our pseudo-random generator More...
 

Detailed Description

Definition at line 42 of file SimulatedAnnealing.h.

Constructor & Destructor Documentation

simanneal::SimulatedAnnealing::SimulatedAnnealing ( const CheMPS2::Hamiltonian mol)

You still need to set the max_angle, delta_angle, start_temp and delta_temp after creating the object.

Parameters
molthe molecular data to use

Definition at line 46 of file SimulatedAnnealing.cpp.

simanneal::SimulatedAnnealing::SimulatedAnnealing ( CheMPS2::Hamiltonian &&  mol)

Definition at line 67 of file SimulatedAnnealing.cpp.

simanneal::SimulatedAnnealing::~SimulatedAnnealing ( )
virtualdefault

Member Function Documentation

bool simanneal::SimulatedAnnealing::accept_function ( double  e_new)

Decide wether or not to accept the new energy

Parameters
e_newthe new energy
Returns
accept or not

Definition at line 123 of file SimulatedAnnealing.cpp.

void simanneal::SimulatedAnnealing::calc_energy ( )

Calculate the energy with the current molecular data

Definition at line 145 of file SimulatedAnnealing.cpp.

double simanneal::SimulatedAnnealing::calc_new_energy ( )

Calculate the energy with the current molecular data

Definition at line 157 of file SimulatedAnnealing.cpp.

double simanneal::SimulatedAnnealing::get_energy ( ) const
Returns
the real energy (calculated + nuclear repulsion)

Definition at line 93 of file SimulatedAnnealing.cpp.

simanneal::UnitaryMatrix & simanneal::SimulatedAnnealing::get_Optimal_Unitary ( )

Definition at line 281 of file SimulatedAnnealing.cpp.

CheMPS2::Hamiltonian & simanneal::SimulatedAnnealing::getHam ( ) const

Definition at line 286 of file SimulatedAnnealing.cpp.

doci2DM::Method & simanneal::SimulatedAnnealing::getMethod ( ) const

Definition at line 296 of file SimulatedAnnealing.cpp.

doci2DM::BoundaryPoint & simanneal::SimulatedAnnealing::getMethod_BP ( ) const

Return a reference to a BoundaryPoint object. Only works if the actual method is BoundaryPoint. You should always wrap this in a try/catch block and check for a std::bad_cast exception

Returns
BoundaryPoint object of the current method

Definition at line 320 of file SimulatedAnnealing.cpp.

doci2DM::PotentialReduction & simanneal::SimulatedAnnealing::getMethod_PR ( ) const

Return a reference to a PotentialReduction object. Only works if the actual method is PotentialReduction. You should always wrap this in a try/catch block and check for a std::bad_cast exception

Returns
PotentialReduction object of the current method

Definition at line 307 of file SimulatedAnnealing.cpp.

simanneal::OrbitalTransform & simanneal::SimulatedAnnealing::getOrbitalTf ( ) const

Definition at line 291 of file SimulatedAnnealing.cpp.

void simanneal::SimulatedAnnealing::optimize ( )

Do the simulated annealing

Definition at line 170 of file SimulatedAnnealing.cpp.

+ Here is the call graph for this function:

void simanneal::SimulatedAnnealing::optimize_mpi ( )

Definition at line 337 of file SimulatedAnnealing.cpp.

+ Here is the call graph for this function:

void simanneal::SimulatedAnnealing::Set_delta_angle ( double  delta_angle)

Definition at line 103 of file SimulatedAnnealing.cpp.

void simanneal::SimulatedAnnealing::Set_delta_temp ( double  delta_temp)

Definition at line 113 of file SimulatedAnnealing.cpp.

void simanneal::SimulatedAnnealing::Set_max_angle ( double  max_angle)

Definition at line 98 of file SimulatedAnnealing.cpp.

void simanneal::SimulatedAnnealing::Set_start_temp ( double  start_temp)

Definition at line 108 of file SimulatedAnnealing.cpp.

void simanneal::SimulatedAnnealing::UseBoundaryPoint ( )

Definition at line 327 of file SimulatedAnnealing.cpp.

void simanneal::SimulatedAnnealing::UsePotentialReduction ( )

Definition at line 332 of file SimulatedAnnealing.cpp.

Member Data Documentation

double simanneal::SimulatedAnnealing::cur_temp
private

current temperature

Definition at line 116 of file SimulatedAnnealing.h.

double simanneal::SimulatedAnnealing::delta_angle
private

the change in the angle allows in steps

Definition at line 107 of file SimulatedAnnealing.h.

double simanneal::SimulatedAnnealing::delta_temp
private

the change in temperatur between steps

Definition at line 105 of file SimulatedAnnealing.h.

double simanneal::SimulatedAnnealing::energy
private

energy of current iteration

Definition at line 101 of file SimulatedAnnealing.h.

std::unique_ptr<CheMPS2::Hamiltonian> simanneal::SimulatedAnnealing::ham
private

Holds the current hamiltonian.

Definition at line 92 of file SimulatedAnnealing.h.

double simanneal::SimulatedAnnealing::max_angle
private

the maximum allows angle

Definition at line 109 of file SimulatedAnnealing.h.

unsigned int simanneal::SimulatedAnnealing::max_steps
private

max number of steps

Definition at line 113 of file SimulatedAnnealing.h.

std::unique_ptr<doci2DM::Method> simanneal::SimulatedAnnealing::method
private

Definition at line 89 of file SimulatedAnnealing.h.

std::mt19937_64 simanneal::SimulatedAnnealing::mt
private

our pseudo-random generator

Definition at line 127 of file SimulatedAnnealing.h.

std::unique_ptr<simanneal::UnitaryMatrix> simanneal::SimulatedAnnealing::opt_unitary
private

the current unitary

Definition at line 98 of file SimulatedAnnealing.h.

std::unique_ptr<simanneal::OrbitalTransform> simanneal::SimulatedAnnealing::orbtrans
private

the actual orbital transform

Definition at line 95 of file SimulatedAnnealing.h.

std::random_device simanneal::SimulatedAnnealing::rd
private

the real random input (hopefully)

Definition at line 125 of file SimulatedAnnealing.h.

double simanneal::SimulatedAnnealing::start_temp
private

the start temperatur

Definition at line 103 of file SimulatedAnnealing.h.

unsigned int simanneal::SimulatedAnnealing::steps
private

the number of steps done

Definition at line 111 of file SimulatedAnnealing.h.

bool simanneal::SimulatedAnnealing::stop_running
private

bool to indicate if we should quite the optimalisation

Definition at line 122 of file SimulatedAnnealing.h.

unsigned int simanneal::SimulatedAnnealing::unaccepted
private

number of unaccepted steps

Definition at line 119 of file SimulatedAnnealing.h.


The documentation for this class was generated from the following files: