#include <netoptim/optscaling_oracle.hpp>
template<typename Graph, typename Mapping, typename Fn>
OptScalingOracle class
Oracle for Optimal Matrix Scaling.
| Template parameters | |
|---|---|
| Graph | Type of the directed graph representing matrix sparsity |
| Mapping | Type of vertex potential mapping (scaling factors) |
| Fn | Type of the cost function (edge -> matrix entry) |
This class implements a separation oracle for the optimal matrix scaling problem. It uses a network oracle internally to handle the feasibility constraints and provides cutting planes for optimization.
The oracle maintains:
- A reference to the underlying graph structure
- A cost function for matrix entries
- A Ratio helper class for constraint evaluation
- Network oracle for feasibility checking
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, bool> |
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, bool> |