Releases: atoptima/Coluna.jl
Releases · atoptima/Coluna.jl
v0.8.1
Coluna v0.8.1
Merged pull requests:
- Fixed bug in presolve (#1127) (@rrsadykov)
- "Strict integrality check" parameter for column generation (#1128) (@rrsadykov)
- Function to test whether a column is proper (#1129) (@rrsadykov)
- Option to run the presolve algorithm (#1130) (@rrsadykov)
- Version 0.8.1 (#1131) (@rrsadykov)
v0.8.0
Coluna v0.8.0
Merged pull requests:
- First version of presolve (#1069) (@guimarqu)
- Presolve: consider variables that does not appear in coefficient matrix (#1085) (@guimarqu)
- fix bound tightening for == & negative coefficient (#1086) (@guimarqu)
- [presolve] error message if fixing artificial variable (#1087) (@guimarqu)
- [presolve] method to check if column is proper (#1088) (@guimarqu)
- [presolve] useless condition in column is proper (#1089) (@guimarqu)
- remove uncovered Reformulation constructor (#1090) (@guimarqu)
- call local global bounds propagation in presolve (#1091) (@guimarqu)
- [presolve] propagation of global bounds (#1092) (@guimarqu)
- [presolve] fix method call (#1093) (@guimarqu)
- [presolve] presolve repr master (#1094) (@guimarqu)
- [presolve] update master using repr master erases rhs update (#1095) (@guimarqu)
- [presolve] improving performance of bound tightening (#1096) (@guimarqu)
- [presolve] improving treat & introducing row deactivation (#1097) (@guimarqu)
- [presolve] method to detect vars not participating in any constraints (#1098) (@guimarqu)
- [presolve] extract steps of presolve form update (#1099) (@guimarqu)
- [presolve] first version; broken unit tests (#1100) (@guimarqu)
- [presolve] fix local/global bounds computation (#1101) (@guimarqu)
- Presolve v1 candidate (#1102) (@guimarqu)
- Update of formulation storages (#1103) (@rrsadykov)
- Stabilization correction (#1104) (@rrsadykov)
- partial sol in colgen stab (#1105) (@guimarqu)
- Preprocessing documentation (#1106) (@guimarqu)
- Presolve unit tests (#1107) (@guimarqu)
- Fix MOI tests (#1109) (@rrsadykov)
- Get custom data of a column in a disaggregated solution (#1110) (@rrsadykov)
- Nice reformulation output (#1111) (@rrsadykov)
- Correction in the column generation integrality check (#1112) (@rrsadykov)
- Correction for initial bounds of representative variables (#1113) (@rrsadykov)
- BlockDecomposition version bump to fix tests (#1114) (@rrsadykov)
- Branching priority for columns (#1115) (@rrsadykov)
- Finishing presolve algorithm (#1116) (@rrsadykov)
- Update ci.yml: Change latest Julia to Julia 1.8.5 (#1117) (@rrsadykov)
- Remove Heuristic module (#1120) (@rrsadykov)
- Global bounds for DW subproblem variables in Parser (#1121) (@rrsadykov)
- Correction for output of the global dual bound (#1122) (@rrsadykov)
- Restore correct strong branching output (#1123) (@rrsadykov)
- Correction to support Julia 1.10 (#1125) (@rrsadykov)
- Version 0.8 (#1126) (@rrsadykov)
Closed issues:
- print subproblems and/or master (#757)
- Issues with variable fixing (#1061)
- Pricing representatives in the master should have global bounds (#1063)
- Global bounds output is not correct (#1077)
- Move
AbstractHeuristic
toAlgorithm
module (#1078) - Tests do not pass in Julia 1.10 (#1118)
- Strong branching output is corrupted (#1119)
- Assertion error, explore.jl type expected an Int32 and got an Int64 (#1124)
v0.7.0
Coluna v0.7.0
Merged pull requests:
- move Parser into a Coluna submodule (#1050) (@guimarqu)
- Allow definition of the origin formulation of master columns in Tests… (#1051) (@guimarqu)
- fix space type of node_is_leaf (#1053) (@guimarqu)
- Parser: declare columns as integer (#1054) (@guimarqu)
- Least fractional criterion for branching (#1055) (@guimarqu)
- unit tests for branching criterion (#1057) (@guimarqu)
- Added ClosestToNonZeroIntegerCriterion branching criterion (#1058) (@rrsadykov)
- Introduce subproblem multiplicities in presolve (#1059) (@guimarqu)
- Put back StaticVarConstrUnit and improving PresolveAlgorithm interface (#1060) (@rrsadykov)
- presolve: global bounds of pure master repr (#1062) (@guimarqu)
- Redefine partial solution (#1064) (@guimarqu)
- Presolve new var fixing using partial solution (#1065) (@guimarqu)
- unit tests for partial solution in presolve (#1066) (@guimarqu)
- support of partial solution in static var constr record (#1067) (@guimarqu)
- Proposition for presolve interface + put back StaticVarConstrUnit usage (#1068) (@rrsadykov)
- Remove unused function get_root() (#1070) (@rrsadykov)
- presolve: special treatment for master col bounds & master convexity constrs (#1071) (@guimarqu)
- Remove children nodes from branching candidates (#1072) (@rrsadykov)
- integration test: partial solution / subsolver (#1073) (@guimarqu)
- make bounds of representative variables global (#1074) (@guimarqu)
- Global bounds for representatives of different subproblems (#1075) (@guimarqu)
- Run conquer algorithm in TreeSearch only if
conquer_output
of the node is empty (#1076) (@rrsadykov) - Simplification of the divide output (#1080) (@rrsadykov)
- Subproblem local bound propagation (#1081) (@guimarqu)
- Update index.md (#1082) (@guimarqu)
- v0.7.0 (#1083) (@guimarqu)
- Update NEWS.md (#1084) (@guimarqu)
Closed issues:
v0.6.5
Coluna v0.6.5
Closed issues:
- Bug when
<DB= Inf>
in colgen (#735) - Use of primal bounds in column generation (#872)
- Refactoring of ColCutGenConquer (#954)
- Test TreeSearch (#971)
- Conquer should not have access to the Branch-and-Bound node (#979)
- Remove Project.toml in tests (#1001)
Merged pull requests:
- Fix strong branching (#875) (@guimarqu)
- Update tuto custom data (#962) (@najaverzat)
- init documentation for user-supplied parameters checkings (#972) (@najaverzat)
- Benders documentation (#975) (@guimarqu)
- Add e2e tests for tree search (#976) (@najaverzat)
- Benders decomposition documentation (#977) (@guimarqu)
- Fix typos in benders api doc (#978) (@najaverzat)
- ColGen parameters checker (#980) (@guimarqu)
- Comments in the branch-and-bound algorithm (#981) (@guimarqu)
- Do not use node in conquer (#982) (@guimarqu)
- mv initial restore_from_records of conquer into tree search or branching (#983) (@guimarqu)
- Clarify communication between tree search, conquer, and branching (#984) (@guimarqu)
- remove get_opt_state (#985) (@guimarqu)
- restore some unit tests of Algorithms (#986) (@guimarqu)
- fix doc (#987) (@guimarqu)
- Fix the definition of the NodeFinalizer algorithm (#988) (@artalvpes)
- Make the initial IP primal bound reach the conquer input (#990) (@artalvpes)
- Initialization of unit tests for tree search (#991) (@najaverzat)
- fix storage doc (#992) (@guimarqu)
- Boost and add tests for treesearch (wip) (#993) (@najaverzat)
- create a routine in children to check if the divide should be run (#994) (@najaverzat)
- accumulator for leaves data (#995) (@guimarqu)
- Fix tests (#996) (@guimarqu)
- fix tree search output and fix some e2e tests (#997) (@guimarqu)
- Correction of run_divide routine and update of treesearch tests (#998) (@najaverzat)
- Checks before conquer (#999) (@najaverzat)
- JSON file printer for the Branch&Bound (#1000) (@guimarqu)
- Update tests treesearch (#1002) (@najaverzat)
- Fix the non robust cuts contribution when optimizing the subproblems (#1003) (@artalvpes)
- remove Project.toml from tests (#1004) (@guimarqu)
- create subroutine gap_closed in bounds.jl (#1005) (@najaverzat)
- Q&A gurobi (#1006) (@guimarqu)
- Fixing contribution of non-robust cuts in the case where stabilization is active (#1007) (@guimarqu)
- integrate first tests (#1008) (@najaverzat)
- fix json printer (#1009) (@guimarqu)
- Remove definition of search space type in test B&B search space (#1010) (@guimarqu)
- Update qa.md (#1011) (@guimarqu)
- Fix run divide condition + boost tests treesearch (#1012) (@najaverzat)
- add tests for tree search (#1013) (@najaverzat)
- introduce a structure to manage the global primal bound (#1014) (@guimarqu)
- Algorithm interface & lifecycle documentation (#1015) (@guimarqu)
- fix B&B termination status when node limit is reached and all leaves infeasible (#1016) (@guimarqu)
- update doc of built-in algorithms (#1017) (@guimarqu)
- fix initial primal bound communication from parent to child algorithms (#1018) (@guimarqu)
- prepare v0.6.5 (#1019) (@guimarqu)
- stop colgen when db reaches ipb (#1020) (@guimarqu)
- Fix the primal and dual bounds set by the node finalizer (#1021) (@artalvpes)
v0.6.4
Coluna v0.6.4
Closed issues:
- Suggestion: rename Phase 3 to Phase 0 in ColGen (#952)
Merged pull requests:
- Improve column generation dev doc (1) (#947) (@guimarqu)
- Attempt to update man/algorithms (#953) (@enjoyUrFruits)
- re-organize and boost man/decomposition (#955) (@enjoyUrFruits)
- Update man/callbacks (#956) (@enjoyUrFruits)
- Lagragian bound + stabilization doc for colgen (#957) (@guimarqu)
- reorganize tutorials (#958) (@enjoyUrFruits)
- colgen interface code org (#959) (@guimarqu)
- Formula decomposition (#960) (@enjoyUrFruits)
- move tutorial on identical sps from Manual/ to Tutorials/ (#961) (@enjoyUrFruits)
- finishing column generation doc (#963) (@guimarqu)
- fix typos on Location Routing advanced demo (#964) (@enjoyUrFruits)
- Benders documentation (#965) (@guimarqu)
- add formulas for man -> benders (#966) (@enjoyUrFruits)
- Rename phase 3 into phase 0 in ColGen (#967) (@enjoyUrFruits)
- Benders documentation (#968) (@guimarqu)
- fix Benders doc + add more info in Decomposition doc (#969) (@guimarqu)
- increase collapse level + subtitle in decomposition doc" (#970) (@guimarqu)
- fix tree search with identical subproblems (#973) (@guimarqu)
- v0.6.4 (#974) (@guimarqu)
v0.6.3
Coluna v0.6.3
Merged pull requests:
- Stabilization for Column Generation (#930) (@guimarqu)
- Update NEWS.md & README.md (#946) (@guimarqu)
- Remove useless args in ColGen interface & fix stabilization (#948) (@guimarqu)
- Improve Column Generation generic functions (#949) (@guimarqu)
- Fix lagrangian bound calculation in column generation (#950) (@guimarqu)
- v0.6.3 (#951) (@guimarqu)
v0.6.2
Coluna v0.6.2
Closed issues:
- update_all_ip_primal_solutions! reverse loop (#397)
- Handle variable bounds with
LowerThan
GreaterThan
constraints (#799) - Check how to deal with equalities when computing Benders cuts right-hand side (#934)
Merged pull requests:
Interval
->GreaterThan
&LowerThan
(#922) (@guimarqu)- Benders: don't check second stage cost estimation when sep returns feasibility cut (#923) (@guimarqu)
- Benders docstrings (#924) (@guimarqu)
- add small location routing formulation in benders_default (#925) (@enjoyUrFruits)
- Remove unused & deprec method from MathProg (#926) (@guimarqu)
- 1st version of dynamic smoothing stab for column generation (#928) (@guimarqu)
- TestBendersIterationContext in benders_default (#929) (@enjoyUrFruits)
- File for stabilization tests (#931) (@guimarqu)
- Test subgradient calculation helper (#932) (@guimarqu)
- Test primal solution used to compute subgradient in alpha self-adjusting procedure (#933) (@guimarqu)
- test angle; fix subgradient calculation (#935) (@guimarqu)
- Test benders cuts (#936) (@enjoyUrFruits)
- remove LOWER_UPPER from enum ActiveBound (#937) (@enjoyUrFruits)
- Implement
NoColGenStab
+ fix colgen tests (#938) (@guimarqu) - Test Benders flow for infeasible/unbounded (#939) (@enjoyUrFruits)
- Test ColGen stabilization flow (#940) (@guimarqu)
- test final dual bound of colgen with stabilization (#941) (@guimarqu)
- Stabilization documentation (#942) (@guimarqu)
- v0.6.2 (#943) (@guimarqu)
- Update NEWS.md (#944) (@guimarqu)
- Boost tests for Benders IP master (#945) (@enjoyUrFruits)
v0.6.1
Coluna v0.6.1
Closed issues:
- Duplicated functionality : getvalue and float (#492)
- Do not dispatch on primal/dual and objective sense anymore (#785)
- Make solution pool easier to work with (#808)
- Need a user callback to compare columns when non-robust cuts will be inserted (#912)
Merged pull requests:
- fix Benders algorithm logic (#911) (@guimarqu)
- Bound{Space, Sense} -> Bound (#913) (@guimarqu)
- OptimizationState{F,S} -> OptimizationState{F} (#914) (@guimarqu)
- Pool struct for primal solutions of colgen (#915) (@guimarqu)
- Delete unused code from MathProg (#916) (@guimarqu)
- Pool of dual solutions for Benders (#917) (@guimarqu)
- integration & e2e tests in github ci (#918) (@guimarqu)
- test Benders loop output (#919) (@guimarqu)
- Update NEWS.md (#920) (@guimarqu)
- v0.6.1 (#921) (@guimarqu)
v0.6.0
Coluna v0.6.0
Closed issues:
- Follow up of "custom data" (#536)
- Remove "New" prefix from storage and record types (#717)
- Benders broken when objective sense is
Max
(#720) - Deletion callback for storage units (#755)
- The pricing solver not returning any solution leads to an error message (#758)
- Non-robust cut documentation (#763)
- Isolate TreeSearch and Branching in new modules (#764)
- Fix check feasibility of primal solution when identical subproblems (#765)
- Column generation iteration tests (#769)
- Column generation iteration - test identical subproblems (#790)
- Column generation - printer (#791)
- Using coluna.jl with Mosek and MSK_RES_ERR_UPPER_BOUND_IS_A_NAN (#793)
- New ColGen - bug with identical subproblems (#798)
- Remove INFEASIBLE_AND_UNBOUNDED termination status (#832)
- Throw error if unbounded master or subproblem in colgen (#833)
- Fix extra e2e tests (#838)
- incremental compilation may be fatally broken for this module (#847)
- ColGen: fix convergence condition (#855)
- Prevent colgen from running when no more stage (#856)
- Benders tests (#862)
Merged pull requests:
- Refactor reformulation parser (#754) (@eduardovegas)
- ColGen Iteration & Phases API (#759) (@guimarqu)
- fix display db2 (#760) (@enjoyUrFruits)
- MustImplement module (#761) (@guimarqu)
- prepare use of Revise to run tests (#762) (@guimarqu)
- unit tests with Revise (#766) (@guimarqu)
- test termination status of master/pricing in generic colgen iteration (#767) (@guimarqu)
- Starting default implementation of Colgen API (#768) (@guimarqu)
- generalized assignement problem formulation for colgen iteration tests (#770) (@guimarqu)
- first test for colgen iteration (min gap) (#771) (@guimarqu)
- Max GAP formulation for colgen iteration tests (#772) (@enjoyUrFruits)
- Colgen iteration tests (#773) (@enjoyUrFruits)
- Colgen iteration tests (#774) (@enjoyUrFruits)
- Reduced costs ok for min gap (#775) (@guimarqu)
- Colgen iteration tests (#776) (@enjoyUrFruits)
- Min toy gap colgen iteration test ok (#777) (@guimarqu)
- Test reduced costs for gap with pure master vars (#778) (@guimarqu)
- Fix ColGen iteration test for gap with pure master vars (#779) (@guimarqu)
- Support objective constant in parser (#780) (@guimarqu)
- Colgen iteration tests (#781) (@enjoyUrFruits)
- fix max objective (#782) (@guimarqu)
- column insertion + draft of colgen loop (#783) (@guimarqu)
- Implement
stop_colgen_phase
for column generation (#784) (@guimarqu) - ColGen defaut implementation (#786) (@guimarqu)
- new colgen connected (#787) (@guimarqu)
- Small fixes in ColGen (#788) (@guimarqu)
- rm ColunaDemos dep (#789) (@guimarqu)
- clarify doc decomposition (#792) (@enjoyUrFruits)
- ColGen printer ready (#794) (@guimarqu)
- Tests for ColGen with identical subproblems (#795) (@enjoyUrFruits)
- Extract TreeSearch (#796) (@guimarqu)
- Non-robust cuts documentation (#797) (@enjoyUrFruits)
- Fix test for identical subproblem (#800) (@guimarqu)
- improve
@mustimplement
for linter (#801) (@guimarqu) - Extract branching (#802) (@guimarqu)
- Update strong branching (#803) (@guimarqu)
- fix get_dual_bound in ColGen (#804) (@guimarqu)
- Move generic implementation of branching algorithms into
Branching
(#805) (@guimarqu) - Clean interface of algorithms (#807) (@guimarqu)
- Projection and mapping for identical dw subproblem (#809) (@guimarqu)
- Column generation default printer (#810) (@guimarqu)
- Review getting started example for custom data (#811) (@guimarqu)
- Update custom_data.jl (#812) (@guimarqu)
- Print incumbent ip primal sol value in colgen (#813) (@guimarqu)
- update dual of constraints in colgen (#814) (@guimarqu)
- Put MOI integration tests back in test pipeline (#815) (@guimarqu)
- Add support of custom data values for JuMP model elements (#816) (@guimarqu)
- Separate essential cuts if colgen finds integral feasible solution (#817) (@guimarqu)
- checker for column reduced cost calculation (#818) (@enjoyUrFruits)
- Better handling of the ip primal solution in column generation (#819) (@guimarqu)
- BlockDecomposition 1.11 (#820) (@guimarqu)
- BlockDecomposition 1.13 (#821) (@guimarqu)
- separate convexity constraints reduced cost from the global reduced cost (#822) (@enjoyUrFruits)
- Benders reformulation (#823) (@guimarqu)
- Test of
ReducedCostCalculationHelper
with non-robust cuts (#824) (@enjoyUrFruits) - Benders iteration draft (#825) (@guimarqu)
- module for Parser + track Parser in revise (#826) (@guimarqu)
- Fix treesearch and storage doc, some warnings left in storage (#828) (@enjoyUrFruits)
- Benders parser (#829) (@guimarqu)
- update @meta blocks, remove DocTestSetup (#830) (@enjoyUrFruits)
- Fix pricing callback specs + multi stage colgen extra e2e test (#831) (@guimarqu)
- Custom solver in e2e extra test (#834) (@guimarqu)
- node_finalizer in extra e2e tests (#835) (@guimarqu)
- replace
INFEASIBLE_OR_UNBOUNDED
&DUAL_INFEASIBLE
byUNBOUNDED
(#836) (@guimarqu) - gap e2e extra tests (#837) (@guimarqu)
- throw UnboundedProblemError if the master or a sp is unbounded (#839) (@enjoyUrFruits)
- Fix gap small instance extra e2e test (#840) (@guimarqu)
- Heuristic interface + extract restricted master implem from conquer (#841) (@guimarqu)
- do not check master lp solution feasibility in phase 1 of colgen (#842) (@guimarqu)
- colgen returns dual solution (#843) (@guimarqu)
- fix gap best dual bound strategy (#844) (@guimarqu)
- fix gap test with lazy cuty sep (#845) (@guimarqu)
- Column generation sets termination status to infeasible when infeasibility proven (#846) (@guimarqu)
- check if master obj is better than inc ip before checking integrality (#848) (@guimarqu)
- Multi stage column generation (#849) (@guimarqu)
- improve stop condition of column generation (#850) (@guimarqu)
- fix some tests (#851) (@guimarqu)
- fix incremental compilation may be fatally broken (#852) (@guimarqu)
- Classical Benders decomposition (#853) (@guimarqu)
- delete new prefix from storage and record types and methods (#854) (@enjoyUrFruits)
- Update parser to support multi-cut benders reformulation (#857) (@guimarqu)
- add tests stop_when_inf_db and infeasible_phase_output (#858) (@enjoyUrFruits)
- add isnothing(stage) on colgen stopping condition (#859) (@enjoyUrFruits)
- Classical Benders algorithm (#860) (@guimarqu)
- enforce convergence condition (#861) (@enjoyUrFruits)
- Test Benders loop on toy example (#863) (@guimarqu)
- fix parser test (#864) (@guimarqu)
- add B formulation, continuous and integer first stage variables, add expected outputs for A and B (#865) (@enjoyUrFruits)
- fix benders when the master has integral variables (#866) (@guimarqu)
- connect benders loop to benders algo (#867) (@guimarqu)
- add benders tests (#868) (@enjoyUrFruits)
- add tests unbounded master or sp (#869) (@enjoyUrFruits)
- fix benders tests for formulation with multiple subproblems (#870) (@guimarqu)
- fix several Benders tests (#871) (@guimarqu)
- Fix benders infeasibility cut (#873) (@guimarqu)
- Fix infeasibility detection in Benders (#874) (@guimarqu)
- init advanced demo (#876) (@enjoyUrFruits)
- Integrate advanced_demo in doc (#877) (@guimarqu)
- Correction for strong branching (#878) (@rrsadykov)
- Improve instance and problem description of advanced demo (#880) (@guimarqu)
- Demo location routing (#881) (@enjoyUrFruits)
- Fix direct model of advanced demo (#882) (@guimarqu)
- [adv tuto] clean optimizer (#883) (@enjoyUrFruits)
- [adv tuto] Direct model & decomposed model ok (#884) (@guimarqu)
- add multi-stages ex to demo (#885) (@enjoyUrFruits)
- Benders demo for the advanced tuto (#886) (@enjoyUrFruits)
- ColGen interface draft doc (#887) (@guimarqu)
- Missing method in colgen (#888) (@guimarqu)
- Add separate file to test benders on advanced demo's location routing problem (#889) (@enjoyUrFruits)
- Review ColGen documentation (#890) (@enjoyUrFruits)
- [adv tuto] doc review of cuts (#891) (@guimarqu)
- Benders for Location Routing demo (#892) (@guimarqu)
- fix cut callback print (#893) (@guimarqu)
- Delete dead code (#894) (@guimarqu)
- update README (#895) (@guimarqu)
- [adv tuto] R1C review (#896) (@guimarqu)
- [adv tuto] add comparison of different cuts on a larger instance (#897) (@enjoyUrFruits)
- [adv tuto] Benders comments (#898) (@guimarqu)
- [doc] Update doc project (#899) (@guimarqu)
- re-organize demo, fix typos (#900) (@enjoyUrFruits)
- Update advanced-demo.jl (#901) (@guimarqu)
- [adv tuto] enhancements (#903) (@FD-V)
- advanced-demo review (#904) (@enjoyUrFruits)
- [adv tuto] use getcustomdata (#905) (@guimarqu)
- fix typos in doc (#906) (@guimarqu)
- [adv tuto] rename advanced demo file (#907) (@guimarqu)
- v0.6.0 (#908) (@guimarqu)
- Advanced tutorial review (#909) (@rrsadykov)
v0.5.3
Coluna v0.5.3
Closed issues:
- ERROR: Unexpected variable state during column insertion. (#747)
Merged pull requests: