Template Class PartMgrBase

Template Parameter Order

  1. typename GainMgr

  2. typename ConstrMgr

  3. template< typename _gainMgr, typename _constrMgr > class Derived

Class Documentation

template<typename GainMgr, typename ConstrMgr, template<typename _gainMgr, typename _constrMgr> class Derived>
class PartMgrBase

Partition Manager Base.

In order to do that, heuristics refer to a measure of the gain (and balance condition) associated to any sequence of changes performed on the current solution. Moreover, the length of the sequence generated is determined by evaluting a suitably defined $stopping rule$ at each iteration.

tparam GainMgr

tparam ConstrMgr

tparam Derived

Iterative Improvement Partitioning Base Class. In this partitioning method, the next solution $s’$ considered after solution $s$ is dervied by first applying a sequence of $t$ changes (moves) to $s$ (with $t$ dependent from $s$ and from the specific heuristic method), thus obtaining a sequence of solution $s,…,s_t$ and by successively choosing the best among these solutions.

Reference: G. Ausiello et al., Complexity and Approximation: Combinatorial Optimization Problems and Their Approximability Properties, Section 10.3.2.

Public Types

using GainCalc_ = typename GainMgr::GainCalc_
using GainMgr_ = GainMgr
using ConstrMgr_ = ConstrMgr
using Der = Derived<GainMgr, ConstrMgr>

Public Functions

inline PartMgrBase(const SimpleNetlist &H, GainMgr &gainMgr, ConstrMgr &constrMgr, size_t K)

Construct a new FDPartMgr object.

Parameters
  • H[in]

  • gainMgr[inout]

  • constrMgr[inout]

void init(gsl::span<std::uint8_t> part)
Parameters

part[inout]

auto legalize(gsl::span<std::uint8_t> part) -> LegalCheck
Parameters

part[inout]

Returns

LegalCheck

void optimize(gsl::span<std::uint8_t> part)
Parameters

part[inout]

Public Members

int totalcost = {}

Protected Attributes

Der &self = *static_cast<Der*>(this)
const SimpleNetlist &H
GainMgr &gainMgr
ConstrMgr &validator
size_t K