MCPcopy Create free account
hub / github.com/ERGO-Code/HiGHS / solveSubproblemICA

Function solveSubproblemICA

highs/presolve/ICrash.cpp:244–284  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

242}
243
244static void solveSubproblemICA(Quadratic& idata, const ICrashOptions& options) {
245 bool minor_iteration_details = false;
246
247 std::vector<double> residual_ica(idata.lp.num_row_, 0);
248 updateResidualIca(idata.lp, idata.xk, residual_ica);
249 double objective_ica = 0;
250
251 for (int k = 0; k < options.approximate_minimization_iterations; k++) {
252 for (int col = 0; col < idata.lp.num_col_; col++) {
253 // determine whether to minimize for col.
254 // if empty skip.
255 if (idata.lp.a_matrix_.start_[col] == idata.lp.a_matrix_.start_[col + 1])
256 continue;
257
258 double old_value = idata.xk.col_value[col];
259 minimizeComponentIca(col, idata.mu, idata.lambda, idata.lp, objective_ica,
260 residual_ica, idata.xk);
261
262 double new_value = idata.xk.col_value[col];
263 double delta_x = new_value - old_value;
264 if (minor_iteration_details) {
265 double quadratic_objective = getQuadraticObjective(idata);
266 printMinorIterationDetails(k, col, idata.xk.col_value[col] - delta_x,
267 delta_x, objective_ica, residual_ica,
268 quadratic_objective, options.log_options);
269 }
270
271 assert(std::fabs(objective_ica -
272 vectorProduct(idata.lp.col_cost_, idata.xk.col_value)) <
273 1e08);
274 }
275
276 // code below just for checking. Can comment out later if speed up is
277 // needed.
278 std::vector<double> residual_ica_check(idata.lp.num_row_, 0);
279 updateResidualIca(idata.lp, idata.xk, residual_ica_check);
280 double difference = getNorm2(residual_ica) - getNorm2(residual_ica_check);
281 assert(std::fabs(difference) < 1e08);
282 (void)difference;
283 }
284}
285
286static void solveSubproblemQP(Quadratic& idata, const ICrashOptions& options) {
287 bool minor_iteration_details = false;

Callers 1

solveSubproblemFunction · 0.85

Calls 6

updateResidualIcaFunction · 0.85
minimizeComponentIcaFunction · 0.85
getQuadraticObjectiveFunction · 0.85
vectorProductFunction · 0.85
getNorm2Function · 0.85

Tested by

no test coverage detected