public IActionResult DeleteZoneHistory(char site) { ExecutedScenario scenario = null; if (!cache.TryGetValue("ChangeInfrastrukture", out scenario)) { return(RedirectToAction("Index")); } Zone toBeDeleted = null; // Ermittelt die richtige Zone. foreach (Zone z in scenario.location.zones) { if (site == z.site) { toBeDeleted = z; break; } } if (toBeDeleted == null) { return(View("EditLocationHistory", scenario.location)); } scenario.location.deleteZone(toBeDeleted); return(View("EditLocationHistory", scenario.location)); }
public async Task <IActionResult> EndEditing() { Simulator sim = new Simulator(); ExecutedScenario scenario = null; if (!cache.TryGetValue("ChangeInfrastrukture", out scenario)) { return(RedirectToAction("Index")); } if (scenario.location.zones.Count == 0) { return(View("EditLocationHistory", scenario.location)); } sim.exScenario = scenario; await sim.run(); Evaluation eva = Analyzer.analyze(sim.exScenario); List <IEvaluation> evaluations; if (!cache.TryGetValue(CacheKeys.EVALUATION, out evaluations)) { evaluations = new List <IEvaluation>(); } evaluations.Add(eva); cache.Set(CacheKeys.EVALUATION, evaluations); return(RedirectToAction("Evaluation", "History", eva.scenario.id)); }
public IActionResult CreateZoneHistory() { ExecutedScenario scenario = null; if (!cache.TryGetValue("ChangeInfrastrukture", out scenario)) { return(RedirectToAction("Index")); } char site = 'A'; bool unique = false; while (!unique) { unique = true; foreach (Zone z in scenario.location.zones) { if (site == z.site) { unique = false; site++; break; } } } Zone newZone = new Zone() { site = site }; scenario.location.zones.Add(newZone); return(View("EditZoneHistory", new EditZoneViewModel() { zone = newZone, name = scenario.location.name, station = new Station(), site = site })); }
public IActionResult EndEditZoneHistory(EditZoneViewModel viewmodel) { ExecutedScenario scenario = null; if (!cache.TryGetValue("ChangeInfrastrukture", out scenario)) { return(RedirectToAction("Index")); } // Ermittelt die richtige Zone. foreach (Zone z in scenario.location.zones) { if (viewmodel.site == z.site) { z.maxPower = viewmodel.zone.maxPower; // Validiert das Model if (!TryValidateModel(z)) { RedirectToAction("EditZoneHistory", viewmodel.id, viewmodel.site); } break; } } return(View("EditLocationHistory", scenario.location)); }
public ExecutedScenarioExportImportViewModel(ExecutedScenario s) { id = s.id; duration = s.duration; bookingCountPerDay = s.bookingCountPerDay; vehicles = s.vehicles; foreach (Rushhour r in s.rushhours) { rushhours.Add(new RushhourExportImportViewModel(r)); } start = s.start; location = new LocationExportImportViewModel(s.location); locationWorkload = s.locationWorkload; stationWorkload = s.stationWorkload; fulfilledRequests = s.fulfilledRequests; bookings = new List <BookingExportImportViewModel>(); foreach (Booking b in s.bookings) { b.location = null; bookings.Add(new BookingExportImportViewModel(b)); } generatedBookings = new List <BookingExportImportViewModel>(); foreach (Booking b in s.generatedBookings) { b.location = null; generatedBookings.Add(new BookingExportImportViewModel(b)); } }
public IActionResult StartEditStationHistory(char site, int idStation) { ExecutedScenario scenario = null; if (!cache.TryGetValue("ChangeInfrastrukture", out scenario)) { return(RedirectToAction("Index")); } EditZoneViewModel viewmodel = new EditZoneViewModel(); viewmodel.name = scenario.location.name; // Ermitteln der richtigen Station foreach (Zone z in scenario.location.zones) { if (z.site == site) { // Befüllen des ViewModels mit den bereits bekannten Werten. viewmodel.zone = z; viewmodel.site = site; // Ermitteln der richtigen Station foreach (Station s in z.stations) { if (s.id == idStation) { // Befüllen des ViewModels mit den bereits bekannten Werten. viewmodel.station = s; viewmodel.ccs = 0; viewmodel.type2 = 0; foreach (Plug p in s.plugs) { if (p.type == PlugType.CCS) { viewmodel.ccsPower = p.power; viewmodel.ccs++; } else { viewmodel.type2++; viewmodel.type2Power = p.power; } } // Entfernen der Station aus der Zone um doppelungen zu vermeiden. viewmodel.zone.deleteStation(s); return(View("EditZoneHistory", viewmodel)); } } break; } } // Station nicht gefunden. return(RedirectToAction("Index")); }
private static void printStationWorkload(ExecutedScenario s) { foreach (List <double> station in s.getStationWorkload()) { foreach (double d in station) { Console.Write(d.ToString() + "; "); } Console.WriteLine("\n"); } }
public IActionResult EditLocationNameAndEmergencyHistory(Location l) { ExecutedScenario scenario = null; if (!cache.TryGetValue("ChangeInfrastrukture", out scenario)) { return(RedirectToAction("Index")); } scenario.location.name = l.name; scenario.location.emergency = l.emergency; return(View("EditLocationHistory", scenario.location)); }
private static void printScenarioDetail(ExecutedScenario s) { Console.WriteLine("Generierte Buchungen: "); printDetailedBookingList(s.generatedBookings, 0); Console.WriteLine("Davon akzeptierte Buchungen: "); printDetailedBookingList(s.location.schedule.bookings, 0); Console.WriteLine("Location workload:"); foreach (double d in s.getLocationWorkload()) { Console.Write(d.ToString() + ", "); } Console.WriteLine(""); }
public IActionResult ChangeInfrastrukture(string id) { if (!cache.TryGetValue(CacheKeys.EVALUATION, out evaluations)) { evaluations = new List <IEvaluation>(); } IEvaluation evaluation = null; foreach (IEvaluation eva in evaluations) { if (eva.scenario.id.Equals(id)) { evaluation = eva; break; } } Location l = evaluation.scenario.location.deepCopy(); List <Booking> genBookings = new List <Booking>(); foreach (Booking b in evaluation.scenario.generatedBookings) { genBookings.Add(new Booking() { id = b.id, capacity = b.capacity, plugs = b.plugs, socStart = b.socStart, socEnd = b.socEnd, user = b.user, startTime = b.startTime, endTime = b.endTime, active = b.active, location = l, priority = b.priority }); } ExecutedScenario newScenario = new ExecutedScenario(genBookings) { duration = evaluation.scenario.duration, bookingCountPerDay = evaluation.scenario.bookingCountPerDay, vehicles = evaluation.scenario.vehicles, rushhours = evaluation.scenario.rushhours, start = evaluation.scenario.start, location = l }; cache.Set("ChangeInfrastrukture", newScenario); return(View("EditLocationHistory", newScenario.location)); }
/// <summary> /// Analysiert ein gegebenes Szenario. Dabei werden verschiedene Leistungsmetriken /// quantifiziert. Die Rate der erfolgreichen Buchungen, überflüssige Auslastung, /// zusätzlicher Bedarf an Resourcen, Verteilung der Stecker akzeptierter Buchungen /// und Verteilung der Stecker abgelehnter Buchungen. /// </summary> /// <param name="_scenario">Das zu untersuchende Szenario.</param> /// <returns></returns> public static Evaluation analyze(IEvaluatable _scenario) { scenario = _scenario; List <List <double> > plugTypeDistribution = calcPlugTypeDistribution(); evaluation = new Evaluation() { suggestions = createSuggestion(), bookingSuccessRate = calcBookingSuccessRate(), unneccessaryWorkload = calcUnnecessaryWorkload(), neccessaryWorkload = calcNecessaryWorkload(), plugDistributionAccepted = plugTypeDistribution[0], plugDistributionDeclined = plugTypeDistribution[1], scenario = (ExecutedScenario)_scenario }; // Berechnungen. List <Booking> declined = new List <Booking>(); int declinedBookingsInGeneratedBookings = 0; int acceptedBookingsInGeneratedBookings = 0; ExecutedScenario s = (ExecutedScenario)scenario; foreach (Booking b in s.bookings) { if (!s.location.schedule.bookings.Contains(b)) { declined.Add(b); } } foreach (Booking b in s.location.schedule.bookings) { if (s.bookings.Contains(b)) { acceptedBookingsInGeneratedBookings++; } } foreach (Booking b in declined) { if (s.bookings.Contains(b)) { declinedBookingsInGeneratedBookings++; } } return(evaluation); }
public IActionResult EditZoneHistory(char site) { ExecutedScenario scenario = null; if (!cache.TryGetValue("ChangeInfrastrukture", out scenario)) { return(RedirectToAction("Index")); } foreach (Zone z in scenario.location.zones) { if (z.site == site) { return(View(new EditZoneViewModel() { zone = z, name = scenario.location.name, station = new Station(), site = site })); } } return(View()); }
private static void printWorkload(ExecutedScenario executedScenario) { Console.WriteLine("FullfilledRequests:"); Console.WriteLine(executedScenario.getFulfilledRequests()); Console.WriteLine("LocationWorkload: \t Count:" + executedScenario.getLocationWorkload().Count); foreach (double item in executedScenario.getLocationWorkload()) { Console.WriteLine(item); } Console.WriteLine("StationWorkload: \t CountLists:" + executedScenario.getStationWorkload().Count); Console.WriteLine("StationWorkloads:"); foreach (List <double> list in executedScenario.getStationWorkload()) { Console.WriteLine("NewStation:"); foreach (double item in executedScenario.getLocationWorkload()) { Console.WriteLine(item); } } }
public IActionResult DeleteStationHistory(char site, int idStation) { ExecutedScenario scenario = null; if (!cache.TryGetValue("ChangeInfrastrukture", out scenario)) { return(RedirectToAction("Index")); } EditZoneViewModel viewmodel = new EditZoneViewModel(); viewmodel.name = scenario.location.name; // Ermitteln der richtigen Station foreach (Zone z in scenario.location.zones) { if (z.site == site) { // Befüllen des ViewModels mit den bereits bekannten Werten. viewmodel.zone = z; viewmodel.site = site; // Ermitteln der richtigen Station foreach (Station s in z.stations) { if (s.id == idStation) { viewmodel.station = new Station(); // Entfernen der Station aus der Zone viewmodel.zone.deleteStation(s); return(View("EditZoneHistory", viewmodel)); } } break; } } // Station nicht gefunden. return(RedirectToAction("EditLocationHistory")); }
public ExecutedScenario generateScenario() { List <Booking> _generatedBookings = new List <Booking>(); ILocation l = location.generateLocation(); foreach (BookingExportImportViewModel b in generatedBookings) { Booking booking = (Booking)b.generateBooking(); booking.location = l; _generatedBookings.Add(booking); } ExecutedScenario s = new ExecutedScenario(_generatedBookings); s.id = id; s.duration = duration; s.bookingCountPerDay = bookingCountPerDay; s.vehicles = vehicles; s.rushhours = new List <Rushhour>(); foreach (RushhourExportImportViewModel r in rushhours) { s.rushhours.Add(r.generateRushhour()); } s.start = start; s.location = l; s.locationWorkload = locationWorkload; s.stationWorkload = stationWorkload; s.fulfilledRequests = fulfilledRequests; List <Booking> _bookings = new List <Booking>(); foreach (BookingExportImportViewModel b in bookings) { Booking booking = (Booking)b.generateBooking(); booking.location = l; _bookings.Add((Booking)b.generateBooking()); } s.bookings = _bookings; return(s); }
public IActionResult EditStationHistory(EditZoneViewModel viewmodel) { ExecutedScenario scenario = null; if (!cache.TryGetValue("ChangeInfrastrukture", out scenario)) { return(RedirectToAction("Index")); } Station station = viewmodel.station; // Erzeugt die Stecker der Station. station.plugs = new List <Plug>(); for (int i = 0; i < viewmodel.ccs; i++) { station.addPlug(new Plug() { power = viewmodel.ccsPower, type = PlugType.CCS }); } for (int i = 0; i < viewmodel.type2; i++) { station.addPlug(new Plug() { power = viewmodel.type2Power, type = PlugType.TYPE2 }); } viewmodel.name = scenario.location.name; foreach (Zone z in scenario.location.zones) { if (viewmodel.site == z.site) { viewmodel.zone = z; break; } } bool idValid = false; int id = 0; while (!idValid) { idValid = true; foreach (Station s in viewmodel.zone.stations) { if (id == s.id) { idValid = false; id++; break; } } } station.id = id; //Validiert die Station. if (TryValidateModel(station)) { // Zurücksetzten des viewmodels und hinzufügen der Station. viewmodel.zone.addStation(station); viewmodel.station = new Station(); viewmodel.ccs = 0; viewmodel.type2 = 0; viewmodel.ccsPower = 0; viewmodel.type2Power = 0; station.maxParallelUseable = Math.Min(station.maxParallelUseable, station.plugs.Count); return(View("EditZoneHistory", viewmodel)); } return(View("EditZoneHistory", viewmodel)); }