Skip to content

Commit 4289974

Browse files
committed
Validate hipo_ordering
1 parent 951ac93 commit 4289974

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

highs/ipm/hipo/ipm/Solver.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,7 @@ Int Solver::setOptions(const HighsOptions& highs_options) {
5050
options_.parallel = highs_options.parallel;
5151
options_.parallel_type = highs_options.hipo_parallel_type;
5252
options_.nla = highs_options.hipo_system;
53-
54-
// Reordering heuristic
55-
if (highs_options.hipo_ordering != kHipoMetisString &&
56-
highs_options.hipo_ordering != kHipoAmdString &&
57-
highs_options.hipo_ordering != kHipoRcmString &&
58-
highs_options.hipo_ordering != kHighsChooseString) {
59-
highsLogUser(highs_options.log_options, HighsLogType::kError,
60-
"Unknown value of option %s\n", kHipoOrderingString.c_str());
61-
return kStatusError;
62-
}
6353
options_.ordering = highs_options.hipo_ordering;
64-
65-
// block size option
6654
options_.block_size = highs_options.hipo_block_size;
6755

6856
options_orig_ = options_;

highs/lp_data/HighsOptions.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,20 @@ bool optionHipoSystemOk(const HighsLogOptions& report_log_options,
211211
return false;
212212
}
213213

214+
bool optionHipoOrderingOk(const HighsLogOptions& report_log_options,
215+
const string& value) {
216+
if (value == kHipoAmdString || value == kHipoMetisString ||
217+
value == kHipoRcmString || value == kHighsChooseString)
218+
return true;
219+
highsLogUser(report_log_options, HighsLogType::kError,
220+
"Value \"%s\" for %s option is not one of \"%s\", \"%s\", "
221+
"\"%s\" or \"%s\"\n",
222+
value.c_str(), kHipoOrderingString.c_str(),
223+
kHipoAmdString.c_str(), kHipoMetisString.c_str(),
224+
kHipoRcmString.c_str(), kHighsChooseString.c_str());
225+
return false;
226+
}
227+
214228
bool boolFromString(std::string value, bool& bool_value) {
215229
std::transform(value.begin(), value.end(), value.begin(),
216230
[](unsigned char c) { return std::tolower(c); });
@@ -496,6 +510,9 @@ OptionStatus checkOptionValue(const HighsLogOptions& report_log_options,
496510
} else if (option.name == kHipoSystemString) {
497511
if (!optionHipoSystemOk(report_log_options, value))
498512
return OptionStatus::kIllegalValue;
513+
} else if (option.name == kHipoOrderingString) {
514+
if (!optionHipoOrderingOk(report_log_options, value))
515+
return OptionStatus::kIllegalValue;
499516
}
500517
return OptionStatus::kOk;
501518
}

highs/lp_data/HighsOptions.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ bool optionHipoParallelTypeOk(const HighsLogOptions& report_log_options,
142142
const string& value);
143143
bool optionHipoSystemOk(const HighsLogOptions& report_log_options,
144144
const string& value);
145+
bool optionHipoOrderingOk(const HighsLogOptions& report_log_options,
146+
const string& value);
145147

146148
bool boolFromString(std::string value, bool& bool_value);
147149

0 commit comments

Comments
 (0)