@@ -424,21 +424,40 @@ void Model::adjustFreeVars(std::vector<double>& x, std::vector<double>& xl,
424424 // getting close to lower bound
425425 const double new_lower = x[i] / kFreeVarsCloseRatio ;
426426 logger.printDetailed (
427- " Free var %5d is at %8.1e with lb %8.1e, lb changed to %8.1e\n " , i, x[i],
428- lower_[i], new_lower);
427+ " Free var %5d is at %8.1e with lb %8.1e, lb changed to %8.1e\n " , i,
428+ x[i], lower_[i], new_lower);
429429 lower_[i] = new_lower;
430430 xl[i] = x[i] - lower_[i];
431431 }
432432 if (x[i] > upper_[i] * kFreeVarsCloseRatio ) {
433433 // getting close to upper bound
434434 const double new_upper = x[i] / kFreeVarsCloseRatio ;
435435 logger.printDetailed (
436- " Free var %5d is at %8.1e with ub %8.1e, ub changed to %8.1e\n " , i, x[i],
437- upper_[i], new_upper);
436+ " Free var %5d is at %8.1e with ub %8.1e, ub changed to %8.1e\n " , i,
437+ x[i], upper_[i], new_upper);
438438 upper_[i] = new_upper;
439439 xu[i] = upper_[i] - x[i];
440440 }
441441 }
442442}
443443
444+ void Model::saveBounds () {
445+ best_lower_.resize (free_variables_.size ());
446+ best_upper_.resize (free_variables_.size ());
447+ Int next = 0 ;
448+ for (Int i : free_variables_) {
449+ best_lower_[next] = lower_[i];
450+ best_upper_[next] = upper_[i];
451+ ++next;
452+ }
453+ }
454+ void Model::resetBounds () {
455+ Int next = 0 ;
456+ for (Int i : free_variables_) {
457+ lower_[i] = best_lower_[next];
458+ upper_[i] = best_upper_[next];
459+ ++next;
460+ }
461+ }
462+
444463} // namespace hipo
0 commit comments