Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
f395569
inital split
dnguyen227 Mar 23, 2026
ed2eb87
.
dnguyen227 Mar 23, 2026
9e7211e
.
dnguyen227 Mar 23, 2026
616b7fa
.
dnguyen227 Mar 23, 2026
6f04419
inital split
dnguyen227 Mar 23, 2026
2a7b894
inital split
dnguyen227 Mar 23, 2026
eab521c
.
dnguyen227 Apr 20, 2026
a7ad3fd
.
dnguyen227 Apr 20, 2026
8fa5f3e
.
dnguyen227 Apr 21, 2026
ab3370b
.
dnguyen227 Apr 21, 2026
65e743f
.
dnguyen227 Apr 21, 2026
882390e
.
dnguyen227 Apr 21, 2026
778b598
.
dnguyen227 Apr 21, 2026
2c0071a
.
dnguyen227 Apr 21, 2026
a77b988
.
dnguyen227 Apr 22, 2026
1ec83f4
.
dnguyen227 Apr 22, 2026
f863f15
.
dnguyen227 Apr 22, 2026
350fda3
.
dnguyen227 Apr 24, 2026
5235294
.
dnguyen227 Apr 27, 2026
32ccde5
.
dnguyen227 Apr 27, 2026
bb03b3b
.
dnguyen227 Apr 27, 2026
f2387f5
.
dnguyen227 Apr 27, 2026
fbdafa0
.
dnguyen227 Apr 27, 2026
153c1e7
.
dnguyen227 Apr 27, 2026
d053c07
.
dnguyen227 Apr 27, 2026
b0184fc
Update to get_variable_info, copy_model_with_constraints, prepare_max…
dnguyen227 May 1, 2026
2909c84
Internal constant interpolation
dnguyen227 May 1, 2026
bb76999
Change to copy_model_with_constraints to use copy_model(::InfiniteModel)
dnguyen227 May 14, 2026
fb5f381
Project.toml revert
dnguyen227 May 14, 2026
e420f98
Using master version of InfiniteOpt
dnguyen227 May 14, 2026
c0ca8fe
Reverting CI change
dnguyen227 May 14, 2026
404c7d6
loa_two_models squashed
dnguyen227 Apr 22, 2026
025140b
.
dnguyen227 Apr 24, 2026
eb65da6
.
dnguyen227 Apr 25, 2026
3bf94fa
.
dnguyen227 Apr 27, 2026
b6563d7
.
dnguyen227 Apr 27, 2026
efff096
.
dnguyen227 Apr 27, 2026
76a55f8
prelim
dnguyen227 Apr 27, 2026
1edcb94
Removed NLP-feas problem
dnguyen227 May 14, 2026
9a9662f
Adding global constraints to cuts
dnguyen227 May 14, 2026
ca61183
Global slack bug fix
dnguyen227 May 15, 2026
cd9dd70
Update InfiniteOpt version to 0.6.2
dnguyen227 May 19, 2026
bb0db43
Add filter_constraints workflow
dnguyen227 May 24, 2026
34b3ea8
Bump InfiniteOpt version to 0.6.3
dnguyen227 May 25, 2026
01d36dc
.
dnguyen227 May 26, 2026
1aa2fe7
Rebase
dnguyen227 May 26, 2026
0ac6bd0
.
dnguyen227 May 26, 2026
54c2bc5
.
dnguyen227 May 26, 2026
23dede6
Intermediate
dnguyen227 May 29, 2026
af043e0
.
dnguyen227 Jun 11, 2026
f2dd804
.
dnguyen227 Jun 11, 2026
c674594
.
dnguyen227 Jun 15, 2026
3a8fa5b
Fix LOA BoundsError on equality cuts
dnguyen227 Jun 16, 2026
c1f4bd3
LOA termination message for nonconvex
dnguyen227 Jun 16, 2026
128491f
Refactor LOA, drop multi-resolution, add iteration and total time limits
dnguyen227 Jun 17, 2026
396b35c
Removing leftover checks
dnguyen227 Jun 21, 2026
6a9d6e0
Reduce functions in loa workflow
dnguyen227 Jun 28, 2026
9896a78
LOA Hull inner method
dnguyen227 Jun 30, 2026
c77f732
Docstrings and tests for LOA
dnguyen227 Jul 1, 2026
5317552
Reverting Project.toml
dnguyen227 Jul 1, 2026
c36dfef
Merge branch 'master' into loa_two_models
dnguyen227 Jul 1, 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
6 changes: 5 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ InfiniteDisjunctiveProgramming = "InfiniteOpt"

