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,
34 const Eigen::VectorXd& primal_solution,
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);
69 const PrimalDualHybridGradientParams& params,
71 const Eigen::VectorXd& col_scaling_vec,
72 const Eigen::VectorXd& row_scaling_vec,
73 const Eigen::VectorXd& scaled_primal_ray,
74 const Eigen::VectorXd& scaled_dual_ray, PointType candidate_type);
83 Eigen::VectorXd
ReducedCosts(
const PrimalDualHybridGradientParams& params,
85 const Eigen::VectorXd& primal_solution,
86 const Eigen::VectorXd& dual_solution,
87 bool use_zero_primal_objective =
false);
92 const IterationStats& stats, PointType candidate_type);
97 const IterationStats& stats, PointType candidate_type);
102 PointType point_type);
109 const Eigen::VectorXd& primal_solution,
110 const Eigen::VectorXd& dual_solution,
111 const std::vector<int>& random_projection_seeds,
112 PointMetadata& metadata);
VectorXd ReducedCosts(const PrimalDualHybridGradientParams ¶ms, const ShardedQuadraticProgram &sharded_qp, const VectorXd &primal_solution, const VectorXd &dual_solution, bool use_zero_primal_objective)
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, 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)
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)
std::optional< InfeasibilityInformation > GetInfeasibilityInformation(const IterationStats &stats, PointType candidate_type)
std::optional< ConvergenceInformation > GetConvergenceInformation(const IterationStats &stats, 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)