@@ -1076,11 +1076,6 @@ HighsLpRelaxation::Status HighsLpRelaxation::run(bool resolve_on_error) {
10761076 // lpsolver.setOptionValue("output_flag", true);
10771077 const bool valid_basis = lpsolver.getBasis ().valid ;
10781078
1079- if (!valid_basis && this ->solved_first_lp ) {
1080- std::string get_presolve;
1081- lpsolver.getOptionValue (" presolve" , get_presolve);
1082- }
1083-
10841079 if (mipsolver.analysis_ .analyse_mip_time &&
10851080 !mipsolver.submip &&
10861081 !this ->solved_first_lp ) {
@@ -1089,7 +1084,6 @@ HighsLpRelaxation::Status HighsLpRelaxation::run(bool resolve_on_error) {
10891084 mipsolver.timer_ .read (),
10901085 valid_basis ? " " : " out" );
10911086 }
1092-
10931087 // Determine the solver
10941088 //
10951089 // Currently use simplex by default, unless IPM is requested
@@ -1121,7 +1115,27 @@ HighsLpRelaxation::Status HighsLpRelaxation::run(bool resolve_on_error) {
11211115 bool use_simplex = !use_ipm;
11221116 if (use_ipm) {
11231117 assert (!valid_basis);
1118+ const bool ipm_logging = true ;
1119+ if (ipm_logging) {
1120+ std::string presolve;
1121+ lpsolver.getOptionValue (" presolve" , presolve);
1122+ printf (" \n HighsLpRelaxation::run Solving the root node with IPM, using presolve = %s\n " , presolve.c_str ());
1123+ bool output_flag;
1124+ lpsolver.getOptionValue (" output_flag" , output_flag);
1125+ assert (output_flag == false );
1126+ (void )output_flag;
1127+ lpsolver.setOptionValue (" output_flag" , !mipsolver.submip );
1128+ }
1129+ const bool dump_ipm_lp = false ;
1130+ if (dump_ipm_lp && !mipsolver.submip ) {
1131+ const std::string file_name = mipsolver.model_ ->model_name_ + " _root.mps" ;
1132+ printf (" HighsMipSolverData::startAnalyticCenterComputation: Calling lpsolver.writeModel(%s)\n " , file_name.c_str ());
1133+ lpsolver.writeModel (file_name);
1134+ fflush (stdout);
1135+ exit (1 );
1136+ }
11241137 callstatus = lpsolver.run ();
1138+ if (ipm_logging) lpsolver.setOptionValue (" output_flag" , false );
11251139 if (callstatus == HighsStatus::kError ) {
11261140 lpsolver.setOptionValue (" solver" , kSimplexString );
11271141 use_simplex = true ;
@@ -1309,7 +1323,19 @@ HighsLpRelaxation::Status HighsLpRelaxation::run(bool resolve_on_error) {
13091323 // istanbul-no-cutoff
13101324 ipm.setOptionValue (" simplex_iteration_limit" ,
13111325 info.simplex_iteration_count );
1326+ const bool ipm_logging = true ;
1327+ if (ipm_logging) {
1328+ std::string presolve;
1329+ ipm.getOptionValue (" presolve" , presolve);
1330+ printf (" \n HighsLpRelaxation::run After lpsolver reached iteration limit, solving with IPM, using presolve = %s\n " , presolve.c_str ());
1331+ bool output_flag;
1332+ ipm.getOptionValue (" output_flag" , output_flag);
1333+ assert (output_flag == false );
1334+ (void )output_flag;
1335+ ipm.setOptionValue (" output_flag" , !mipsolver.submip );
1336+ }
13121337 ipm.run ();
1338+ if (ipm_logging) ipm.setOptionValue (" output_flag" , false );
13131339 if (use_hipo && !ipm.getBasis ().valid ) {
13141340 printf (
13151341 " In HighsLpRelaxation::run HiPO has failed to get a valid basis: "
0 commit comments