Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
1fb31c4
Updated assessLpDimensions to legalLpDimensions
Oct 7, 2026
ff8f348
Renamed lpDimensionsLegal to legalLpDimensions matching legalMatrixDi…
Oct 7, 2026
992c226
Finally got the example to trigger the two asserts before fixing
Oct 7, 2026
86710bd
Now trimming HighsLp data in assessLp
Oct 7, 2026
79f0178
Highs::passModel() and Highs::passHessian() now return HighsStatus::k…
Oct 7, 2026
fa57bef
Set up legalDimensions in HighsSparseMatrix, HighsLp and HighsHessian…
Oct 8, 2026
68b62a4
Replaced legalLpDimensions and legalHessianDimensions by class method…
Oct 8, 2026
68885fe
Replaced trimLpDimensions and trimHessianDimensions by class method t…
Oct 8, 2026
17b726f
Formatted, but LP-illegal-empty-start-ok fails
Oct 8, 2026
786d4f4
Now write trimDimension for HighsSparseMatrix and HighsHessian, trimM…
Oct 8, 2026
39edc69
Introduced name_ for HighsSparsematrix and HighsHessian, removing it …
Oct 8, 2026
449ade2
Merge branch 'latest' into fix-3366
Oct 8, 2026
22f4569
LP-illegal-start passes, but what else fails?
Oct 8, 2026
4071c97
Debugged trim methods, and exposed incorrect start vector in 5 unit t…
Oct 8, 2026
97f7048
Merged latest into this branch and resolved minor conflict
Oct 9, 2026
fc29f2b
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into fix-…
fwesselm Oct 12, 2026
0c4eed3
Addressed the simple changes
jajhall Oct 12, 2026
7978f26
Added pointer to log_options to HighsLp and HighsSparseMatrix, requir…
jajhall Oct 12, 2026
0e1b26b
Transfer to fletcher
jajhall Oct 12, 2026
cf92328
Merge branch 'fix-3366' of https://github.com/ERGO-Code/HiGHS into fi…
fwesselm Oct 12, 2026
d7d461a
HighsLp and HighsSparseMatrix don't need HighsLogOptions
Oct 12, 2026
b15c84e
Cleaned out log_options pointer stuff
Oct 12, 2026
51fd0c0
All unit tests pass and are silent
Oct 12, 2026
0c81878
Fixed potential read error if assessMatrix were called for a partitio…
Oct 12, 2026
41f0429
Still need to distinguish made_first_call_ and written_log_header_
Oct 12, 2026
37d6671
Merge branch 'fix-3366' of https://github.com/ERGO-Code/HiGHS into fi…
fwesselm Oct 13, 2026
9d62be7
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into fix-…
fwesselm Oct 13, 2026
3fcdea8
Added std::call_once wrapper for highsLogHeader call
Oct 13, 2026
5d7ab2f
Renamed oFirstCall back to logHeader
Oct 13, 2026
199cba6
Formatted
Oct 13, 2026
b6ca673
Restored const to Highs methods that were previously const
Oct 13, 2026
b8d2cab
Merged latest into this branch and resolved minor conflict
Oct 13, 2026
37ddfbd
Made Highs methods const where possible
Oct 13, 2026
66bf638
Fixing LP-extreme-coefficient
Oct 13, 2026
da820be
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into fix-…
fwesselm Oct 14, 2026
79df378
Merge branch 'fix-3366-jh' of https://github.com/fwesselm/HiGHS into …
fwesselm Oct 14, 2026
8fb3dbd
Merge branch 'fix-3366' of https://github.com/ERGO-Code/HiGHS into fi…
Oct 14, 2026
7b36a23
Should models with a lower (upper) bound of (inf) (-inf) be accepted?
Oct 14, 2026
7a86ab5
Removed the old development presolve-initial-sweep and used its name …
Oct 14, 2026
9f5907a
Merge branch 'latest' into fix-3366
Oct 14, 2026
1002c78
Added test add-extreme-values to ensure that (attempting to) add row/…
Oct 14, 2026
6689384
Do we need cleanBounds and processedBoundsFindsInfeasibility?
Oct 14, 2026
d426f0d
Modified unit test resturn status when infeasible bounds are passed
Oct 14, 2026
b98344c
Merged latest into this branch and resolved conflicts in TestLpFileFo…
Oct 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions check/TestHighsHessian.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ TEST_CASE("HighsHessian", "[highs_hessian]") {
printf("\nOriginal\n");
triangular_hessian.print();
}
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kOk);
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kWarning);
if (dev_run) {
printf("\nReturned triangular Hessian\n");
triangular_hessian.print();
Expand All @@ -218,7 +218,7 @@ TEST_CASE("HighsHessian", "[highs_hessian]") {
printf("\nOriginal\n");
triangular_hessian.print();
}
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kOk);
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kWarning);
if (dev_run) {
printf("\nReturned triangular Hessian\n");
triangular_hessian.print();
Expand All @@ -234,7 +234,7 @@ TEST_CASE("HighsHessian", "[highs_hessian]") {
printf("\nOriginal\n");
triangular_hessian.print();
}
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kOk);
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kWarning);
if (dev_run) {
printf("\nReturned triangular Hessian\n");
triangular_hessian.print();
Expand All @@ -247,7 +247,7 @@ TEST_CASE("HighsHessian", "[highs_hessian]") {
printf("\nSquare Hessian as triangular original\n");
triangular_hessian.print();
}
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kOk);
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kWarning);
if (dev_run) {
printf("\nReturned triangular Hessian\n");
triangular_hessian.print();
Expand Down Expand Up @@ -288,7 +288,7 @@ TEST_CASE("HighsHessian", "[highs_hessian]") {
printf("\nOriginal\n");
triangular_hessian.print();
}
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kOk);
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kWarning);
if (dev_run) {
printf("\nReturned triangular Hessian\n");
triangular_hessian.print();
Expand All @@ -305,7 +305,7 @@ TEST_CASE("HighsHessian", "[highs_hessian]") {
printf("\nOriginal\n");
triangular_hessian.print();
}
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kOk);
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kWarning);
if (dev_run) {
printf("\nReturned triangular Hessian\n");
triangular_hessian.print();
Expand All @@ -321,7 +321,7 @@ TEST_CASE("HighsHessian", "[highs_hessian]") {
printf("\nOriginal\n");
triangular_hessian.print();
}
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kOk);
REQUIRE(assessHessian(triangular_hessian, options) == HighsStatus::kWarning);
if (dev_run) {
printf("\nReturned triangular Hessian\n");
triangular_hessian.print();
Expand Down
5 changes: 3 additions & 2 deletions check/TestHighsModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ TEST_CASE("highs-model", "[highs_model]") {
hessian.start_.resize(dim + 1);
hessian.start_[0] = 0;
hessian.start_[dim] = 0;
if (!dev_run) highs.setOptionValue("output_flag", false);
highs.setOptionValue("output_flag", dev_run);
if (dev_run) highs.setOptionValue("log_dev_level", 1);
status = highs.passModel(model);
REQUIRE(status == HighsStatus::kOk);

Expand All @@ -72,7 +73,7 @@ TEST_CASE("highs-model", "[highs_model]") {
hessian.value_[0] = illegal_small_hessian_diagonal_entry;
hessian.value_[1] = illegal_negative_hessian_diagonal_entry;
status = highs.passModel(model);
REQUIRE(status == HighsStatus::kOk);
REQUIRE(status == HighsStatus::kWarning);
status = highs.run();
REQUIRE(status == HighsStatus::kError);

Expand Down
23 changes: 11 additions & 12 deletions check/TestLpFileFormat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@ static HighsStatus readLp(Highs& highs, const std::string& filename,
highs.setOptionValue("log_to_console", dev_run);
highs.setCallback(
[](int, const std::string& message, const HighsCallbackOutput*,
HighsCallbackInput*, void* user_data) {
*static_cast<std::string*>(user_data) += message;
},
HighsCallbackInput*,
void* user_data) { *static_cast<std::string*>(user_data) += message; },
&log);
highs.startCallback(kCallbackLogging);
const HighsStatus status = highs.readModel(filename);
Expand Down Expand Up @@ -1208,9 +1207,9 @@ TEST_CASE("lp-file-format-model", "[LpFileFormat]") {
const HighsInt num_col = 14;
REQUIRE(lp.num_col_ == num_col);
REQUIRE(lp.num_row_ == 8);
REQUIRE(lp.col_names_ ==
std::vector<std::string>{"x", "y", "z", "w", "v", "u", "t", "s",
"r", "q", "p", "sc", "b1", "b2"});
REQUIRE(lp.col_names_ == std::vector<std::string>{"x", "y", "z", "w", "v",
"u", "t", "s", "r", "q",
"p", "sc", "b1", "b2"});
REQUIRE(lp.row_names_ == std::vector<std::string>{"c1", "c2", "55", "9.9",
"c5", "HiGHS_R5", "c7",
"c8"});
Expand All @@ -1225,8 +1224,8 @@ TEST_CASE("lp-file-format-model", "[LpFileFormat]") {
REQUIRE(lp.col_cost_ == cost);
REQUIRE(lp.col_lower_ == std::vector<double>{0, -5, -1, 1, -inf, 4, -inf,
-inf, 0, 2, 0, 2, 0, 0});
REQUIRE(lp.col_upper_ == std::vector<double>{10, inf, 1, 3, inf, 4, inf,
inf, 7, 2, inf, 10, 5, 1});
REQUIRE(lp.col_upper_ == std::vector<double>{10, inf, 1, 3, inf, 4, inf, inf,
7, 2, inf, 10, 5, 1});
std::vector<HighsVarType> integrality(num_col, HighsVarType::kContinuous);
integrality[8] = HighsVarType::kInteger;
integrality[9] = HighsVarType::kInteger;
Expand All @@ -1247,8 +1246,8 @@ TEST_CASE("lp-file-format-model", "[LpFileFormat]") {
REQUIRE(matrix.start_ == start);
REQUIRE(matrix.index_ ==
std::vector<HighsInt>{0, 1, 2, 4, 5, 7, 0, 1, 3, 5, 7, 3, 5, 2});
REQUIRE(matrix.value_ == std::vector<double>{1, 1, 1, 2, 1, 1, 1, -1, 1, 1,
1, 1, 1, 1});
REQUIRE(matrix.value_ ==
std::vector<double>{1, 1, 1, 2, 1, 1, 1, -1, 1, 1, 1, 1, 1, 1});
REQUIRE(!highs.getModel().isQp());
}

Expand Down Expand Up @@ -1422,6 +1421,7 @@ TEST_CASE("lp-file-format-row-names", "[LpFileFormat]") {
REQUIRE(highs.getLp().row_names_ == std::vector<std::string>{"HiGHS_R7"});
// Otherwise the generated names might clash, so all row names are removed
std::string log;

REQUIRE(readLp(highs, filename,
"min\n obj: x\nst\n HiGHS_R7: x >= 1\n x >= 2\nend\n",
log) == HighsStatus::kOk);
Expand Down Expand Up @@ -1459,8 +1459,7 @@ static std::string largeLpFile(const HighsInt num_row,
std::string content = "min\n obj: y\nst\n";
for (HighsInt i = 0; i < num_row; i++)
content += " c" + std::to_string(i) + ": " + std::to_string(i + 1) + " x" +
std::to_string(i % 1000) + " + y >= " + std::to_string(i) +
"\n";
std::to_string(i % 1000) + " + y >= " + std::to_string(i) + "\n";
return content + extra + "end\n";
}

Expand Down
Loading
Loading