@@ -756,7 +756,9 @@ bool PDLPSolver::runConvergenceCheckAndRestart(size_t iter,
756756
757757
758758 if (params_.use_halpern_restart ) {
759- updatePrimalWeightAtRestart (current_results);
759+ if (params_.step_size_strategy == StepSizeStrategy::PID) {
760+ updatePrimalWeightAtRestart (current_results);
761+ }
760762#ifdef CUPDLP_GPU
761763 if (d_pdhg_primal_ != nullptr ) {
762764 // Halpern: always restart to pdhg iterate (matching cuPDLPx)
@@ -863,6 +865,8 @@ void PDLPSolver::performPdhgStep() {
863865 // Note: Error handling for MP failure simplified for brevity
864866 updateIteratesMalitskyPock (false );
865867 break ;
868+ case StepSizeStrategy::PID:
869+ assert (111 ==999 );
866870 }
867871
868872#if PDLP_PROFILE
@@ -1636,6 +1640,9 @@ void PDLPSolver::setup(const HighsOptions& options, HighsTimer& timer) {
16361640 } else if (options.pdlp_step_size_strategy ==
16371641 kPdlpStepSizeStrategyMalitskyPock ) {
16381642 params_.step_size_strategy = StepSizeStrategy::MALITSKY_POCK;
1643+ } else if (options.pdlp_step_size_strategy ==
1644+ kPdlpStepSizeStrategyPid ) {
1645+ params_.step_size_strategy = StepSizeStrategy::PID;
16391646 }
16401647 }
16411648 // params_.malitsky_pock_params.initialise(); Not set in parse_options_file
@@ -1791,6 +1798,7 @@ void PDLPSolver::updatePrimalWeightAtRestart(const SolverResults& results) {
17911798 // Compute residual ratio
17921799 double ratio = results.dual_feasibility / (results.primal_feasibility + 1e-30 );
17931800
1801+ const bool silent = true ;
17941802 // cuPDLPx-style weight update (PID control)
17951803 if (primal_dist > 1e-16 && dual_dist > 1e-16 &&
17961804 primal_dist < 1e12 && dual_dist < 1e12 &&
@@ -1808,14 +1816,15 @@ void PDLPSolver::updatePrimalWeightAtRestart(const SolverResults& results) {
18081816 );
18091817
18101818 primal_weight_last_error_ = error;
1811-
1812- logger_.info (" Primal weight updated: " + std::to_string (primal_weight_));
1819+ if (!silent)
1820+ logger_.info (" Primal weight updated: " + std::to_string (primal_weight_));
18131821 } else {
18141822 // Revert to best known weight
18151823 primal_weight_ = best_primal_weight_;
18161824 primal_weight_error_sum_ = 0.0 ;
18171825 primal_weight_last_error_ = 0.0 ;
1818- logger_.info (" Weight update failed (bad norms/ratio), reverted to best: " +
1826+ if (!silent)
1827+ logger_.info (" Weight update failed (bad norms/ratio), reverted to best: " +
18191828 std::to_string (primal_weight_));
18201829 }
18211830
0 commit comments