コード例 #1
0
 internal int SimulateOneStep()
 {
     Warteschlange.Step();
     foreach (var server in Servers)
     {
         server.Step(Warteschlange);
     }
     return(Warteschlange.AnzahlVideos);
 }
コード例 #2
0
 public SimulationOhneUmgebung(Umgebung umgebung, Warteschlange warteschlange, List <Server> servers) : base(umgebung)
 {
     SetWarteschlange(new Warteschlange {
         Erwartungswert = warteschlange.Erwartungswert
     });
     Servers.Clear();
     foreach (var server in servers)
     {
         AddServer(new Server {
             Erwartungswert = server.Erwartungswert
         });
     }
 }
コード例 #3
0
        public void Drucken()
        {
            Druckauftrag auftrag;

            //lock (Warteschlange)
            //{
            while (Warteschlange.Count > 0)
            {
                auftrag = Warteschlange.Dequeue();
                Console.WriteLine("Gedruckt wird ein(e) {0}, Dauer: {1}", auftrag.Beschreibung, auftrag.Dauer);
                Betriebszeit += auftrag.Dauer;
                Thread.Sleep(1000);
            }
            // }
        }
コード例 #4
0
        internal override void CreateExcel()
        {
            // Benutze die EPPlus library um ein Excel zu erstellen
            using (var excelPackage = new ExcelPackage())
            {
                var ws = excelPackage.Workbook.Worksheets.Add("Simulation");

                // Überschriften
                ws.Cells[1, 1].Value = "Zeitpunkt";
                ws.Cells[1, 2].Value = "Neu in Warteschlange";
                for (int s = 0; s < Servers.Count; s++)
                {
                    ws.Cells[1, s + 3].Value = $"Neu auf {s + 1}. Server";
                }
                ws.Cells[1, Servers.Count + 3].Value = "Anzahl in Warteschlange";

                var steps = Umgebung.AnzahlZeitschritte * Umgebung.Zeitschritt;
                for (int i = 0; i < steps; i++)
                {
                    var row = i + 2;
                    ws.Cells[row, 1].Value = (0 + Umgebung.Zeitschritt) * (i + 1);
                    ws.Cells[row, 2].Value = Warteschlange.Step();
                    for (int s = 0; s < Servers.Count; s++)
                    {
                        ws.Cells[row, s + 3].Value = Servers[s].Step(Warteschlange);
                    }
                    ws.Cells[row, Servers.Count + 3].Value = Warteschlange.AnzahlVideos;
                }

                // Die Spaltengrössen auf den Inhalt anpassen
                ws.Column(1).AutoFit();
                ws.Column(2).AutoFit();
                for (int s = 0; s < Servers.Count; s++)
                {
                    ws.Column(s + 3).AutoFit();
                }
                ws.Column(Servers.Count + 3).AutoFit();

                // Dateinamen generieren und Excel an diesem Ort erstellen
                var excelFile = GetFilePath();
                excelPackage.SaveAs(excelFile);

                // Nach dem Erstellen des Excel files soll dieses gleich im Excel angezeigt werden
                Process.Start(excelFile.FullName);
            }
        }
コード例 #5
0
        static void Main(string[] args)
        {
            var umgebung = new Umgebung();

            Console.WriteLine("[Umgebung]");

            Console.Write("Anzahl Server: ");
            umgebung.AnzahlServer = ParseInt(Console.ReadLine());
            Console.Write("Zeitschritt: ");
            umgebung.Zeitschritt = ParseMoeglicheDivision(Console.ReadLine());
            Console.Write("Anzahl Zeitschritte: ");
            umgebung.AnzahlZeitschritte = ParseInt(Console.ReadLine());
            Console.Write("Anzahl Simulationen (Pfade): ");
            var pfade = ParseInt(Console.ReadLine());

            SimulationBase simulation;

            //if (pfade == 1)
            //    simulation = new EinPfadSimulation(umgebung);
            //else
            simulation = new MultiPfadSimulation(umgebung, pfade);

            Console.WriteLine();
            Console.WriteLine("[Warteschlange]");
            var warteschlange = new Warteschlange();

            Console.Write("Erwartungswert: ");
            warteschlange.Erwartungswert = ParseMoeglicheDivision(Console.ReadLine());
            simulation.SetWarteschlange(warteschlange);

            Console.WriteLine();
            Console.WriteLine("[Server]");
            for (int i = 0; i < umgebung.AnzahlServer; i++)
            {
                var server = new Server();
                Console.Write($"Erwartungswert {i+1}. Server: ");
                server.Erwartungswert = ParseMoeglicheDivision(Console.ReadLine());
                simulation.AddServer(server);
            }

            simulation.CreateExcel();
        }
コード例 #6
0
 public void Hinzufügen(Druckauftrag auftrag)
 {
     Warteschlange.Enqueue(auftrag);
     Console.WriteLine("Druckauftrag hinzugefügt");
 }
コード例 #7
0
 /// <summary>
 /// Die Warteschlange der Simulation festlegen
 /// </summary>
 /// <param name="warteschlange"></param>
 public void SetWarteschlange(Warteschlange warteschlange)
 {
     warteschlange.Calculate(Umgebung);
     Warteschlange = warteschlange;
     Console.Write($" => Wahrscheinlichkeit = {warteschlange.Wahrscheinlichkeit:P}\n");
 }
コード例 #8
0
 public EinPfadSimulation(Umgebung umgebung, Warteschlange warteschlange, List <Server> servers) : base(umgebung)
 {
     Warteschlange = warteschlange;
     Servers       = servers;
 }