main.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "search.h"
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <ctime> // time
  5. #include <cassert>
  6. #include <unistd.h> // getpid
  7. void usage() {
  8. fprintf(stderr, "Usage : ./main type npoints dim iterations [param1 [param2 [param3]]]\n\
  9. type : 1 random search\n\
  10. 2 simulated annealing (param1=lambda, param2=initial temperature)\n\
  11. 3 genetic search (param1=mu, param2=lambda, param2=c)\n");
  12. }
  13. int main(int argc, char **argv) {
  14. int seed = time(NULL)+getpid();
  15. //fprintf(stderr, "seed: %d\n", seed);
  16. srand(seed);
  17. if(argc < 5) {
  18. usage();
  19. return EXIT_FAILURE;
  20. }
  21. int npoints = atoi(argv[2]), dim = atoi(argv[3]), iterations = atoi(argv[4]);
  22. int p[] = {7,13, 29,3, 19};
  23. assert(sizeof(p)/sizeof(int) >= (unsigned int)dim);
  24. // fprintf(stderr, "npoints = %d\ndim = %d\np = ", npoints, dim);
  25. // for(int i = 0; i < dim; i++)
  26. // fprintf(stderr, "%d%s", p[i], (i==dim-1) ? "\n" : ", ");
  27. // fprintf(stderr, "iterations = %d\n\n", iterations);
  28. switch (atoi(argv[1])){
  29. case 1:
  30. {
  31. random_search rs(dim, npoints, p);
  32. rs.run(iterations); break;
  33. }
  34. case 2:
  35. {
  36. if(argc<7) {
  37. usage();
  38. return EXIT_FAILURE;
  39. }
  40. sa_local_search ls(dim, npoints, p, atof(argv[5]), atof(argv[6]));
  41. ls.run(iterations); break;
  42. }
  43. case 3:
  44. {
  45. if(argc<8) {
  46. usage();
  47. return EXIT_FAILURE;
  48. }
  49. genetic_search gs(dim, npoints, p, atoi(argv[5]), atoi(argv[6]), atof(argv[7]));
  50. gs.run(iterations); break;
  51. }
  52. default:
  53. usage();
  54. return EXIT_FAILURE;
  55. }
  56. return EXIT_SUCCESS;
  57. }