function __construct(array $vehicles, array $shifts)
 {
     $this->drivers = array();
     $this->vehicles = $vehicles;
     shuffle($this->vehicles);
     // randomize sort order of available vehicles
     $this->resources = array();
     /** @var Shift $shift */
     foreach ($shifts as $shift) {
         /** @var Vehicle $vehicle */
         foreach ($vehicles as $vehicle) {
             $this->resources[$shift->getId()][$vehicle->getId()] = false;
         }
         /** @var DrivingAssertion $drivingAssertion */
         foreach ($shift->getDrivingAssertions() as $drivingAssertion) {
             /** @var Driver $driver */
             $driver = $drivingAssertion->getDriver();
             $id = $driver->getId();
             if (array_key_exists($id, $this->drivers)) {
                 $dto = $this->drivers[$id];
             } else {
                 $dto = new DispositionResourcesDTO($driver);
             }
             $dto->addShift($shift);
             $dto->addDrivingPool($drivingAssertion->getDrivingPool());
             $this->drivers[$id] = $dto;
         }
     }
     shuffle($this->drivers);
     // randomize sort order of drivers array
 }
 function __construct(array $shiftObjs)
 {
     $this->drivers = array();
     /** @var Shift $shift */
     foreach ($shiftObjs as $shift) {
         /** @var DrivingAssertion $drivingAssertion */
         foreach ($shift->getDrivingAssertions() as $drivingAssertion) {
             /** @var Driver $driver */
             $driver = $drivingAssertion->getDriver();
             $id = $driver->getId();
             if (array_key_exists($id, $this->drivers)) {
                 /** @var DispositionResourcesDTO $dto */
                 $dto = $this->drivers[$id];
             } else {
                 $dto = new DispositionResourcesDTO($driver);
             }
             $dto->addShift($shift);
             $dto->addDrivingAssertion($drivingAssertion);
             $this->drivers[$id] = $dto;
         }
     }
     shuffle($this->drivers);
     // randomize sort order of drivers array
 }