Beispiel #1
0
        public void Run(IHouseholdWrapper household)
        {
            if (household == null)
            {
                throw new ArgumentNullException("household");
            }

            household.ResetRandom(4);

            if (Global.Configuration.IsInEstimationMode)
            {
                if (Global.Configuration.EstimationModel != CHOICE_MODEL_NAME)
                {
                    return;
                }
            }
            else if (Global.Configuration.AV_IncludeAutoTypeChoice)
            {
                ChoiceProbabilityCalculator AVchoiceProbabilityCalculator = _helpers[ParallelUtility.threadLocalAssignedIndex.Value].GetChoiceProbabilityCalculator(household.Id);
                RunAVModel(AVchoiceProbabilityCalculator, household);
                ChoiceProbabilityCalculator.Alternative chosenAlternative = AVchoiceProbabilityCalculator.SimulateChoice(household.RandomUtility);
                int choice = (int)chosenAlternative.Choice;

                household.OwnsAutomatedVehicles = choice;
            }


            ChoiceProbabilityCalculator choiceProbabilityCalculator = _helpers[ParallelUtility.threadLocalAssignedIndex.Value].GetChoiceProbabilityCalculator(household.Id);

            if (household.VehiclesAvailable > 4)
            {
                household.VehiclesAvailable = 4;
            }

            if (_helpers[ParallelUtility.threadLocalAssignedIndex.Value].ModelIsInEstimationMode)
            {
                RunModel(choiceProbabilityCalculator, household, household.VehiclesAvailable);

                choiceProbabilityCalculator.WriteObservation();
            }
            else
            {
                RunModel(choiceProbabilityCalculator, household);

                ChoiceProbabilityCalculator.Alternative chosenAlternative = choiceProbabilityCalculator.SimulateChoice(household.RandomUtility);
                int choice = (int)chosenAlternative.Choice;

                household.VehiclesAvailable = choice;
            }
        }
        public void Run(IHouseholdWrapper household)
        {
            if (household == null)
            {
                throw new ArgumentNullException("household");
            }

            household.ResetRandom(4);

            if (Global.Configuration.IsInEstimationMode)
            {
                if (Global.Configuration.EstimationModel != CHOICE_MODEL_NAME)
                {
                    return;
                }
            }

            var choiceProbabilityCalculator = _helpers[ParallelUtility.GetBatchFromThreadId()].GetChoiceProbabilityCalculator(household.Id);

            if (household.VehiclesAvailable > 4)
            {
                household.VehiclesAvailable = 4;
            }

            if (_helpers[ParallelUtility.GetBatchFromThreadId()].ModelIsInEstimationMode)
            {
                RunModel(choiceProbabilityCalculator, household, household.VehiclesAvailable);

                choiceProbabilityCalculator.WriteObservation();
            }
            else
            {
                RunModel(choiceProbabilityCalculator, household);

                var chosenAlternative = choiceProbabilityCalculator.SimulateChoice(household.RandomUtility);
                var choice            = (int)chosenAlternative.Choice;

                household.VehiclesAvailable = choice;
            }
        }