@@ -4376,68 +4376,31 @@ void Highs::forceHighsSolutionBasisSize() {
43764376 // HighsBasis and HighsInfo
43774377 const HighsInt num_col = this ->model_ .lp_ .num_col_ ;
43784378 const HighsInt num_row = this ->model_ .lp_ .num_row_ ;
4379- HighsInt previous_size;
4380- // Col values
4381- previous_size = static_cast <HighsInt>(solution_.col_value .size ());
4382- solution_.col_value .resize (num_col);
4383- if (previous_size < num_col) {
4384- for (HighsInt iCol = previous_size; iCol < num_col; iCol++)
4385- solution_.col_value [iCol] = 0 ;
4379+ // Values
4380+ if (solution_.col_value .size () < static_cast <size_t >(num_col) ||
4381+ solution_.row_value .size () < static_cast <size_t >(num_row)) {
43864382 solution_.value_valid = false ;
43874383 info_.primal_solution_status = kSolutionStatusNone ;
43884384 }
4389- // Row values
4390- previous_size = static_cast <HighsInt>(solution_.row_value .size ());
4391- solution_.row_value .resize (num_row);
4392- if (previous_size < num_row) {
4393- for (HighsInt iRow = previous_size; iRow < num_row; iRow++)
4394- solution_.row_value [iRow] = 0 ;
4395- solution_.value_valid = false ;
4396- info_.primal_solution_status = kSolutionStatusNone ;
4397- }
4398- // Col duals
4399- previous_size = static_cast <HighsInt>(solution_.col_dual .size ());
4400- solution_.col_dual .resize (num_col);
4401- if (previous_size < num_col) {
4402- for (HighsInt iCol = previous_size; iCol < num_col; iCol++)
4403- solution_.col_dual [iCol] = 0 ;
4385+ solution_.col_value .resize (num_col, 0 );
4386+ solution_.row_value .resize (num_row, 0 );
4387+ // Duals
4388+ if (solution_.col_dual .size () < static_cast <size_t >(num_col) ||
4389+ solution_.row_dual .size () < static_cast <size_t >(num_row)) {
44044390 solution_.dual_valid = false ;
44054391 info_.dual_solution_status = kSolutionStatusNone ;
44064392 }
4407- // Row duals
4408- previous_size = static_cast <HighsInt>(solution_.row_dual .size ());
4409- solution_.row_dual .resize (num_row);
4410- if (previous_size < num_row) {
4411- for (HighsInt iRow = previous_size; iRow < num_row; iRow++)
4412- solution_.row_dual [iRow] = 0 ;
4413- solution_.dual_valid = false ;
4414- info_.dual_solution_status = kSolutionStatusNone ;
4415- }
4416-
4417- // Ensure that the HiGHS basis vectors are the right size,
4418- // invalidating the basis if they aren't
4419- previous_size = static_cast <HighsInt>(basis_.col_status .size ());
4420- if (previous_size != num_col) {
4421- basis_.col_status .resize (num_col);
4422- if (previous_size < num_col) {
4423- for (HighsInt iCol = previous_size; iCol < num_col; iCol++)
4424- basis_.col_status [iCol] = HighsBasisStatus::kNonbasic ;
4425- }
4426- basis_.valid = false ;
4427- basis_.useful = false ;
4428- info_.basis_validity = kBasisValidityInvalid ;
4429- }
4430- previous_size = static_cast <HighsInt>(basis_.row_status .size ());
4431- if (previous_size != num_row) {
4432- basis_.row_status .resize (num_row);
4433- if (previous_size < num_row) {
4434- for (HighsInt iRow = previous_size; iRow < num_row; iRow++)
4435- basis_.row_status [iRow] = HighsBasisStatus::kBasic ;
4436- }
4393+ solution_.col_dual .resize (num_col, 0 );
4394+ solution_.row_dual .resize (num_row, 0 );
4395+ // Basis
4396+ if (basis_.col_status .size () != static_cast <size_t >(num_col) ||
4397+ basis_.row_status .size () != static_cast <size_t >(num_row)) {
44374398 basis_.valid = false ;
44384399 basis_.useful = false ;
44394400 info_.basis_validity = kBasisValidityInvalid ;
44404401 }
4402+ basis_.col_status .resize (num_col, HighsBasisStatus::kNonbasic );
4403+ basis_.row_status .resize (num_row, HighsBasisStatus::kBasic );
44414404}
44424405
44434406void Highs::setHighsModelStatusAndClearSolutionAndBasis (
0 commit comments