Advertisement
patryk

Untitled

Dec 25th, 2014
590
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <math.h>
  4. #include <fstream>
  5. #include <cstdlib>
  6. #include <time.h>
  7. #include <string.h>
  8. #include <iostream>
  9.  
  10. using namespace std;
  11.  
  12. //----------GENERATOR-LOSOWYCH-INSTANCJI------------
  13.  
  14. void prepareTasksList(int **taskList, int numberOfTasks) {
  15.     for(int i = 0; i < 2; i++) {
  16.         for(int j = 0; j < numberOfTasks; j++) {
  17.             taskList[i][j] = (int)(rand() % 50) + 1;
  18.         }
  19.     }
  20. }
  21.  
  22. int randTimeForOperation() {
  23.     return (int)(rand() % 50) + 1;
  24. }
  25.  
  26. int randWhichMachine() {
  27.     return (int)(rand() % 2) + 0;
  28. }
  29.  
  30. int randTimeForPause() {
  31.     int timeForPause = (int)(rand() % 20) + 1;
  32.     return timeForPause;
  33. }
  34.  
  35. int randWhenPauseStart(int sumOfTasksTime) {
  36.     return (int)(rand() % (int)(0.45 * sumOfTasksTime) ) + 0;
  37. }
  38.  
  39.  
  40. void randInstances(int numberOfFiles) {
  41.     fstream plik;
  42.     char fileName[15];
  43.     srand(time(NULL));
  44.  
  45.     for(int N = 1; N <= numberOfFiles; N++) {
  46.         int numberOfTasks = 100 * N;
  47.         int numberOfPauses = (int)(0.145 * numberOfTasks);
  48.         int sumOfTasksTime = 0;
  49.         int ** pauseList = new int * [2];
  50.  
  51.         int ** taskList = new int * [2];
  52.         taskList[0] = new int [numberOfTasks];
  53.         taskList[1] = new int [numberOfTasks];
  54.  
  55.         prepareTasksList(taskList, numberOfTasks);
  56.  
  57.         itoa(numberOfTasks, fileName, 10);
  58.         strncat(fileName, "RANDOM.txt", 10);
  59.         plik.open(fileName, ios::out);
  60.  
  61.         plik << numberOfTasks << "\n";
  62.  
  63.         for(int i = 0 ; i < numberOfTasks; i++) {
  64.             plik << taskList[0][i] << ";" << taskList[1][i] << "\n";
  65.             sumOfTasksTime += taskList[0][i] + taskList[1][i];
  66.         }
  67.  
  68.         pauseList[0] = new int [50 * sumOfTasksTime];
  69.         pauseList[1] = new int [50 * sumOfTasksTime];
  70.  
  71.         for(int i = 0 ; i < 2; i++) {
  72.             for(int j = 0; j < 50 * sumOfTasksTime ; j++) {
  73.                 pauseList[i][j] = 0;
  74.             }
  75.         }
  76.  
  77.         for(int i = 0 ; i < numberOfPauses ; i++) {
  78.             int machineNumber;
  79.             int pauseStart;
  80.             int timeForPause;
  81.             while(true) {
  82.                 bool canFinish = true;
  83.                 machineNumber = randWhichMachine();
  84.                 pauseStart = randWhenPauseStart(sumOfTasksTime) + rand() % 50 + 20;
  85.                 timeForPause = randTimeForPause();
  86.                 for(int i = pauseStart; i <= pauseStart + timeForPause; i++) {
  87.                     if(pauseList[machineNumber][i] != 0) {
  88.                         canFinish = false;
  89.                         break;
  90.                     }
  91.                 }
  92.  
  93.                 if(canFinish) {
  94.                     for(int i = pauseStart ; i <= pauseStart + timeForPause; i++) {
  95.                         pauseList[machineNumber][i] = 1;
  96.                     }
  97.                     break;
  98.                 }
  99.  
  100.             }
  101.             plik << i << ";" << machineNumber << ";" << timeForPause << ";" << pauseStart << "\n";
  102.         }
  103.  
  104.         delete [] taskList[0];
  105.         delete [] taskList[1];
  106.         delete [] taskList;
  107.  
  108.         delete [] pauseList[0];
  109.         delete [] pauseList[1];
  110.         delete [] pauseList;
  111.  
  112.         plik.close();
  113.         cout << sumOfTasksTime << endl;
  114.     }
  115. }
  116. //-------------------------------------------------
  117.  
  118.  
  119. int main() {
  120.     randInstances(5);
  121.     return 0;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement