14#ifndef PDLP_ITERATION_STATS_H_
15#define PDLP_ITERATION_STATS_H_
22#include "ortools/pdlp/solve_log.pb.h"
23#include "ortools/pdlp/solvers.pb.h"
32 const PrimalDualHybridGradientParams& params,
35 const Eigen::VectorXd& dual_solution,
36 double componentwise_primal_residual_offset,
37 double componentwise_dual_residual_offset, PointType candidate_type);
52 const PrimalDualHybridGradientParams& params,
54 const Eigen::VectorXd& col_scaling_vec,
55 const Eigen::VectorXd& row_scaling_vec,
56 const Eigen::VectorXd& scaled_primal_solution,
57 const Eigen::VectorXd& scaled_dual_solution,
58 double componentwise_primal_residual_offset,
59 double componentwise_dual_residual_offset, PointType candidate_type);
72 const PrimalDualHybridGradientParams& params,
74 const Eigen::VectorXd& col_scaling_vec,
75 const Eigen::VectorXd& row_scaling_vec,
76 const Eigen::VectorXd& scaled_primal_ray,
77 const Eigen::VectorXd& scaled_dual_ray,
78 const Eigen::VectorXd& primal_solution_for_residual_tests,
79 PointType candidate_type);
86Eigen::VectorXd
ReducedCosts(
const PrimalDualHybridGradientParams& params,
89 const Eigen::VectorXd& dual_solution,
90 bool use_zero_primal_objective =
false);
95 const IterationStats& stats, PointType candidate_type);
100 const IterationStats& stats, PointType candidate_type);
105 PointType point_type);
113 const Eigen::VectorXd& dual_solution,
114 const std::vector<int>& random_projection_seeds,
115 PointMetadata& metadata);
Validation utilities for solvers.proto.
InfeasibilityInformation ComputeInfeasibilityInformation(const PrimalDualHybridGradientParams ¶ms, const ShardedQuadraticProgram &scaled_sharded_qp, const Eigen::VectorXd &col_scaling_vec, const Eigen::VectorXd &row_scaling_vec, const Eigen::VectorXd &scaled_primal_ray, const Eigen::VectorXd &scaled_dual_ray, const Eigen::VectorXd &primal_solution_for_residual_tests, PointType candidate_type)
std::optional< ConvergenceInformation > GetConvergenceInformation(const IterationStats &stats, PointType candidate_type)
void SetRandomProjections(const ShardedQuadraticProgram &sharded_qp, const Eigen::VectorXd &primal_solution, const Eigen::VectorXd &dual_solution, const std::vector< int > &random_projection_seeds, PointMetadata &metadata)
VectorXd ReducedCosts(const PrimalDualHybridGradientParams ¶ms, const ShardedQuadraticProgram &sharded_qp, const VectorXd &primal_solution, const VectorXd &dual_solution, bool use_zero_primal_objective)
std::optional< InfeasibilityInformation > GetInfeasibilityInformation(const IterationStats &stats, PointType candidate_type)
std::optional< PointMetadata > GetPointMetadata(const IterationStats &stats, const PointType point_type)
ConvergenceInformation ComputeScaledConvergenceInformation(const PrimalDualHybridGradientParams ¶ms, const ShardedQuadraticProgram &sharded_qp, const VectorXd &primal_solution, const VectorXd &dual_solution, const double componentwise_primal_residual_offset, const double componentwise_dual_residual_offset, PointType candidate_type)
ConvergenceInformation ComputeConvergenceInformation(const PrimalDualHybridGradientParams ¶ms, const ShardedQuadraticProgram &scaled_sharded_qp, const Eigen::VectorXd &col_scaling_vec, const Eigen::VectorXd &row_scaling_vec, const Eigen::VectorXd &scaled_primal_solution, const Eigen::VectorXd &scaled_dual_solution, const double componentwise_primal_residual_offset, const double componentwise_dual_residual_offset, PointType candidate_type)