template<typename Graph, typename Mapping, typename Fn>
OptScalingOracle class

Oracle for Optimal Matrix Scaling.

Template parameters
Graph
Mapping
Fn

This example is taken from [Orlin and Rothblum, 1985]:

min     \pi/\phi
s.t.    \phi \le utx[i] * |aij| * utx[j]^-1 \le \pi,
        \forall aij != 0,
        \pi, \phi, utx, positive

Constructors, destructors, conversion operators

OptScalingOracle(const Graph& gra, Mapping& utx, Fn get_cost)
Construct a new optscaling oracle object.
OptScalingOracle(const OptScalingOracle&) defaulted explicit
Construct a new optscaling oracle object.

Public functions

auto assess_optim(const Vec& x, double& t) -> std::tuple< Cut, bool > -> auto
Make object callable for cutting_plane_optim()
auto operator()(const Vec& x, double& t) -> std::tuple< Cut, bool > -> auto
Make object callable for cutting_plane_optim()

Function documentation

template<typename Graph, typename Mapping, typename Fn>
OptScalingOracle<Graph, Mapping, Fn>::OptScalingOracle(const Graph& gra, Mapping& utx, Fn get_cost)

Construct a new optscaling oracle object.

Parameters
gra in
utx in/out
get_cost in

template<typename Graph, typename Mapping, typename Fn>
auto OptScalingOracle<Graph, Mapping, Fn>::assess_optim(const Vec& x, double& t) -> std::tuple< Cut, bool >

Make object callable for cutting_plane_optim()

Parameters
in (\pi, \phi) in log scale
in/out the best-so-far optimal value
Returns std::tuple<Cut, double>

template<typename Graph, typename Mapping, typename Fn>
auto OptScalingOracle<Graph, Mapping, Fn>::operator()(const Vec& x, double& t) -> std::tuple< Cut, bool >

Make object callable for cutting_plane_optim()

Parameters
in (\pi, \phi) in log scale
in/out the best-so-far optimal value
Returns std::tuple<Cut, double>