-
Notifications
You must be signed in to change notification settings - Fork 119
/
mip.jl
116 lines (97 loc) · 2.67 KB
/
mip.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
@add_problem mip function mip_lp_fallback_interface(handle_problem!, ::Val{test}, atol, rtol, ::Type{T}) where {T, test}
x = Variable()
p = minimize(x, x>=4.3; numeric_type = T)
if test
@test vexity(p) == AffineVexity()
end
handle_problem!(p)
if test
@test p.optval ≈ 4.3 atol=atol rtol=rtol
end
x = Variable(2)
p = minimize(norm(x,1), x[1]>=4.3; numeric_type = T)
if test
@test vexity(p) == ConvexVexity()
end
handle_problem!(p)
if test
@test p.optval ≈ 4.3 atol=atol rtol=rtol
end
end
@add_problem mip function mip_integer_variables(handle_problem!, ::Val{test}, atol, rtol, ::Type{T}) where {T, test}
x = Variable(:Int)
p = minimize(x, x>=4.3; numeric_type = T)
if test
@test vexity(p) == AffineVexity()
end
handle_problem!(p)
if test
@test p.optval ≈ 5 atol=atol rtol=rtol
end
x = Variable(2, :Int)
p = minimize(sum(x), x>=4.3; numeric_type = T)
if test
@test vexity(p) == AffineVexity()
end
handle_problem!(p)
if test
@test p.optval ≈ 10 atol=atol rtol=rtol
end
x = Variable(:Int)
y = Variable()
p = minimize(sum(x + y), x>=4.3, y>=7; numeric_type = T)
if test
@test vexity(p) == AffineVexity()
end
handle_problem!(p)
if test
@test p.optval ≈ 12 atol=atol rtol=rtol
end
x = Variable(2, :Int)
p = minimize(norm(x, 1), x[1]>=4.3; numeric_type = T)
if test
@test vexity(p) == ConvexVexity()
end
handle_problem!(p)
if test
@test p.optval ≈ 5 atol=atol rtol=rtol
end
x = Variable(2, :Int)
p = minimize(sum(x), x[1]>=4.3, x>=0; numeric_type = T)
if test
@test vexity(p) == AffineVexity()
end
handle_problem!(p)
if test
@test p.optval ≈ 5 atol=atol rtol=rtol
end
x = Variable(2, :Int)
p = minimize(sum(x), x>=.5; numeric_type = T)
if test
@test vexity(p) == AffineVexity()
end
handle_problem!(p)
if test
@test p.optval ≈ 2 atol=atol rtol=rtol
end
end
@add_problem mip function mip_binary_variables(handle_problem!, ::Val{test}, atol, rtol, ::Type{T}) where {T, test}
x = Variable(2, :Bin)
p = minimize(sum(x), x>=.5; numeric_type = T)
if test
@test vexity(p) == AffineVexity()
end
handle_problem!(p)
if test
@test p.optval ≈ 2 atol=atol rtol=rtol
end
x = Variable(2, :Bin)
p = minimize(sum(x), x[1]>=.5, x>=0; numeric_type = T)
if test
@test vexity(p) == AffineVexity()
end
handle_problem!(p)
if test
@test p.optval ≈ 1 atol=atol rtol=rtol
end
end