Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
- namespace OKEJKI
- {
- class Program
- {
- //kazde zadanie ma 2 opreacje, kazda operacja wykonuje sie na jednej maszynie
- public List<Zadanie> zadania = new List<Zadanie>();
- public List<Operacja> operacje = new List<Operacja>();
- public List<Operacja> przerwy = new List<Operacja>();
- public List<Zadanie> populacja = new List<Zadanie>();
- public static int lzadan;
- //public int liczba_przerw = lzadan / 6;
- public int liczba_przerw;
- //Function to get a random number
- private static readonly Random random = new Random();
- private static readonly object syncLock = new object();
- public static int RandomNumber(int min, int max)
- {
- lock (syncLock)
- { // synchronize
- return random.Next(min, max);
- }
- }
- private static Random rng = new Random();
- public static void Shuffle<T>( IList<T> list)
- {
- int n = list.Count;
- while (n > 1)
- {
- n--;
- int k = rng.Next(n + 1);
- T value = list[k];
- list[k] = list[n];
- list[n] = value;
- }
- }
- //public List<Zadanie> zadania = new List<Zadanie>();
- public void Zapis(List<Zadanie> zadania)
- {
- //FileStream fs = new FileStream("plik.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
- Console.WriteLine("Osdgsgs ");
- Console.WriteLine(zadania.Count);
- // Console.WriteLine(zadania[1].op1.czas_trwania_op);
- string path = @"C:\Users\Lenovo\Desktop\x.txt";
- StreamWriter sw = new StreamWriter(path);
- sw.WriteLine(lzadan.ToString());
- foreach (var zad in zadania)
- {
- sw.Write(zad.op1.czas_trwania_op.ToString()+";");
- sw.Write(zad.op2.czas_trwania_op.ToString()+";");
- sw.Write(zad.op1.nr_maszyny.ToString()+";");
- sw.Write(zad.op2.nr_maszyny.ToString()+";");
- sw.Write(zad.op1.czas_gotowosci.ToString()+";"+Environment.NewLine);
- // sw.Write("wubadubalubdub");
- Console.WriteLine("Osdgsgs ");
- }
- przerwy = Tworzenie_przerw();
- liczba_przerw = lzadan / 6;
- sw.WriteLine(liczba_przerw.ToString());
- int i=1;
- foreach (var przerwa in przerwy)
- {
- sw.Write(i + ";");
- sw.Write(przerwa.nr_maszyny.ToString() + ";");
- sw.Write(przerwa.czas_trwania_op.ToString() + ";");
- sw.Write(przerwa.czas_gotowosci.ToString() + ";" + Environment.NewLine);
- i++;
- }
- // sw.Write("wubadubalubdub");
- sw.Close();
- }
- public List<Operacja> Tworzenie_przerw()
- {
- int max_czas_operacji = 20;
- // Operacja OperacjaInfo = new Operacja();
- liczba_przerw = lzadan / 6;
- for (int i=0; i<liczba_przerw; i++)
- {
- Operacja OperacjaInfo = new Operacja();
- OperacjaInfo.przerwa = true;
- OperacjaInfo.nr_maszyny = 1;
- OperacjaInfo.czas_trwania_op = RandomNumber(1, max_czas_operacji);
- OperacjaInfo.czas_gotowosci = RandomNumber(1, 15 * max_czas_operacji);
- przerwy.Add(OperacjaInfo);
- }
- return przerwy;
- }
- public List<Zadanie> Tworzenie_populacji()
- {
- return populacja;
- }
- public void Generator()
- {
- // int lzadan;
- Console.WriteLine("Podaj liczbe zadan: ");
- lzadan = int.Parse(Console.ReadLine());
- Console.WriteLine("Liczba zadan: " + lzadan);
- int sum_czas_masz_1 = 0;
- int sum_czas_masz_2 = 0;
- int max_czas_operacji = 20;
- //int max_czas_operacji = 20; //maja byc od 1 do 20, od 1 do 100, mieszane
- //int max_czas_operacji = 20;
- //int max_czas_operacji = 20;
- //int max_czas_operacji = 20;
- int czas_gotowosci=0;
- int suma = 0;
- for (int i = 0; i < lzadan; i++)
- {
- Zadanie ZadanieInfo = new Zadanie();
- Operacja OperacjaInfo = new Operacja();
- ZadanieInfo.nr_zadania = i;
- OperacjaInfo.nr_op = 1;
- OperacjaInfo.czas_gotowosci = 0;
- // Random rand1 = new Random();
- OperacjaInfo.nr_maszyny = RandomNumber(1, 3);
- OperacjaInfo.czas_trwania_op = RandomNumber(1, max_czas_operacji + 1);
- int pomocnik = OperacjaInfo.nr_maszyny;
- if(OperacjaInfo.nr_maszyny == 1)
- {
- suma = suma + OperacjaInfo.czas_trwania_op;
- }
- // Random rand = new Random();
- // OperacjaInfo.czas_trwania_op = rand()%max_czas_operacji;
- ZadanieInfo.op1 = OperacjaInfo;
- Console.WriteLine("Op1 czas trwania: " + OperacjaInfo.czas_trwania_op);
- Console.WriteLine("Op1 maszyna: " + OperacjaInfo.nr_maszyny);
- Operacja OperacjaInfo2 = new Operacja();
- OperacjaInfo2.nr_op = 2;
- OperacjaInfo2.czas_gotowosci = 0;
- Random rand2 = new Random(10000);
- //OperacjaInfo.czas_trwania_op = (rand2.Next(1, (10000*max_czas_operacji)))/10000;
- //OperacjaInfo.nr_maszyny = RandomNumber(1, 3);
- OperacjaInfo2.czas_trwania_op = RandomNumber(1, max_czas_operacji+1);
- if(pomocnik==1)
- {
- OperacjaInfo2.nr_maszyny = 2;
- }
- else { OperacjaInfo2.nr_maszyny = 1; }
- if (OperacjaInfo2.nr_maszyny == 1)
- {
- suma = suma + OperacjaInfo2.czas_trwania_op ;
- }
- ZadanieInfo.op2 = OperacjaInfo2;
- zadania.Add(ZadanieInfo);
- Console.WriteLine("Op2 czas trwania: " + OperacjaInfo2.czas_trwania_op);
- Console.WriteLine("Op2 maszyna: " + OperacjaInfo2.nr_maszyny);
- }
- Console.WriteLine("Suma czasow trawania op dla maszyny I: " + suma);
- int x = 0;
- foreach (var zad in zadania)
- {
- x++;
- if(x>(zadania.Count)/2)
- { break; }
- else
- {
- zad.op1.czas_gotowosci = RandomNumber(0, (suma / 2));
- Console.WriteLine("Czasy gotowosci z petli "+ zad.op1.czas_gotowosci);
- }
- }
- //Console.Write(zadania.Count);
- Shuffle(zadania);
- Zapis(zadania);
- // Tworzenie_populacji(zadania);
- Console.ReadLine();
- }
- public void Stworz_populacje(List<Zadanie> populacja)
- {
- }
- static void Main(string[] args)
- {
- // MyClass mc = new MyClass();
- // mc.i = 10;
- // mc.f();
- // int p = mc.Prop;
- Program pr = new Program();
- pr.Generator();
- //pr.Tworzenie_populacji(zadania);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement