Example #1
0
        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;
        }
Example #3
0
        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);
        }
Example #5
0
        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();
            }
        }
Example #6
0
        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));
        }