private void CheckForPurePassengerTrips(PurePassengerTripChain DriverTripChain, ModeChoiceTripChainData PassengerTripChainData, int driverIndex, int passengerIndex, int passengerTripChainIndex, Random random)
 {
     for (int j = 0; j < PassengerTripChainData.TripData.Length; j++)
     {
         float passengerEpsilon = float.NegativeInfinity;
         float v;
         if (PassengerTripChainData.TripChain.Trips[j].Mode.RequiresVehicle != null)
         {
             continue;
         }
         if (PassengerMode.CalculateV(DriverTripChain.Trips[0], PassengerTripChainData.TripChain.Trips[j], out v))
         {
             if (passengerEpsilon <= float.NegativeInfinity)
             {
                 passengerEpsilon = GenerateEpsilon(random);
             }
             var deltaU = v + passengerEpsilon + GenerateEpsilon(random) - GetUtilityOfTrips(PassengerTripChainData, j);
             if (deltaU > 0)
             {
                 PotentialTrips.Add(new PotentialPassengerTrip(DriverTripChain.Trips[0],
                                                               PassengerTripChainData.TripChain.Trips[j], deltaU, driverIndex, passengerIndex, passengerTripChainIndex, j));
             }
         }
     }
 }
        private PurePassengerTripChain CreateDriverTripChain(Time start, Time end, IZone homeZone, ITashaPerson driver)
        {
            var mode            = PassengerMode.AssociatedMode;
            var driverTrip      = PurePassengerTrip.MakeDriverTrip(homeZone, mode, start, end);
            var driverTripChain = new PurePassengerTripChain();

            driverTrip.TripChain = driverTripChain;
            driverTripChain.Trips.Add(driverTrip);
            driverTripChain.Person = driver;
            return(driverTripChain);
        }