private List<double> GetUtilityValuesForOccupation(Person person, SpatialZone curZ) { var currValues = new List<double>(5); currValues.Add(1); int twoAdultsChildren = Convert.ToInt32(person.GetHhld().GetHhldSize() == HouseholdSize.TwoAdultsChildren); int twoPlusAdultsChildren = Convert.ToInt32(person.GetHhld().GetHhldSize() == HouseholdSize.TwoAdultsChildren || person.GetHhld().GetHhldSize() == HouseholdSize.ThreeOrMoreAdultsChildren); int homeFT = Convert.ToInt32(person.GetEmploymentStatus() == EmploymentStatus.FullTimeHome); int homePT = Convert.ToInt32(person.GetEmploymentStatus() == EmploymentStatus.PartTimeHome); int PT = Convert.ToInt32(person.GetEmploymentStatus() == EmploymentStatus.PartTime); int apart = Convert.ToInt32(person.GetHhld().GetDwellingType() == DwellingType.Apartment); int eighteen = Convert.ToInt32(person.GetAge() == Age.EighteenToTwentyFive); int twentysix = Convert.ToInt32(person.GetAge() == Age.TwentySixToThirty); int fortyone = Convert.ToInt32(person.GetAge() == Age.FortyOneToFifty); int fiftyone = Convert.ToInt32(person.GetAge() == Age.FiftyOneToFiftyFour); int fiftyfive = Convert.ToInt32(person.GetAge() == Age.FiftyfiveToSixtyFour); int thirtyone = Convert.ToInt32(person.GetAge() == Age.ThirtyOneToForty); int threePlusCars = Convert.ToInt32(person.GetHhld().GetNumOfCars() == NumOfCars.ThreeOrMore); double z_manConst = curZ.GetPersonOccuMarginal().GetValue("1"); int oneAdultChildren = Convert.ToInt32(person.GetHhld().GetHhldSize() == HouseholdSize.OneAdultOneChild); int twoAdults = Convert.ToInt32(person.GetHhld().GetHhldSize() == HouseholdSize.Twoadults); int twoPlusAdults = Convert.ToInt32(person.GetHhld().GetHhldSize() == HouseholdSize.ThreeOrMoreAdults || person.GetHhld().GetHhldSize() == HouseholdSize.Twoadults); int oneCar = Convert.ToInt32(person.GetHhld().GetNumOfCars() == NumOfCars.OneCar); int twoCars = Convert.ToInt32(person.GetHhld().GetNumOfCars() == NumOfCars.TwoCars); currValues.Add(Math.Exp(-1.95 * 1.00 + -0.746 * oneAdultChildren + 0.280 * twoAdults + 0.594 * twoAdultsChildren + 0.556 * twoPlusAdults + 0.827 * twoPlusAdultsChildren + 0.247 * apart + 0.0751 * oneCar + 0.0867 * threePlusCars + 2.13 * homeFT + 0.237 * homePT + 0.841 * PT + -0.106 * eighteen + -0.123 * twentysix + -0.137 * thirtyone + 0.145 * fiftyone + 0.140 * fiftyfive + 16.1 * z_manConst)); int town = Convert.ToInt32(person.GetHhld().GetDwellingType() == DwellingType.Townhouse); int fourteen = Convert.ToInt32(person.GetAge() == Age.FourteenToFifteen); int sixteen = Convert.ToInt32(person.GetAge() == Age.SixteenToSeventeen); int sixtyfivePlus = Convert.ToInt32(person.GetAge() == Age.MoreThanSixtyFive); double z_profMan = curZ.GetPersonOccuMarginal().GetValue("2"); currValues.Add(Math.Exp(-0.648 * 1.00 + -0.0753 * twoAdults + 0.121 * twoAdultsChildren + -0.243 * twoPlusAdults + -0.110 * twoPlusAdultsChildren + -0.265 * apart + -0.147 * town + 0.271 * oneCar + 0.337 * twoCars + 0.303 * threePlusCars + 2.31 * homeFT + -1.02 * fourteen + -0.866 * sixteen + -0.389 * eighteen + 0.0738 * thirtyone + 0.229 * sixtyfivePlus + 7.22 * z_profMan)); int eleven = Convert.ToInt32(person.GetAge() == Age.ElevenToThirteen); double z_retail = curZ.GetPersonOccuMarginal().GetValue("3"); currValues.Add(Math.Exp(-1.05 * 1.00 + 0.308 * oneAdultChildren + 0.205 * twoAdults + 0.479 * twoAdultsChildren + 0.379 * twoPlusAdults + 0.781 * twoPlusAdultsChildren + 0.220 * apart + 0.108 * town + -0.152 * oneCar + -0.245 * twoCars + -0.27 * threePlusCars + 2.85 * homeFT + 1.48 * homePT + 2.30 * PT + 3.90 * eleven + 2.20 * fourteen + 2.22 * sixteen + 0.507 * eighteen + 0.160 * twentysix + 0.0563 * fiftyone + 0.129 * fiftyfive + 0.398 * sixtyfivePlus + 6.32 * z_retail)); double z_oNE = curZ.GetPersonOccuMarginal().GetValue("4"); currValues.Add(Math.Exp(0.743 * 1.00 + 2.37 * oneAdultChildren + 0.298 * twoAdults + 2.47 * twoAdultsChildren + 0.437 * twoPlusAdults + 2.12 * twoPlusAdultsChildren + 0.114 * apart + -0.0672 * town + -0.63 * oneCar + -1.08 * twoCars + -1.33 * threePlusCars + 8.71 * eleven + 5.34 * fourteen + 3.87 * sixteen + 0.969 * eighteen + -0.842 * twentysix + -1.70 * thirtyone + -0.528 * fiftyone + 0.517 * fiftyfive + 3.08 * sixtyfivePlus + 0.854 * z_oNE)); return currValues; }