PaGMO  1.1.5
Public Member Functions | Protected Member Functions | Friends
pagmo::topology::custom Class Reference

Custom topology. More...

#include <custom.h>

Inheritance diagram for pagmo::topology::custom:
Inheritance graph
[legend]

Public Member Functions

 custom ()
 Default constructor. More...
 
 custom (const base &)
 Constructor from other topology. More...
 
base_ptr clone () const
 Clone method. More...
 
std::string get_name () const
 Get name of the topology. More...
 
High-level graph manipulation for custom topologies.
void add_edge (int, int, double=1.0)
 Add an edge. More...
 
void remove_edge (int, int)
 Remove an edge. More...
 
void remove_all_edges ()
 Remove all edges. More...
 
- Public Member Functions inherited from pagmo::topology::base
 base ()
 Default constructor. More...
 
 base (const base &)
 Copy constructor. More...
 
baseoperator= (const base &)
 Assignment operator. More...
 
virtual ~base ()
 Trivial destructor. More...
 
vertices_size_type get_number_of_vertices () const
 Get number of vertices. More...
 
edges_size_type get_number_of_edges () const
 Get number of edges. More...
 
void push_back ()
 Push back vertex. More...
 
double get_average_shortest_path_length () const
 Calculate average path length. More...
 
double get_clustering_coefficient () const
 Calculate clustering coefficient.
 
std::vector< double > get_degree_distribution () const
 Constructs the Degree Distribution.
 
bool are_adjacent (const vertices_size_type &, const vertices_size_type &) const
 Return true if two vertices are adjacent. More...
 
bool are_inv_adjacent (const vertices_size_type &, const vertices_size_type &) const
 Return true if two vertices are inversely adjacent. More...
 
std::vector< vertices_size_typeget_v_adjacent_vertices (const vertices_size_type &) const
 Return vector of adjacent vertices. More...
 
std::vector< vertices_size_typeget_v_inv_adjacent_vertices (const vertices_size_type &) const
 Return vector of inversely adjacent vertices. More...
 
edges_size_type get_num_adjacent_vertices (const vertices_size_type &) const
 Return the number of adjacent vertices. More...
 
edges_size_type get_num_inv_adjacent_vertices (const vertices_size_type &) const
 Return the number of inversely adjacent vertices. More...
 
void set_weight (double)
 Sets the migration probability. More...
 
void set_weight (const vertices_size_type &, double)
 Sets the migration probability. More...
 
void set_weight (const vertices_size_type &, const vertices_size_type &, double)
 Sets the migration probability. More...
 
double get_weight (const vertices_size_type &, const vertices_size_type &) const
 Get the migration probability. More...
 
std::string human_readable_terse () const
 Return terse human readable representation. More...
 
std::string human_readable () const
 Return complete human readable representation. More...
 

Protected Member Functions

void connect (const vertices_size_type &)
 Establish connections between islands during a push_back() operation. More...
 
- Protected Member Functions inherited from pagmo::topology::base
void add_vertex ()
 Add a vertex. More...
 
std::pair< a_iterator, a_iteratorget_adjacent_vertices (const vertices_size_type &) const
 Return iterator range to adjacent vertices. More...
 
std::pair< ia_iterator, ia_iteratorget_inv_adjacent_vertices (const vertices_size_type &) const
 Return iterator range to inversely adjacent vertices. More...
 
void add_edge (const vertices_size_type &, const vertices_size_type &)
 Add an edge. More...
 
void remove_edge (const vertices_size_type &, const vertices_size_type &)
 Remove an edge. More...
 
void remove_all_edges ()
 Remove all edges. More...
 
std::pair< v_iterator, v_iteratorget_vertices () const
 Return iterator range to vertices. More...
 
virtual std::string human_readable_extra () const
 Return extra information for human readable representation. More...
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Public Types inherited from pagmo::topology::base
typedef graph_type::vertices_size_type vertices_size_type
 Vertices size type.
 
