Skip to content

Commit 54cb3d8

Browse files
committed
Add test
1 parent fcfd562 commit 54cb3d8

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

test/Nonlinear/ReverseAD.jl

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1421,6 +1421,27 @@ function test_hessian_reinterpret_unsafe()
14211421
return
14221422
end
14231423

1424+
function test_expression_and_adjacency_matrix()
1425+
model = Nonlinear.Model()
1426+
x = MOI.VariableIndex(1)
1427+
expr = Nonlinear.add_expression(model, :($x^2 + 1))
1428+
Nonlinear.set_objective(model, :($expr^2))
1429+
con = Nonlinear.add_constraint(model, :(2 * $expr), MOI.LessThan(1.0))
1430+
@test Nonlinear.expression(model[con]) isa Nonlinear.Expression
1431+
evaluator = Nonlinear.Evaluator(model, Nonlinear.SparseReverseMode(), [x])
1432+
MOI.initialize(evaluator, [:Grad])
1433+
d = evaluator.backend
1434+
@test Nonlinear.expression(d.objective) isa Nonlinear.Expression
1435+
A = SparseArrays.sparse([2, 3], [1, 1], Bool[1, 1], 3, 3)
1436+
@test Nonlinear.adjacency_matrix(d.objective) == A
1437+
@test Nonlinear.expression(only(d.constraints)) isa Nonlinear.Expression
1438+
@test Nonlinear.adjacency_matrix(only(d.constraints)) == A
1439+
A = SparseArrays.sparse([2, 5, 3, 4], [1, 1, 2, 2], Bool[1, 1, 1, 1], 5, 5)
1440+
@test Nonlinear.expression(only(d.subexpressions)) isa Nonlinear.Expression
1441+
@test Nonlinear.adjacency_matrix(only(d.subexpressions)) == A
1442+
return
1443+
end
1444+
14241445
end # module
14251446

14261447
TestReverseAD.runtests()

0 commit comments

Comments
 (0)