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

v0.7 preliminary pull #102

Merged
merged 203 commits into from
Mar 23, 2022
Merged
Changes from 1 commit
Commits
Show all changes
203 commits
Select commit Hold shift + click to select a range
36e6e5c
Delete forward/reverse pass, add initial graph work
mewilhel May 8, 2021
723cec4
Fix standard expression libary
mewilhel May 8, 2021
0c9d92e
Add VariableType and fix dicts for switch
mewilhel May 8, 2021
56e7327
Fix Node namespace and JuMP loading
mewilhel May 8, 2021
f20c3e7
Fix compilation for composite relaxation
mewilhel May 8, 2021
77ecf2b
Update relax cache and graph
mewilhel May 8, 2021
00d9b03
Simplify nonlinear function constructor
mewilhel May 8, 2021
56d142e
Update evaluator construction
mewilhel May 9, 2021
36e7b80
Add note
mewilhel May 9, 2021
2dda1a8
Work on directed graph
mewilhel May 10, 2021
9983dbe
Work on basic node conversion
mewilhel May 11, 2021
e0e7edb
Multivariate node conversion...
mewilhel May 11, 2021
88d178a
Move binary switch to utilities finish multivariate conversion
mewilhel May 11, 2021
849e2e6
Fix node functions
mewilhel May 11, 2021
087c7fa
Work on JuMP expression conversion
mewilhel May 11, 2021
e11080c
More work on converting JuMP to EAGO graphs
mewilhel May 12, 2021
d20f028
Drop set_node! function
mewilhel May 12, 2021
23adbd5
Add access functions for trying out forward propagation
mewilhel May 12, 2021
20db2d8
Fix reverse sparsity for tree
mewilhel May 12, 2021
144f622
Add rev_sparsity handler... need to resolve binary switch issue
mewilhel May 12, 2021
d9b05a1
Fix cache symbol
mewilhel May 12, 2021
c950861
Merge remote-tracking branch 'origin/master' into SIPextension
mewilhel May 13, 2021
515ecba
Work on reverse propagation
mewilhel May 13, 2021
3ecd1ed
Drop CPLEX warning
mewilhel May 13, 2021
0fc5d42
Work on unpacking pass results
mewilhel May 13, 2021
b631f17
Update nonlinear to work when using trivial switch
mewilhel May 14, 2021
645b920
Convert standard JuMP univariates to EAGO
mewilhel May 14, 2021
865f1bb
Add operator registry and load for user-functions
mewilhel May 14, 2021
c01357b
Use Dict for rev_sparsity
mewilhel May 14, 2021
906ec6b
Fix rev_sparsity constructor
mewilhel May 14, 2021
afbc992
Fix bound access
mewilhel May 17, 2021
6bbec7a
Fix DAT node loading
mewilhel May 17, 2021
efe9bf9
Work on adding apriori mult
mewilhel May 18, 2021
9c344db
Update forward prop binary switch
mewilhel May 18, 2021
1261a78
Compute pure numbers
mewilhel May 18, 2021
fd3a79d
Constant classifier (not including subexprs/variables)
mewilhel May 18, 2021
127a7f8
Fix access to minus function
mewilhel May 18, 2021
839630c
only transverse unlocked on DAT
mewilhel May 18, 2021
cdf16d5
Save nightly work
mewilhel May 19, 2021
a4fdabc
Add get parameter_values, fix node loading
mewilhel May 21, 2021
e4240d4
Remove superflous print statements
mewilhel May 21, 2021
dbd6d76
Work on pseudocost branching
mewilhel May 24, 2021
8a020dd
Update reliability branching routines
mewilhel May 24, 2021
c56f888
Update reliability branch routines
mewilhel May 24, 2021
8a5361f
Reformat variable info and pseudocost branching
mewilhel May 25, 2021
eb44deb
Add space for precompile statements
mewilhel May 25, 2021
2246a1a
Move stack management functions to separate file & refactor
mewilhel May 25, 2021
7e06a8a
Update interval nodeBB constructor
mewilhel May 25, 2021
6aa5d82
Move variable constructor to moi_constraints.jl and refactor
mewilhel May 25, 2021
823b140
Simplify local solve
mewilhel May 25, 2021
c0dc819
Finish stack management update
mewilhel May 25, 2021
8810d1d
Move fathom! to stack management & refactor convex solve
mewilhel May 26, 2021
d781dfb
Fix FullVar get functions
mewilhel May 26, 2021
3052908
Revert if else to ifelse in access functions
mewilhel May 26, 2021
bcd6a9c
Refactor lower problem, store dual result code, add RelaxResultStatus
mewilhel May 26, 2021
98940e6
Add efficient Gerschgorin Circle algo for computing minimal eigenvalue
mewilhel May 26, 2021
dedec23
Remove multiple objective storage
mewilhel May 27, 2021
07e7151
Add is_feasible to simplify cp refactor relaxation code to lower prob
mewilhel May 27, 2021
e1f78c9
Simplify bound calculation routines
mewilhel May 27, 2021
fee49de
Refactor some relax functions into lower_problem
mewilhel May 27, 2021
bddb971
Simplify bound calculations
mewilhel May 27, 2021
62f3e59
Move relax functions
mewilhel May 27, 2021
a615a3f
Delete cut_condition & add_cut! subroutines
mewilhel May 27, 2021
de18431
Refactor Kelley cutting algorithm adaptation
mewilhel May 27, 2021
765b7d4
Refactor termination status
mewilhel May 27, 2021
ed971e6
Simplify and refactor routines
mewilhel May 27, 2021
755c0e8
Fix typos after refactoring
mewilhel May 27, 2021
fabb499
Work on using SAF objective only
mewilhel May 27, 2021
160fc24
Simplify label branch variables
mewilhel May 28, 2021
1c39591
Simplify parsing
mewilhel May 28, 2021
7becafe
Quadratic epigraph (and max to min)
mewilhel May 28, 2021
35547a8
Finish preliminary work on epigraph + max
mewilhel May 28, 2021
ce7bf2a
Fix typos
mewilhel May 28, 2021
e0b0b31
Fix epigraph/min conversion for nonlinear constraints
mewilhel May 28, 2021
cb08c44
Delete variable count fields
mewilhel May 28, 2021
8850a38
Start of incremental wrapper
mewilhel May 28, 2021
f3ab2d4
Add incremental check
mewilhel May 28, 2021
9ce4cd2
Refactor code + quadratic epigraph
mewilhel May 28, 2021
dc0c3e5
Simplify domain reduction
mewilhel May 29, 2021
51530e4
Add incremental wrapper for solvers
mewilhel May 29, 2021
f2b7ebf
Fix incremental wrapper
mewilhel May 29, 2021
4bb7bc3
Add attributes to incremental wrapper
mewilhel May 29, 2021
9f53462
Fix objective saf loading
mewilhel May 29, 2021
b24990f
Fix display when adding slack variable
mewilhel May 29, 2021
9837ce3
Fix parsing for nonlinear Min objective
mewilhel May 29, 2021
5d7e2ca
Refactor log and display functions
mewilhel May 29, 2021
69d4f2e
Fix conversion to slack min for max nl case
mewilhel May 29, 2021
e6bd2ba
Update display message
mewilhel May 29, 2021
e4e438b
Add display preamble and get rid of unused field
mewilhel May 29, 2021
2ca8f13
Fix lower bound interval fallback
mewilhel May 29, 2021
8a4e73f
Drop NumericIO dependency
mewilhel May 29, 2021
fef7be5
Fix Incremental optimize!, wrap subsolvers
mewilhel May 30, 2021
1b79e7c
Fix silent setting default
mewilhel May 30, 2021
64ba85b
Drop empty optimizer and use types to dispatch problem vs Val(enum)
mewilhel May 31, 2021
2d94f7b
Further work on first run time reduction
mewilhel May 31, 2021
24687bd
Fine tune relaxation routines
mewilhel Jun 1, 2021
cc541f5
Save Work
mewilhel Jun 1, 2021
6eb7948
Save work
mewilhel Jun 1, 2021
62eec8b
Updates for type-stability
mewilhel Jun 2, 2021
e3a793d
Start work on separating out global optimizer
mewilhel Jun 2, 2021
cfacbe0
Separate global solver from outer solver
mewilhel Jun 3, 2021
5572322
Move check invalidations code
mewilhel Jun 3, 2021
04805eb
Sore work on code analysis tools
mewilhel Jun 4, 2021
4eb6be1
Export Subsolvers and fix setting silent
mewilhel Jun 4, 2021
4bedf86
Check that subsolver support duals prior to getting them
mewilhel Jun 4, 2021
a8bd3e8
Fix type instability in affine expansion
mewilhel Jun 4, 2021
6fb4509
store start of disciplined constraint programming
mewilhel Jun 4, 2021
939ff27
Tidy Optimizer definitions
mewilhel Jun 18, 2021
c5f0bb3
ZO relaxation plus activated MIP at end (lower problem)
mewilhel Jun 18, 2021
538f2a6
Track depth in B&B tree at which a node becomes continuous
mewilhel Jun 18, 2021
97481db
Only store integer feasible solution for upper problem
mewilhel Jun 18, 2021
ce90d5c
Store upper value on integer feasible fix optimizer constructor
mewilhel Jun 21, 2021
1d76acc
Fix single variable udf definition
mewilhel Jun 21, 2021
272ddeb
Fix node constructor
mewilhel Jun 21, 2021
986872b
Update configuration subroutine and check for dual support
mewilhel Jun 21, 2021
f3f381b
Fix buffer access
mewilhel Jun 22, 2021
a5001bd
Fix udf and global optimization check
mewilhel Jun 22, 2021
a620658
Fix reference point setting
mewilhel Jun 23, 2021
e413f97
Work on subgradient refinement of udfs
mewilhel Jun 25, 2021
21f463f
Fix branching rule for relative diameter
mewilhel Jun 25, 2021
39026ce
Update default parameter to be more robust
mewilhel Jun 25, 2021
4586e01
Add special handling for infinite intervals
mewilhel Jun 29, 2021
24e8f62
Add res field to subproblem storage
mewilhel Jun 29, 2021
1b7087d
Nonallocating affine expansion
mewilhel Jul 9, 2021
14b6530
Rename from swish1 to swish
mewilhel Jul 9, 2021
ea22454
Upper bounding for zero-one programs
mewilhel Jul 9, 2021
3e57b48
Integer Update
mewilhel Jul 21, 2021
4b271b3
Update Unit Tests
mewilhel Jul 21, 2021
1321da9
Update Ipopt default tolerances
mewilhel Jul 21, 2021
9a36907
Update variable_info.jl
mewilhel Jul 21, 2021
14d0a52
Update incremental.jl
mewilhel Jul 21, 2021
1d5f523
Add generic forward/reverse nl support
mewilhel Jul 21, 2021
46c9a94
Support constraintprimal from local solve
mewilhel Jul 21, 2021
bac16ae
Additional integer support
mewilhel Jul 21, 2021
6720bdb
Update GLPK version, add MINLPTests
mewilhel Jul 21, 2021
8207829
Drop unused files for apriori relax
mewilhel Jul 21, 2021
6e87c8f
Delete enumeration.jl
mewilhel Jul 21, 2021
b2b4780
Bump Ipopt dependency
mewilhel Jul 31, 2021
521c65d
Tidy domain reduction routines
mewilhel Jul 31, 2021
620e9b7
Add SQF constraint primal query to incremental
mewilhel Jul 31, 2021
d29746e
Fix copy(NodeBB)
mewilhel Jul 31, 2021
1da556b
Add debug code to composite relaxation propagation
mewilhel Jul 31, 2021
98f3642
Fix reference point update
mewilhel Jul 31, 2021
7a752f8
Work on affine and enumerative relaxations
mewilhel Aug 1, 2021
bd0f396
Update for apriori relax support
mewilhel Aug 22, 2021
3cf2875
Store work on EAGO
mewilhel Sep 7, 2021
28e41e1
EAGO update
mewilhel Sep 10, 2021
cbca10e
Update EAGO to remove print statements
mewilhel Sep 15, 2021
ab9f2a4
Update special function dependency
mewilhel Sep 21, 2021
2045121
WIP Update backup routines
mewilhel Oct 13, 2021
9cb43b4
Fix Max quad objective issue
mewilhel Oct 22, 2021
063a35b
Update fix for apriori
mewilhel Nov 4, 2021
3edce9f
Update tests in preparation for release
mewilhel Nov 6, 2021
fb6277e
Work on finalizing tests
mewilhel Nov 6, 2021
5917b1c
Update to fix fbbt for linear
mewilhel Nov 23, 2021
f7ef689
Update CI and dependent requirements
mewilhel Dec 2, 2021
f7009e8
Fix imports and bug in bound
mewilhel Dec 2, 2021
ae721e1
MOI 0.10 update
mewilhel Dec 3, 2021
466075b
More MOI 0.10 updates
mewilhel Dec 3, 2021
624599c
Remove Constant Simplification Cache...
mewilhel Dec 3, 2021
984790d
More readable fprop and rprop
mewilhel Dec 3, 2021
6e11fd7
Work on improved interval contractors
mewilhel Dec 3, 2021
d7557ee
Update for IntervalCache
mewilhel Dec 3, 2021
4493981
Update GLPK dependency
mewilhel Dec 13, 2021
5fb739d
Add pretty table printing...
mewilhel Dec 13, 2021
e147af0
Use Cbc as default solver
mewilhel Dec 14, 2021
133fe25
Never branch on infinite variable domains
mewilhel Dec 14, 2021
d9011fd
Use constraint propagation instead of fallback interval bounds
mewilhel Dec 14, 2021
ddb736d
Simplify obbt code, prevent querying linearization at Inf x values, s…
mewilhel Dec 15, 2021
a6d5a6d
Save bug fix
mewilhel Dec 16, 2021
4357a13
SV -> VI SingleVariable Epigraph
mewilhel Dec 16, 2021
1e69731
Work on EAGO update
mewilhel Dec 23, 2021
b3652ca
Save work on single thread benchmarks
mewilhel Dec 23, 2021
e016ce3
Update tests and delete print statements
mewilhel Jan 21, 2022
36064af
Drop variable index
mewilhel Jan 21, 2022
9cf46ce
Add fprop! DIV
mewilhel Jan 21, 2022
46ee93f
Remove variable and print statements
mewilhel Jan 21, 2022
7769285
Updates for moit test
mewilhel Jan 21, 2022
aff0f66
Add quadratic epigraph
mewilhel Jan 22, 2022
b2dd5b9
Add number of constraints attribute support
mewilhel Jan 22, 2022
cb1673d
Fix raw status string & default dual status
mewilhel Jan 22, 2022
013078e
Save work on MOI.Test update (WIP)
mewilhel Jan 26, 2022
1b0a069
Updates to support MOI tests
mewilhel Jan 26, 2022
6c4cb6b
Fill subexpression dictionaries
mewilhel Feb 10, 2022
5909e65
Update sparsity usage
mewilhel Feb 11, 2022
8f262e7
Respect pass number for backup interval bounds
mewilhel Feb 16, 2022
c4b32f4
Simplify apriori relaxations
mewilhel Feb 17, 2022
8ac7b1c
Start simplifying enumeration approach
mewilhel Feb 17, 2022
ff219ab
Simplified affine arithmetic
mewilhel Feb 21, 2022
bd07157
Update affine arithmetic aprioris
mewilhel Feb 22, 2022
31735b1
Minor update
mewilhel Feb 23, 2022
64e624b
Add number labeling to affine arithmetic calc
mewilhel Feb 23, 2022
4661b6e
Fix enumeration extrema
mewilhel Feb 26, 2022
be3689b
Update affine arithmetic code
mewilhel Feb 26, 2022
ad2b4ec
Update apriori routines to finalize AA
mewilhel Mar 1, 2022
006684d
Update McCormick dependency
mewilhel Mar 6, 2022
24c9f0f
Update optimize! extension
mewilhel Mar 6, 2022
23d130e
Update extension capability
mewilhel Mar 6, 2022
20ca8ed
Fix log iteration
mewilhel Mar 8, 2022
15ecc3e
Bump MOI dependency
mewilhel Mar 17, 2022
c8557e7
Update tests and improve heurestics for MINLP
mewilhel Mar 22, 2022
5a1032a
Add logcosh function
mewilhel Mar 23, 2022
09d8fe9
Fix subexpression issue
mewilhel Mar 23, 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
Prev Previous commit
Next Next commit
Update sparsity usage
mewilhel committed Feb 11, 2022
commit 5909e653a620108a232f948a9d2eec7e544d9ed2
Original file line number Diff line number Diff line change
@@ -98,15 +98,16 @@ function fprop_2!(t::Relax, v::Val{MULT}, g::DAT, b::RelaxCache{V,N,T}, k::Int)

