@@ -610,7 +610,7 @@ function test_change_col_bounds_by_set_less_than()
610
610
return
611
611
end
612
612
613
- function test_change_col_bounds_by_set_less_than ()
613
+ function test_change_col_bounds_by_set_equal_to ()
614
614
model = HiGHS. Optimizer ()
615
615
MOI. set (model, MOI. Silent (), true )
616
616
x = MOI. add_variables (model, 3 )
@@ -628,6 +628,91 @@ function test_change_col_bounds_by_set_less_than()
628
628
return
629
629
end
630
630
631
+ function test_change_row_bounds_by_set_dimension_mismatch ()
632
+ model = HiGHS. Optimizer ()
633
+ MOI. set (model, MOI. Silent (), true )
634
+ x = MOI. add_variables (model, 3 )
635
+ c = MOI. add_constraint .(model, 1.0 .* x, MOI. GreaterThan .(1.0 : 3.0 ))
636
+ @test_throws (
637
+ DimensionMismatch,
638
+ MOI. set (model, MOI. ConstraintSet (), c, MOI. GreaterThan .([4.0 , 5.0 ])),
639
+ )
640
+ return
641
+ end
642
+
643
+ function test_change_row_bounds_by_set_invalid ()
644
+ model = HiGHS. Optimizer ()
645
+ MOI. set (model, MOI. Silent (), true )
646
+ x = MOI. add_variable (model)
647
+ c = MOI. add_constraint (model, 1.0 .* x, MOI. GreaterThan (0.0 ))
648
+ c_invalid = typeof (c)(- 123456 )
649
+ sets = MOI. GreaterThan .(1.0 : 2.0 )
650
+ @test_throws (
651
+ MOI. InvalidIndex (c_invalid),
652
+ MOI. set (model, MOI. ConstraintSet (), [c, c_invalid], sets),
653
+ )
654
+ return
655
+ end
656
+
657
+ function test_change_row_bounds_by_set_greater_than ()
658
+ model = HiGHS. Optimizer ()
659
+ MOI. set (model, MOI. Silent (), true )
660
+ x = MOI. add_variables (model, 3 )
661
+ c = MOI. add_constraint .(model, 1.0 .* x, MOI. GreaterThan .(1.0 : 3.0 ))
662
+ MOI. set (model, MOI. ObjectiveSense (), MOI. MIN_SENSE)
663
+ f = 1.0 * x[1 ] + x[2 ] + x[3 ]
664
+ MOI. set (model, MOI. ObjectiveFunction {typeof(f)} (), f)
665
+ MOI. optimize! (model)
666
+ @test ≈ (MOI. get (model, MOI. ObjectiveValue ()), 6 ; atol = 1e-6 )
667
+ MOI. set (
668
+ model,
669
+ MOI. ConstraintSet (),
670
+ [c[1 ], c[3 ]],
671
+ MOI. GreaterThan .([4.0 , 5.0 ]),
672
+ )
673
+ MOI. optimize! (model)
674
+ @test ≈ (MOI. get (model, MOI. ObjectiveValue ()), 11 ; atol = 1e-6 )
675
+ @test MOI. get (model, MOI. ConstraintSet (), c) ==
676
+ MOI. GreaterThan .([4.0 , 2.0 , 5.0 ])
677
+ return
678
+ end
679
+
680
+ function test_change_row_bounds_by_set_less_than ()
681
+ model = HiGHS. Optimizer ()
682
+ MOI. set (model, MOI. Silent (), true )
683
+ x = MOI. add_variables (model, 3 )
684
+ c = MOI. add_constraint .(model, 1.0 .* x, MOI. LessThan .(1.0 : 3.0 ))
685
+ MOI. set (model, MOI. ObjectiveSense (), MOI. MAX_SENSE)
686
+ f = 1.0 * x[1 ] + x[2 ] + x[3 ]
687
+ MOI. set (model, MOI. ObjectiveFunction {typeof(f)} (), f)
688
+ MOI. optimize! (model)
689
+ @test ≈ (MOI. get (model, MOI. ObjectiveValue ()), 6 ; atol = 1e-6 )
690
+ MOI. set (model, MOI. ConstraintSet (), [c[1 ], c[3 ]], MOI. LessThan .([4.0 , 5.0 ]))
691
+ MOI. optimize! (model)
692
+ @test ≈ (MOI. get (model, MOI. ObjectiveValue ()), 11 ; atol = 1e-6 )
693
+ @test MOI. get (model, MOI. ConstraintSet (), c) ==
694
+ MOI. LessThan .([4.0 , 2.0 , 5.0 ])
695
+ return
696
+ end
697
+
698
+ function test_change_row_bounds_by_set_equal_to ()
699
+ model = HiGHS. Optimizer ()
700
+ MOI. set (model, MOI. Silent (), true )
701
+ x = MOI. add_variables (model, 3 )
702
+ c = MOI. add_constraint .(model, 1.0 .* x, MOI. EqualTo .(1.0 : 3.0 ))
703
+ MOI. set (model, MOI. ObjectiveSense (), MOI. MAX_SENSE)
704
+ f = 1.0 * x[1 ] + x[2 ] + x[3 ]
705
+ MOI. set (model, MOI. ObjectiveFunction {typeof(f)} (), f)
706
+ MOI. optimize! (model)
707
+ @test ≈ (MOI. get (model, MOI. ObjectiveValue ()), 6 ; atol = 1e-6 )
708
+ MOI. set (model, MOI. ConstraintSet (), [c[1 ], c[3 ]], MOI. EqualTo .([4.0 , 5.0 ]))
709
+ MOI. optimize! (model)
710
+ @test ≈ (MOI. get (model, MOI. ObjectiveValue ()), 11 ; atol = 1e-6 )
711
+ @test MOI. get (model, MOI. ConstraintSet (), c) ==
712
+ MOI. EqualTo .([4.0 , 2.0 , 5.0 ])
713
+ return
714
+ end
715
+
631
716
end
632
717
633
718
TestMOIHighs. runtests ()
0 commit comments