PaGMO  1.1.5
Public Member Functions | Protected Member Functions | Friends
pagmo::algorithm::mbh Class Reference

Monotonic Basin Hopping (generalized) More...

#include <mbh.h>

Inheritance diagram for pagmo::algorithm::mbh:
Inheritance graph
[legend]

Public Member Functions

 mbh (const base &=cs(), int stop=5, double perturb=5e-2)
 Constructor. More...
 
 mbh (const base &, int stop, const std::vector< double > &perturb)
 Constructor. More...
 
 mbh (const mbh &)
 Copy constructor.
 
base_ptr clone () const
 Clone method.
 
void evolve (population &) const
 Evolve implementation. More...
 
std::string get_name () const
 Algorithm name.
 
base_ptr get_algorithm () const
 Get a copy of the internal local algorithm. More...
 
void set_algorithm (const base &)
 Set algorithm. More...
 
- Public Member Functions inherited from pagmo::algorithm::base
 base ()
 Default constructor. More...
 
virtual ~base ()
 Trivial destructor. More...
 
std::string human_readable () const
 Return human readable representation of the algorithm. More...
 
void set_screen_output (const bool p)
 Setter-Getter for protected m_screen_output data. More...
 
bool get_screen_output () const
 Gets screen output. More...
 
void reset_rngs (const unsigned int) const
 Resets the seed of the internal rngs using a user-provided seed. More...
 

Protected Member Functions

std::string human_readable_extra () const
 Extra human readable algorithm info. More...
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Protected Attributes inherited from pagmo::algorithm::base
bool m_screen_output
 Indicates to the derived class whether to print stuff on screen.
 
rng_double m_drng
 Random number generator for double-precision floating point values.
 
rng_uint32 m_urng
 Random number generator for unsigned integer values.
 
unsigned int m_fevals
 A counter for the number of function evaluations.
 

Detailed Description

Monotonic Basin Hopping (generalized)

mbh.png
A schematic diagram illustrating the effects of the basin hopping transformation on a one dimensional landscape.

Monotonic basin hopping, or simply, basin hopping, is an algorithm rooted in the idea of transforming each the objective function at $\mathbf x$ into the local minima found starting from $\mathbf x$ This simple idea allowed a substantial increase of efficiency in solving problems, such as the Lennard-Jones cluster or the MGA-DSM interplanetary trajectory problem that are conjectured to have a so-called funnel structure.

In PaGMO we provide an original generalization of the method that operates on any pagmo::population using any pagmo::algorithm. When a population containing a single individual is used and coupled with a local optimizer, the original method is recovered. The pseudo code of the generalized version is:

> Select a pagmo::population
> Select a pagmo::algorithm
> Store best individual
> while i < stop_criteria
> > Perturb the population in a selected neighbourhood
> > Evolve the population using the algorithm
> > if the best individual is improved (according to the problem::compare_fc criteria)
> > > increment i
> > > update best individual
> > else
> > > i = 0
See also
http://arxiv.org/pdf/cond-mat/9803344 for the paper inroducing the basin hopping idea for a Lennard-Jones cluster optimization
Author
Dario Izzo (dario.nosp@m..izz.nosp@m.o@goo.nosp@m.glem.nosp@m.ail.c.nosp@m.om)

Definition at line 75 of file mbh.h.

Constructor & Destructor Documentation

pagmo::algorithm::mbh::mbh ( const base local = cs(),
int  stop = 5,
double  perturb = 5e-2 
)

Constructor.

Constructs an mbh algorithm with uniform neighbourhoods

Parameters
[in]localpagmo::algorithm to use as 'local' optimization method
[in]stopnumber of consecutive step allowed without any improvement
[in]perturbAt the end of one iteration of mbh, each chromosome of each individual will be perturbed within +-perturb*(ub-lb), the same for the velocity. The integer part is treated the same way. rounding to the floor
Exceptions
value_errorif stop is negative or perturb is not in [0,1]

Definition at line 50 of file mbh.cpp.

pagmo::algorithm::mbh::mbh ( const base local,
int  stop,
const std::vector< double > &  perturb 
)

Constructor.

Allows to specify in detail all the parameters of the algorithm.

Parameters
[in]localpagmo::algorithm to use as 'local' optimization method
[in]stopnumber of consecutive step allowed without any improvement
[in]perturbAt the end of one iteration of mbh, the i-th chromosome of each individual will be perturbed within +-perturb[i]*(ub[i]-lb[i]), the same for the velocity. The integer part is treated the same way rounding to the floor
Exceptions
value_errorif stop is negative or perturb[i] is not in [0,1]

Definition at line 72 of file mbh.cpp.

Member Function Documentation

void pagmo::algorithm::mbh::evolve ( population pop) const
virtual

Evolve implementation.

Run the MBH algorithm

Parameters
[in,out]popinput/output pagmo::population to be evolved.

Implements pagmo::algorithm::base.

Definition at line 104 of file mbh.cpp.

base_ptr pagmo::algorithm::mbh::get_algorithm ( ) const

Get a copy of the internal local algorithm.

Returns
algorithm::base_ptr to a copy of the internal local algorithm.

Definition at line 208 of file mbh.cpp.

std::string pagmo::algorithm::mbh::human_readable_extra ( ) const
protectedvirtual

Extra human readable algorithm info.

Returns
a formatted string displaying the parameters of the algorithm.

Reimplemented from pagmo::algorithm::base.

Definition at line 228 of file mbh.cpp.

void pagmo::algorithm::mbh::set_algorithm ( const base algo)

Set algorithm.

A copy of the input algorithm will be set as the internal local algorithm.

Parameters
[in]algoalgorithm to be set as local algorithm.

Definition at line 219 of file mbh.cpp.


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