@@ -91,6 +91,35 @@ function test_write_int()
91
91
return
92
92
end
93
93
94
+ function test_write_int_float_interval ()
95
+ model = MiniZinc. Model {Float64} ()
96
+ x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
97
+ MOI. add_constraint (model, x, MOI. Interval (1.5 , 3.2 ))
98
+ @test sprint (write, model) == """
99
+ var 2 .. 3: x1;
100
+ solve satisfy;
101
+ """
102
+ return
103
+ end
104
+
105
+ function test_write_int_float_greater_than ()
106
+ model = MiniZinc. Model {Float64} ()
107
+ x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
108
+ MOI. add_constraint (model, x, MOI. GreaterThan (1.5 ))
109
+ @test sprint (write, model) ==
110
+ " var int: x1;\n constraint int_le(2, x1);\n solve satisfy;\n "
111
+ return
112
+ end
113
+
114
+ function test_write_int_float_less_than ()
115
+ model = MiniZinc. Model {Float64} ()
116
+ x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
117
+ MOI. add_constraint (model, x, MOI. LessThan (1.5 ))
118
+ @test sprint (write, model) ==
119
+ " var int: x1;\n constraint int_le(x1, 1);\n solve satisfy;\n "
120
+ return
121
+ end
122
+
94
123
function test_write_interval ()
95
124
model = MiniZinc. Model {Int} ()
96
125
x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
@@ -1630,6 +1659,46 @@ function test_infix_unary_addition()
1630
1659
return
1631
1660
end
1632
1661
1662
+ function test_integer_bounds_interval ()
1663
+ model = MOI. Utilities. Model {Float64} ()
1664
+ x = MOI. add_variables (model, 3 )
1665
+ MOI. add_constraint .(model, x, MOI. Integer ())
1666
+ MOI. add_constraint .(model, x, MOI. Interval (1.0 , 3.0 ))
1667
+ MOI. add_constraint (model, MOI. VectorOfVariables (x), MOI. AllDifferent (3 ))
1668
+ mzn = MiniZinc. Optimizer {Float64} (" highs" )
1669
+ index_map, _ = MOI. optimize! (mzn, model)
1670
+ @test MOI. get (mzn, MOI. TerminationStatus ()) == MOI. OPTIMAL
1671
+ y = [MOI. get (mzn, MOI. VariablePrimal (), index_map[xi]) for xi in x]
1672
+ @test sort (y) == [1 , 2 , 3 ]
1673
+ return
1674
+ end
1675
+
1676
+ function test_integer_bounds_greater_than ()
1677
+ model = MOI. Utilities. Model {Float64} ()
1678
+ x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
1679
+ MOI. add_constraint (model, x, MOI. GreaterThan (1.5 ))
1680
+ MOI. set (model, MOI. ObjectiveSense (), MOI. MIN_SENSE)
1681
+ MOI. set (model, MOI. ObjectiveFunction {MOI.VariableIndex} (), x)
1682
+ mzn = MiniZinc. Optimizer {Float64} (" highs" )
1683
+ index_map, _ = MOI. optimize! (mzn, model)
1684
+ @test MOI. get (mzn, MOI. TerminationStatus ()) == MOI. OPTIMAL
1685
+ @test MOI. get (mzn, MOI. VariablePrimal (), index_map[x]) == 2
1686
+ return
1687
+ end
1688
+
1689
+ function test_integer_bounds_less_than_than ()
1690
+ model = MOI. Utilities. Model {Float64} ()
1691
+ x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
1692
+ MOI. add_constraint (model, x, MOI. LessThan (1.5 ))
1693
+ MOI. set (model, MOI. ObjectiveSense (), MOI. MAX_SENSE)
1694
+ MOI. set (model, MOI. ObjectiveFunction {MOI.VariableIndex} (), x)
1695
+ mzn = MiniZinc. Optimizer {Float64} (" highs" )
1696
+ index_map, _ = MOI. optimize! (mzn, model)
1697
+ @test MOI. get (mzn, MOI. TerminationStatus ()) == MOI. OPTIMAL
1698
+ @test MOI. get (mzn, MOI. VariablePrimal (), index_map[x]) == 1
1699
+ return
1700
+ end
1701
+
1633
1702
end
1634
1703
1635
1704
TestMiniZinc. runtests ()
0 commit comments