private void LoadJobTypeDisribution() { JobTypeRates = SparseTwinIndex <float> .CreateSimilarArray(Root.ZoneSystem.ZoneArray, EmploymentStatus); var employmentIndexes = EmploymentStatus.ValidIndexies().ToArray(); using (CsvReader reader = new CsvReader(GetFullPath(JobEmploymentRateFile))) { if (JobEmploymentRateFileHeader) { reader.LoadLine(); } while (!reader.EndOfFile) { var length = reader.LoadLine(); if (length >= 3) { reader.Get(out int pd, 0); reader.Get(out float fulltime, 1); reader.Get(out float parttime, 2); if (PdZoneMap.TryGetValue(pd, out List <int> zones)) { foreach (var zone in zones) { JobTypeRates[zone, employmentIndexes[1]] = fulltime; JobTypeRates[zone, employmentIndexes[2]] = parttime; } } } } } }
private void LoadJobOccupationDistribution() { JobOccupationRates = SparseTriIndex <float> .CreateSimilarArray(Root.ZoneSystem.ZoneArray, EmploymentStatus, OccupationCategories); var employmentIndexes = EmploymentStatus.ValidIndexies().ToArray(); var occupationIndexes = OccupationCategories.ValidIndexies().ToArray(); using (CsvReader reader = new CsvReader(GetFullPath(JobOccupationRateFile))) { int pd; int employmentStatus; float professional; float general; float sales; float manufacturing; if (JobOccupationRateFileHeader) { reader.LoadLine(); } while (!reader.EndOfFile) { var length = reader.LoadLine(); if (length >= 5) { reader.Get(out pd, 0); reader.Get(out employmentStatus, 1); reader.Get(out professional, 2); reader.Get(out general, 3); reader.Get(out sales, 4); reader.Get(out manufacturing, 5); List <int> zones; if (PDZoneMap.TryGetValue(pd, out zones)) { foreach (var zone in zones) { this.JobOccupationRates[zone, employmentStatus, occupationIndexes[0]] = 0; this.JobOccupationRates[zone, employmentStatus, occupationIndexes[1]] = professional; this.JobOccupationRates[zone, employmentStatus, occupationIndexes[2]] = general; this.JobOccupationRates[zone, employmentStatus, occupationIndexes[3]] = sales; this.JobOccupationRates[zone, employmentStatus, occupationIndexes[4]] = manufacturing; } } } } } }
private void LoadDriversLicenseDistribution() { DriversLicenseRates = Root.ZoneSystem.ZoneArray.CreateSimilarArray <SparseTwinIndex <float> >(); var employmentIndexes = EmploymentStatus.ValidIndexies().ToArray(); using (CsvReader reader = new CsvReader(GetFullPath(DriversLicenseRateFile))) { int pd; int ageCat; int empStat; float chance; if (DriversLicenseRateFileHeader) { reader.LoadLine(); } while (!reader.EndOfFile) { var length = reader.LoadLine(); if (length >= 4) { reader.Get(out pd, 0); reader.Get(out ageCat, 1); reader.Get(out empStat, 2); reader.Get(out chance, 3); List <int> zones; if (PDZoneMap.TryGetValue(pd, out zones)) { foreach (var zone in zones) { var zoneData = this.DriversLicenseRates[zone]; if (zoneData == null) { zoneData = SparseTwinIndex <float> .CreateSimilarArray(AgeCategories, EmploymentStatus); this.DriversLicenseRates[zone] = zoneData; } zoneData[ageCat, empStat] = chance; } } } } } }
private void LoadJobTypeDisribution() { JobTypeRates = SparseTwinIndex <float> .CreateSimilarArray(Root.ZoneSystem.ZoneArray, EmploymentStatus); var employmentIndexes = EmploymentStatus.ValidIndexies().ToArray(); using (CommentedCsvReader reader = new CommentedCsvReader(JobEmploymentRateFile.GetFileName(Root.InputBaseDirectory))) { while (reader.NextLine()) { if (reader.NumberOfCurrentCells >= 3) { reader.Get(out int pd, 0); reader.Get(out float fulltime, 1); reader.Get(out float parttime, 2); foreach (var zone in PDZoneMap[pd]) { JobTypeRates[zone, employmentIndexes[1]] = fulltime; JobTypeRates[zone, employmentIndexes[2]] = parttime; } } } } }
public void LoadData() { Loaded = true; LoadPdZoneMap(); LoadCategoryInformation(); LoadAgeDist(); LoadEmploymentDist(); LoadOccupationDist(); LoadStudentDist(); LoadJobOccupationDistribution(); LoadJobTypeDisribution(); LoadDriversLicenseDistribution(); LoadNumberOfCarsDistribution(); if (SaveDataIntoZones) { foreach (var zone in Root.ZoneSystem.ZoneArray.ValidIndexies()) { var z = Root.ZoneSystem.ZoneArray[zone]; float generalworker = 0; float manufacturingworker = 0; float professionalworker = 0; float salesWorker = 0; float generalJob = 0; float manufacturingJob = 0; float professionalJob = 0; float salesJob = 0; var occRates = OccupationRates[zone]; var empData = EmploymentStatusRates[zone]; if (occRates != null && empData != null) { foreach (var age in AgeCategories.ValidIndexies()) { var agePop = z.Population * AgeRates[zone, age]; foreach (var status in EmploymentStatus.ValidIndexies()) { var statusPop = agePop * empData[age, status]; professionalworker += statusPop * occRates[age, status, 1]; generalworker += statusPop * occRates[age, status, 2]; salesWorker += statusPop * occRates[age, status, 3]; manufacturingworker += statusPop * occRates[age, status, 4]; } } foreach (var status in EmploymentStatus.ValidIndexies()) { var statusJobPop = z.Employment * JobTypeRates[zone, status]; professionalJob += statusJobPop * JobOccupationRates[zone, status, 1]; generalJob += statusJobPop * JobOccupationRates[zone, status, 2]; salesJob += statusJobPop * JobOccupationRates[zone, status, 3]; manufacturingJob += statusJobPop * JobOccupationRates[zone, status, 4]; } } z.GeneralEmployment = generalJob; z.ManufacturingEmployment = manufacturingJob; z.ProfessionalEmployment = professionalJob; z.RetailEmployment = salesJob; z.WorkGeneral = generalworker; z.WorkManufacturing = manufacturingworker; z.WorkProfessional = professionalworker; z.WorkRetail = salesWorker; } } }