|
15 | 15 | # We do tests twice to make sure the function is not modified
|
16 | 16 | vals = Dict(w=>0, x=>3, y=>1, z=>5)
|
17 | 17 | fsv = MOI.SingleVariable(z)
|
| 18 | + @test MOI.output_dimension(fsv) == 1 |
18 | 19 | @test MOIU.evalvariables(vi -> vals[vi], fsv) ≈ 5
|
19 | 20 | @test MOIU.evalvariables(vi -> vals[vi], fsv) ≈ 5
|
20 | 21 | fvv = MOI.VectorOfVariables([x, z, y])
|
| 22 | + @test MOI.output_dimension(fvv) == 3 |
21 | 23 | @test MOIU.evalvariables(vi -> vals[vi], fvv) ≈ [3, 5, 1]
|
22 | 24 | @test MOIU.evalvariables(vi -> vals[vi], fvv) ≈ [3, 5, 1]
|
23 | 25 | fsa = MOI.ScalarAffineFunction([MOI.ScalarAffineTerm(1.0, x), MOI.ScalarAffineTerm(3.0, z), MOI.ScalarAffineTerm(2.0, y)], 2.0)
|
| 26 | + @test MOI.output_dimension(fsa) == 1 |
24 | 27 | @test MOIU.evalvariables(vi -> vals[vi], fsa) ≈ 22
|
25 | 28 | @test MOIU.evalvariables(vi -> vals[vi], fsa) ≈ 22
|
26 | 29 | fva = MOI.VectorAffineFunction(MOI.VectorAffineTerm.([2, 1, 2], MOI.ScalarAffineTerm.([1.0, 3.0, 2.0], [x, z, y])), [-3.0, 2.0])
|
| 30 | + @test MOI.output_dimension(fva) == 2 |
27 | 31 | @test MOIU.evalvariables(vi -> vals[vi], fva) ≈ [12, 7]
|
28 | 32 | @test MOIU.evalvariables(vi -> vals[vi], fva) ≈ [12, 7]
|
29 | 33 | fsq = MOI.ScalarQuadraticFunction(MOI.ScalarAffineTerm.(1.0, [x, y]),
|
30 | 34 | MOI.ScalarQuadraticTerm.(1.0, [x, w, w], [z, z, y]), -3.0)
|
| 35 | + @test MOI.output_dimension(fsq) == 1 |
31 | 36 | @test MOIU.evalvariables(vi -> vals[vi], fsq) ≈ 16
|
32 | 37 | @test MOIU.evalvariables(vi -> vals[vi], fsq) ≈ 16
|
33 | 38 | fvq = MOI.VectorQuadraticFunction(MOI.VectorAffineTerm.([2, 1], MOI.ScalarAffineTerm.(1.0, [x, y])),
|
34 | 39 | MOI.VectorQuadraticTerm.([1, 2, 2], MOI.ScalarQuadraticTerm.(1.0, [x, w, w], [z, z, y])), [-3.0, -2.0])
|
| 40 | + @test MOI.output_dimension(fvq) == 2 |
35 | 41 | @test MOIU.evalvariables(vi -> vals[vi], fvq) ≈ [13, 1]
|
36 | 42 | @test MOIU.evalvariables(vi -> vals[vi], fvq) ≈ [13, 1]
|
37 | 43 | end
|
|
127 | 133 | @test MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([1, 1], [x, z]), 1) ≈ MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([1, 1e-7, 1], [x, y, z]), 1.0) atol=1e-6
|
128 | 134 | @test MOI.ScalarAffineFunction([MOI.ScalarAffineTerm(1.0, x), MOI.ScalarAffineTerm(1e-7, y)], 1.0) ≈ MOI.ScalarAffineFunction([MOI.ScalarAffineTerm(1, x)], 1) atol=1e-6
|
129 | 135 | f = MOIU.canonical(MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([2, 1, 3, -2, -3], [y, x, z, x, z]), 5))
|
| 136 | + @test MOI.output_dimension(f) == 1 |
130 | 137 | @test f.terms == MOI.ScalarAffineTerm.([-1, 2], [x, y])
|
131 | 138 | @test f.constant == 5
|
132 | 139 | f = MOIU.canonical(MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([1, 3, 1, 2, -3, 2, -1, -2, -2, 3, 2],
|
|
146 | 153 | end
|
147 | 154 | @testset "Quadratic" begin
|
148 | 155 | f = MOI.ScalarQuadraticFunction(MOI.ScalarAffineTerm.([3], [x]), MOI.ScalarQuadraticTerm.([1, 2, 3], [x, y, x], [x, y, y]), 7)
|
| 156 | + @test MOI.output_dimension(f) == 1 |
149 | 157 | f = MOIU.modifyfunction(f, MOI.ScalarConstantChange(9))
|
150 | 158 | @test f.constant == 9
|
151 | 159 | f = MOIU.modifyfunction(f, MOI.ScalarCoefficientChange(y, 0))
|
|
163 | 171 | f = MOIU.canonical(MOI.VectorAffineFunction(MOI.VectorAffineTerm.([2, 1, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 1, 2],
|
164 | 172 | MOI.ScalarAffineTerm.([3, 2, 3, -3, -1, -2, 3, -2, 1, 3, 5, -2, 0, -1],
|
165 | 173 | [x, x, z, y, y, x, y, z, x, y, y, x, x, z])), [5, 7]))
|
| 174 | + @test MOI.output_dimension(f) == 2 |
166 | 175 | @test f.terms == MOI.VectorAffineTerm.([1, 1, 2], MOI.ScalarAffineTerm.([2, 4, 3], [x, y, y]))
|
167 | 176 | @test MOIU.constant(f) == [5, 7]
|
168 | 177 | f = MOIU.modifyfunction(f, MOI.VectorConstantChange([6, 8]))
|
|
178 | 187 | end
|
179 | 188 | @testset "Quadratic" begin
|
180 | 189 | f = MOI.VectorQuadraticFunction(MOI.VectorAffineTerm.([1, 2, 2], MOI.ScalarAffineTerm.([3, 1, 2], [x, x, y])), MOI.VectorQuadraticTerm.([1, 1, 2], MOI.ScalarQuadraticTerm.([1, 2, 3], [x, y, x], [x, y, y])), [7, 3, 4])
|
| 190 | + @test MOI.output_dimension(f) == 3 |
181 | 191 | f = MOIU.modifyfunction(f, MOI.VectorConstantChange([10, 11, 12]))
|
182 | 192 | @test MOIU.constant(f) == [10, 11, 12]
|
183 | 193 | f = MOIU.modifyfunction(f, MOI.MultirowChange(y, [(2, 0), (1, 1)]))
|
|
0 commit comments