Rev | Line | |
---|
[37] | 1 | function migp |
---|
| 2 | |
---|
| 3 | x = sdpvar(7,1); |
---|
| 4 | |
---|
| 5 | % Data |
---|
| 6 | a = ones(7,1); |
---|
| 7 | alpha = ones(7,1); |
---|
| 8 | beta = ones(7,1); |
---|
| 9 | gamma = ones(7,1); |
---|
| 10 | f = [1 0.8 1 0.7 0.7 0.5 0.5]'; |
---|
| 11 | e = [1 2 1 1.5 1.5 1 2]'; |
---|
| 12 | Cout6 = 10; |
---|
| 13 | Cout7 = 10; |
---|
| 14 | |
---|
| 15 | % Model |
---|
| 16 | C = alpha+beta.*x; |
---|
| 17 | A = sum(a.*x); |
---|
| 18 | P = sum(f.*e.*x); |
---|
| 19 | R = gamma./x; |
---|
| 20 | |
---|
| 21 | D1 = R(1)*(C(4)); |
---|
| 22 | D2 = R(2)*(C(4)+C(5)); |
---|
| 23 | D3 = R(3)*(C(5)+C(7)); |
---|
| 24 | D4 = R(4)*(C(6)+C(7)); |
---|
| 25 | D5 = R(5)*(C(7)); |
---|
| 26 | D6 = R(6)*Cout6; |
---|
| 27 | D7 = R(7)*Cout7; |
---|
| 28 | |
---|
| 29 | % Constraints |
---|
| 30 | F = set(x > 1) + set(P < 20) + set(A < 100); |
---|
| 31 | |
---|
| 32 | % Objective |
---|
| 33 | D = max([(D1+D4+D6),(D1+D4+D7),(D2+D4+D6),(D2+D4+D7),(D2+D5+D7),(D3+D5+D6),(D3+D7)]); |
---|
| 34 | |
---|
| 35 | % Solve integer problem |
---|
| 36 | ops = sdpsettings('solver','bnb','verbose',1); |
---|
| 37 | sol = solvesdp(F+set(integer(x)),D,ops); |
---|
| 38 | |
---|
| 39 | mbg_asserttolequal(sol.problem,0); |
---|
| 40 | mbg_asserttolequal(double(x),[ 2 3 3 3 2 3 3]', 1e-3); |
---|
| 41 | mbg_asserttolequal(double(D),8+1/3, 1e-3); |
---|
Note: See
TracBrowser
for help on using the repository browser.