Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linearize bilinear terms of lower dual*primal in upper objective #157

Open
wants to merge 134 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 41 commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
761303a
add support functions for linearizing bilinear terms
NLaws Nov 23, 2021
4e2b015
first draft of bilinear linearization
NLaws Nov 23, 2021
12602e4
bilinear linearization: handle different lower level obj types
NLaws Nov 23, 2021
34af88d
add methods to create standard form of lower level
NLaws Dec 24, 2021
cd9fc62
wip on testing bilinear linearization
NLaws Dec 24, 2021
36a25bf
more work in linearization of bilinear terms
NLaws Dec 24, 2021
cd3b314
handle undefined bounds in standard form of lower level
NLaws Dec 24, 2021
e9c5885
add temporary dev notes
NLaws Dec 24, 2021
808907a
check conditions for bilinear linearization
NLaws Dec 27, 2021
4566cd7
minor formatting/house cleaning
NLaws Dec 27, 2021
6531743
address some TODO's in bilnear linearization
NLaws Dec 28, 2021
9e45017
bilinear linearization tests passing w/std form LL
NLaws Dec 28, 2021
c4163ed
minor formatting
NLaws Dec 28, 2021
738f180
add warnings when cannot linearize
NLaws Dec 28, 2021
676a6a9
mv all of linearization functions into moi.jl
NLaws Dec 28, 2021
2d38c71
add jump_conejo2016_linearize to test suite
NLaws Dec 28, 2021
f1228a9
add bilinear linearization paper draft reference
NLaws Dec 28, 2021
6ac08dd
rm `BilevelJuMP.`calls used for debugging
NLaws Dec 28, 2021
f5ac4bc
add test/Project.toml
NLaws Dec 28, 2021
728bbff
try to run tests on linux/windows/mac
NLaws Dec 29, 2021
f17b099
Revert "add test/Project.toml"
NLaws Dec 29, 2021
db59f6a
add support for @variable(model, dual_var_name, DualOf(vector_of_conr…
NLaws Dec 30, 2021
92055a4
handle DenseAxisArray of conrefs in @variable with DualOf
NLaws Dec 30, 2021
3a613f1
switch @warn's to @debug's in bilinear_linearization
NLaws Dec 30, 2021
0453c70
handle underdetermined system in bilinear linearization
NLaws Dec 31, 2021
aad7b04
fix true/false for redundant values in recursive_col_search
NLaws Dec 31, 2021
fc6a0ac
return redundant_vals bool from find_connected_rows_cols
NLaws Dec 31, 2021
c493a06
handle underdetermined system better in bilinear_linearization
NLaws Dec 31, 2021
ea4d093
address TODO for quadratic term linearization in moi.jl
NLaws Dec 31, 2021
bcc8ec3
handle separable lower level problems in bilinear linearization
NLaws Jan 2, 2022
0c47a07
handle DualOf not used in UL in bilinear linearization
NLaws Jan 2, 2022
4035a0f
fix mistake in moi.jl
NLaws Jan 2, 2022
81efb81
fix bug for single block V in bilinear linearization
NLaws Jan 16, 2022
8eb5691
pre-allocate for efficiency in bilinear_linearization.jl
NLaws Jan 16, 2022
389bbce
make Vblocks more efficient in bilinear linearization
NLaws Jan 17, 2022
5a836ed
Merge remote-tracking branch 'upstream/master' into bilinear
Mar 5, 2022
39e489d
Update moi.jl
Mar 5, 2022
d7fc633
typo fix in moi.jl
Mar 5, 2022
17330a0
checkout upstream/master ci.yml
Mar 5, 2022
29c982b
Pkg.rm MibS_jll
Mar 5, 2022
cfbd707
address some TODO's
Mar 5, 2022
b58ee0a
Update bilinear_linearization.jl
Mar 9, 2022
bc45399
change info to debug in moi.jl
Mar 9, 2022
3f96626
add asserts for MIN_SENSE in bilinear linearization
Mar 9, 2022
5ba028e
move main linearization into function (from moi.jl)
Mar 9, 2022
b02f8bc
change warn to debut in bilinear_linearization
NLaws Apr 10, 2022
e3bf817
change bilinear linearization condition debugs to warns
NLaws Apr 10, 2022
0d7c8a0
change warn to debug when No bilinear products of lower level dual an…
NLaws Apr 10, 2022
c0ae823
rm debugging code for jump_conejo2016_linearization test
NLaws Apr 10, 2022
d91a5d6
add test_recursive_col_search
NLaws Apr 10, 2022
9be7d0c
add test_find_connected_rows_cols
NLaws Apr 10, 2022
9f5c27c
add bilinear linearization test for lower obj. with upper*lower var.
NLaws Apr 10, 2022
4a5e0cc
fix test_bilinear_linearization
NLaws Apr 10, 2022
87b0663
comment out failing test jump_eq_price
NLaws Apr 10, 2022
9092bd6
rm debug tests in test/bilinear_linearization.jl
NLaws Apr 10, 2022
2001906
mv some code from build_bilevel into function to facilitate unit tests
NLaws Apr 11, 2022
a7452b3
break out code into more sub functions (for unit testing)
NLaws Apr 11, 2022
0f8bcd2
add tests for failing_conditions_non_empty_AB_N
NLaws Apr 11, 2022
befc537
add bilinear linearization test for condition 2'
NLaws Apr 12, 2022
5e260bb
add bilinear linearization test for condition 3
NLaws Apr 12, 2022
a151a62
typo fix in bilinear_linearization
NLaws Apr 14, 2022
d1e893e
add test for condition 4 in bilinear linearization
NLaws Apr 15, 2022
5541fa0
add test for condition 5 in bilinear linearization
NLaws Apr 15, 2022
7d724d8
Update bilinear_linearization.jl
NLaws Apr 20, 2022
222d716
have to have function calls outside of @test for codecov to consider …
NLaws Apr 20, 2022
972e198
merge master
NLaws Apr 20, 2022
75474f6
MOI.SingleVariable -> MOI.VariableIndex
NLaws Apr 20, 2022
5f0ef70
MOI.ListOfConstraints -> ListOfConstraintTypesPresent
NLaws Apr 20, 2022
e0e69f5
MOI.variable_index_1/2 -> variable_1/2
NLaws Apr 20, 2022
3000054
MOI.ScalarAffineTerm.variable_index -> variable
NLaws Apr 20, 2022
222c430
rename mibs file
joaquimg Apr 20, 2022
6075269
another MOI v1 fix
NLaws Apr 20, 2022
fd13b4e
Merge branch 'master' into bilinear
NLaws Apr 20, 2022
a83d951
fix find_blocks method for UnderDetermined UV
NLaws Apr 20, 2022
a5fd17d
add more test/bilinear_linearization.jl
NLaws Apr 20, 2022
442a57e
Merge branch 'master' into bilinear
NLaws Apr 20, 2022
a1f2adf
test UnderDetermined system
NLaws Apr 20, 2022
82ffb31
Update jump_unit.jl
NLaws Apr 20, 2022
e44649e
Update runtests.jl
NLaws Apr 20, 2022
45ccfff
add test_get_coef_matrix_and_rhs_vec
NLaws Apr 20, 2022
2cb9bc9
rm dev notes
NLaws Apr 20, 2022
2921cef
update test/bilinear_linearization.jl
NLaws Apr 21, 2022
11a1619
update test/bilinear_linearization.jl
NLaws Apr 21, 2022
9f9889e
comment out test jump_conic02
NLaws Apr 21, 2022
fa4fe61
update test/bilinear_linearization.jl
NLaws Apr 21, 2022
b24c538
update test/bilinear_linearization.jl
NLaws Apr 21, 2022
d8b88c5
update test/bilinear_linearization.jl
NLaws Apr 21, 2022
e845d9b
update test/bilinear_linearization.jl
NLaws Apr 21, 2022
98f53da
Revert "handle DenseAxisArray of conrefs in @variable with DualOf"
NLaws Apr 21, 2022
90efe77
Revert "add support for @variable(model, dual_var_name, DualOf(vector…
NLaws Apr 21, 2022
12ca7d5
restore master branch DualOf
NLaws Apr 21, 2022
d17f5e9
update IEEE paper link
NLaws Apr 21, 2022
3154bf2
get more coverage w/o solver
NLaws Apr 21, 2022
3a60a48
Merge remote-tracking branch 'upstream/master' into bilinear
NLaws Jul 9, 2022
ca97ed3
use PushVectors and Threads to speed up linearization
NLaws Jul 20, 2022
6830997
add @info for profiling src/bilinear_linearization.jl
NLaws Jul 21, 2022
e480af2
add profiling @info to standard_form
NLaws Jul 22, 2022
bb30876
speed up standard form for bilinear linearization
NLaws Jul 22, 2022
94fb0c8
speed up standard form for bilinear linearization
NLaws Jul 22, 2022
c7bc870
merge bilinear branch into profiling branch
NLaws Jul 22, 2022
7c8cb73
add GC.gc() to get_all_connected_rows_cols
NLaws Jul 25, 2022
ebb4634
add more profiling @info
NLaws Jul 25, 2022
c1c6f79
Revert "add GC.gc() to get_all_connected_rows_cols"
NLaws Jul 25, 2022
0616cfc
memoize find_connected_rows_cols
NLaws Jul 25, 2022
0c32265
add GC.gc() to get_all_connected_rows_cols
NLaws Jul 25, 2022
4a4ee9e
memoize find_connected_rows_cols
NLaws Jul 25, 2022
5421f2f
add GC.gc() to get_all_connected_rows_cols
NLaws Jul 25, 2022
1bc944c
rm GC.gc() causing slow-down in get_all_connected_rows_cols
NLaws Jul 26, 2022
2c36672
rm GC.gc() causing slow-down in get_all_connected_rows_cols
NLaws Jul 26, 2022
769fb79
add generated recursive_col_search
NLaws Jul 27, 2022
72811ce
implement generated code in bilinear linearization
NLaws Jul 28, 2022
29dba39
fix mistake in recursive_col_search_expr
NLaws Jul 28, 2022
5503795
rm redundant values in check_upper_objective_for_bilinear_linearization
NLaws Jul 28, 2022
7d65af1
use ThreadSafeDict to memoize find_connected_rows_cols
NLaws Aug 9, 2022
70a3355
thread another loop in linearization
NLaws Aug 13, 2022
c9aa703
Revert "thread another loop in linearization"
NLaws Aug 13, 2022
5414113
thread another loop in linearization
NLaws Aug 13, 2022
5a28c0b
switch profiling info to @debug
NLaws Aug 13, 2022
ab5a2f2
switch @info to @debug in jump.jl
NLaws Aug 13, 2022
cd9c6e9
merge bilinear branch into profiling branch
NLaws Aug 13, 2022
7b346b3
Merge pull request #2 from NLaws/profiling
NLaws Aug 13, 2022
a55fb5b
multi thread linearization terms for non empty AB
NLaws Aug 27, 2022
53f69f3
add check_linearization_conditions bool
NLaws Aug 27, 2022
bb24021
add test/Project.toml JuMP compat =1.0
NLaws Aug 27, 2022
28af7af
update test/bilinear_linearization.jl
NLaws Aug 27, 2022
f663ce0
add store_cache option to find_connected_rows_cols_cached
NLaws Aug 29, 2022
4d3b526
rm unnecessary argument in bilinear_linearization
NLaws Sep 4, 2022
8873d59
update test/bilinear_linearization.jl
NLaws Sep 4, 2022
2ea645e
add some typing to biliinear_linearization
NLaws Oct 1, 2022
09e1a51
update linear_terms_for_non_empty_AB
NLaws Oct 1, 2022
bd7d4d2
rm debug lines
NLaws Oct 1, 2022
f6c3a16
merge master
NLaws Oct 19, 2022
0ee4d75
Pkg.rm("Gurobi")
NLaws Oct 19, 2022
8d942f9
rm debug notes
NLaws Oct 19, 2022
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
1 change: 1 addition & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253"
JuMP = "4076af6c-e467-56ae-b986-b466b2749572"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"

[compat]
Dualization = "= 0.3.4"
Expand Down
2 changes: 2 additions & 0 deletions src/BilevelJuMP.jl
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ using JuMP
using Dualization
using LinearAlgebra
using IntervalArithmetic
using SparseArrays

export
BilevelModel,
Expand All @@ -26,5 +27,6 @@ include("jump_print.jl")
include("jump_attributes.jl")
include("jump_nlp.jl")
include("jump_input.jl")
include("bilinear_linearization.jl")

end
Loading