@@ -3898,46 +3898,38 @@ function setup_test(
3898
3898
return
3899
3899
end
3900
3900
3901
- function test_linear_complex_Zeros (optimizer, config:: Config{T} ) where {T}
3902
- atol = config. atol
3903
- rtol = config. rtol
3901
+ """
3902
+ test_linear_complex_Zeros(model::MOI.ModelLike, config::Config{T}) where {T}
3904
3903
3905
- MOI. empty! (optimizer)
3906
- o = one (T)
3907
- t = 2 o
3908
- x, cx = MOI. add_constrained_variables (optimizer, MOI. Nonnegatives (2 ))
3909
- func = (o + t * im) * x[1 ] + (o - o * im) * x[2 ] + (- o + - o * im)
3910
- c = MOI. add_constraint (
3911
- optimizer,
3912
- MOI. Utilities. operate (vcat, Complex{T}, func),
3913
- MOI. Zeros (1 ),
3904
+ Run an integration test on complex-valued affine constraints in Zeros.
3905
+ """
3906
+ function test_linear_complex_Zeros (
3907
+ model:: MOI.ModelLike ,
3908
+ config:: Config{T} ,
3909
+ ) where {T}
3910
+ @requires _supports (config, MOI. optimize!)
3911
+ @requires MOI. supports_constraint (
3912
+ model,
3913
+ MOI. VectorAffineFunction{Complex{T}},
3914
+ MOI. Zeros,
3914
3915
)
3915
- if _supports (config, MOI. optimize!)
3916
- @test MOI. get (optimizer, MOI. TerminationStatus ()) ==
3917
- MOI. OPTIMIZE_NOT_CALLED
3918
- MOI. optimize! (optimizer)
3919
- @test MOI. get (optimizer, MOI. TerminationStatus ()) ==
3920
- config. optimal_status
3921
- @test ≈ (
3922
- MOI. get (optimizer, MOI. VariablePrimal (), x),
3923
- [T (2 ) / T (3 ), T (1 ) / T (3 )],
3924
- config,
3925
- )
3926
- @test ≈ (
3927
- MOI. get (optimizer, MOI. ConstraintPrimal (), cx),
3928
- [T (2 ) / T (3 ), T (1 ) / T (3 )],
3929
- config,
3930
- )
3931
- z = [zero (Complex{T})]
3932
- @test ≈ (MOI. get (optimizer, MOI. ConstraintPrimal (), c), z, config)
3933
- if _supports (config, MOI. ConstraintDual)
3934
- @test ≈ (
3935
- MOI. get (optimizer, MOI. ConstraintDual (), cx),
3936
- zeros (T, 2 ),
3937
- config,
3938
- )
3939
- @test ≈ (MOI. get (optimizer, MOI. ConstraintDual (), c), z, config)
3940
- end
3916
+ x, cx = MOI. add_constrained_variables (model, MOI. Nonnegatives (2 ))
3917
+ scalar_f =
3918
+ (T (1 ) + T (2 ) * im) * x[1 ] + (T (1 ) - T (1 ) * im) * x[2 ] -
3919
+ (T (1 ) + T (1 ) * im)
3920
+ vector_f = MOI. Utilities. operate (vcat, Complex{T}, scalar_f)
3921
+ c = MOI. add_constraint (model, vector_f, MOI. Zeros (1 ))
3922
+ @test MOI. get (model, MOI. TerminationStatus ()) == MOI. OPTIMIZE_NOT_CALLED
3923
+ MOI. optimize! (model)
3924
+ @test MOI. get (model, MOI. TerminationStatus ()) == config. optimal_status
3925
+ primal = [T (2 ) / T (3 ), T (1 ) / T (3 )]
3926
+ @test ≈ (MOI. get (model, MOI. VariablePrimal (), x), primal, config)
3927
+ @test ≈ (MOI. get (model, MOI. ConstraintPrimal (), cx), primal, config)
3928
+ z = [zero (Complex{T})]
3929
+ @test ≈ (MOI. get (model, MOI. ConstraintPrimal (), c), z, config)
3930
+ if _supports (config, MOI. ConstraintDual)
3931
+ @test ≈ (MOI. get (model, MOI. ConstraintDual (), cx), T[0 , 0 ], config)
3932
+ @test ≈ (MOI. get (model, MOI. ConstraintDual (), c), z, config)
3941
3933
end
3942
3934
return
3943
3935
end
@@ -3961,43 +3953,42 @@ function setup_test(
3961
3953
return
3962
3954
end
3963
3955
3956
+ version_added (:: typeof (test_linear_complex_Zeros)) = v " 1.7.0"
3957
+
3958
+ """
3959
+ test_linear_complex_Zeros_duplicate(
3960
+ model::MOI.ModelLike,
3961
+ config::Config{T},
3962
+ ) where {T}
3963
+
3964
+ Run an integration test on complex-valued affine constraints in Zeros.
3965
+ """
3964
3966
function test_linear_complex_Zeros_duplicate (
3965
- optimizer ,
3967
+ model :: MOI.ModelLike ,
3966
3968
config:: Config{T} ,
3967
3969
) where {T}
3968
- atol = config. atol
3969
- rtol = config. rtol
3970
-
3971
- MOI. empty! (optimizer)
3972
- o = one (T)
3973
- t = 2 o
3974
- x, cx = MOI. add_constrained_variables (optimizer, MOI. Nonnegatives (1 ))
3975
- func =
3976
- (o + zero (T) * im) * x[1 ] + o * im * x[1 ] - t * im -
3977
- (o + zero (T) * im) * x[1 ]
3978
- c = MOI. add_constraint (
3979
- optimizer,
3980
- MOI. Utilities. operate (vcat, Complex{T}, func),
3981
- MOI. Zeros (1 ),
3970
+ @requires _supports (config, MOI. optimize!)
3971
+ @requires MOI. supports_constraint (
3972
+ model,
3973
+ MOI. VectorAffineFunction{Complex{T}},
3974
+ MOI. Zeros,
3982
3975
)
3983
- if _supports (config, MOI. optimize!)
3984
- @test MOI. get (optimizer, MOI. TerminationStatus ()) ==
3985
- MOI. OPTIMIZE_NOT_CALLED
3986
- MOI. optimize! (optimizer)
3987
- @test MOI. get (optimizer, MOI. TerminationStatus ()) ==
3988
- config. optimal_status
3989
- @test ≈ (MOI. get (optimizer, MOI. VariablePrimal (), x), T[2 ], config)
3990
- @test ≈ (MOI. get (optimizer, MOI. ConstraintPrimal (), cx), T[2 ], config)
3991
- z = [zero (Complex{T})]
3992
- @test ≈ (MOI. get (optimizer, MOI. ConstraintPrimal (), c), z, config)
3993
- if _supports (config, MOI. ConstraintDual)
3994
- @test ≈ (
3995
- MOI. get (optimizer, MOI. ConstraintDual (), cx),
3996
- zeros (T, 1 ),
3997
- config,
3998
- )
3999
- @test ≈ (MOI. get (optimizer, MOI. ConstraintDual (), c), z, config)
4000
- end
3976
+ x, cx = MOI. add_constrained_variables (model, MOI. Nonnegatives (1 ))
3977
+ scalar_f =
3978
+ (T (1 ) + T (0 ) * im) * x[1 ] + T (1 ) * im * x[1 ] - T (2 ) * im -
3979
+ (T (1 ) + T (0 ) * im) * x[1 ]
3980
+ vector_f = MOI. Utilities. operate (vcat, Complex{T}, scalar_f)
3981
+ c = MOI. add_constraint (model, vector_f, MOI. Zeros (1 ))
3982
+ @test MOI. get (model, MOI. TerminationStatus ()) == MOI. OPTIMIZE_NOT_CALLED
3983
+ MOI. optimize! (model)
3984
+ @test MOI. get (model, MOI. TerminationStatus ()) == config. optimal_status
3985
+ @test ≈ (MOI. get (model, MOI. VariablePrimal (), x), T[2 ], config)
3986
+ @test ≈ (MOI. get (model, MOI. ConstraintPrimal (), cx), T[2 ], config)
3987
+ z = [zero (Complex{T})]
3988
+ @test ≈ (MOI. get (model, MOI. ConstraintPrimal (), c), z, config)
3989
+ if _supports (config, MOI. ConstraintDual)
3990
+ @test ≈ (MOI. get (model, MOI. ConstraintDual (), cx), T[0 ], config)
3991
+ @test ≈ (MOI. get (model, MOI. ConstraintDual (), c), z, config)
4001
3992
end
4002
3993
return
4003
3994
end
@@ -4021,6 +4012,8 @@ function setup_test(
4021
4012
return
4022
4013
end
4023
4014
4015
+ version_added (:: typeof (test_linear_complex_Zeros_duplicate)) = v " 1.7.0"
4016
+
4024
4017
"""
4025
4018
test_linear_open_intervals(
4026
4019
model::MOI.ModelLike,
0 commit comments