# UNIT RESTRICTION MODEL # This problem finds a maximum profit harvest schedule that meets # adjacency constraints set A; /* stands */ set B {k in A}; #adjacency stands param m; /* number of periods */ param a{i in A}; /* area stands (ha) */ param npv{i in A, t in 1..m}; param v{i in A, t in 1..m}; /* yield observed from harvesting stand i in period t */ var x{i in A, t in 1..m} binary; /* whether (1) or not (0) stand i is harvested in period t */ var h{t in 1..m}; /* auxiliary to account for total volume harvested in period t */ maximize sandia: sum{i in A, t in 1..m} a[i]*x[i,t]*npv[i,t]; /* rent from harvesting stands */ s.t. area{i in A}: sum{t in 1..m} x[i,t] <= 1; /* observe area constraints */ s.t. adj{i in A, t in 1..m}: x[i,t] + sum{k in B[i]} x[k,t] <= 2; /* observe adjacency constraints */ s.t. harv{t in 1..m}: h[t] = sum{i in A} a[i]*x[i,t]*v[i,t]; /* calculate total harvest per period */ s.t. ndy{t in 1..m-1}: h[t+1]>=h[t]; /* non-declining yield constraints */ data; set A := 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81; set B[1] := 22 34 2 81; set B[3] := 4 2 ; set B[4] := 3 5 6 7 75 2 ; set B[5] := 4 75 ; set B[6] := 4 7 2 ; set B[7] := 4 6 2 ; set B[8] := 9 12 2 81 ; set B[9] := 8 12 ; set B[10] := 12 13 76 ; set B[11] := 12 76 77 81 ; set B[12] := 8 9 10 11 13 76 2 81; set B[13] := 10 12 14 15 17 76 ; set B[14] := 13 17 36 39 40 47 ; set B[15] := 13 16 17 18 19 48 68 76 ; set B[16] := 15 17 44 48 ; set B[17] := 13 14 15 16 44 47 ; set B[18] := 15 68 78 79 ; set B[19] := 15 48 68 ; set B[20] := 21 34 78 81 ; set B[21] := 20 35 78 ; set B[22] := 1 34 81 ; set B[23] := 33 34 ; set B[24] := 27 34 35 64 66 70 ; set B[25] := 64 65 66 67 ; set B[26] := 63 64 ; set B[27] := 24 28 33 34 70 71 ; set B[28] := 27 33 71 73 ; set B[29] := 31 32 ; set B[30] := 32 33 74 80 ; set B[31] := 29 32 ; set B[32] := 29 30 31 ; set B[33] := 23 27 28 30 34 73 74 ; set B[34] := 1 20 22 23 24 27 33 35 81; set B[35] := 21 24 34 66 78 ; set B[36] := 14 37 39 40 41 42 43 ; set B[37] := 36 38 39 43 46 ; set B[38] := 37 43 46 ; set B[39] := 14 36 37 46 47 ; set B[40] := 14 36 41 ; set B[41] := 36 40 42 ; set B[42] := 36 41 43 46 ; set B[43] := 36 37 38 42 46 ; set B[44] := 16 17 45 46 47 ; set B[45] := 44 46 ; set B[46] := 37 38 39 42 43 44 45 47; set B[47] := 14 17 39 44 46 ; set B[48] := 15 16 19 52 67 68 ; set B[49] := 50 52 56 57 59 67 ; set B[50] := 49 51 52 59 ; set B[51] := 50 52 59 ; set B[52] := 48 49 50 51 67 ; set B[53] := 61 62 63 ; set B[54] := 61 ; set B[55] := 58 60 61 62 ; set B[56] := 49 57 65 67 ; set B[57] := 49 56 58 59 65 ; set B[58] := 55 57 60 62 63 65 ; set B[59] := 49 50 51 57 60 ; set B[60] := 55 58 59 61 ; set B[61] := 53 54 55 60 62 ; set B[62] := 53 55 58 61 63 ; set B[63] := 26 53 58 62 64 65 69 70; set B[64] := 24 25 26 63 65 66 70 ; set B[65] := 25 56 57 58 63 64 67 ; set B[66] := 24 25 35 64 68 78 ; set B[67] := 25 48 49 52 56 65 68 ; set B[68] := 15 18 19 48 66 67 78 ; set B[69] := 63 70 ; set B[70] := 24 27 63 64 69 71 72 ; set B[71] := 27 28 70 72 73 ; set B[72] := 70 71 73 ; set B[73] := 28 33 71 72 74 ; set B[74] := 30 33 73 80 ; set B[75] := 4 5 ; set B[76] := 10 11 12 13 15 77 79 ; set B[77] := 11 76 78 79 81 ; set B[78] := 18 20 21 35 66 68 77 79 81 ; set B[79] := 18 76 77 78 ; set B[80] := 30 74 ; set B[2] := 1 3 4 6 7 8 12 81 ; set B[81] := 1 8 11 12 20 22 34 77 78 2 ; param m := 3; param a := 1 29.9 2 34.2 3 4.8 4 12.8 5 0.5 6 2.7 7 9.4 8 12.6 9 5.1 10 19.8 11 3.7 12 25.2 13 23.3 14 22.8 15 38.9 16 29.4 17 34.6 18 14.4 19 2.9 20 11.8 21 11.8 22 4.2 23 16.4 24 23.0 25 10.7 26 1.7 27 16.9 28 6.9 29 8.1 30 44.5 31 32.9 32 14.0 33 34.4 34 25.8 35 11.5 36 21.2 37 6.5 38 0.9 39 2.6 40 4.4 41 13.1 42 2.9 43 3.8 44 4.6 45 8.6 46 15.1 47 4.4 48 7.7 49 10.6 50 9.6 51 10.3 52 9.7 53 4.2 54 3.7 55 4.3 56 2.0 57 8.2 58 11.8 59 12.2 60 7.3 61 13.9 62 7.0 63 21.0 64 7.7 65 14.7 66 4.3 67 9.7 68 9.3 69 2.2 70 25.8 71 10.4 72 5.5 73 9.7 74 24.0 75 0.4 76 17.3 77 18.7 78 11.0 79 14.2 80 0.4 81 34.6; param v : 1 2 3 := 1 83.0 121.0 149.0 2 293.0 324.0 358.0 3 0.0 20.0 60.0 4 139.0 181.0 231.0 5 208.0 236.0 263.0 6 163.0 203.0 241.0 7 291.0 330.0 362.0 8 83.0 135.0 178.0 9 82.0 132.0 174.0 10 121.0 164.0 215.0 11 71.0 122.0 163.0 12 313.0 341.0 375.0 13 54.0 103.0 151.0 14 42.0 91.0 145.0 15 28.0 84.0 132.0 16 24.0 82.0 129.0 17 29.0 86.0 134.0 18 62.0 112.0 160.0 19 201.0 249.0 281.0 20 142.0 184.0 235.0 21 190.0 232.0 261.0 22 130.0 174.0 224.0 23 137.0 180.0 229.0 24 176.0 222.0 264.0 25 284.0 312.0 346.0 26 268.0 307.0 339.0 27 183.0 232.0 262.0 28 187.0 234.0 263.0 29 194.0 240.0 267.0 30 205.0 251.0 280.0 31 260.0 292.0 324.0 32 271.0 298.0 324.0 33 246.0 273.0 299.0 34 261.0 287.0 310.0 35 234.0 272.0 301.0 36 132.0 175.0 202.0 37 218.0 253.0 285.0 38 195.0 223.0 251.0 39 28.0 84.0 131.0 40 132.0 175.0 226.0 41 105.0 148.0 182.0 42 174.0 203.0 232.0 43 128.0 172.0 210.0 44 208.0 249.0 285.0 45 26.0 81.0 130.0 46 32.0 88.0 136.0 47 127.0 172.0 199.0 48 156.0 184.0 211.0 49 143.0 183.0 231.0 50 141.0 181.0 230.0 51 172.0 202.0 229.0 52 308.0 335.0 352.0 53 72.0 123.0 165.0 54 135.0 176.0 226.0 55 80.0 130.0 171.0 56 229.0 268.0 301.0 57 173.0 203.0 234.0 58 182.0 215.0 246.0 59 167.0 196.0 229.0 60 164.0 195.0 227.0 61 159.0 189.0 223.0 62 248.0 283.0 312.0 63 314.0 342.0 363.0 64 294.0 321.0 344.0 65 264.0 290.0 312.0 66 308.0 335.0 351.0 67 328.0 356.0 380.0 68 304.0 331.0 350.0 69 289.0 324.0 351.0 70 190.0 239.0 266.0 71 184.0 233.0 263.0 72 178.0 217.0 254.0 73 256.0 284.0 311.0 74 223.0 273.0 303.0 75 0.0 15.0 71.0 76 278.0 318.0 352.0 77 104.0 151.0 193.0 78 274.0 311.0 338.0 79 275.0 316.0 350.0 80 205.0 231.0 256.0 81 292.0 321.0 354.0; param npv : 1 2 3 := 1 3.86 4.01 3.52 2 13.61 10.73 8.45 3 0.00 0.66 1.42 4 6.46 5.99 5.45 5 9.66 7.81 6.21 6 7.57 6.72 5.69 7 13.51 10.93 8.55 8 3.86 4.47 4.20 9 3.81 4.37 4.11 10 5.62 5.43 5.08 11 3.30 4.04 3.85 12 14.54 11.29 8.85 13 2.51 3.41 3.57 14 1.95 3.01 3.42 15 1.30 2.78 3.12 16 1.12 2.72 3.05 17 1.35 2.85 3.16 18 2.88 3.71 3.78 19 9.34 8.25 6.63 20 6.60 6.09 5.55 21 8.82 7.68 6.16 22 6.04 5.76 5.29 23 6.36 5.96 5.41 24 8.17 7.35 6.23 25 13.19 10.33 8.17 26 12.45 10.17 8.00 27 8.50 7.68 6.19 28 8.69 7.75 6.21 29 9.01 7.95 6.30 30 9.52 8.31 6.61 31 12.08 9.67 7.65 32 12.59 9.87 7.65 33 11.43 9.04 7.06 34 12.12 9.50 7.32 35 10.87 9.01 7.11 36 6.13 5.80 4.77 37 10.12 8.38 6.73 38 9.06 7.38 5.93 39 1.30 2.78 3.09 40 6.13 5.80 5.34 41 4.88 4.90 4.30 42 8.08 6.72 5.48 43 5.94 5.70 4.96 44 9.66 8.25 6.73 45 1.21 2.68 3.07 46 1.49 2.91 3.21 47 5.90 5.70 4.70 48 7.25 6.09 4.98 49 6.64 6.06 5.45 50 6.55 5.99 5.43 51 7.99 6.69 5.41 52 14.30 11.09 8.31 53 3.34 4.07 3.90 54 6.27 5.83 5.34 55 3.72 4.31 4.04 56 10.64 8.87 7.11 57 8.03 6.72 5.52 58 8.45 7.12 5.81 59 7.76 6.49 5.41 60 7.62 6.46 5.36 61 7.38 6.26 5.27 62 11.52 9.37 7.37 63 14.58 11.32 8.57 64 13.65 10.63 8.12 65 12.26 9.60 7.37 66 14.30 11.09 8.29 67 15.23 11.79 8.97 68 14.12 10.96 8.26 69 13.42 10.73 8.29 70 8.82 7.91 6.28 71 8.55 7.72 6.21 72 8.27 7.19 6.00 73 11.89 9.40 7.34 74 10.36 9.04 7.15 75 0.00 0.50 1.68 76 12.91 10.53 8.31 77 4.83 5.00 4.56 78 12.73 10.30 7.98 79 12.77 10.46 8.26 80 9.52 7.65 6.04 81 13.56 10.63 8.36; end;