示例#1
0
        private void MakeRoutes(TransportationConfig config)
        {
            var configRoutes = config.Routes;

            if (configRoutes == null || !configRoutes.Any())
            {
                configRoutes = TransportationConfig.MakeDefault().Routes;
            }

            foreach (var route in configRoutes)
            {
                var dest = _locations[route.Key];
                _routsMap[dest] = route.Value
                                  .Select(item => new Route(_locations[item.start], _locations[item.finish], item.distance))
                                  .ToArray();
            }
        }
示例#2
0
        public Transportation(TransportationConfig config = default)
        {
            if (config == default)
            {
                config = TransportationConfig.MakeDefault();
            }

            MakeRoutes(config);
            var truckSpec = config.LoadingSpecs.SingleOrDefault(spec => spec.TypeOfVessel == VesselKind.Truck) ??
                            new LoadingSpecification(VesselKind.Truck, capacity: 1, loadUnloadDuration: 0);
            var shipSpec = config.LoadingSpecs.SingleOrDefault(spec => spec.TypeOfVessel == VesselKind.Ship) ??
                           new LoadingSpecification(VesselKind.Ship, capacity: 1, loadUnloadDuration: 0);

            _clock = new Clock(1);

            _transports.Add(new Transport(0, new Vessel("Truck 1", truckSpec), _locations["Factory"], _clock));
            _transports.Add(new Transport(1, new Vessel("Truck 2", truckSpec), _locations["Factory"], _clock));
            _transports.Add(new Transport(2, new Vessel("Ship", shipSpec), _locations["Port"], _clock));
        }