#include <netoptim/optscaling_oracle.hpp>
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 | |
---|---|
x in | (\pi, \phi) in log scale |
t 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 | |
---|---|
x in | (\pi, \phi) in log scale |
t in/out | the best-so-far optimal value |
Returns | std::tuple<Cut, double> |