@@ -941,11 +941,13 @@ function test_active_bound()
941
941
(0.0 , 1.0 , 1.0 , - 2.0 ) => 1.0 ,
942
942
(0.0 , 0.6 , 1.0 , - 2.0 ) => 1.0 ,
943
943
(0.0 , 0.6 , 1.0 , 2.0 ) => 1.0 , # incorrect d but doesn't matter
944
+ (- Inf , 0.0 , Inf , 0.0 ) => 0.0 ,
944
945
# It's a ray. Choose based on sign
945
946
(0.0 , NaN , 1.0 , 2.0 ) => 0.0 ,
946
947
(0.0 , NaN , 1.0 , 1e-10 ) => 0.0 ,
947
948
(0.0 , NaN , 1.0 , - 2.0 ) => 1.0 ,
948
949
(0.0 , NaN , 1.0 , - 1e-10 ) => 1.0 ,
950
+ (- Inf , NaN , Inf , 0.0 ) => 0.0 ,
949
951
# It's a one-sided ray
950
952
(0.0 , NaN , Inf , 2.0 ) => 0.0 ,
951
953
(0.0 , NaN , Inf , - 1e-10 ) => 0.0 ,
@@ -972,6 +974,18 @@ function test_add_constrained_variable_tuple()
972
974
return
973
975
end
974
976
977
+ function test_dual_objective_value_infeasible ()
978
+ model = HiGHS. Optimizer ()
979
+ x = MOI. add_variable (model)
980
+ MOI. set (model, MOI. ObjectiveSense (), MOI. MIN_SENSE)
981
+ f = 1.0 * x
982
+ MOI. set (model, MOI. ObjectiveFunction {typeof(f)} (), f)
983
+ MOI. optimize! (model)
984
+ @test MOI. get (model, MOI. DualStatus ()) == MOI. INFEASIBLE_POINT
985
+ @test MOI. get (model, MOI. DualObjectiveValue ()) == 0.0
986
+ return
987
+ end
988
+
975
989
end # module
976
990
977
991
TestMOIHighs. runtests ()
0 commit comments