Advertisement
migonne

ok

Mar 10th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.82 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7.  
  8. namespace OKEJKI
  9. {
  10. class Program
  11. {
  12.  
  13.  
  14. //kazde zadanie ma 2 opreacje, kazda operacja wykonuje sie na jednej maszynie
  15.  
  16. public List<Zadanie> zadania = new List<Zadanie>();
  17. public List<Operacja> operacje = new List<Operacja>();
  18. public List<Operacja> przerwy = new List<Operacja>();
  19. public List<Zadanie> populacja = new List<Zadanie>();
  20. public static int lzadan;
  21. //public int liczba_przerw = lzadan / 6;
  22. public int liczba_przerw;
  23.  
  24.  
  25.  
  26. //Function to get a random number
  27. private static readonly Random random = new Random();
  28. private static readonly object syncLock = new object();
  29. public static int RandomNumber(int min, int max)
  30. {
  31. lock (syncLock)
  32. { // synchronize
  33. return random.Next(min, max);
  34. }
  35. }
  36.  
  37. private static Random rng = new Random();
  38.  
  39. public static void Shuffle<T>( IList<T> list)
  40. {
  41. int n = list.Count;
  42. while (n > 1)
  43. {
  44. n--;
  45. int k = rng.Next(n + 1);
  46. T value = list[k];
  47. list[k] = list[n];
  48. list[n] = value;
  49. }
  50. }
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. //public List<Zadanie> zadania = new List<Zadanie>();
  60. public void Zapis(List<Zadanie> zadania)
  61. {
  62. //FileStream fs = new FileStream("plik.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
  63.  
  64. Console.WriteLine("Osdgsgs ");
  65. Console.WriteLine(zadania.Count);
  66. // Console.WriteLine(zadania[1].op1.czas_trwania_op);
  67.  
  68.  
  69. string path = @"C:\Users\Lenovo\Desktop\x.txt";
  70. StreamWriter sw = new StreamWriter(path);
  71. sw.WriteLine(lzadan.ToString());
  72. foreach (var zad in zadania)
  73. {
  74. sw.Write(zad.op1.czas_trwania_op.ToString()+";");
  75. sw.Write(zad.op2.czas_trwania_op.ToString()+";");
  76. sw.Write(zad.op1.nr_maszyny.ToString()+";");
  77. sw.Write(zad.op2.nr_maszyny.ToString()+";");
  78. sw.Write(zad.op1.czas_gotowosci.ToString()+";"+Environment.NewLine);
  79. // sw.Write("wubadubalubdub");
  80. Console.WriteLine("Osdgsgs ");
  81. }
  82.  
  83. przerwy = Tworzenie_przerw();
  84. liczba_przerw = lzadan / 6;
  85. sw.WriteLine(liczba_przerw.ToString());
  86. int i=1;
  87. foreach (var przerwa in przerwy)
  88. {
  89. sw.Write(i + ";");
  90. sw.Write(przerwa.nr_maszyny.ToString() + ";");
  91. sw.Write(przerwa.czas_trwania_op.ToString() + ";");
  92. sw.Write(przerwa.czas_gotowosci.ToString() + ";" + Environment.NewLine);
  93. i++;
  94. }
  95.  
  96.  
  97.  
  98. // sw.Write("wubadubalubdub");
  99.  
  100.  
  101. sw.Close();
  102.  
  103.  
  104. }
  105.  
  106.  
  107. public List<Operacja> Tworzenie_przerw()
  108. {
  109.  
  110. int max_czas_operacji = 20;
  111.  
  112. // Operacja OperacjaInfo = new Operacja();
  113. liczba_przerw = lzadan / 6;
  114.  
  115. for (int i=0; i<liczba_przerw; i++)
  116. {
  117. Operacja OperacjaInfo = new Operacja();
  118.  
  119. OperacjaInfo.przerwa = true;
  120. OperacjaInfo.nr_maszyny = 1;
  121. OperacjaInfo.czas_trwania_op = RandomNumber(1, max_czas_operacji);
  122. OperacjaInfo.czas_gotowosci = RandomNumber(1, 15 * max_czas_operacji);
  123.  
  124. przerwy.Add(OperacjaInfo);
  125.  
  126.  
  127. }
  128.  
  129. return przerwy;
  130. }
  131.  
  132.  
  133.  
  134. public List<Zadanie> Tworzenie_populacji()
  135. {
  136.  
  137.  
  138.  
  139.  
  140.  
  141. return populacja;
  142. }
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149. public void Generator()
  150. {
  151.  
  152.  
  153.  
  154. // int lzadan;
  155. Console.WriteLine("Podaj liczbe zadan: ");
  156. lzadan = int.Parse(Console.ReadLine());
  157. Console.WriteLine("Liczba zadan: " + lzadan);
  158.  
  159. int sum_czas_masz_1 = 0;
  160. int sum_czas_masz_2 = 0;
  161. int max_czas_operacji = 20;
  162. //int max_czas_operacji = 20; //maja byc od 1 do 20, od 1 do 100, mieszane
  163. //int max_czas_operacji = 20;
  164. //int max_czas_operacji = 20;
  165. //int max_czas_operacji = 20;
  166. int czas_gotowosci=0;
  167. int suma = 0;
  168.  
  169.  
  170. for (int i = 0; i < lzadan; i++)
  171. {
  172. Zadanie ZadanieInfo = new Zadanie();
  173. Operacja OperacjaInfo = new Operacja();
  174.  
  175. ZadanieInfo.nr_zadania = i;
  176.  
  177. OperacjaInfo.nr_op = 1;
  178. OperacjaInfo.czas_gotowosci = 0;
  179.  
  180. // Random rand1 = new Random();
  181.  
  182. OperacjaInfo.nr_maszyny = RandomNumber(1, 3);
  183. OperacjaInfo.czas_trwania_op = RandomNumber(1, max_czas_operacji + 1);
  184. int pomocnik = OperacjaInfo.nr_maszyny;
  185.  
  186. if(OperacjaInfo.nr_maszyny == 1)
  187. {
  188. suma = suma + OperacjaInfo.czas_trwania_op;
  189. }
  190.  
  191. // Random rand = new Random();
  192.  
  193.  
  194. // OperacjaInfo.czas_trwania_op = rand()%max_czas_operacji;
  195.  
  196.  
  197. ZadanieInfo.op1 = OperacjaInfo;
  198.  
  199.  
  200.  
  201. Console.WriteLine("Op1 czas trwania: " + OperacjaInfo.czas_trwania_op);
  202. Console.WriteLine("Op1 maszyna: " + OperacjaInfo.nr_maszyny);
  203.  
  204. Operacja OperacjaInfo2 = new Operacja();
  205.  
  206. OperacjaInfo2.nr_op = 2;
  207. OperacjaInfo2.czas_gotowosci = 0;
  208. Random rand2 = new Random(10000);
  209. //OperacjaInfo.czas_trwania_op = (rand2.Next(1, (10000*max_czas_operacji)))/10000;
  210. //OperacjaInfo.nr_maszyny = RandomNumber(1, 3);
  211. OperacjaInfo2.czas_trwania_op = RandomNumber(1, max_czas_operacji+1);
  212.  
  213. if(pomocnik==1)
  214. {
  215. OperacjaInfo2.nr_maszyny = 2;
  216. }
  217. else { OperacjaInfo2.nr_maszyny = 1; }
  218.  
  219.  
  220. if (OperacjaInfo2.nr_maszyny == 1)
  221. {
  222. suma = suma + OperacjaInfo2.czas_trwania_op ;
  223. }
  224.  
  225. ZadanieInfo.op2 = OperacjaInfo2;
  226.  
  227. zadania.Add(ZadanieInfo);
  228.  
  229. Console.WriteLine("Op2 czas trwania: " + OperacjaInfo2.czas_trwania_op);
  230. Console.WriteLine("Op2 maszyna: " + OperacjaInfo2.nr_maszyny);
  231.  
  232.  
  233.  
  234.  
  235. }
  236.  
  237. Console.WriteLine("Suma czasow trawania op dla maszyny I: " + suma);
  238.  
  239.  
  240. int x = 0;
  241.  
  242. foreach (var zad in zadania)
  243. {
  244. x++;
  245. if(x>(zadania.Count)/2)
  246. { break; }
  247. else
  248. {
  249. zad.op1.czas_gotowosci = RandomNumber(0, (suma / 2));
  250. Console.WriteLine("Czasy gotowosci z petli "+ zad.op1.czas_gotowosci);
  251. }
  252.  
  253. }
  254.  
  255. //Console.Write(zadania.Count);
  256.  
  257. Shuffle(zadania);
  258. Zapis(zadania);
  259.  
  260.  
  261. // Tworzenie_populacji(zadania);
  262.  
  263. Console.ReadLine();
  264.  
  265.  
  266.  
  267.  
  268.  
  269. }
  270.  
  271.  
  272. public void Stworz_populacje(List<Zadanie> populacja)
  273. {
  274.  
  275.  
  276.  
  277. }
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284. static void Main(string[] args)
  285. {
  286. // MyClass mc = new MyClass();
  287. // mc.i = 10;
  288. // mc.f();
  289. // int p = mc.Prop;
  290.  
  291. Program pr = new Program();
  292. pr.Generator();
  293. //pr.Tworzenie_populacji(zadania);
  294.  
  295.  
  296.  
  297. }
  298.  
  299.  
  300. }
  301. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement