Skip to content

Commit c749d83

Browse files
committed
Update
1 parent 3e3b36e commit c749d83

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/Nonlinear/SymbolicAD/SymbolicAD.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ end
4444
function simplify(f::MOI.VectorAffineFunction{T}) where {T}
4545
f = MOI.Utilities.canonical(f)
4646
if isempty(f.terms)
47-
return f.constant
47+
return f.constants
4848
end
4949
return f
5050
end

test/Nonlinear/SymbolicAD.jl

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ function test_simplify_ScalarNonlinearFunction_multiplication()
108108
# *(-(x, x), 1) -> 0
109109
f = MOI.ScalarNonlinearFunction(:-, Any[x, x])
110110
@test (SymbolicAD.simplify(MOI.ScalarNonlinearFunction(:*, Any[f, 1])), 0)
111+
# *() -> true
112+
@test (SymbolicAD.simplify(MOI.ScalarNonlinearFunction(:*, Any[])), 1)
111113
return
112114
end
113115

@@ -202,6 +204,40 @@ function test_simplify_ScalarNonlinearFunction_power()
202204
return
203205
end
204206

207+
function test_simplify_VectorAffineFunction()
208+
f = MOI.VectorAffineFunction{Float64}(
209+
MOI.VectorAffineTerm{Float64}[],
210+
[0.0, 1.0, 2.0],
211+
)
212+
@test SymbolicAD.simplify(f) == [0.0, 1.0, 2.0]
213+
x = MOI.VariableIndex(1)
214+
f = MOI.Utilities.operate(vcat, Float64, 1.0, x, 2.0 * x + 1.0 * x)
215+
@test SymbolicAD.simplify(f) f
216+
return
217+
end
218+
219+
function test_simplify_VectorQuadraticFunction()
220+
f = MOI.VectorQuadraticFunction{Float64}(
221+
MOI.VectorQuadraticTerm{Float64}[],
222+
MOI.VectorAffineTerm{Float64}[],
223+
[0.0, 1.0, 2.0],
224+
)
225+
@test SymbolicAD.simplify(f) == [0.0, 1.0, 2.0]
226+
x = MOI.VariableIndex(1)
227+
f = MOI.VectorQuadraticFunction{Float64}(
228+
MOI.VectorQuadraticTerm{Float64}[],
229+
MOI.VectorAffineTerm{Float64}[
230+
MOI.VectorAffineTerm(2, MOI.ScalarAffineTerm(3.0, x))
231+
],
232+
[1.0, 0.0],
233+
)
234+
g = MOI.Utilities.operate(vcat, Float64, 1.0, 3.0 * x)
235+
@test SymbolicAD.simplify(f) g
236+
f = MOI.Utilities.operate(vcat, Float64, 1.0, 2.0 * x * x)
237+
@test SymbolicAD.simplify(f) f
238+
return
239+
end
240+
205241
function test_simplify_VectorNonlinearFunction()
206242
x = MOI.VariableIndex.(1:3)
207243
y = MOI.ScalarNonlinearFunction(

0 commit comments

Comments
 (0)