Main Page   Class Hierarchy   Compound List   File List   Contact   Download   Symbolic Constraints   Examples  

GenQF.cc

00001 
00002 #include <iostream>
00003 #include <stdlib.h>
00004 
00005 #define QDIST(XA,YA,XB,YB) ((XB-XA)*(XB-XA)+(YB-YA)*(YB-YA))
00006 
00007 using namespace std;
00008 
00009 int main(int argc, char **argv) {
00010 
00011   if(argc < 4 || argc > 5) {
00012     cout<<"Syntax: GenQF #variables #scenarios density [seed]"<<endl;
00013     return 1;
00014   }
00015 
00016   int n = atoi(argv[1]);
00017   int s = atoi(argv[2]);
00018   double d = atof(argv[3]);
00019   if(argc > 4) srandom(atoi(argv[4]));
00020   else srandom(0);
00021 
00022   double *posx = new double[s*n];
00023   double *posy = new double[s*n];
00024 
00025   for(int i = 0; i < s*n; i++) {
00026     posx[i] = (double)random()/RAND_MAX;
00027     posy[i] = (double)random()/RAND_MAX;
00028   }
00029 
00030   double *m = new double[s];
00031 
00032   for(int j = 0; j < s; j++) m[j] = 0;
00033   cout<<n<<" "<<(n*(n-1))/2<<" "<<s<<endl;
00034   for(int i1 = 0; i1 < n-1; i1++) {
00035     for(int i2 = i1+1; i2 < n; i2++) {
00036       cout<<i1+1<<" "<<i2+1<<" ";
00037       for(int j = 0; j < s; j++) {
00038         double qd = QDIST(posx[j*n+i1],posy[j*n+i1],posx[j*n+i2],posy[j*n+i2]);
00039         cout<<" "<<qd;
00040         if((double)random()/RAND_MAX < d && (double)random()/RAND_MAX < d) {
00041           m[j] += qd;
00042         }
00043      }
00044       cout<<endl;
00045     }
00046   }
00047 
00048   delete[] posx;
00049   delete[] posy;
00050 
00051 
00052   for(int j = 0; j < s; j++) {
00053     cout<<" "<<m[j];
00054   }
00055   cout<<endl;
00056 
00057   delete[] m;
00058 
00059   return 0;
00060 
00061 }
Generated on Mon Mar 28 22:03:48 2011 for SCIL by  doxygen 1.6.3