internal int SimulateOneStep() { Warteschlange.Step(); foreach (var server in Servers) { server.Step(Warteschlange); } return(Warteschlange.AnzahlVideos); }
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 }); } }
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); } // } }
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); } }
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(); }
public void Hinzufügen(Druckauftrag auftrag) { Warteschlange.Enqueue(auftrag); Console.WriteLine("Druckauftrag hinzugefügt"); }
/// <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"); }
public EinPfadSimulation(Umgebung umgebung, Warteschlange warteschlange, List <Server> servers) : base(umgebung) { Warteschlange = warteschlange; Servers = servers; }