Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Aleph::MCF_Arc< Arc_Info, FT > Struct Template Reference

Arc information for multi-commodity flow. More...

#include <tpl_multicommodity.H>

Inheritance diagram for Aleph::MCF_Arc< Arc_Info, FT >:
[legend]
Collaboration diagram for Aleph::MCF_Arc< Arc_Info, FT >:
[legend]

Public Types

using Base = Graph_Aarc< Arc_Info >
 
using Flow_Type = FT
 Type for flow values.
 
- Public Types inherited from GTArcCommon< ArcInfo >
using Item_Type = ArcInfo
 
using Arc_Type = ArcInfo
 

Public Member Functions

 MCF_Arc ()=default
 Default constructor.
 
 MCF_Arc (const Arc_Info &)
 Constructor from Arc_Info (required by graph framework)
 
 MCF_Arc (Arc_Info &&)
 Constructor from Arc_Info rvalue (required by graph framework)
 
 MCF_Arc (Flow_Type cap, Flow_Type cost=0)
 Constructor with capacity and cost.
 
Flow_Type total_flow () const
 Total flow on this arc (sum of all commodities)
 
Flow_Type residual () const
 Residual capacity.
 
Flow_Type flow (size_t k) const
 Get flow for commodity k.
 
Flow_Type cost (size_t k) const
 Get cost for commodity k.
 
void set_flow (size_t k, Flow_Type f)
 Set flow for commodity k.
 
void set_cost (size_t k, Flow_Type c)
 Set cost for commodity k.
 
void init_commodities (size_t K)
 Initialize for K commodities.
 
- Public Member Functions inherited from Aleph::Graph_Aarc< Arc_Info >
 Graph_Aarc (const Arc_Info &info)
 
 Graph_Aarc (Arc_Info &&info=Arc_Info())
 
 Graph_Aarc (const Graph_Aarc &arc)
 
Graph_Aarcoperator= (const Graph_Aarc &arc)
 
 Graph_Aarc (void *src, void *tgt, const Arc_Info &data)
 
 Graph_Aarc (void *src, void *tgt, Arc_Info &&data=Arc_Info())
 
- Public Member Functions inherited from GTArcCommon< ArcInfo >
 GTArcCommon () noexcept=default
 data contained in arc
 
 GTArcCommon (const ArcInfo &info)
 Construct from info value (copy)
 
 GTArcCommon (ArcInfo &&info)
 Construct from info value (move)
 
 GTArcCommon (void *src, void *tgt, const ArcInfo &data)
 Construct with endpoints and info (copy)
 
 GTArcCommon (void *src, void *tgt, ArcInfo &&data=ArcInfo())
 Construct with endpoints and info (move)
 
 GTArcCommon (const GTArcCommon &other)
 Copy constructor.
 
 GTArcCommon (GTArcCommon &&other) noexcept
 Move constructor.
 
GTArcCommonoperator= (const GTArcCommon &other)
 Copy assignment operator.
 
GTArcCommonoperator= (GTArcCommon &&other) noexcept
 Move assignment operator.
 
unsigned int state () const noexcept
 Return the state of arc.
 
void set_state (unsigned int s) noexcept
 Set the state of arc to value s
 
ArcInfoget_info () noexcept
 Return a modifiable reference to the arc data.
 
const ArcInfoget_info () const noexcept
 Return a constant reference to the arc data.
 
void * get_connected_node (void *node) noexcept
 
void * get_img_node (void *node) noexcept
 

Public Attributes

Flow_Type capacity = 0
 Arc capacity (shared)
 
Flow_Type base_cost = 0
 Default cost per unit flow.
 
std::vector< Flow_Typecommodity_flow
 Flow per commodity.
 
std::vector< Flow_Typecommodity_cost
 Cost per commodity (optional)
 
- Public Attributes inherited from GTArcCommon< ArcInfo >
void * src_node = nullptr
 
void * tgt_node = nullptr
 Please don't use.
 
Graph_Attr attrs
 Please don't use.
 
ArcInfo arc_info
 

Additional Inherited Members

Detailed Description

template<typename Arc_Info = Empty_Class, typename FT = double>
struct Aleph::MCF_Arc< Arc_Info, FT >

Arc information for multi-commodity flow.

Extends basic arc with per-commodity flow tracking and costs.

Template Parameters
Arc_InfoBase arc information type.
Flow_TypeNumeric type for flow values.

Definition at line 158 of file tpl_multicommodity.H.

Member Typedef Documentation

◆ Base

template<typename Arc_Info = Empty_Class, typename FT = double>
using Aleph::MCF_Arc< Arc_Info, FT >::Base = Graph_Aarc<Arc_Info>

Definition at line 160 of file tpl_multicommodity.H.

◆ Flow_Type

template<typename Arc_Info = Empty_Class, typename FT = double>
using Aleph::MCF_Arc< Arc_Info, FT >::Flow_Type = FT

Type for flow values.

Definition at line 161 of file tpl_multicommodity.H.

Constructor & Destructor Documentation

