Esempio n. 1
0
        /// <summary>
        ///   Initializes a new instance.
        /// </summary>
        public VehicleSet(Vehicle[] vehicles)
        {
            Vehicles         = vehicles;
            _orderedVehicles = new Vehicle[Vehicles.Length];

            foreach (var vehicle in Vehicles)
            {
                Bind(nameof(vehicle.IsTunnelClosed), nameof(ForwardIsTunnelClosed));
            }

            LeftOHV.AddEffects <Vehicle.DriveLeftEffect>(vehicles.Where(vehicle => vehicle.Kind == VehicleKind.OverheightVehicle));
            LeftHV.AddEffects <Vehicle.DriveLeftEffect>(vehicles.Where(vehicle => vehicle.Kind == VehicleKind.HighVehicle));
            SlowTraffic.AddEffects <Vehicle.SlowTrafficEffect>(vehicles);

            if (PreventOverlappingWithStateConstraint)
            {
                for (var i = 0; i < Vehicles.Length; ++i)
                {
                    for (var j = i + 1; j < Vehicles.Length; ++j)
                    {
                        AddSensorConstraint(Vehicles[i], Vehicles[j], Model.PreControlPosition);
                        AddSensorConstraint(Vehicles[i], Vehicles[j], Model.MainControlPosition);
                        AddSensorConstraint(Vehicles[i], Vehicles[j], Model.EndControlPosition);
                    }
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        ///   Initializes a new instance.
        /// </summary>
        private Model(Vehicle[] vehicles = null)
        {
            vehicles = vehicles ?? new[]
            {
                new Vehicle {
                    Kind = VehicleKind.OverheightVehicle
                },
                new Vehicle {
                    Kind = VehicleKind.OverheightVehicle
                },
                new Vehicle {
                    Kind = VehicleKind.HighVehicle
                }
            };

            LeftOHV.AddEffects <Vehicle.DriveLeftEffect>(vehicles.Where(vehicle => vehicle.Kind == VehicleKind.OverheightVehicle));
            LeftHV.AddEffects <Vehicle.DriveLeftEffect>(vehicles.Where(vehicle => vehicle.Kind == VehicleKind.HighVehicle));
            SlowTraffic.AddEffects <Vehicle.SlowTrafficEffect>(vehicles);

            VehicleCollection = new VehicleCollection(vehicles);
        }