if !xy_num(b, x, y)
if xyset(b, x, y)
#@show "2 arity multiplication..."
xv = set(b, x)
yv = set(b, y)
if b.use_apriori_mul
dp = b.dp
dP = b.dP
s = sparsity(g, 1)

xr = _info(b, x)
yr = _info(b, y)
xr = info(b, x)
yr = info(b, y)

xr_cv = cv(xr) # GOOD
xr_cc = cc(xr) # GOOD
@@ -128,19 +129,25 @@ function fprop_2!(t::Relax, v::Val{MULT}, g::DAT, b::RelaxCache{V,N,T}, k::Int)
s4 = affine_expand_del(dP, yrn_cc, yrn_cc_grad, s)

z = xv*yv
@show z
wIntv = z.Intv
if (t3 < x.Intv.hi) || (t4 < z.Intv.hi)
if (t3 < xv.Intv.hi) || (t4 < yv.Intv.hi)
t1 = affine_expand_del(dp, xr_cv, xr_cv_grad, s)
t2 = affine_expand_del(dp, yr_cv, yr_cv_grad, s)
za_l = McCormick.mult_apriori_kernel(xv, yv, wIntv, t1, t2, t3, t4, xr_cv_grad, yr_cv_grad)
@show za_l
z = z ∩ za_l
end
if (s3 < -x.Intv.lo) || (s4 < -z.Intv.lo)
#=
if (s3 > -xv.Intv.lo) || (s4 > -yv.Intv.lo)
s1 = affine_expand_del(dp, xrn_cc, xrn_cc_grad, s)
s2 = affine_expand_del(dp, yrn_cc, yrn_cc_grad, s)
za_u = McCormick.mult_apriori_kernel(-xv, -yv, wIntv, s1, s2, s3, s4, xrn_cc_grad, yrn_cc_grad)
@show za_u
z = z ∩ za_u
end
=#
@show z
else
z = xv*yv
end
@@ -216,22 +223,34 @@ function fprop_n!(t::Relax, v::Val{MAX}, g::DAT, b::RelaxCache{V,N,T}, k::Int) w
end

