private Address GetAdressObject(PersonWithMetadata person) { var hasPostalCode = MultivariateBinaryGenerator.Hit(PersonStatisticKeys.HasPostalCode, person.BooleanSamples, person.Randy.Hit(_model.Statistics.GetClosestStatisticByAgeQuant(person).HasPostalCode.TrueRatioPercent)); string postalCode = null; while (postalCode == null) { postalCode = _model.Statistics.PostalCode.Sample(person.Randy); } if (!_adresses.ContainsKey(postalCode) || _adresses[postalCode].All(a => a.Claimed)) { MakeAdresses(postalCode, 100, person); } var adress = _adresses[postalCode].First(x => !x.Claimed); if (adress.AdressElement != null) { ConvertFromAdressElement(adress, person); } adress.Claimed = true; if (!hasPostalCode) { adress.PostalCode = null; } return(adress); }
private static void SetSigma(PersonStatistics personStats, CorrelationMatrix correlationMatrix) { var allBooleans = BooleanStatistic.GetAll(personStats); allBooleans = ExcludeNonvariantStatistcs(allBooleans); var sigma = new MultivariateBinaryGenerator(); sigma.BuildCoverianceMatrix(allBooleans, correlationMatrix, RIntegration.GetSigma); personStats.BinaryGenerator = sigma; }
private void SetNewNin(PersonWithMetadata person, bool isFemale) { var hasNewNin = MultivariateBinaryGenerator.Hit(PersonStatisticKeys.HasNewNIN, person.BooleanSamples, person.Randy.Hit(_pHasNewNin(person))); if (!hasNewNin) { return; } var bdayAndNin = GetNonTakenBirthdayAndNin(person, isFemale, false); person.Person.NewNIN = bdayAndNin.Item2; }
private void SetCityzenship(PersonWithMetadata nextPerson) { var sample = MultivariateBinaryGenerator.Sample(PersonStatisticKeys.HasCitizenship, nextPerson.BooleanSamples, Model.Statistics.GetClosestStatisticByAgeQuant(nextPerson).Citizenship_And_CitizenshipCode, _randomizer); if (sample == null || !sample.Contains("_")) { return; } var splitted = sample.Split('_'); nextPerson.Person.Citizenship = splitted[0] == "null" ? null : splitted[0]; nextPerson.Person.CitizenshipCode = splitted[1] == "null" ? null : splitted[1]; nextPerson.Person.DateCitizenship = Model.Statistics.GetClosestStatisticByAgeQuant(nextPerson).DateCitizenship.GetDateTimeFromModel(nextPerson, nextPerson.Person.Citizenship); }
private void SetDufNo(PersonWithMetadata p) { var hasDufNo = MultivariateBinaryGenerator.Hit(PersonStatisticKeys.HasDufNo, p.BooleanSamples, p.Randy.Hit(_pDufNo(p))); if (!hasDufNo) { return; } var firstApplicationYear = DateTime.Now.Year - p.Randy.Next(p.Age); p.Person.DufNo = firstApplicationYear.ToString(); for (int i = 0; i < 8; i++) { p.Person.DufNo += p.Randy.Next(10).ToString(); } }
public void SetProperties(PersonWithMetadata person) { if (!string.IsNullOrEmpty(person.Person.NIN)) { return; } person.HasDnummer = MultivariateBinaryGenerator.Hit(PersonStatisticKeys.HasDnummer, person.BooleanSamples, person.Randy.Hit(_pHasDnummer(person))); person.IsFemale = _getKjonnIsFemale(person); var bdayAndNin = GetNonTakenBirthdayAndNin(person, person.IsFemale, person.HasDnummer); person.Person.NIN = bdayAndNin.Item2; person.Person.DateOfBirth = bdayAndNin.Item1; SetOldNin(person, person.IsFemale); //SetNewNin(person, person.IsFemale); SetDufNo(person); }
public void SetProperties(PersonWithMetadata person) { bool?isDead = person.BooleanSamples.ContainsKey(PersonStatisticKeys.IsDead) ? MultivariateBinaryGenerator.Hit(PersonStatisticKeys.IsDead, person.BooleanSamples, false) : (bool?)null; var stat = _model.Statistics.GetClosestStatisticByAgeQuant(person).RegStatus; if (!isDead.HasValue) { person.Person.RegStatus = stat?.Sample(person.Randy); } else { if (isDead.Value) { person.Person.RegStatus = 5; } else { int count = 1000; while (count-- > 0) { var sample = stat.Sample(person.Randy); if (sample.HasValue && sample.Value == 5) { continue; } person.Person.RegStatus = sample; break; } } } person.Person.DateStatus = _model.Statistics.GetClosestStatisticByAgeQuant(person).RegstatusStatistics.DateDifference.GetDateTimeFromModel(person, person.Person.RegStatus); }
private IEnumerable <Person> DoNextBunch(int howMany) { _persons = new Dictionary <string, PersonWithMetadata>(howMany); var stopw = new Stopwatch(); stopw.Start(); while (howMany-- > 0) { var nextPerson = GetInitialPerson(); nextPerson.Randy = _randomizer; nextPerson.BooleanSamples = Model.Statistics.BinaryGenerator.NextRow(Model.Statistics.GetClosestStatisticByAgeQuant(nextPerson)); IdentificatorModel.SetProperties(nextPerson); NameModel.SetProperties(nextPerson); RegstatusModel.SetProperties(nextPerson); AdressModel.SetProperties(nextPerson); RelationshipModel.SetProperties(nextPerson); nextPerson.Person.DateCustody = Model.Statistics.GetClosestStatisticByAgeQuant(nextPerson).DateCustody.GetDateTimeFromModel(nextPerson, nextPerson.Person.Custody); //disse er offisielt sett null //nextPerson.Person.WithoutLegalCapacity = MultivariateBinaryGenerator.Sample(PersonStatisticKeys.HasWithoutLegalCapacity, nextPerson.BooleanSamples, Model.Statistics.GetClosestStatisticByAgeQuant(nextPerson).WithoutLegalCapacity, _randomizer); //nextPerson.Person.DateWithoutLegalCapacity = Model.Statistics.GetClosestStatisticByAgeQuant(nextPerson).DateWithoutLegalCapacity.GetDateTimeFromModel(nextPerson, nextPerson.Person.WithoutLegalCapacity); nextPerson.Person.WorkPermit = MultivariateBinaryGenerator.Sample(PersonStatisticKeys.HasWorkPermit, nextPerson.BooleanSamples, Model.Statistics.GetClosestStatisticByAgeQuant(nextPerson).WorkPermit, _randomizer); nextPerson.Person.DateWorkPermit = Model.Statistics.GetClosestStatisticByAgeQuant(nextPerson).DateWorkPermit.GetDateTimeFromModel(nextPerson, nextPerson.Person.WorkPermit); nextPerson.Person.ParentalResponsibility = Model.Statistics.GetClosestStatisticByAgeQuant(nextPerson).ParentalResponsibility.Sample(_randomizer); nextPerson.Person.DateParentalResponsibility = Model.Statistics.GetClosestStatisticByAgeQuant(nextPerson).DateParentalResponsibility.GetDateTimeFromModel(nextPerson, nextPerson.Person.ParentalResponsibility); nextPerson.Person.StatusCountryCode = MultivariateBinaryGenerator.Sample(PersonStatisticKeys.HasStatusCountryCode, nextPerson.BooleanSamples, Model.Statistics.StatusCountryCode, _randomizer); SetCityzenship(nextPerson); _persons.Add(nextPerson.Person.NIN, nextPerson); if (!string.IsNullOrEmpty(nextPerson.Person.OldNIN)) { var clone = Cloner.Clone(nextPerson); clone.Person.NewNIN = nextPerson.Person.NIN; clone.Person.OldNIN = null; clone.Person.NIN = nextPerson.Person.OldNIN; clone.Married = false; clone.NumberOfKids = 0; clone.MotherSearch = null; clone.FatherSearch = null; clone.Person.FathersNIN = null; clone.Person.MothersNIN = null; clone.Person.SpouseNIN = null; _persons.Add(clone.Person.NIN, clone); } } stopw.Stop(); ConsoleWriteline("Done generating isolated persons. It took " + stopw.Elapsed.TotalMinutes + " minutes"); stopw.Restart(); RelationshipModel.BringPeopleTogether(_persons, _randomizer, ConsoleWriteline); foreach (var person in _persons) { SivilstatusModel.SetProperties(person.Value); } stopw.Stop(); ConsoleWriteline("Done generating relationsship within persons. It took " + stopw.Elapsed.TotalMinutes + " minutes"); return(_persons.Values.Select(x => x.Person)); }