Hi everyone,
I can run my model with different weight sets for 2 objectives as follows;
set u /1*11/;
loop(u,
w1=1-(ord(u)-1)*0.1;
w2=1-w1;
However, when it comes to 3 objective, I was stuck. Could you help me about this issue? (For intervals of 0.1 similarly above statement)
Weighted sum method with three objectives
Re: Weighted sum method with three objectives
Hi Kaidr
Why don't you use the random number generator and generate a set of random weights? Something like this:
Cheers
Renger
Why don't you use the random number generator and generate a set of random weights? Something like this:
Code: Select all
set u /1*11/;
Option Seed=12
parameter w1(u), w2(u), w3(u), delta(u);
w1(u) = uniformInt(0,10);
w2(u) = uniformInt(0,10);
w3(u) = uniformInt(0,10);
delta(u) = w1(u) + w2(u) + w3(u);
w1(u) = round(w1(u)/delta(u),1);
w2(u) = round(w2(u)/delta(u),1);
w3(u) = 1 - w1(u) - w2(u);
parameter check(u);
check(u) = w1(u) + w2(u) + w3(u);
display w1,w2, w3, check;
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Re: Weighted sum method with three objectives
Dear Renger,
Thank you for your answer. It absolutely works but, it may not generate all possible weight pairs, am I right? Or some weight pairs can repeat? This may cause missing some Pareto optimal solutions. Is there a way of producing all possible weights as increasing way such as:
w1 w2 w3
0.1 0 0.9
0.1 0.1 0.8
0.1 0.2 0.7
...
0.1 0.9 0
...
0.9 0.1 0.
Actually, such an approach will cause so many subproblems and will increase the solution effort and times. I think that I can use the epsilon constraint method but I am not sure how will I apply the epsilon constraint method to three objectives. Could you also help me with this issue?
Thank you for your answer. It absolutely works but, it may not generate all possible weight pairs, am I right? Or some weight pairs can repeat? This may cause missing some Pareto optimal solutions. Is there a way of producing all possible weights as increasing way such as:
w1 w2 w3
0.1 0 0.9
0.1 0.1 0.8
0.1 0.2 0.7
...
0.1 0.9 0
...
0.9 0.1 0.
Actually, such an approach will cause so many subproblems and will increase the solution effort and times. I think that I can use the epsilon constraint method but I am not sure how will I apply the epsilon constraint method to three objectives. Could you also help me with this issue?
Re: Weighted sum method with three objectives
Hi
According to me, you will have 55 combinations of weights. I used this code (there might be a more subtle way to do this):
Cheers
Renger
According to me, you will have 55 combinations of weights. I used this code (there might be a more subtle way to do this):
Code: Select all
set ln1 /1*10/;
set cnt /1*110/ Counter;
parameter w, w1, w2, w3, delta;
parameter counter;
* Set the first value (as not calculated in the loop)
w("1","1") = 1;
w("1","2") = 0;
w("1","3") = 0;
counter = 0;
loop(ln1,
w1 = 1 - (ord(ln1) -1)*0.1 + EPS;
delta = 1 - w1;
w2 = 0;
w3 = 0;
counter = counter + 1;
while(delta > 0.01,
counter = counter + 1;
w2 = w2 + 0.1;
w(cnt,"1")$(ord(cnt) = counter) = w1;
w(cnt,"2")$(ord(cnt) = counter) = w2;
w(cnt,"3")$(ord(cnt) = counter) = 1 - w1 - w2 + EPS;
delta = 1 - w1 - w2;
);
);
display w;
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Re: Weighted sum method with three objectives
Dear Renger,
Thank you very much. It is working perfectly.
Thank you very much. It is working perfectly.