@@ -785,7 +785,7 @@ double PDLPSolver::computeFixedPointErrorGpu() {
785785 // 2. delta_y = y_next_ - reflected_y_
786786 CUDA_CHECK (cudaMemcpyAsync (d_delta_y_, d_pdhg_dual_,
787787 a_num_rows_ * sizeof (double ),
788- cudaMemcpyDeviceToDevice, gpu_stream_));
788+ cudaMemcpyDeviceToDevice, gpu_stream_));
789789 CUBLAS_CHECK (cublasDaxpy (cublas_handle_, a_num_rows_, &alpha_minus_one,
790790 d_y_next_, 1 , d_delta_y_, 1 ));
791791
@@ -1361,8 +1361,7 @@ double PDLPSolver::computePrimalFeasibility(
13611361 }
13621362 }
13631363
1364- return linalg::vectorNorm (primal_residual) /
1365- scaling_.getConstraintBoundScaling ();
1364+ return linalg::vectorNorm (primal_residual);
13661365}
13671366
13681367void PDLPSolver::computeDualSlacks (const std::vector<double >& dualResidual,
@@ -1448,8 +1447,7 @@ double PDLPSolver::computeDualFeasibility(const std::vector<double>& ATy_vector,
14481447 }
14491448 }
14501449
1451- double dual_feasibility = linalg::vectorNorm (dual_residual) /
1452- scaling_.getObjectiveVectorScaling ();
1450+ double dual_feasibility = linalg::vectorNorm (dual_residual);
14531451
14541452 return dual_feasibility;
14551453}
@@ -1515,10 +1513,7 @@ double PDLPSolver::computeDualObjective(const std::vector<double>& y,
15151513 }
15161514 }
15171515
1518- return dual_obj /
1519- (scaling_.getConstraintBoundScaling () *
1520- scaling_.getObjectiveVectorScaling ()) +
1521- lp_.offset_ ;
1516+ return dual_obj;
15221517}
15231518
15241519bool PDLPSolver::checkConvergence (
@@ -1545,10 +1540,7 @@ bool PDLPSolver::checkConvergence(
15451540 for (HighsInt i = 0 ; i < lp_.num_col_ ; ++i) {
15461541 primal_obj += lp_.col_cost_ [i] * x[i];
15471542 }
1548- primal_obj /=
1549- scaling_.getConstraintBoundScaling () *
1550- scaling_.getObjectiveVectorScaling ();
1551- results.primal_obj = primal_obj + lp_.offset_ ;
1543+ results.primal_obj = primal_obj;
15521544
15531545 // Pass the now-populated slack vectors to computeDualObjective
15541546 double dual_obj = computeDualObjective (y, dSlackPos, dSlackNeg);
@@ -1944,11 +1936,10 @@ void PDLPSolver::unscaleSolution(std::vector<double>& x,
19441936 y_current_ = y;
19451937
19461938 const std::vector<double >& col_scale = scaling_.getColScaling ();
1947- const double objective_scale = scaling_.getObjectiveVectorScaling ();
19481939 if (!dSlackPos_.empty () && col_scale.size () == dSlackPos_.size ()) {
19491940 for (size_t i = 0 ; i < dSlackPos_.size (); ++i) {
1950- dSlackPos_[i] *= col_scale[i] / objective_scale ;
1951- dSlackNeg_[i] *= col_scale[i] / objective_scale ;
1941+ dSlackPos_[i] *= col_scale[i];
1942+ dSlackNeg_[i] *= col_scale[i];
19521943 }
19531944 }
19541945}
@@ -2837,16 +2828,13 @@ bool PDLPSolver::checkConvergenceGpu(const HighsInt iter, const double* d_x,
28372828 cudaMemcpyDeviceToHost, gpu_stream_));
28382829 CUDA_CHECK (cudaStreamSynchronize (gpu_stream_));
28392830
2840- const double constraint_scale = scaling_.getConstraintBoundScaling ();
2841- const double objective_scale = scaling_.getObjectiveVectorScaling ();
2842- const double combined_scale = constraint_scale * objective_scale;
28432831 double primal_feas_sq = h_results[0 ];
28442832 double dual_feas_sq = h_results[1 ];
2845- double primal_obj = h_results[2 ] / combined_scale + lp_.offset_ ;
2846- double dual_obj = h_results[3 ] / combined_scale + lp_.offset_ ;
2833+ double primal_obj = h_results[2 ] + lp_.offset_ ;
2834+ double dual_obj = h_results[3 ] + lp_.offset_ ;
28472835
2848- results.primal_feasibility = std::sqrt (primal_feas_sq) / constraint_scale ;
2849- results.dual_feasibility = std::sqrt (dual_feas_sq) / objective_scale ;
2836+ results.primal_feasibility = std::sqrt (primal_feas_sq);
2837+ results.dual_feasibility = std::sqrt (dual_feas_sq);
28502838 results.primal_obj = primal_obj;
28512839 results.dual_obj = dual_obj;
28522840
0 commit comments