| 67 | ///////////////////////////////////////////////////////////////////////////////////////// |
| 68 | |
| 69 | int main() { |
| 70 | int NCustomer = 9; |
| 71 | int NArc = 5; |
| 72 | int*c = new int[NCustomer*NArc]; // [NArc*i+j] : Initial cost for client i to reach way j |
| 73 | int* d = new int[NCustomer]; // d[i] : amount of data client i wants to transmit |
| 74 | int* u = new int[NCustomer]; // u[i] : maximum cost client i will accept |
| 75 | int max = 19; |
| 76 | |
| 77 | c[0*NArc+0]=5; c[0*NArc+1]=1; c[0*NArc+2]=8; c[0*NArc+3]=6; c[0*NArc+4]=6; |
| 78 | c[1*NArc+0]=2; c[1*NArc+1]=8; c[1*NArc+2]=6; c[1*NArc+3]=3; c[1*NArc+4]=1; |
| 79 | c[2*NArc+0]=0; c[2*NArc+1]=8; c[2*NArc+2]=0; c[2*NArc+3]=8; c[2*NArc+4]=6; |
| 80 | c[3*NArc+0]=2; c[3*NArc+1]=4; c[3*NArc+2]=7; c[3*NArc+3]=5; c[3*NArc+4]=8; |
| 81 | c[4*NArc+0]=8; c[4*NArc+1]=2; c[4*NArc+2]=4; c[4*NArc+3]=3; c[4*NArc+4]=4; |
| 82 | c[5*NArc+0]=5; c[5*NArc+1]=4; c[5*NArc+2]=6; c[5*NArc+3]=4; c[5*NArc+4]=1; |
| 83 | c[6*NArc+0]=5; c[6*NArc+1]=6; c[6*NArc+2]=7; c[6*NArc+3]=4; c[6*NArc+4]=8; |
| 84 | c[7*NArc+0]=5; c[7*NArc+1]=8; c[7*NArc+2]=1; c[7*NArc+3]=3; c[7*NArc+4]=6; |
| 85 | c[8*NArc+0]=7; c[8*NArc+1]=8; c[8*NArc+2]=8; c[8*NArc+3]=3; c[8*NArc+4]=5; |
| 86 | |
| 87 | d[0]=7; d[1]=16; d[2]=16; d[3]=19; d[4]=18; d[5]=13; d[6]=8; d[7]=11; d[8]=18; |
| 88 | u[0]=122; u[1]=190; u[2]=113; u[3]=285; u[4]=247; u[5]=255; u[6]=143; u[7]=121; u[8]=139; |
| 89 | IntArgs carg(NCustomer*NArc,c); // Copy c in an IntArgs for further constraint posting |
| 90 | IntArgs darg(NCustomer,d); // Copy d in an IntArgs for further constraint posting |
| 91 | IntArgs uarg(NCustomer,u); // Copy u in an IntArgs for further constraint posting |
| 92 | |
| 93 | bool q[] = {false,true,false}; |
| 94 | int* nv = new int[3]; |
| 95 | nv[0]=NArc; |
| 96 | nv[1]=1; |
| 97 | nv[2]=9; |
| 98 | |
| 99 | Qcop problem(3,q,nv); |
| 100 | int postarfs[] = {3,7,11,15,19}; |
| 101 | IntSet thePossibleTariffs(postarfs,5); |
| 102 | for (int i=0;i<NArc;i++) |
| 103 | problem.QIntVar(i,thePossibleTariffs); // tariff for way i |
| 104 | IntVarArgs branch1(NArc); |
| 105 | for (int i=0;i<NArc;i++) |
| 106 | branch1[i] = problem.var(i); |
| 107 | branch(*(problem.space()),branch1,INT_VAR_SIZE_MIN(),INT_VAL_MIN()); |
| 108 | problem.nextScope(); |
| 109 | |
| 110 | problem.QIntVar(NArc,0,NCustomer-1); // k |
| 111 | IntVarArgs branch2(NArc+1); |
| 112 | for (int i=0;i<NArc+1;i++) |
| 113 | branch2[i] = problem.var(i); |
| 114 | branch(*(problem.space()),branch2,INT_VAR_SIZE_MIN(),INT_VAL_MIN()); |
| 115 | problem.nextScope(); |
| 116 | |
| 117 | problem.QIntVar(NArc+1,0,NArc-1); // a |
| 118 | problem.QIntVar(NArc+2,0,1000000); // cost |
| 119 | problem.QIntVar(NArc+3,0,1000000); // Income |
| 120 | IntVar a(problem.var(NArc+1)); |
| 121 | IntVar cost(problem.var(NArc+2)); |
| 122 | IntVar income(problem.var(NArc+3)); |
| 123 | problem.QIntVar(NArc+4,0,1000000); |
| 124 | problem.QIntVar(NArc+5,0,1000000); |
| 125 | problem.QIntVar(NArc+6,0,1000000); |
| 126 | problem.QIntVar(NArc+7,0,1000000); |
nothing calls this directly
no test coverage detected