MultiJuMP.jl
MultiJuMP.jl copied to clipboard
generation of dominated solutions with WeightedSum Method
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
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.
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
How are you extracting the objective values from your first post?