◆ MCF_Arc() [1/4]

template<typename Arc_Info = Empty_Class, typename FT = double>
Aleph::MCF_Arc< Arc_Info, FT >::MCF_Arc ( )
default

Default constructor.

◆ MCF_Arc() [2/4]

template<typename Arc_Info = Empty_Class, typename FT = double>
Aleph::MCF_Arc< Arc_Info, FT >::MCF_Arc ( const Arc_Info &  )
inline

Constructor from Arc_Info (required by graph framework)

Definition at line 172 of file tpl_multicommodity.H.

◆ MCF_Arc() [3/4]

template<typename Arc_Info = Empty_Class, typename FT = double>
Aleph::MCF_Arc< Arc_Info, FT >::MCF_Arc ( Arc_Info &&  )
inline

Constructor from Arc_Info rvalue (required by graph framework)

Definition at line 175 of file tpl_multicommodity.H.

◆ MCF_Arc() [4/4]

template<typename Arc_Info = Empty_Class, typename FT = double>
Aleph::MCF_Arc< Arc_Info, FT >::MCF_Arc ( Flow_Type  cap,
Flow_Type  cost = 0 
)
inline

Constructor with capacity and cost.

Definition at line 178 of file tpl_multicommodity.H.

Member Function Documentation

◆ cost()

template<typename Arc_Info = Empty_Class, typename FT = double>
Flow_Type Aleph::MCF_Arc< Arc_Info, FT >::cost ( size_t  k) const
inline

◆ flow()

template<typename Arc_Info = Empty_Class, typename FT = double>
Flow_Type Aleph::MCF_Arc< Arc_Info, FT >::flow ( size_t  k) const
inline

Get flow for commodity k.

Definition at line 194 of file tpl_multicommodity.H.

References Aleph::MCF_Arc< Arc_Info, FT >::commodity_flow, Aleph::maps(), and Aleph::HTList::size().

◆ init_commodities()

template<typename Arc_Info = Empty_Class, typename FT = double>
void Aleph::MCF_Arc< Arc_Info, FT >::init_commodities ( size_t  K)
inline

Initialize for K commodities.

Definition at line 224 of file tpl_multicommodity.H.

References Aleph::MCF_Arc< Arc_Info, FT >::commodity_cost, and Aleph::MCF_Arc< Arc_Info, FT >::commodity_flow.

◆ residual()

template<typename Arc_Info = Empty_Class, typename FT = double>
Flow_Type Aleph::MCF_Arc< Arc_Info, FT >::residual ( ) const
inline

◆ set_cost()

template<typename Arc_Info = Empty_Class, typename FT = double>
void Aleph::MCF_Arc< Arc_Info, FT >::set_cost ( size_t  k,
Flow_Type  c 
)
inline

Set cost for commodity k.

Definition at line 216 of file tpl_multicommodity.H.

References Aleph::MCF_Arc< Arc_Info, FT >::commodity_cost, Aleph::maps(), and Aleph::HTList::size().

◆ set_flow()

template<typename Arc_Info = Empty_Class, typename FT = double>
void Aleph::MCF_Arc< Arc_Info, FT >::set_flow ( size_t  k,
Flow_Type  f 
)
inline

Set flow for commodity k.

Definition at line 208 of file tpl_multicommodity.H.

References Aleph::MCF_Arc< Arc_Info, FT >::commodity_flow, Aleph::maps(), and Aleph::HTList::size().

◆ total_flow()

template<typename Arc_Info = Empty_Class, typename FT = double>
Flow_Type Aleph::MCF_Arc< Arc_Info, FT >::total_flow ( ) const
inline

Total flow on this arc (sum of all commodities)

Definition at line 182 of file tpl_multicommodity.H.

References Aleph::MCF_Arc< Arc_Info, FT >::commodity_flow, and Aleph::sum().

Referenced by Aleph::MCF_Arc< Arc_Info, FT >::residual().

Member Data Documentation

◆ base_cost

template<typename Arc_Info = Empty_Class, typename FT = double>
Flow_Type Aleph::MCF_Arc< Arc_Info, FT >::base_cost = 0

Default cost per unit flow.

Definition at line 164 of file tpl_multicommodity.H.

Referenced by Aleph::MCF_Arc< Arc_Info, FT >::cost().

◆ capacity

template<typename Arc_Info = Empty_Class, typename FT = double>
Flow_Type Aleph::MCF_Arc< Arc_Info, FT >::capacity = 0

Arc capacity (shared)

Definition at line 163 of file tpl_multicommodity.H.

Referenced by Aleph::MCF_Arc< Arc_Info, FT >::residual().

◆ commodity_cost

template<typename Arc_Info = Empty_Class, typename FT = double>
std::vector<Flow_Type> Aleph::MCF_Arc< Arc_Info, FT >::commodity_cost

◆ commodity_flow

template<typename Arc_Info = Empty_Class, typename FT = double>
std::vector<Flow_Type> Aleph::MCF_Arc< Arc_Info, FT >::commodity_flow

The documentation for this struct was generated from the following file: