Skip to content

Commit 664139b

Browse files
committed
optsystem fix
1 parent 22300ab commit 664139b

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

src/systems/optimization/optimizationsystem.jl

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ os = OptimizationSystem(eqs, [x,y,z],[σ,ρ,β])
1818
"""
1919
struct OptimizationSystem <: AbstractSystem
2020
"""Vector of equations defining the system."""
21-
op::Operation
21+
op::Any
2222
"""Unknown variables."""
23-
states::Vector{Variable}
23+
states::Vector
2424
"""Parameters."""
25-
ps::Vector{Variable}
26-
pins::Vector{Variable}
25+
ps::Vector
26+
pins::Vector
2727
observed::Vector{Equation}
2828
equality_constraints::Vector{Equation}
29-
inequality_constraints::Vector{Operation}
29+
inequality_constraints::Vector
3030
"""
3131
Name: the name of the system
3232
"""
@@ -38,27 +38,27 @@ struct OptimizationSystem <: AbstractSystem
3838
end
3939

4040
function OptimizationSystem(op, states, ps;
41-
pins = Variable[],
42-
observed = Operation[],
41+
pins = [],
42+
observed = [],
4343
equality_constraints = Equation[],
44-
inequality_constraints = Operation[],
44+
inequality_constraints = [],
4545
name = gensym(:OptimizationSystem),
4646
systems = OptimizationSystem[])
47-
OptimizationSystem(op, convert.(Variable,states), convert.(Variable,ps), pins, observed, equality_constraints, inequality_constraints, name, systems)
47+
OptimizationSystem(value(op), value.(states), value.(ps), value.(pins), observed, equality_constraints, inequality_constraints, name, systems)
4848
end
4949

5050
function calculate_gradient(sys::OptimizationSystem)
51-
expand_derivatives.(gradient(equations(sys), [dv() for dv in states(sys)]))
51+
expand_derivatives.(gradient(equations(sys), states(sys)))
5252
end
5353

5454
function generate_gradient(sys::OptimizationSystem, vs = states(sys), ps = parameters(sys); kwargs...)
5555
grad = calculate_gradient(sys)
56-
return build_function(grad, convert.(Variable,vs), convert.(Variable,ps);
56+
return build_function(grad, vs, ps;
5757
conv = AbstractSysToExpr(sys),kwargs...)
5858
end
5959

6060
function calculate_hessian(sys::OptimizationSystem)
61-
expand_derivatives.(hessian(equations(sys), [dv() for dv in states(sys)]))
61+
expand_derivatives.(hessian(equations(sys), states(sys)))
6262
end
6363

6464
function generate_hessian(sys::OptimizationSystem, vs = states(sys), ps = parameters(sys);
@@ -67,22 +67,20 @@ function generate_hessian(sys::OptimizationSystem, vs = states(sys), ps = parame
6767
if sparse
6868
hes = sparse(hes)
6969
end
70-
return build_function(hes, convert.(Variable,vs), convert.(Variable,ps);
70+
return build_function(hes, vs, ps;
7171
conv = AbstractSysToExpr(sys),kwargs...)
7272
end
7373

7474
function generate_function(sys::OptimizationSystem, vs = states(sys), ps = parameters(sys); kwargs...)
75-
vs′ = convert.(Variable,vs)
76-
ps′ = convert.(Variable,ps)
77-
return build_function(equations(sys), vs′, ps′;
75+
return build_function(equations(sys), vs, ps;
7876
conv = AbstractSysToExpr(sys),kwargs...)
7977
end
8078

81-
equations(sys::OptimizationSystem) = isempty(sys.systems) ? sys.op : sys.op + reduce(+,namespace_operation.(sys.systems))
82-
namespace_operation(sys::OptimizationSystem) = namespace_operation(sys.op,sys.name,nothing)
79+
equations(sys::OptimizationSystem) = isempty(sys.systems) ? sys.op : sys.op + reduce(+,namespace_expr.(sys.systems))
80+
namespace_expr(sys::OptimizationSystem) = namespace_expr(sys.op,sys.name,nothing)
8381

8482
hessian_sparsity(sys::OptimizationSystem) =
85-
hessian_sparsity(sys.op,[dv() for dv in states(sys)])
83+
hessian_sparsity(sys.op, states(sys))
8684

8785
"""
8886
```julia

0 commit comments

Comments
 (0)