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

WFG hypervolume algorithm. More...

#include <wfg.h>

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

Public Member Functions

 wfg (const unsigned int stop_dimension=2)
 Constructor.
 
double compute (std::vector< fitness_vector > &, const fitness_vector &) const
 Compute hypervolume. More...
 
std::vector< double > contributions (std::vector< fitness_vector > &, const fitness_vector &) const
 Contributions 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 unsigned int least_contributor (std::vector< fitness_vector > &, const fitness_vector &) const
 Least contributor method. More...
 
virtual unsigned int greatest_contributor (std::vector< fitness_vector > &, const fitness_vector &) const
 Greatest contributor 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

WFG hypervolume algorithm.

This is the class containing the implementation of the WFG algorithm for the computation of hypervolume indicator.

See also
"While, Lyndon, Lucas Bradstreet, and Luigi Barone. "A fast way of calculating exact hypervolumes." Evolutionary Computation, IEEE Transactions on 16.1 (2012): 86-95."
"Lyndon While and Lucas Bradstreet. Applying the WFG Algorithm To Calculate Incremental Hypervolumes. 2012 IEEE Congress on Evolutionary Computation. CEC 2012, pages 489-496. IEEE, June 2012."
Author
Krzysztof Nowak (kn@ki.nosp@m.ryx..nosp@m.net)

Definition at line 48 of file wfg.h.

Member Function Documentation

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

Compute hypervolume.

Computes the hypervolume using the WFG algorithm.

Parameters
[in]pointsvector of points containing the D-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 67 of file wfg.cpp.

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

Contributions method.

This method employs a slightly modified version of the original WFG algorithm to suit the computation of the exclusive contributions. It differs from the IWFG algorithm (referenced below), as we do not use the priority-queueing mechanism, but compute every exclusive contribution instead. This may suggest that the algorithm for the extreme contributor itself reduces to the 'naive' approach. It is not the case however, as we utilize the benefits of the 'limitset', before we begin the recursion. This simplifies the sub problems for each exclusive computation right away, which makes the whole algorithm much faster, and in many cases only slower than regular WFG algorithm by a constant factor.

See also
"Lyndon While and Lucas Bradstreet. Applying the WFG Algorithm To Calculate Incremental Hypervolumes. 2012 IEEE Congress on Evolutionary Computation. CEC 2012, pages 489-496. IEEE, June 2012."
Parameters
[in]pointsvector of points containing the D-dimensional points for which we compute the hypervolume
[in]r_pointreference point for the points

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

Definition at line 88 of file wfg.cpp.

void pagmo::util::hv_algorithm::wfg::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 318 of file wfg.cpp.


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