MultiJuMP.jl icon indicating copy to clipboard operation
MultiJuMP.jl copied to clipboard

generation of dominated solutions with WeightedSum Method

Open Rym28 opened this issue 6 years ago • 3 comments

I'm using the Weighted Sum method of the the package MultiJuMP.

Normally I generate a set on non-dominated solutions. However, in running the my ILP model with the weighted sum method, I got solutions which are dominated by ither solutions.

I can't understand this issue

Example I obtain for ILP model with 3 bjectives these trade-offs [0.683333, 0.0178571, 0.428571];[0.683333, 0.0535714, 0.285714] [0.683333, 0.0580357, 0.285714];

So, the second tradeoff dominates the third trade-off. So, i don't kniw if it's is an issue or what ?

thanks

Rym28 avatar Feb 10 '19 18:02 Rym28

If your underlying solver that minimises the weighted sum only finds local solutions then you may end up in such situations.

It could also be an issue related to how the tolerances are set for the underlying solver.

anriseth avatar Feb 10 '19 18:02 anriseth

In my case, the first objective it should be maximized and the second and the third should be minimized. Otherwise, i don(t have au think related to the tolerance.

My mode:

mmodel = MultiModel(solver = CplexSolver(), linear = true)

@variable(mmodel, lbd[1:n,1:M], Bin) @variable(mmodel, phi[1:M], Bin) @constraint(mmodel, [i = 1:n], (sum(lbd[i,j] for j=1:M) <= 1)) @constraint(mmodel, [j = 1:M], (sum(lbd[i,j]*cpu[i] for i=1:n) <= CPU[j])) @constraint(mmodel, [j = 1:M], (sum(lbd[i,j]*ram[i] for i=1:n) <= RAM[j])) @constraint(mmodel, [j = 1:M], (sum(lbd[i,j]*disk[i] for i=1:n) <=DISK[j])) @constraint(mmodel, [i = 1:n,j=1:M], (lbd[i,j] <= phi[j])) @constraint(mmodel, [j = 1:M], (phi[j]<=sum(lbd[i,j] for i=1:n)))

obj111 = @expression(mmodel, (sum(lbd[i,j] for i in 1:n, j in 1:M)/n)) obj222 = @expression(mmodel,(((sum(3-(sum(((cpu[i]*lbd[i,j])/Cmax[j])+((ram[i]*lbd[i,j])/Rmax[j])+((disk[i]lbd[i,j])/Dmax[j]) for i=1:n)) for j=1:M)-(3(M- sum(phi[j] for j=1:M)))))/((3)*M))) obj333 = @expression(mmodel, (sum(phi[j] for j=1:M)/M))

obj11111 = SingleObjective(obj111,sense = :Max) obj22222 = SingleObjective(obj222,sense = :Min) obj33333 = SingleObjective(obj333,sense = :Min)

multim = getMultiData(mmodel) multim.objectives = [obj11111,obj22222,obj33333]

solve(mmodel, method = :WS)

Thanks

Rym28 avatar Feb 10 '19 19:02 Rym28

How are you extracting the objective values from your first post?

anriseth avatar Feb 13 '19 12:02 anriseth