Skip to content

Commit 2612615

Browse files
committed
refactor: simplify expression handling
1 parent a791803 commit 2612615

File tree

2 files changed

+38
-37
lines changed

2 files changed

+38
-37
lines changed

lib/OptimizationIpopt/src/cache.jl

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -115,49 +115,50 @@ function IpoptCache(prob, opt;
115115
lcons = prob.lcons === nothing ? fill(T(-Inf), num_cons) : prob.lcons
116116
ucons = prob.ucons === nothing ? fill(T(Inf), num_cons) : prob.ucons
117117

118-
if f.sys isa SymbolicIndexingInterface.SymbolCache{Nothing, Nothing, Nothing} && mtkize
119-
try
120-
sys = MTK.modelingtoolkitize(prob)
121-
catch err
122-
throw(ArgumentError("Automatic symbolic expression generation with ModelingToolkit failed with error: $err.
123-
Try by setting `mtkize = false` instead if the solver doesn't require symbolic expressions."))
124-
end
125-
if !isnothing(prob.p) && !(prob.p isa SciMLBase.NullParameters)
126-
unames = variable_symbols(sys)
127-
pnames = parameter_symbols(sys)
128-
us = [unames[i] => prob.u0[i] for i in 1:length(prob.u0)]
129-
ps = [pnames[i] => prob.p[i] for i in 1:length(prob.p)]
130-
sysprob = OptimizationProblem(sys, us, ps)
131-
else
132-
unames = variable_symbols(sys)
133-
us = [unames[i] => prob.u0[i] for i in 1:length(prob.u0)]
134-
sysprob = OptimizationProblem(sys, us)
135-
end
118+
# if f.sys isa SymbolicIndexingInterface.SymbolCache{Nothing, Nothing, Nothing} && mtkize
119+
# try
120+
# sys = MTK.modelingtoolkitize(prob)
121+
# catch err
122+
# throw(ArgumentError("Automatic symbolic expression generation with ModelingToolkit failed with error: $err.
123+
# Try by setting `mtkize = false` instead if the solver doesn't require symbolic expressions."))
124+
# end
125+
# if !isnothing(prob.p) && !(prob.p isa SciMLBase.NullParameters)
126+
# unames = variable_symbols(sys)
127+
# pnames = parameter_symbols(sys)
128+
# us = [unames[i] => prob.u0[i] for i in 1:length(prob.u0)]
129+
# ps = [pnames[i] => prob.p[i] for i in 1:length(prob.p)]
130+
# sysprob = OptimizationProblem(sys, us, ps)
131+
# else
132+
# unames = variable_symbols(sys)
133+
# us = [unames[i] => prob.u0[i] for i in 1:length(prob.u0)]
134+
# sysprob = OptimizationProblem(sys, us)
135+
# end
136136

137-
obj_expr = sysprob.f.expr
138-
cons_expr = sysprob.f.cons_expr
139-
else
137+
# obj_expr = sysprob.f.expr
138+
# cons_expr = sysprob.f.cons_expr
139+
# else
140140
sys = f.sys isa SymbolicIndexingInterface.SymbolCache{Nothing, Nothing, Nothing} ?
141141
nothing : f.sys
142142
obj_expr = f.expr
143143
cons_expr = f.cons_expr
144-
end
144+
# end
145145

146-
if sys === nothing
146+
# if sys === nothing
147147
expr = obj_expr
148148
_cons_expr = cons_expr
149-
else
150-
expr_map = get_expr_map(sys)
151-
expr = convert_to_expr(obj_expr, expr_map; expand_expr = false)
152-
expr = repl_getindex!(expr)
153-
cons = MTK.constraints(sys)
154-
_cons_expr = Vector{Expr}(undef, length(cons))
155-
for i in eachindex(cons)
156-
_cons_expr[i] = repl_getindex!(convert_to_expr(cons_expr[i],
157-
expr_map;
158-
expand_expr = false))
159-
end
160-
end
149+
# else
150+
# error("Expressions are not supported")
151+
# expr_map = get_expr_map(sys)
152+
# expr = convert_to_expr(obj_expr, expr_map; expand_expr = false)
153+
# expr = repl_getindex!(expr)
154+
# cons = MTK.constraints(sys)
155+
# _cons_expr = Vector{Expr}(undef, length(cons))
156+
# for i in eachindex(cons)
157+
# _cons_expr[i] = repl_getindex!(convert_to_expr(cons_expr[i],
158+
# expr_map;
159+
# expand_expr = false))
160+
# end
161+
# end
161162
solver_args = NamedTuple(kwargs)
162163

163164
return IpoptCache(

lib/OptimizationIpopt/test/runtests.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ end
6565
end
6666
end
6767

68-
@testset "cache" begin
68+
@testset "MTK cache" begin
6969
@variables x
7070
@parameters a = 1.0
7171
@named sys = OptimizationSystem((x - a)^2, [x], [a];)
7272
sys = complete(sys)
73-
prob = OptimizationProblem(sys, [x => 0.0], []; grad = true, hess = true)
73+
prob = OptimizationProblem(sys, [x => 0.0]; grad = true, hess = true)
7474
cache = init(prob, IpoptOptimizer(); print_level = 0)
7575
@test cache isa OptimizationIpopt.IpoptCache
7676
sol = solve!(cache)

0 commit comments

Comments
 (0)