File tree Expand file tree Collapse file tree 2 files changed +11
-0
lines changed
Expand file tree Collapse file tree 2 files changed +11
-0
lines changed Original file line number Diff line number Diff line change @@ -1071,6 +1071,10 @@ function canonicalize!(
10711071 return f
10721072end
10731073
1074+ function canonical (f:: MOI.ScalarNonlinearFunction ):: MOI.ScalarNonlinearFunction
1075+ return MOI. Nonlinear. SymbolicAD. simplify (f)
1076+ end
1077+
10741078function canonicalize! (f:: MOI.ScalarNonlinearFunction )
10751079 for (i, arg) in enumerate (f. args)
10761080 if ! is_canonical (arg)
@@ -1080,6 +1084,11 @@ function canonicalize!(f::MOI.ScalarNonlinearFunction)
10801084 return f
10811085end
10821086
1087+ function canonical (f:: MOI.VectorNonlinearFunction )
1088+ rows = MOI. Nonlinear. SymbolicAD. simplify .(f. rows)
1089+ return MOI. VectorNonlinearFunction (rows)
1090+ end
1091+
10831092function canonicalize! (f:: MOI.VectorNonlinearFunction )
10841093 for (i, fi) in enumerate (f. rows)
10851094 f. rows[i] = canonicalize! (fi)
Original file line number Diff line number Diff line change @@ -64,6 +64,7 @@ function test_simplify_ScalarNonlinearFunction()
6464 f = MOI. ScalarNonlinearFunction (:log , Any[x])
6565 g = MOI. ScalarNonlinearFunction (:sin , Any[f])
6666 @test SymbolicAD. simplify (g) ≈ g
67+ @test MOI. Utilities. canonical (g) ≈ g
6768 return
6869end
6970
@@ -252,6 +253,7 @@ function test_simplify_VectorNonlinearFunction()
252253 f = MOI. VectorNonlinearFunction (wrap .([y; x_plus]))
253254 g = MOI. VectorNonlinearFunction ([y; x_plus])
254255 @test SymbolicAD. simplify (f) ≈ g
256+ @test isapprox (MOI. Utilities. canonical (f), g)
255257 return
256258end
257259
You can’t perform that action at this time.
0 commit comments