public void Should_return_zero_iteration_step_in_iteration_result() { var smoData = new SmoData(); var actionResult = controller.InitPassengersFromSmo(smoData); var okResult = actionResult as OkObjectResult; var iterationResult = okResult.Value as IterationResult; iterationResult.IterationStep.Should().Be(0); }
public void Should_set_q_learning_algorithm_type_to_iteration_result_from_smo_data() { var smoData = new SmoData(); var actionResult = controller.InitPassengersFromSmo(smoData); var okResult = actionResult as OkObjectResult; var iterationResult = okResult.Value as IterationResult; iterationResult.AlgorithmType.Should().Be(ChoiceTransportAlgorithmType.QLearning); }
private void bindSmoDataList(Worksheet worksheet) { var usedRange = worksheet.UsedRange; foreach (Range excelRow in usedRange.Rows) { var smoCodeCell = (new StringValue(worksheet, excelRow.Row, 8)); if (smoCodeCell.ValueAssigned) { var smoCode = smoCodeCell.Value; var smoData = new SmoData(worksheet, excelRow.Row, smoCode); smoDataList.Add(smoData); } } }
public void Should_return_average_satisfaction_from_transport_system_satisfaction() { const int satisfaction = 1; var smoData = new SmoData(); transportSystemSatisfaction.Evaluate(Arg.Any <PassengerDto[]>()) .Returns(satisfaction); var actionResult = controller.InitPassengersFromSmo(smoData); var okResult = actionResult as OkObjectResult; var iterationResult = okResult.Value as IterationResult; iterationResult.AverageSatisfaction.Should().Be(satisfaction); }
public void Should_create_passengers_from_factory() { var smoData = new SmoData { Columns = 2, NeighboursCount = 3, PassengersOnCar = 3, SmoPassengers = new SmoPassenger[3], }; var _ = controller.InitPassengersFromSmo(smoData); passengersFactory.Received().CreateAllPassengersTogether(smoData, Arg.Any <TransportType[]>()); }
private PassengerDto CreateRandomPassengerDto( SmoData smoData, int x, PassengerDto[] smoBusPassengers, double defaultSatisfaction, TransportType[] availableTransportTypes ) { var type = TransportTypes.GetRandomTransportWithoutType(TransportType.Bus, randomizer, availableTransportTypes); return(new PassengerDto { Id = $"{(int) type}.{x}", Quality = 1 - (double)smoData.PassengersOnCar / (smoData.PassengersOnCar + smoBusPassengers.Length), TransportType = type, Satisfaction = defaultSatisfaction, FirstBusQuality = 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); }
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 })); }
public PassengerDto[] CreateAllPassengersTogether(SmoData smoData, TransportType[] availableTransportTypes) { var smoBusPassengers = smoData.SmoPassengers .Select( x => new PassengerDto { Id = x.AgentId, Quality = x.Quality, TransportType = TransportType.Bus, Satisfaction = DefaultSatisfaction, FirstBusQuality = x.Quality }) .ToArray(); var carPassengers = Enumerable.Range(0, smoData.PassengersOnCar) .Select(x => CreateRandomPassengerDto(smoData, x, smoBusPassengers, DefaultSatisfaction, availableTransportTypes)); var allPassengers = smoBusPassengers.Concat(carPassengers).ToArray(); return(allPassengers); }