コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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
            }));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
            }
        }
コード例 #6
0
        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"));
        }
コード例 #7
0
 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");
     }
 }
コード例 #8
0
        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));
        }
コード例 #9
0
        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("");
        }
コード例 #10
0
        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));
        }
コード例 #11
0
ファイル: Analyzer.cs プロジェクト: TobiasEh/Uni
        /// <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);
        }
コード例 #12
0
        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());
        }
コード例 #13
0
ファイル: SimulatorTest.cs プロジェクト: TobiasEh/Uni
        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);
                }
            }
        }
コード例 #14
0
        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"));
        }
コード例 #15
0
        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);
        }
コード例 #16
0
        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));
        }