コード例 #1
0
        public IActionResult InitPassengersFromSmo([FromBody] SmoData smoData)
        {
            var availableTransportTypes = new[] { TransportType.Bus, TransportType.Car };
            var allPassengers           = passengersFactory.CreateAllPassengersTogether(smoData, availableTransportTypes);
            var neighborhood            =
                neighborsManager.GetEachPassengerNeighbors(smoData.NeighboursCount, smoData.Columns, allPassengers);

            allPassengers.SetNeighborhood(neighborhood);

            var averageSatisfaction = transportSystemSatisfaction.Evaluate(allPassengers);

            return(Ok(
                       new IterationResult
            {
                Passengers = allPassengers,
                AverageSatisfaction = averageSatisfaction,
                AlgorithmType = ChoiceTransportAlgorithmType.QLearning,
                AvailableTransportTypes = availableTransportTypes
            }));
        }
コード例 #2
0
            public void Should_set_neighbors_for_each_passengers_from_passenger_manager()
            {
                var smoData = new SmoData
                {
                    Columns         = 2,
                    NeighboursCount = 3,
                    PassengersOnCar = 4,
                    SmoPassengers   = new SmoPassenger[3]
                };
                var passengers = Enumerable
                                 .Range(0, 4)
                                 .Select(
                    x => new PassengerDto
                {
                    Id = x.ToString()
                })
                                 .ToArray();
                var defaultNeighbors = new List <string> {
                    "some neighbor id"
                };
                var neighborhood = Enumerable.Range(0, 4).ToDictionary(x => x.ToString(), x => defaultNeighbors);

                passengersFactory.CreateAllPassengersTogether(smoData, Arg.Any <TransportType[]>())
                .Returns(passengers);
                neighborsManager.GetEachPassengerNeighbors(smoData.NeighboursCount, smoData.Columns, passengers)
                .Returns(neighborhood);
                var expectedPassengers = Enumerable
                                         .Range(0, 4)
                                         .Select(
                    x => new PassengerDto
                {
                    Id         = x.ToString(),
                    Neighbours = defaultNeighbors.ToArray(),
                })
                                         .ToArray();

                var actionResult    = controller.InitPassengersFromSmo(smoData);
                var okResult        = actionResult as OkObjectResult;
                var iterationResult = okResult.Value as IterationResult;

                iterationResult.Passengers.ShouldBeEquivalentTo(expectedPassengers);
            }