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

Barabási-Albert graph topology. More...

#include <clustered_ba.h>

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

Public Member Functions

 clustered_ba (int m0=3, int m=2, double p=0.5)
 Constructor from kernel size and number of edges. More...
 
base_ptr clone () const
 Clone method. More...
 
std::string get_name () const
 Get name of the topology. 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...
 
std::string human_readable_extra () const
 Topology-specific human readable info. 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...
 

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

Barabási-Albert graph topology.

clusteredba.png
Clustered Barabási-Albert network with m0 = 4, m = 4, p = 0.4 and 200 vertices.

Topology based on the Barabási-Albert (BA) model for the generation of random undirected scale-free networks. A clustering mechanism has been added to increase clustering coefficient of generated networks. The construction of this topology consists internally of three phases:

Author
Luke O'Connor (lumoc.nosp@m.onno.nosp@m.r@gma.nosp@m.il.c.nosp@m.om)

Definition at line 53 of file clustered_ba.h.

Constructor & Destructor Documentation

pagmo::topology::clustered_ba::clustered_ba ( int  m0 = 3,
int  m = 2,
double  p = 0.5 
)

Constructor from kernel size and number of edges.

Build a BA network with clustering mechanism applied. The initial kernel has size m0 and the elements being inserted after the construction of the kernel is completed are connected randomly to a maximum of m nodes. These nodes are then connected to eachother with probability p. Will fail if m0 < 2, if m < 1 or if m > m0 or if p < 0 or p > 1

Parameters
[in]m0size of the kernel
[in]mnumber of random connections to be established when a new node is added.
[in]pprobability that a connection is established between two nodes that are adjacent to a new node.

Definition at line 52 of file clustered_ba.cpp.

Member Function Documentation

base_ptr pagmo::topology::clustered_ba::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 64 of file clustered_ba.cpp.

void pagmo::topology::clustered_ba::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 69 of file clustered_ba.cpp.

std::string pagmo::topology::clustered_ba::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 178 of file clustered_ba.cpp.

std::string pagmo::topology::clustered_ba::human_readable_extra ( ) const
protectedvirtual

Topology-specific human readable info.

Will return a formatted string containing the size of the kernel, the maximum number of connections for newly-inserted nodes, and the connection probability.

Returns
string containing the parameters of the Clustered BA model.

Reimplemented from pagmo::topology::base.

Definition at line 169 of file clustered_ba.cpp.


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