PaGMO  1.1.5
Public Member Functions | Friends
pagmo::util::hv_algorithm::bf_approx Class Reference

Bringmann-Friedrich approximation method. More...

#include <bf_approx.h>

Inheritance diagram for pagmo::util::hv_algorithm::bf_approx:
Inheritance graph
[legend]

Public Member Functions

 bf_approx (const bool use_exact=true, const unsigned int trivial_subcase_size=1, const double eps=1e-2, const double delta=1e-6, const double delta_multiplier=0.775, const double m_alpha=0.2, const double initial_delta_coeff=0.1, const double gamma=0.25)
 Constructor. More...
 
double compute (std::vector< fitness_vector > &, const fitness_vector &) const
 Compute hypervolume. More...
 
unsigned int least_contributor (std::vector< fitness_vector > &, const fitness_vector &) const
 Least contributor method. More...
 
unsigned int greatest_contributor (std::vector< fitness_vector > &, const fitness_vector &) const
 Greatest contributor method. More...
 
void verify_before_compute (const std::vector< fitness_vector > &, const fitness_vector &) const
 Verify before compute method. More...
 
base_ptr clone () const
 Clone method.
 
std::string get_name () const
 Algorithm name.
 
- Public Member Functions inherited from pagmo::util::hv_algorithm::base
virtual double exclusive (const unsigned int, std::vector< fitness_vector > &, const fitness_vector &) const
 Exclusive hypervolume method. More...
 
virtual std::vector< double > contributions (std::vector< fitness_vector > &, const fitness_vector &) const
 Contributions method. More...
 
virtual ~base ()
 Destructor required for pure virtual methods.
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Static Public Member Functions inherited from pagmo::util::hv_algorithm::base
static double volume_between (const fitness_vector &, const fitness_vector &, unsigned int=0)
 Compute volume between two points. More...
 
- Protected Types inherited from pagmo::util::hv_algorithm::base
enum  { DOM_CMP_B_DOMINATES_A = 1, DOM_CMP_A_DOMINATES_B = 2, DOM_CMP_A_B_EQUAL = 3, DOM_CMP_INCOMPARABLE = 4 }
 
- Protected Member Functions inherited from pagmo::util::hv_algorithm::base
void assert_minimisation (const std::vector< fitness_vector > &, const fitness_vector &) const
 Assert that reference point dominates every other point from the set. More...
 
virtual unsigned int extreme_contributor (std::vector< fitness_vector > &, const fitness_vector &, bool(*)(double, double)) const
 compute the extreme contributor More...
 
- Static Protected Member Functions inherited from pagmo::util::hv_algorithm::base
static bool cmp_least (const double, const double)
 Comparison method for the least contributor. More...
 
static bool cmp_greatest (const double, const double)
 Comparison method for the least contributor. More...
 
static double volume_between (double *, double *, unsigned int)
 Compute volume between two points. More...
 
static int dom_cmp (double *, double *, unsigned int)
 Dominance comparison method. More...
 
static int dom_cmp (const fitness_vector &, const fitness_vector &, unsigned int=0)
 Dominance comparison method. More...
 

Detailed Description

Bringmann-Friedrich approximation method.

This is the class containing the implementation of the Bringmann-Friedrich approximation method for the computation of the least contributor to the hypervolume. Default values for the parameters of the algorithm were obtained from the shark implementation of the algorithm (http://image.diku.dk/shark/doxygen_pages/html/_least_contributor_approximator_8hpp_source.html)

See also
"Approximating the least hypervolume contributor: NP-hard in general, but fast in practice", Karl Bringmann, Tobias Friedrich.
Author
Krzysztof Nowak (kn@ki.nosp@m.ryx..nosp@m.net)

Definition at line 50 of file bf_approx.h.

Constructor & Destructor Documentation

pagmo::util::hv_algorithm::bf_approx::bf_approx ( const bool  use_exact = true,
const unsigned int  trivial_subcase_size = 1,
const double  eps = 1e-2,
const double  delta = 1e-6,
const double  delta_multiplier = 0.775,
const double  alpha = 0.2,
const double  initial_delta_coeff = 0.1,
const double  gamma = 0.25 
)

Constructor.

Constructs an instance of the algorithm

Parameters
[in]use_exactboolean flag stating whether algorithm is allowed to use exact algorithms for the computation
[in]trivial_subcase_sizesize of the sub-front (points overlapping the bounding box) for which algorithm skips to the exact computation right away
[in]epsaccuracy of the approximation
[in]deltaconfidence of the approximation
[in]gammaconstant used for computation of delta for each of the points during the sampling
[in]delta_multiplierfactor with which delta diminishes each round
[in]initial_delta_coeffinitial coefficient multiplied by the delta at round 0
[in]alphacoefficicient stating how accurately current lowest contributor should be sampled

Definition at line 43 of file bf_approx.cpp.

Member Function Documentation

double pagmo::util::hv_algorithm::bf_approx::compute ( std::vector< fitness_vector > &  points,
const fitness_vector r_point 
) const
virtual

Compute hypervolume.

This method is overloaded to throw an exception in case a hypervolume indicator computation is requested.

Parameters
[in]pointsvector of points containing the 3-dimensional points for which we compute the hypervolume
[in]r_pointreference point for the points
Returns
hypervolume.

Implements pagmo::util::hv_algorithm::base.

Definition at line 426 of file bf_approx.cpp.

unsigned int pagmo::util::hv_algorithm::bf_approx::greatest_contributor ( std::vector< fitness_vector > &  points,
const fitness_vector r_point 
) const
virtual

Greatest contributor method.

This method establishes the individual that contributes the most to the hypervolume (approximately withing given epsilon and delta).

Parameters
[in]pointsvector of fitness_vectors for which the hypervolume is computed
[in]r_pointdistinguished "reference point".
Returns
index of the greatest contributing point

Reimplemented from pagmo::util::hv_algorithm::base.

Definition at line 86 of file bf_approx.cpp.

unsigned int pagmo::util::hv_algorithm::bf_approx::least_contributor ( std::vector< fitness_vector > &  points,
const fitness_vector r_point 
) const
virtual

Least contributor method.

This method establishes the individual that contributes the least to the hypervolume (approximately withing given epsilon and delta).

Parameters
[in]pointsvector of fitness_vectors for which the hypervolume is computed
[in]r_pointdistinguished "reference point".
Returns
index of the least contributing point

Reimplemented from pagmo::util::hv_algorithm::base.

Definition at line 72 of file bf_approx.cpp.

void pagmo::util::hv_algorithm::bf_approx::verify_before_compute ( const std::vector< fitness_vector > &  points,
const fitness_vector r_point 
) const
virtual

Verify before compute method.

Verifies whether given algorithm suits the requested data.

Parameters
[in]pointsvector of points containing the d dimensional points for which we compute the hypervolume
[in]r_pointreference point for the vector of points
Exceptions
value_errorwhen trying to compute the hypervolume for the non-maximal reference point

Implements pagmo::util::hv_algorithm::base.

Definition at line 412 of file bf_approx.cpp.

Friends And Related Function Documentation

friend class boost::serialization::access
friend

End of 'least_contributor' method variables section

Definition at line 145 of file bf_approx.h.


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