@@ -55,7 +55,7 @@ c4: y >= 0.25
5555 @test MOI. get (model, Gurobi. MultiObjectivePriority (2 )) == 0
5656
5757 MOI. optimize! (model)
58- @test MOI. get (model, MOI. ObjectiveValue ()) ≈ 1.5
58+ @test MOI. get (model, MOI. ObjectiveValue ()) ≈ [ 1.5 , 2.0 ]
5959 @test MOI. get (model, MOI. VariablePrimal (), x) ≈ 0.5
6060 @test MOI. get (model, MOI. VariablePrimal (), y) ≈ 0.5
6161
@@ -101,6 +101,37 @@ c4: y >= 0.25
101101 @test MOI. get (model, Gurobi. MultiObjectiveValue (2 )) ≈ BFS[3 ]. f2
102102end
103103
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+
104135end
105136
106137TestMultiobjective. runtests ()
0 commit comments