function fprop_n!(t::Relax, ::Val{MULT}, g::DAT, b::RelaxCache{V,N,T}, k::Int) where {V,N,T<:RelaxTag}
#println("start MULT N")
#println(" ")

dp = b.dp
dP = b.dP
s = sparsity(g, 1)

#@show s
#@show dp
#@show dP

z = one(MC{N,T})
zt = one(MC{N,T})
zr = one(MC{N,T})
zok = one(MC{N,T})
znum = one(Float64)
firstset = true
numval = true
for i in children(g, k)
for (q,i) in enumerate(children(g, k))
#println(" ")
#@show q
if is_num(b, i)
znum = znum*num(b, i)
else
numval = false
x = set(b, i)
xr = info(b, i)
#@show x
#@show xr
if b.use_apriori_mul
if !firstset
xr_cv = cv(xr)
@@ -250,29 +269,99 @@ function fprop_n!(t::Relax, ::Val{MULT}, g::DAT, b::RelaxCache{V,N,T}, k::Int) w
s4 = affine_expand_del(dP, zrn_cc, zrn_cc_grad, s)

wIntv = x.Intv*z.Intv
zm = x*z
#@show zm
if (t3 < x.Intv.hi) || (t4 < z.Intv.hi)
# Relaxations are incorrect for za_l
t1 = affine_expand_del(dp, xr_cv, xr_cv_grad, s)
t2 = affine_expand_del(dp, zr_cv, zr_cv_grad, s)

