/////////////////////////////////// public SpatialZone() { /////////////////////////////////// // For Household Synthesis //censusPersonConditionals = new DiscreteCondDistribution(); modelIncConditionals = new ModelDistribution(); modelIncConditionals.SetDimensionName("IncomeLevel"); modelUnivDegConditionals = new ModelDistribution(); modelUnivDegConditionals.SetDimensionName("NumWithUnivDeg"); modelDwellConditionals = new ModelDistribution(); modelDwellConditionals.SetDimensionName("DwellingType"); modelCarsConditionals = new ModelDistribution(); modelCarsConditionals.SetDimensionName("NumOfCars"); myDwellMarginal = new DiscreteMarginalDistribution(); myDwellMarginal.SetDimensionName("DwellingType"); myDwellMarginalCounts = new DiscreteMarginalDistribution(); myDwellMarginalCounts.SetDimensionName("DwellingType"); myCarsMarginal = new DiscreteMarginalDistribution(); myCarsMarginal.SetDimensionName("NumOfCars"); myPersonMarginal = new DiscreteMarginalDistribution(); myPersonMarginal.SetDimensionName("HouseholdSize"); /////////////////////////////////// /////////////////////////////////// // For Person Synthesis myHhldSize2Marginal = new DiscreteMarginalDistribution(); myHhldSize2Marginal.SetDimensionName("HouseholdSize2"); mySexMarginal = new DiscreteMarginalDistribution(); mySexMarginal.SetDimensionName("Sex"); myAgeMarginal = new DiscreteMarginalDistribution(); myAgeMarginal.SetDimensionName("MaritalStatus"); myEducationMarginal = new DiscreteMarginalDistribution(); myEducationMarginal.SetDimensionName("EducationLevel"); myAgeConditional = new DiscreteCondDistribution(); myAgeConditional.SetDimensionName("Age"); mySexConditional = new DiscreteCondDistribution(); mySexConditional.SetDimensionName("Sex"); myHhldSizeConditional = new DiscreteCondDistribution(); myHhldSizeConditional.SetDimensionName("HouseholdSize2"); myEduLevelConditional = new DiscreteCondDistribution(); myEduLevelConditional.SetDimensionName("EducationLevel"); }
public Household GetNextAgent(ModelDistribution g_x, string dimension, Household prvAgent, SpatialZone currZone) { StateGenerator currStateGen = new StateGenerator(); currStateGen.SetParameters(currZone.GetAverageIncome(), currZone.GetAverageIncome() * 2); double q_previous; double q_current = 0.00; double expIncome = Math.Log(prvAgent.GetIncome()); KeyValDoublePair currPair = new KeyValDoublePair(); //start with mean value currPair.Category = currStateGen.GetMean(); currPair.Val = currStateGen.GetTransitionProbablity(currPair.Category); for (int i = 0; i < Constants.WARMUP_ITERATIONS; i++) { q_previous = currStateGen.GetTransitionProbablity( Math.Log((double)prvAgent.GetIncome())); q_current = currPair.Val; IncomeLevel prevLvl = IncomeConvertor.ConvertValueToLevel( (uint) Math.Exp(expIncome)); IncomeLevel currLvl = IncomeConvertor.ConvertValueToLevel( (uint) Math.Exp(currPair.Category)); double b_prev = g_x.GetValue(dimension, prevLvl.ToString(), prvAgent.GetNewJointKey(dimension), currZone); double b_curr = g_x.GetValue(dimension, currLvl.ToString(), prvAgent.GetNewJointKey(dimension), currZone); if (b_prev == 0.00) b_prev = 0.0000001; if (b_curr == 0.00) b_curr = 0.0000001; if (q_current == 0.00) q_current = 0.0000001; double comVal = (b_curr * q_previous) / (b_prev * q_current); if (comVal == 0.00) comVal = 0.0000001; if (randGen.NextDouble() < comVal) { expIncome = currPair.Category; } currPair = currStateGen.GetNextState(); } return prvAgent.CreateNewCopy((uint)Math.Exp(expIncome)); }
/////////////////////////////////// public SpatialZone() { /////////////////////////////////// // For Household Synthesis //censusPersonConditionals = new DiscreteCondDistribution(); modelIncConditionals = new ModelDistribution(); modelIncConditionals.SetDimensionName("IncomeLevel"); modelUnivDegConditionals = new ModelDistribution(); modelUnivDegConditionals.SetDimensionName("NumWithUnivDeg"); modelDwellConditionals = new ModelDistribution(); modelDwellConditionals.SetDimensionName("DwellingType"); modelCarsConditionals = new ModelDistribution(); modelCarsConditionals.SetDimensionName("NumOfCars"); modelNumberOfPeopleConditionals = new ModelDistribution(); modelNumberOfPeopleConditionals.SetDimensionName("NumOfPeople"); modelKidsConditionals = new ModelDistribution(); modelKidsConditionals.SetDimensionName("NumOfKids"); modelHouseHoldTypeConditionals = new ModelDistribution(); modelHouseHoldTypeConditionals.SetDimensionName("HouseholdSize"); myDwellMarginal = new DiscreteMarginalDistribution(); myDwellMarginal.SetDimensionName("DwellingType"); myDwellMarginalCounts = new DiscreteMarginalDistribution(); myDwellMarginalCounts.SetDimensionName("DwellingType"); myCarsMarginal = new DiscreteMarginalDistribution(); myCarsMarginal.SetDimensionName("NumOfCars"); myPersonMarginal = new DiscreteMarginalDistribution(); myPersonMarginal.SetDimensionName("HouseholdSize"); /////////////////////////////////// /////////////////////////////////// // For Person Synthesis /* modelPublicTransitConditionals = new ModelDistribution(); modelPublicTransitConditionals.SetDimensionName("PublicTransitPass");*/ myHhldSize2Marginal = new DiscreteMarginalDistribution(); myHhldSize2Marginal.SetDimensionName("HouseholdSize2"); mySexMarginal = new DiscreteMarginalDistribution(); mySexMarginal.SetDimensionName("Sex"); myAgeMarginal = new DiscreteMarginalDistribution(); myAgeMarginal.SetDimensionName("Age"); myEducationMarginal = new DiscreteMarginalDistribution(); myEducationMarginal.SetDimensionName("EducationLevel"); myOccupationMarginal = new DiscreteMarginalDistribution(); myOccupationMarginal.SetDimensionName("Occupation"); myAgeConditional = new DiscreteCondDistribution(); myAgeConditional.SetDimensionName("Age"); mySexConditional = new DiscreteCondDistribution(); mySexConditional.SetDimensionName("Sex"); myHhldSizeConditional = new DiscreteCondDistribution(); myHhldSizeConditional.SetDimensionName("HouseholdSize2"); myEduLevelConditional = new DiscreteCondDistribution(); myEduLevelConditional.SetDimensionName("EducationLevel"); modelAgeConditionals = new ModelDistribution();// modelAgeConditionals.SetDimensionName("Age"); modelEmploymentStatus = new ModelDistribution();// modelEmploymentStatus.SetDimensionName("EmploymentStatus"); /* modelPublicTransitConditionals = new ModelDistribution();// modelPublicTransitConditionals.SetDimensionName("PublicTransitPass");*/ modelOccupationConditionals = new ModelDistribution();// modelOccupationConditionals.SetDimensionName("Occupation"); modelSexConditionals = new ModelDistribution();// modelSexConditionals.SetDimensionName("Sex"); modelDriverLicenseConditionals = new ModelDistribution();// modelDriverLicenseConditionals.SetDimensionName("DrivingLicense"); }