#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> |