#include void generateAllPairingsConstraint2(int* array); // used to generate constraint 67: (to know the basic variables for the given nodes) int nodes[] = {10,21,25,26,27,28,-1}; int* arrays[6]; int node10[] = {9,11,12,25,-1}; int node21[] = {20,22,28,-1}; int node25[] = {10,24,26,-1}; int node26[] = {25,27,28,-1}; int node27[] = {22,24,26,28,-1}; int node28[] = {21,22,26,27,29,-1}; int s1[] = {1,2,41,42,-1}; int s2[] = {3,4,5,6,7,8,9,-1}; int s3[] = {1,2,3,4,5,6,7,8,9,29,30,31,32,33,34,35,36,37,38,39,40,41,42,-1}; int s4[] = {11,12,13,14,15,16,17,18,19,20,21,22,23,-1}; int s5[] = {13,14,15,16,17,18,19,20,21,22,23,-1}; int s6[] = {13,14,15,16,17,-1}; int s7[] = {24,25,26,27,-1}; int contains(int value, int* array) { int i =0; int res = 0; while(array[i] != -1) { if(array[i++] == value) { res = 1; break; } } return res; } void generateLoopConstraint2(int* array) { int i = 0; int k; int currentIndex; int firstItem = 1; while(array[i] != -1) { currentIndex = array[i]; for(k=1; k<=42; k++) { if(k != currentIndex) { if(!contains(k,array)) { if(k>currentIndex) fprintf(stdout, "- x_%d_%d", k, currentIndex); else fprintf(stdout, "- x_%d_%d", currentIndex, k); } } } i++; } } void generateLoopConstraint(int* array) { int i = 0; int k; int currentIndex; int firstItem = 1; fprintf(stdout, "\n\n"); while(array[i] != -1) { currentIndex = array[i]; for(k=1; k<=42; k++) { if(k != currentIndex) { if(!contains(k,array)) { if(firstItem) firstItem = 0; else fprintf(stdout, " + "); if(k>currentIndex) fprintf(stdout, "x_%d_%d", k, currentIndex); else fprintf(stdout, "x_%d_%d", currentIndex, k); } } } i++; } fprintf(stdout, " >= 2\n"); } void generateConstraint66() { int i; int a=15,b=16,c=19; fprintf(stdout, "c66: x_15_14 "); for(i =1; i <=42; i++) { if(i!=a && i != b && i !=c ) { fprintf(stdout,"- x_%d_%d", (a>i)?a:i, (ai)?b:i, (bi)?c:i, (cindex?i:index), (i>index?index:i)); } } nodeIndex++; } generateAllPairingsConstraint2(nodes); // add basic vars fprintf(stdout, "+x_28_27 + x_28_26 + x_28_21 + x_26_25+ x_27_26 + x_25_10"); } //finally fprintf(stdout, " <= 42\n\n"); } void generateAllPairingsConstraint(int* array) { int i = 0; int j,k; int firstItem = 1; while(array[i] != -1)i++; for(j = i-1; j >=1; j--) { for(k = j-1; k>=0; k--) { if(firstItem) firstItem = 0; else fprintf(stdout, " + "); fprintf(stdout, "x_%d_%d", array[j], array[k]); } } } void generateAllPairingsConstraint2(int* array) { int i = 0; int j,k; int firstItem = 1; while(array[i] != -1)i++; for(j = i-1; j >=1; j--) { for(k = j-1; k>=0; k--) { fprintf(stdout, " - x_%d_%d", array[j], array[k]); } } } int main(int argc, char** argv) { int i,j,k; int count = 0; char* arg; int argIndex = 1; int generateILP = 0; while(argIndex < argc) { arg = argv[argIndex++]; if(strcmp(arg, "-i") == 0) generateILP = 1; else fprintf(stderr, "Invalid arg:%s\n", arg); } fprintf(stdout, "#include \"distances.h\"\n"); fprintf(stdout, "Minimize\nobj:\n"); for(j=1;j< 42;j++) for(i=j+1; i <=42; i++, count++) { if(!(j==1 && i==2)) fprintf(stdout, " + "); fprintf(stdout, "c_%d_%d x_%d_%d", i, j, i, j); if(count%5 == 0) printf("\n"); } fprintf(stdout, "\n\nSubject To\n"); for(i=1; i<=42; i++) { for(j=1; j= 0\n", i, j); } } fprintf(stdout, "\nEnd\n"); }