typedef graph_type::edges_size_type edges_size_type
 Edges size type.
 
- Protected Types inherited from pagmo::topology::base
typedef boost::adjacency_list< boost::vecS, boost::vecS, boost::bidirectionalS, boost::no_property, edge_properties, boost::no_property, boost::listS > graph_type
 
typedef boost::graph_traits< graph_type >::vertex_iterator v_iterator
 Iterator over the vertices.
 
typedef boost::graph_traits< graph_type >::edge_iterator e_iterator
 Iterator over the edges.
 
typedef boost::graph_traits< graph_type >::adjacency_iterator a_iterator
 Iterator over adjacent vertices.
 
typedef graph_type::inv_adjacency_iterator ia_iterator
 Iterator over inversely adjacent vertices.
 
typedef boost::graph_traits< graph_type >::vertex_descriptor v_descriptor
 Vertex descriptor.
 
typedef boost::graph_traits< graph_type >::edge_descriptor e_descriptor
 Edge descriptor.
 

Detailed Description

Custom topology.

This topology allows the user to manually build a topology by inserting nodes and creating connections between them. The connect() method will leave new nodes unconnected. The intended use of this topology is to give the user the ability to create quickly a custom topology without having to create another class, recompile, etc.

Author
Francesco Biscani (blues.nosp@m.carn.nosp@m.i@gma.nosp@m.il.c.nosp@m.om)

Definition at line 44 of file custom.h.

Constructor & Destructor Documentation

pagmo::topology::custom::custom ( )

Default constructor.

Will call base::base().

Definition at line 37 of file custom.cpp.

pagmo::topology::custom::custom ( const base t)

Constructor from other topology.

This constructor will copy the internal representation of any other topology (but of course not its push_back() logic). Useful to take the snapshot of an existing topology and modify it manually.

Parameters
[in]ttopology to be copied.

Definition at line 46 of file custom.cpp.

Member Function Documentation

void pagmo::topology::custom::add_edge ( int  n,
int  m,
double  migr_probability = 1.0 
)

Add an edge.

Add an edge connecting index n to index m. Will fail if either n or m is negative, if either n or m is not in the topology or if n and m are already connected.

Parameters
[in]nfirst index.
[in]msecond index.
[in]migr_probabilitysecond index.

Definition at line 57 of file custom.cpp.

base_ptr pagmo::topology::custom::clone ( ) const
virtual

Clone method.

Provided that the derived topology implements properly the copy constructor, virtually all implementations of this method will look like this:

return base_ptr(new derived_topology(*this));
Returns
topology::base_ptr to a copy of this.

Implements pagmo::topology::base.

Definition at line 88 of file custom.cpp.

void pagmo::topology::custom::connect ( const vertices_size_type idx)
protectedvirtual

Establish connections between islands during a push_back() operation.

This method will be called by push_back() after a vertex has been added to the graph. The purpose of this method is to connect the newly-added vertex to other vertices according to the properties of the topology.

Parameters
[in]idxindex of the newly-added vertex.

Implements pagmo::topology::base.

Definition at line 76 of file custom.cpp.

std::string pagmo::topology::custom::get_name ( ) const
virtual

Get name of the topology.

Default implementation will return the class' mangled C++ name.

Returns
name of the topology.

Reimplemented from pagmo::topology::base.

Definition at line 93 of file custom.cpp.

void pagmo::topology::custom::remove_all_edges ( )

Remove all edges.

Equivalent to base::remove_all_edges().

Definition at line 83 of file custom.cpp.

void pagmo::topology::custom::remove_edge ( int  n,
int  m 
)

Remove an edge.

Remove the edge connecting index n to index m. Will fail if either n or m is negative, if either n or m is not in the topology or if n and m are not connected.

Parameters
[in]nfirst index.
[in]msecond index.

Definition at line 71 of file custom.cpp.


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