fork download
  1.  
  2. #include <iostream>
  3. #include<math.h>
  4. #include <stdlib.h>     /* srand, rand */
  5. #include <time.h>
  6. #define max 20 //maximum nodes=20
  7. using namespace std;
  8.  
  9. int a[max+1][max+1]; //global array ,distance matrix array
  10.  
  11. void insert(int *arr,int a,int b)
  12. {   int x;
  13. int temp = arr[a];   //1,2,3,4,5;   a=2,b=4; 1 3 4 2 5
  14. if(a>b){
  15. x=a-1;
  16. while(x>=b)
  17. {arr[x+1]=arr[x];x--;}
  18. arr[b]=temp;
  19. }
  20. else {
  21. x=a+1;
  22. while(x<=b)
  23.  
  24.         {arr[x-1]=arr[x];x++;}
  25.  
  26. arr[b]=temp;
  27.     }
  28. }
  29. void prev(int *arr,int a,int b) { // 1,2,3,4,5 to 1 4 3 2 5
  30.  
  31. int i;
  32.  
  33. if(a>b){
  34. for(i=0;i<=(a-b)/2;i++)
  35. swap(arr[b+i],arr[a-i]);
  36. }
  37.  
  38. else{
  39. for(i=0;i<=(b-a)/2;i++)
  40.     swap(arr[a+i],arr[b-i]);
  41. }
  42. }
  43.  
  44.  
  45.  
  46. void swap(int *array,int r1,int r2)
  47. { int tempo;
  48.  
  49.   tempo=*(array+r1);
  50.   *(array+r1)=*(array+r2);
  51.   *(array+r2)=tempo;
  52.  
  53. }
  54.  
  55. int calvalue(int *array,int len)//perfect //returns the distance of current array,len=no of nodes
  56. {
  57.  int distance=0,i;
  58. //distance=a[*(array+len)][*(array+1)];//how to use a[][]//1change
  59. for(i=0;i<len;i++)
  60. distance=distance+ a[*(array+i)][*(array+i+1)];
  61. return distance;
  62. }
  63.  
  64.  
  65. int main(void) { // n= nodes no
  66.  
  67.  
  68. int n,i,j,r1,r2,r3,p,q,c;
  69. int array[max+6];
  70. double delta,proba;
  71. double alpha =0.999;
  72.     double temp= 400.0;
  73.     double epsilon = 0.001;
  74.  
  75. cin>>n; //n=no of nodes
  76.  
  77. for(i=1;i<=n;i++)
  78. for(j=1;j<=n;j++)
  79. cin>>a[i][j];
  80.  
  81. //intialise //initial solution
  82. for(i=0;i<n;i++) //a
  83.  array[i]=i+1; //taking consecutive
  84.  array[n]=1; //2nd change
  85.  temp=500; //temp=temperature
  86. while(temp>epsilon) // change 1.2 :termination criteria
  87.  
  88. {
  89. for(i=10;i>0;i--) //10 iterations at every temperature
  90.  
  91. {
  92. p=calvalue(array,n); //initial value of distance
  93.  
  94. //srand(time(0));
  95. r1=rand()%(n-1)+1; //generating a random no between 1 to n-1 as 0 n nth nodes are set to be depot or 1
  96. //srand(time(0));
  97. r2=rand()%(n-1)+1;
  98. while(r1==r2)
  99. r2=rand()%(n-1)+1;
  100.  
  101. //srand(time(0));
  102. r3=rand()%(3)+1;
  103. //r3 decides method for neighbour generation
  104.  
  105. switch(r3){
  106.  
  107.          case 1:
  108.  prev(array,r1,r2);break;
  109.  case 2:
  110.  insert(array,r1,r2); break;
  111.  case 3:
  112. swap(array,r1,r2); break; }
  113.  
  114. q=calvalue(array,n);
  115.  
  116. delta=q-p;
  117.  
  118. proba=1/(1+pow(2.71828,(delta/temp)))*1000;
  119.  
  120.                          //srand(time(0));
  121. c=rand()%1000+1;
  122.  
  123. if(delta<0)  //change 1.1
  124. continue;
  125. else if(proba<c){ //to come back to original value
  126.     switch(r3){
  127.  case 1:
  128.  prev(array,r1,r2);break;
  129.  case 2:
  130.  insert(array,r2,r1); break;  //r2,r1 v important
  131.  case 3:
  132.  swap(array,r1,r2); break;}
  133.  
  134. }}
  135.  
  136. temp=temp*alpha; //change 1.3
  137.  
  138. }
  139.  
  140. cout<<"optimised value ="<<calvalue(array,n)<<endl;
  141.     //cout<<calvalue(array,n)<<endl;
  142. cout<<"actual path==  ";
  143. for(i=0;i<=n;i++)
  144. cout<<array[i]<<" ";
  145.  
  146. return 0;
  147. }
  148.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