#=
println(" ")
@show x
@show xr
@show z
@show zr

println(" ")
@show wIntv
@show xr_cv_grad
@show zr_cv_grad

println(" ")
@show t1
@show t2
@show t3
@show t4

println(" ")
@show s
@show dp
@show dP
=#

za_l = McCormick.mult_apriori_kernel(x, z, wIntv, t1, t2, t3, t4, xr_cv_grad, zr_cv_grad)
z = z ∩ za_l
#@show za_l
#@show zm
#@show za_l
zm = zm ∩ za_l
end
if (s3 < -x.Intv.lo) || (s4 < -z.Intv.lo)

if (s3 > -x.Intv.lo) || (s4 > -z.Intv.lo)
#@show "improved overestimators"
s1 = affine_expand_del(dp, xrn_cc, xrn_cc_grad, s)
s2 = affine_expand_del(dp, zrn_cc, zrn_cc_grad, s)
#=
println(" ")
@show x
@show xr
@show z
@show zr


println(" ")
@show -x
@show -z

println(" ")
@show wIntv
@show xrn_cc
@show zrn_cc
@show xrn_cc_grad
@show zrn_cc_grad

println(" ")
@show s1
@show s2
@show s3
@show s4

println(" ")
@show s
@show dp
@show dP
=#