[compat]
Aqua = "0.8"
InfiniteOpt = "0.6.3"
Ipopt = "1.9.0"
JuMP = "1.18"
Juniper = "0.9.3"
Reexport = "1"
julia = "1.10"
Juniper = "0.9.3"
Expand All @@ -25,9 +28,10 @@ InfiniteOpt = "0.6.3"
[extras]
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
HiGHS = "87dc4568-4c63-4d18-b0c0-bb2238e4078b"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
InfiniteOpt = "20393b10-9daf-11e9-18c9-8db751c92c57"
Ipopt = "b6b21f68-93f8-5de0-b562-5493be1d77c9"
Juniper = "2ddba703-00a4-53a7-87a5-e8b9971dde84"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Aqua", "HiGHS", "Test", "Juniper", "Ipopt", "InfiniteOpt"]
12 changes: 9 additions & 3 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ A [`GDPModel`](@ref) is a `JuMP Model` with a [`GDPData`](@ref) field in the mod
- `Logical Constraints`: Selector (cardinality) or proposition (Boolean) constraints describing the relationships between the logical variables.
- `Disjunct Constraints`: Constraints associated with each disjunct in the model.
- `Disjunctions`: Disjunction constraints.
- `Solution Method`: The reformulation technique or solution method. Currently, supported methods include Big-M, Hull, and Indicator Constraints.
- `Solution Method`: The reformulation technique or solution method. Currently, supported methods include Big-M, Multiple Big-M, Hull, P-Split, Indicator Constraints, and Logic-based Outer Approximation (LOA).
- `Reformulation Variables`: List of JuMP variables created when reformulating a GDP model into a MIP model.
- `Reformulation Constraints`: List of constraints created when reformulating a GDP model into a MIP model.
- `Ready to Optimize`: Flag indicating if the model can be optimized.
Expand Down Expand Up @@ -163,9 +163,15 @@ The following reformulation methods are currently supported:

1. [Big-M](https://optimization.cbe.cornell.edu/index.php?title=Disjunctive_inequalities#Big-M_Reformulation[1][2]): The [`BigM`](@ref) struct is used.

2. [Hull](https://optimization.cbe.cornell.edu/index.php?title=Disjunctive_inequalities#Convex-Hull_Reformulation[1][2]): The [`Hull`](@ref) struct is used.
2. Multiple Big-M: A tighter big-M reformulation that computes a separate big-M value for each disjunct constraint (rather than a single global value) by solving auxiliary mini-models. This is invoked with the [`MBM`](@ref) struct, which requires an optimizer.

3. [Indicator](https://jump.dev/JuMP.jl/stable/manual/constraints/#Indicator-constraints): This method reformulates each disjunct constraint into an indicator constraint with the Boolean reformulation counterpart of the Logical variable used to define the disjunct constraint. This is invoked with [`Indicator`](@ref).
3. [Hull](https://optimization.cbe.cornell.edu/index.php?title=Disjunctive_inequalities#Convex-Hull_Reformulation[1][2]): The [`Hull`](@ref) struct is used.

4. P-Split: A partitioned reformulation that splits the variables into groups and applies a P-split formulation to each group, giving a relaxation between Big-M and Hull in tightness. This is invoked with the [`PSplit`](@ref) struct.

5. [Indicator](https://jump.dev/JuMP.jl/stable/manual/constraints/#Indicator-constraints): This method reformulates each disjunct constraint into an indicator constraint with the Boolean reformulation counterpart of the Logical variable used to define the disjunct constraint. This is invoked with [`Indicator`](@ref).

6. Logic-based Outer Approximation (LOA): An iterative solution method for nonlinear GDPs, rather than a single-shot reformulation. It alternates between a primal NLP (the model reformulated by an inner method — `BigM`, `MBM`, or `Hull` — with the disjunct binaries fixed at the current selection) and a master MILP that accumulates outer-approximation and no-good cuts until the bound meets the incumbent. This is invoked with the [`LOA`](@ref) struct, e.g. `optimize!(m, gdp_method = LOA(Ipopt.Optimizer))`.

## Release Notes

Expand Down
Loading
Loading