5
1	2	3	4	5
2	10	34	50	78
3	34	11	21	7
4	50	21	12	6
5	78	7	6	13
compilation info
prog.cpp:4:21: warning: extra tokens at end of #include directive [enabled by default]
 #include <stdlib.h>     /* srand, rand */
                     ^
prog.cpp:12:1: error: stray ‘\302’ in program
 {   int x;
 ^
prog.cpp:12:1: error: stray ‘\240’ in program
prog.cpp:13:1: error: stray ‘\302’ in program
 int temp = arr[a];   //1,2,3,4,5;   a=2,b=4; 1 3 4 2 5
 ^
prog.cpp:13:1: error: stray ‘\240’ in program
prog.cpp:24:1: error: stray ‘\302’ in program
         {arr[x-1]=arr[x];x++;}
 ^
prog.cpp:24:1: error: stray ‘\240’ in program
prog.cpp:24:1: error: stray ‘\302’ in program
prog.cpp:24:1: error: stray ‘\240’ in program
prog.cpp:24:1: error: stray ‘\302’ in program
prog.cpp:24:1: error: stray ‘\240’ in program
prog.cpp:24:1: error: stray ‘\302’ in program
prog.cpp:24:1: error: stray ‘\240’ in program
prog.cpp:27:1: error: stray ‘\302’ in program
     }
 ^
prog.cpp:27:1: error: stray ‘\240’ in program
prog.cpp:27:1: error: stray ‘\302’ in program
prog.cpp:27:1: error: stray ‘\240’ in program
prog.cpp:40:1: error: stray ‘\302’ in program
     swap(arr[a+i],arr[b-i]);
 ^
prog.cpp:40:1: error: stray ‘\240’ in program
prog.cpp:40:1: error: stray ‘\302’ in program
prog.cpp:40:1: error: stray ‘\240’ in program
prog.cpp:49:1: error: stray ‘\302’ in program
   tempo=*(array+r1);
 ^
prog.cpp:49:1: error: stray ‘\240’ in program
prog.cpp:50:1: error: stray ‘\302’ in program
   *(array+r1)=*(array+r2);
 ^
prog.cpp:50:1: error: stray ‘\240’ in program
prog.cpp:51:1: error: stray ‘\302’ in program
   *(array+r2)=tempo;
 ^
prog.cpp:51:1: error: stray ‘\240’ in program
prog.cpp:57:1: error: stray ‘\302’ in program
  int distance=0,i;
 ^
prog.cpp:57:1: error: stray ‘\240’ in program
prog.cpp:72:1: error: stray ‘\302’ in program
     double temp= 400.0;
 ^
prog.cpp:72:1: error: stray ‘\240’ in program
prog.cpp:72:1: error: stray ‘\302’ in program
prog.cpp:72:1: error: stray ‘\240’ in program
prog.cpp:73:1: error: stray ‘\302’ in program
     double epsilon = 0.001;
 ^
prog.cpp:73:1: error: stray ‘\240’ in program
prog.cpp:73:1: error: stray ‘\302’ in program
prog.cpp:73:1: error: stray ‘\240’ in program
prog.cpp:83:1: error: stray ‘\302’ in program
  array[i]=i+1; //taking consecutive
 ^