za_u = McCormick.mult_apriori_kernel(-x, -z, wIntv, s1, s2, s3, s4, xrn_cc_grad, zrn_cc_grad)
z = z ∩ za_u
#@show za_u
#@show zm
zm = zm ∩ za_u
end


z = zm
zr = xr*zr
zok = x*zok
else
firstset = false
zr = xr
z = x
zok = x
end
else
z = z*x
end
zt = zt*x
#@show z
#@show zt
end
end
if numval
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@

function affine_expand_del(dx::Vector{Float64}, fx0::Float64, ∇fx0::SVector{N,Float64}, s::Vector{Int}) where N
#@show "ran aff expansion del"
v = fx0
#@show v
for i=1:N
v += ∇fx0[i]*dx[s[i]]
#@show i, ∇fx0[i], dx[s[i]]
#v += ∇fx0[i]*dx[s[i]]
v += ∇fx0[i]*dx[i]
#@show v
end
return v
end
function affine_expand_del(dx::Vector{Interval{Float64}}, fx0::Float64, ∇fx0::SVector{N,Float64}, s::Vector{Int}) where N
v = fx0
for i = 1:N
t = ∇fx0[i]
tdx = dx[s[i]]
#tdx = dx[s[i]]
tdx = dx[i]
v += t > 0.0 ? t*tdx.hi : t*tdx.lo
end
return v
10 changes: 8 additions & 2 deletions src/eago_optimizer/functions/nonlinear/nonlinear.jl
Original file line number Diff line number Diff line change
@@ -152,8 +152,14 @@ end
has_value(d::BufferedNonlinearFunction) = has_value(d.ex)
dep_subexpr_count(d::BufferedNonlinearFunction) = dep_subexpr_count(d.ex)
set_has_value!(d::BufferedNonlinearFunction, v::Bool) = set_has_value!(d.ex, v)
sparsity(d::BufferedNonlinearFunction) = sparsity(d.ex)
set(d::BufferedNonlinearFunction{V,N,T}) where {V,N,T<:RelaxTag} = set(d.ex)
function sparsity(d::BufferedNonlinearFunction)
#println("sparsity of function is = $(sparsity(d.ex))")
sparsity(d.ex)
end
function set(d::BufferedNonlinearFunction{V,N,T}) where {V,N,T<:RelaxTag}
#println("sparsity of function is = $(set(d.ex))")
set(d.ex)
end
num(d::BufferedNonlinearFunction{V,N,T}) where {V,N,T<:RelaxTag} = num(d.ex)
lower_bound(d::BufferedNonlinearFunction{V,N,T}) where {V,N,T<:RelaxTag} = d.ex.lower_bound
upper_bound(d::BufferedNonlinearFunction{V,N,T}) where {V,N,T<:RelaxTag} = d.ex.upper_bound
6 changes: 3 additions & 3 deletions src/eago_optimizer/optimize/optimize_convex.jl
Original file line number Diff line number Diff line change
@@ -156,9 +156,9 @@ function solve_local_nlp!(m::GlobalOptimizer{R,S,Q}) where {R,S,Q<:ExtensionType
# Optimizes the object
MOI.optimize!(upper_optimizer)

println(" ")
@show m._working_problem._objective_saf
@show upper_optimizer.optimizer.model.quadratic_le_constraints[1]
#println(" ")
#@show m._working_problem._objective_saf
#@show upper_optimizer.optimizer.model.quadratic_le_constraints[1]
#@show typeof(upper_optimizer.optimizer.model.quadratic_le_constraints[1])
#@show upper_optimizer.optimizer.model.quadratic_ge_constraints
#@show upper_optimizer.optimizer.model.quadratic_eq_constraints
4 changes: 2 additions & 2 deletions src/eago_optimizer/parse.jl
Original file line number Diff line number Diff line change
@@ -59,7 +59,7 @@ function link_subexpression_dicts!(m::GlobalOptimizer)
copy_subexpr!(ex.relax_cache, ds, dn, din, di)
end
if m._working_problem._objective isa BufferedNonlinearFunction
ex = m._working_problem._objective.ex.relax_cache
ex = m._working_problem._objective.ex
mctyp = mc_type(ex)
ds = Dict{Int,mctyp}()
di = Dict{Int,mctyp}()
@@ -398,7 +398,7 @@ end
function variable_load_parse!(m::Optimizer, ::Type{VI}, ::Type{T}) where T
wp = m._global_optimizer._working_problem = m._working_problem
for (i, v) in enumerate(values(_constraints(m, VI, T)))
wp._variable_info[i] = VariableInfo(wp._variable_info[i], v[2])
wp._variable_info[v[1].value] = VariableInfo(wp._variable_info[v[1].value], v[2])
end
return
end