@@ -55,7 +55,7 @@ c4: y >= 0.25
55
55
@test MOI. get (model, Gurobi. MultiObjectivePriority (2 )) == 0
56
56
57
57
MOI. optimize! (model)
58
- @test MOI. get (model, MOI. ObjectiveValue ()) ≈ 1.5
58
+ @test MOI. get (model, MOI. ObjectiveValue ()) ≈ [ 1.5 , 2.0 ]
59
59
@test MOI. get (model, MOI. VariablePrimal (), x) ≈ 0.5
60
60
@test MOI. get (model, MOI. VariablePrimal (), y) ≈ 0.5
61
61
@@ -101,6 +101,37 @@ c4: y >= 0.25
101
101
@test MOI. get (model, Gurobi. MultiObjectiveValue (2 )) ≈ BFS[3 ]. f2
102
102
end
103
103
104
+ function test_example_biobjective_knapsack ()
105
+ p1 = [77.0 , 94 , 71 , 63 , 96 , 82 , 85 , 75 , 72 , 91 , 99 , 63 , 84 , 87 , 79 , 94 , 90 ]
106
+ p2 = [65.0 , 90 , 90 , 77 , 95 , 84 , 70 , 94 , 66 , 92 , 74 , 97 , 60 , 60 , 65 , 97 , 93 ]
107
+ w = [80.0 , 87 , 68 , 72 , 66 , 77 , 99 , 85 , 70 , 93 , 98 , 72 , 100 , 89 , 67 , 86 , 91 ]
108
+ model = Gurobi. Optimizer ()
109
+ x = MOI. add_variables (model, length (w))
110
+ MOI. add_constraint .(model, x, MOI. ZeroOne ())
111
+ MOI. add_constraint (model, w' * x, MOI. LessThan (900.0 ))
112
+ obj_f = MOI. Utilities. operate (vcat, Float64, p1' * x, p2' * x)
113
+ MOI. set (model, MOI. ObjectiveSense (), MOI. MAX_SENSE)
114
+ MOI. set (model, MOI. ObjectiveFunction {typeof(obj_f)} (), obj_f)
115
+ MOI. optimize! (model)
116
+ results = Dict (
117
+ [955.0 , 906.0 ] => [2 , 3 , 5 , 6 , 9 , 10 , 11 , 14 , 15 , 16 , 17 ],
118
+ [948.0 , 939.0 ] => [1 , 2 , 3 , 5 , 6 , 8 , 10 , 11 , 15 , 16 , 17 ],
119
+ [934.0 , 971.0 ] => [2 , 3 , 5 , 6 , 8 , 10 , 11 , 12 , 15 , 16 , 17 ],
120
+ [918.0 , 983.0 ] => [2 , 3 , 4 , 5 , 6 , 8 , 10 , 11 , 12 , 16 , 17 ],
121
+ )
122
+ found_non_dominated_point = false
123
+ for i in 1 : MOI. get (model, MOI. ResultCount ())
124
+ X = findall (elt -> elt > 0.9 , MOI. get .(model, MOI. VariablePrimal (i), x))
125
+ Y = MOI. get (model, MOI. ObjectiveValue (i))
126
+ if haskey (results, Y)
127
+ @test results[Y] == X
128
+ found_non_dominated_point = true
129
+ end
130
+ end
131
+ @test found_non_dominated_point
132
+ return
133
+ end
134
+
104
135
end
105
136
106
137
TestMultiobjective. runtests ()
0 commit comments