prog.cpp:83:1: error: stray ‘\240’ in program
prog.cpp:84:1: error: stray ‘\302’ in program
  array[n]=1; //2nd change
 ^
prog.cpp:84:1: error: stray ‘\240’ in program
prog.cpp:85:1: error: stray ‘\302’ in program
  temp=500; //temp=temperature
 ^
prog.cpp:85:1: error: stray ‘\240’ in program
prog.cpp:107:1: error: stray ‘\302’ in program
          case 1:
 ^
prog.cpp:107:1: error: stray ‘\240’ in program
prog.cpp:107:1: error: stray ‘\302’ in program
prog.cpp:107:1: error: stray ‘\240’ in program
prog.cpp:107:1: error: stray ‘\302’ in program
prog.cpp:107:1: error: stray ‘\240’ in program
prog.cpp:107:1: error: stray ‘\302’ in program
prog.cpp:107:1: error: stray ‘\240’ in program
prog.cpp:107:1: error: stray ‘\302’ in program
prog.cpp:107:1: error: stray ‘\240’ in program
prog.cpp:108:1: error: stray ‘\302’ in program
  prev(array,r1,r2);break;
 ^
prog.cpp:108:1: error: stray ‘\240’ in program
prog.cpp:109:1: error: stray ‘\302’ in program
  case 2:
 ^
prog.cpp:109:1: error: stray ‘\240’ in program
prog.cpp:110:1: error: stray ‘\302’ in program
  insert(array,r1,r2); break;
 ^
prog.cpp:110:1: error: stray ‘\240’ in program
prog.cpp:111:1: error: stray ‘\302’ in program
  case 3:
 ^
prog.cpp:111:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
                          //srand(time(0));
 ^
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:120:1: error: stray ‘\302’ in program
prog.cpp:120:1: error: stray ‘\240’ in program
prog.cpp:123:1: error: stray ‘\302’ in program
 if(delta<0)  //change 1.1
 ^
prog.cpp:123:1: error: stray ‘\240’ in program
prog.cpp:126:1: error: stray ‘\302’ in program
     switch(r3){
 ^
prog.cpp:126:1: error: stray ‘\240’ in program
prog.cpp:126:1: error: stray ‘\302’ in program
prog.cpp:126:1: error: stray ‘\240’ in program
prog.cpp:126:1: error: stray ‘\302’ in program
prog.cpp:126:1: error: stray ‘\240’ in program
prog.cpp:127:1: error: stray ‘\302’ in program
  case 1:
 ^
prog.cpp:127:1: error: stray ‘\240’ in program
prog.cpp:128:1: error: stray ‘\302’ in program
  prev(array,r1,r2);break;
 ^
prog.cpp:128:1: error: stray ‘\240’ in program
prog.cpp:129:1: error: stray ‘\302’ in program
  case 2:
 ^
prog.cpp:129:1: error: stray ‘\240’ in program
prog.cpp:130:1: error: stray ‘\302’ in program
  insert(array,r2,r1); break;  //r2,r1 v important
 ^
prog.cpp:130:1: error: stray ‘\240’ in program
prog.cpp:130:1: error: stray ‘\302’ in program
prog.cpp:130:1: error: stray ‘\240’ in program
prog.cpp:131:1: error: stray ‘\302’ in program
  case 3:
 ^
prog.cpp:131:1: error: stray ‘\240’ in program
prog.cpp:132:1: error: stray ‘\302’ in program
  swap(array,r1,r2); break;}
 ^
prog.cpp:132:1: error: stray ‘\240’ in program
prog.cpp:141:1: error: stray ‘\302’ in program
     //cout<<calvalue(array,n)<<endl;
 ^
prog.cpp:141:1: error: stray ‘\240’ in program
prog.cpp:141:1: error: stray ‘\302’ in program
prog.cpp:141:1: error: stray ‘\240’ in program
stdout
Standard output is empty