Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
3ea858a
Add util for free column substitution
fwesselm Nov 13, 2024
a2a25d0
Use HPRESOLVE_CHECKED_CALL
fwesselm Nov 13, 2024
416f3d7
Add utility for detecting dominated columns
fwesselm Nov 14, 2024
c1a2a27
Use new utility and add some comments
fwesselm Nov 14, 2024
4a0bb62
Merge branch 'domColUtil3' of https://github.com/fwesselm/HiGHS into …
fwesselm Nov 14, 2024
b19b01d
Fix incorrect checks against kHighsInf
fwesselm Nov 15, 2024
e29daba
Merge pull request #2039 from fwesselm/domColAndFreeColSubstUtils
jajhall Nov 15, 2024
cccb716
Added unit test for ceil failure
jajhall Nov 15, 2024
258c74c
Investigating
jajhall Nov 15, 2024
59d0a86
Simplify a little more
fwesselm Nov 17, 2024
7579a7f
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into sign…
fwesselm Nov 18, 2024
98b05a0
Treating |x|<1 as a special case in floor(HighsCDouble x) and ceil(Hi…
jajhall Nov 18, 2024
5ccc2dc
PDLP gets 5.5018458957e+03 not 5.50184588e+03 on windows_debug64
jajhall Nov 18, 2024
4856a65
Merge pull request #2043 from ERGO-Code/fix-2041
jajhall Nov 18, 2024
5115f46
Merge pull request #2040 from fwesselm/signErrors
jajhall Nov 18, 2024
1f0c4f0
Try to simplify parallel row and column detection
fwesselm Nov 19, 2024
d4a4a30
Created writeLocalModel unit test, assessHessianDimensions, and fixed…
jajhall Nov 19, 2024
f94a2c7
Added tests for starts and indices to HighsSparseMatrix, and using th…
jajhall Nov 19, 2024
a2c210a
Merge pull request #2048 from ERGO-Code/fix-2047
jajhall Nov 19, 2024
b3d1b61
Added HighsLinearObjective struct and vector of such as member of Hig…
jajhall Nov 20, 2024
4fa6d2f
Renamed Highs::run() to Highs::solve(), and created Highs::run() that…
jajhall Nov 20, 2024
615663c
Formatted
jajhall Nov 20, 2024
e063490
Created Highs::passLinearObjectives Highs::addLinearObjective Highs::…
jajhall Nov 20, 2024
ac831ec
Added check/TestMultiObjective.cpp and check/TestHighsCDouble.cpp
jajhall Nov 20, 2024
5db015b
Need to define solution, info and model status after lexicographic op…
jajhall Nov 21, 2024
b5aac76
Repeated priorities illegal; needs more testing
jajhall Nov 21, 2024
9f95d38
More unit tests of multi-objective optimization
jajhall Nov 21, 2024
aa09efb
Before removing dev printing
jajhall Nov 22, 2024
714ce34
Removed dev logging; formatted
jajhall Nov 22, 2024
8b7f707
WIP
fwesselm Nov 22, 2024
d5073a9
Merge branch 'master' into fix-1873
jajhall Nov 22, 2024
e383507
Started modifying documentation
jajhall Nov 22, 2024
4230322
Corrected make.jl and format in HighsOptions.h
jajhall Nov 22, 2024
857ee9b
Added docs/src/structures/structs
jajhall Nov 22, 2024
93762ae
Added Structures to make.jl
jajhall Nov 22, 2024
4c1fa21
Added some maths
jajhall Nov 22, 2024
9e7ac0a
Removed some unnecessary commas?
jajhall Nov 22, 2024
7dc5a14
Use the solution of one MIP to provide an integer feasible solution o…
jajhall Nov 22, 2024
23102c6
Finished first draft of documentation; add C and Python API
jajhall Nov 22, 2024
cda67ca
Debugging the C API for multi-objective optimization
jajhall Nov 22, 2024
3c71c59
Added C API and logging during multi-objective optimization
jajhall Nov 23, 2024
0493f8c
highspy API for multi-objective optimization is done and checked; for…
jajhall Nov 23, 2024
c7fb3ce
Merge pull request #2053 from ERGO-Code/fix-1873
jajhall Nov 23, 2024
60aec89
Fix transformation
fwesselm Nov 25, 2024
a045dfd
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into fix-…
fwesselm Nov 25, 2024
f85262a
Removed Highs_addLinearObjectiveWithIndex from C API, and added docst…
jajhall Nov 25, 2024
9726a7f
Fix if-block
fwesselm Nov 25, 2024
6b83821
Fix typo
fwesselm Nov 25, 2024
901e5d5
Hopefully corrected further.md
jajhall Nov 25, 2024
0778fae
New hope to correct further.md
jajhall Nov 25, 2024
1d25e74
Again... new hope to correct further.md
jajhall Nov 25, 2024
bf5c7db
More... again... new hope to correct further.md
jajhall Nov 25, 2024
5b9852b
Merge pull request #2057 from ERGO-Code/fix-1873
jajhall Nov 25, 2024
52d1b58
Added examples/knapsack.py to illustrate setSolution in highspy
jajhall Nov 25, 2024
97340d6
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into fix-…
fwesselm Nov 25, 2024
92852f6
fix constructor initialization order
svigerske Nov 25, 2024
9fe1497
fix missing prior declartion of public function
svigerske Nov 25, 2024
7ae32fa
Merge pull request #2061 from ERGO-Code/fix-compiler-warnings
svigerske Nov 25, 2024
16bc17c
Add an assertion
fwesselm Nov 26, 2024
4f59aa8
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into fix-…
fwesselm Nov 26, 2024
8bddf0b
Store indices in set instead of manipulating bound type
fwesselm Nov 26, 2024
083f617
Fix index error
fwesselm Nov 26, 2024
0052f8f
Restructure a little bit
fwesselm Nov 26, 2024
0373ffd
Minor changes to loop
fwesselm Nov 27, 2024
8465762
Simplify
fwesselm Nov 27, 2024
2c9e304
MAINT: declare that `highspy._core` supports free-threaded CPython
rgommers Nov 27, 2024
9567bac
Merge pull request #2063 from rgommers/nogil-safe-upstream
jajhall Nov 27, 2024
9fdc611
First draft of HighsSimplexStats
jajhall Nov 28, 2024
258e8c0
HighsSimplexStats struct gives data about last simplex solve
jajhall Nov 28, 2024
dcd8bcc
Merge pull request #2064 from ERGO-Code/simplex-stats
jajhall Nov 28, 2024
938c655
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into fix-…
fwesselm Dec 2, 2024
6769ea4
Fix issue #2025
quantresearch1 Dec 3, 2024
e574144
fix-2025
quantresearch1 Dec 3, 2024
f3967c6
Merge pull request #2066 from fwesselm/fix-1954
jajhall Dec 3, 2024
b3083d5
Merge pull request #2067 from quantresearch1/fix-2025
jajhall Dec 3, 2024
d02fd43
WIP
fwesselm Dec 4, 2024
20dbb7a
fix comment
fwesselm Dec 4, 2024
38bfe78
Add one more utility
fwesselm Dec 4, 2024
7a5ed4b
Add another small utility to simplify code
fwesselm Dec 4, 2024
ec01749
Add some more comments
fwesselm Dec 4, 2024
85b2b47
Merge pull request #2068 from ERGO-Code/fix-2025
jajhall Dec 4, 2024
9ed363a
fix #2017
quantresearch1 Dec 5, 2024
a9bc0da
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into refa…
fwesselm Dec 6, 2024
b84d57d
Add comment
fwesselm Dec 6, 2024
c92942d
Merge pull request #2073 from quantresearch1/fix-2017
jajhall Dec 6, 2024
cc1f2aa
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into refa…
fwesselm Dec 9, 2024
667ab4b
Use const
fwesselm Dec 9, 2024
0f2ef94
Added an assertion
fwesselm Dec 10, 2024
fcce0ca
Fix include file
fwesselm Dec 11, 2024
6609602
Merge pull request #2079 from fwesselm/fixInclude
jajhall Dec 11, 2024
1f86a97
Fix detection of implied integral (already integer-constrained) varia…
fwesselm Dec 11, 2024
2ade1cd
Fix comment
fwesselm Dec 11, 2024
9106335
Minor change
fwesselm Dec 11, 2024
a9f7144
Revert checking of all rows and add comments
fwesselm Dec 12, 2024
f798574
Simplify two loops
fwesselm Dec 12, 2024
66c256c
Minor change
fwesselm Dec 12, 2024
5b295cc
Use const reference
fwesselm Dec 13, 2024
1e3fbe5
Merge pull request #2082 from fwesselm/simplifyTwoLoops
jajhall Dec 13, 2024
5448954
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into refa…
fwesselm Dec 16, 2024
68b8133
test sdist testpypi
galabovaa Dec 16, 2024
d370224
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into mino…
fwesselm Dec 16, 2024
93128a9
Merge pull request #2085 from fwesselm/refactorCutGen
jajhall Dec 16, 2024
0517c84
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into mino…
fwesselm Dec 16, 2024
3fa2b8b
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into simp…
fwesselm Dec 17, 2024
00205bf
Lambda for removing doubleton eqs in row presolve
fwesselm Dec 17, 2024
9513220
Merge pull request #2086 from fwesselm/minorPresolveIssues
jajhall Dec 17, 2024
d828d1e
Merge branch 'latest' of https://github.com/ERGO-Code/HiGHS into remD…
fwesselm Dec 18, 2024
4adca85
Merge branch 'simplifyParallelRed' of https://github.com/fwesselm/HiG…
fwesselm Dec 19, 2024
12cbe21
Merge branch 'latest' into sdist
galabovaa Dec 19, 2024
e8b51a0
added sdist to build workflows and also a test for all three OS
galabovaa Dec 19, 2024
769f2cb
fix action from last month
galabovaa Dec 19, 2024
d12990c
sdist
galabovaa Dec 19, 2024
80e7715
explicit ninja for build
galabovaa Dec 19, 2024
48956e0
regex
galabovaa Dec 19, 2024
f076122
testing scripts
galabovaa Dec 19, 2024
8f9c7bc
sdist clean up
galabovaa Dec 19, 2024
5c778ac
pyproject and tests
galabovaa Dec 19, 2024
f263d4e
test
galabovaa Dec 19, 2024
2dc734f
Merge pull request #2088 from fwesselm/twoMorePresolveUtils
jajhall Dec 19, 2024
2241aac
tests and bazel
galabovaa Dec 19, 2024
c05e9db
bazel test
galabovaa Dec 20, 2024
b241a3f
iteration test and ninja to CI
galabovaa Dec 20, 2024
9a42e15
venv mac
galabovaa Dec 20, 2024
06fcd1b
mac venv and testpypi
galabovaa Dec 20, 2024
8951cdc
sdist macos
galabovaa Dec 20, 2024
d1aced3
clean up
galabovaa Dec 20, 2024
0fc4bec
Silenced bin/unit_tests
jajhall Dec 20, 2024
ee702d3
Silenced MIP-Timing logging unless mipsolver.analysis_.analyse_mip_ti…
jajhall Dec 20, 2024
efa50c5
Merge pull request #2089 from ERGO-Code/sdist
galabovaa Dec 20, 2024
d9227cf
version bump
galabovaa Dec 20, 2024
fa40bdf
testPypi
galabovaa Dec 20, 2024
2117f19
highspy already on pypi, disable push wheel workflow until the next r…
galabovaa Dec 20, 2024
f41a161
add sdist to Features.md for release tag
galabovaa Dec 20, 2024
7db0525
Merge pull request #2090 from ERGO-Code/version-bump
galabovaa Dec 20, 2024
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
Next Next commit
Add util for free column substitution
  • Loading branch information
fwesselm committed Nov 13, 2024
commit 3ea858a49532ce22d11d1755c3b4eb39fe8a9a2a
51 changes: 24 additions & 27 deletions src/presolve/HPresolve.cpp
Original file line number Diff line number Diff line change
@@ -2986,19 +2986,12 @@ HPresolve::Result HPresolve::singletonCol(HighsPostsolveStack& postsolve_stack,

if (logging_on)
analysis_.startPresolveRuleLog(kPresolveRuleFreeColSubstitution);

// todo, store which side of an implied free dual variable needs to be used
// for substitution
storeRow(row);

HighsPostsolveStack::RowType rowType;
double rhs;
dualImpliedFreeGetRhsAndRowType(row, rhs, rowType);

postsolve_stack.freeColSubstitution(row, col, rhs, model->col_cost_[col],
rowType, getStoredRow(),
getColumnVector(col));
// todo, check integrality of coefficients and allow this
substitute(row, col, rhs);
substituteFreeCol(postsolve_stack, row, col);

analysis_.logging_on_ = logging_on;
if (logging_on)
@@ -3010,6 +3003,26 @@ HPresolve::Result HPresolve::singletonCol(HighsPostsolveStack& postsolve_stack,
return Result::kOk;
}

void HPresolve::substituteFreeCol(HighsPostsolveStack& postsolve_stack,
HighsInt row, HighsInt col,
bool relaxRowDualBounds) {
assert(!rowDeleted[row]);
assert(!colDeleted[col]);
assert(isDualImpliedFree(row));
assert(isImpliedFree(col));

HighsPostsolveStack::RowType rowType;
double rhs;
dualImpliedFreeGetRhsAndRowType(row, rhs, rowType, relaxRowDualBounds);

postsolve_stack.freeColSubstitution(row, col, rhs, model->col_cost_[col],
rowType, getStoredRow(),
getColumnVector(col));

// todo, check integrality of coefficients and allow this
substitute(row, col, rhs);
}

HPresolve::Result HPresolve::rowPresolve(HighsPostsolveStack& postsolve_stack,
HighsInt row) {
assert(!rowDeleted[row]);
@@ -4846,18 +4859,9 @@ HPresolve::Result HPresolve::aggregator(HighsPostsolveStack& postsolve_stack) {
// in the case where the row has length two or the column has length two
// we always do the substitution since the fillin can never be problematic
if (rowsize[row] == 2 || colsize[col] == 2) {
double rhs;
HighsPostsolveStack::RowType rowType;
dualImpliedFreeGetRhsAndRowType(row, rhs, rowType, true);

storeRow(row);

postsolve_stack.freeColSubstitution(row, col, rhs, model->col_cost_[col],
rowType, getStoredRow(),
getColumnVector(col));
substituteFreeCol(postsolve_stack, row, col, true);
substitutionOpportunities[i].first = -1;

substitute(row, col, rhs);
HPRESOLVE_CHECKED_CALL(removeRowSingletons(postsolve_stack));
HPRESOLVE_CHECKED_CALL(checkLimits(postsolve_stack));
continue;
@@ -4894,15 +4898,8 @@ HPresolve::Result HPresolve::aggregator(HighsPostsolveStack& postsolve_stack) {
}

nfail = 0;
double rhs;
HighsPostsolveStack::RowType rowType;
dualImpliedFreeGetRhsAndRowType(row, rhs, rowType, true);

postsolve_stack.freeColSubstitution(row, col, rhs, model->col_cost_[col],
rowType, getStoredRow(),
getColumnVector(col));
substituteFreeCol(postsolve_stack, row, col, true);
substitutionOpportunities[i].first = -1;
substitute(row, col, rhs);
HPRESOLVE_CHECKED_CALL(removeRowSingletons(postsolve_stack));
HPRESOLVE_CHECKED_CALL(checkLimits(postsolve_stack));
}
3 changes: 3 additions & 0 deletions src/presolve/HPresolve.h
Original file line number Diff line number Diff line change
@@ -315,6 +315,9 @@ class HPresolve {

Result singletonCol(HighsPostsolveStack& postsolve_stack, HighsInt col);

void substituteFreeCol(HighsPostsolveStack& postsolve_stack, HighsInt row,
HighsInt col, bool relaxRowDualBounds = false);

Result rowPresolve(HighsPostsolveStack& postsolve_stack, HighsInt row);

Result colPresolve(HighsPostsolveStack& postsolve_stack, HighsInt col);