コード例 #1
0
        public void RenderGraph(Graph <VertexInfo, EdgeInfo> graph, bool panIntoView, SimulationHistoryStep step = null)
        {
            if (!_initialized)
            {
                Initialize();
            }

            ClearMap();

            // Add markers for each vertex
            foreach (var vertex in graph.Vertices)
            {
                _vertices.Add(new Circle()
                {
                    Position    = new BlazorLeaflet.Models.LatLng((float)vertex.Info.Position.Item1, (float)vertex.Info.Position.Item2),
                    Radius      = 1f,
                    StrokeColor = vertex.Info.Type switch
                    {
                        VertexType.Target => Color.Red,
                        VertexType.Base => Color.Green,
                        VertexType.Both => Color.Yellow
                    },
コード例 #2
0
ファイル: Simulation.cs プロジェクト: johannesmols/Caelicus
        /// <summary>
        /// Record the current state of the simulation for analysis purposes
        /// </summary>
        private void RecordSimulationStep()
        {
            var simHistoryStep = new SimulationHistoryStep()
            {
                SimulationStep = SimulationStep,
                Vehicles       = new List <VehicleStepState>(),
                OpenOrders     = new List <HistoryOrder>(),
                ClosedOrders   = new List <HistoryCompletedOrder>()
            };

            foreach (var vehicle in Vehicles)
            {
                if (vehicle != null)
                {
                    var vehicleState = new VehicleStepState(vehicle.Vehicle)
                    {
                        State                 = vehicle.State,
                        PathToTarget          = vehicle.PathToTarget?.Select(p => p.Info.Name).ToList(),
                        CurrentVertexPosition = vehicle.CurrentVertexPosition?.Info?.Name,
                        CurrentTarget         = vehicle.CurrentTarget?.Info?.Name,
                        CurrentOrders         = new List <HistoryCompletedOrder>(vehicle.CurrentOrders?.Select(o =>
                                                                                                               new HistoryCompletedOrder(new HistoryOrder
                        {
                            Start         = o?.Start?.Info?.Name,
                            Target        = o?.Target?.Info?.Name,
                            PayloadWeight = o?.PayloadWeight
                        },
                                                                                                                                         o?.DeliveryTime,
                                                                                                                                         o?.DeliveryDistance,
                                                                                                                                         o?.DeliveryCost,
                                                                                                                                         o?.PickupTime,
                                                                                                                                         o?.PickupDistance,
                                                                                                                                         o?.PickupCost,
                                                                                                                                         o?.DeliveryPath?.Select(p => p.Info.Name).ToList())) ??
                                                                                 Array.Empty <HistoryCompletedOrder>()),
                        DistanceToCurrentTarget = vehicle.DistanceToCurrentTarget,
                        TimeToCurrentTarget     = vehicle.TimeToCurrentTarget,
                        DistanceTraveled        = vehicle.DistanceTraveled,
                        TotalTravelDistance     = vehicle.TotalTravelDistance,
                        TotalTravelTime         = vehicle.TotalTravelTime,
                        TotalIdleTime           = vehicle.TotalIdleTime,
                        CurrentFuelLoaded       = vehicle.CurrentFuelLoaded
                    };

                    simHistoryStep.Vehicles.Add(vehicleState);
                }
            }

            foreach (var openOrder in OpenOrders)
            {
                if (openOrder != null)
                {
                    var order = new HistoryOrder()
                    {
                        Start         = openOrder.Start?.Info.Name,
                        Target        = openOrder.Target?.Info.Name,
                        PayloadWeight = openOrder.PayloadWeight
                    };

                    simHistoryStep.OpenOrders.Add(order);
                }
            }

            foreach (var closedOrder in ClosedOrders)
            {
                if (closedOrder != null)
                {
                    var order = new HistoryCompletedOrder(new HistoryOrder(closedOrder.Order?.Start?.Info.Name, closedOrder.Order?.Target?.Info.Name, closedOrder.Order?.PayloadWeight))
                    {
                        DeliveryDistance = closedOrder.DeliveryDistance,
                        DeliveryTime     = closedOrder.DeliveryTime,
                        DeliveryPath     = closedOrder.DeliveryPath?.Select(p => p.Info.Name).ToList(),
                        DeliveryCost     = closedOrder.DeliveryCost,
                        PickupTime       = closedOrder.PickupTime,
                        PickupDistance   = closedOrder.PickupDistance,
                        PickupCost       = closedOrder.PickupCost
                    };

                    simHistoryStep.ClosedOrders.Add(order);
                }
            }

            SimulationHistory.Steps.Add(simHistoryStep);
        }