void Start() { serialData = FindObjectOfType<SerialData>(); if (!decisionSegment) { startSegment = transform.FindChild ("BeginSegment").GetComponent<SegmentZone> (); middleSegment = transform.FindChild ("MiddleSegment").GetComponent<SegmentZone> (); endSegment = transform.FindChild ("EndSegment").GetComponent<SegmentZone> (); } }
private static void RunExport(string path) { string directory = Path.GetDirectoryName(path); if (directory == null) { return; } string filename = Path.GetFileNameWithoutExtension(path); string extension = Path.GetExtension(path); int segmentCount = Global.SegmentZones.GetLength(0); IPersisterReader <IZone> zoneReader = Global .ContainerDaySim.GetInstance <IPersistenceFactory <IZone> >() .Reader; for (int segment = 0; segment < segmentCount; segment++) { FileInfo file = new FileInfo(Path.Combine(directory, string.Format("{0}.{1}{2}", filename, segment, extension))); using (StreamWriter writer = new StreamWriter(file.Open(FileMode.Create, FileAccess.Write, FileShare.Read))) { SegmentZone[] segmentZones = Global.SegmentZones[segment]; int zoneCount = segmentZones.GetLength(0); FileInfo sizesFile = new FileInfo(Path.Combine(directory, string.Format("{0}.{1}.sizes{2}", filename, segment, extension))); StreamWriter sizesWriter = new StreamWriter(sizesFile.Open(FileMode.Create, FileAccess.Write, FileShare.Read)); FileInfo weightsFile = new FileInfo(Path.Combine(directory, string.Format("{0}.{1}.weights{2}", filename, segment, extension))); StreamWriter weightsWriter = new StreamWriter(weightsFile.Open(FileMode.Create, FileAccess.Write, FileShare.Read)); for (int zoneId = 0; zoneId < zoneCount; zoneId++) { SegmentZone segmentZone = segmentZones[zoneId]; if (segmentZone == null) { continue; } IZone zone = zoneReader.Seek(zoneId); writer.Write(zone.Key); writer.Write("\t"); writer.Write(segmentZone.TotalSize.ToString("f7")); writer.Write("\t"); writer.Write(segmentZone.TotalWeight.ToString("f7")); writer.WriteLine(); ExportRankedSizes(sizesWriter, zone.Key, segmentZone.RankedSizes); ExportRankedWeights(weightsWriter, zone.Key, zoneReader, segmentZone.RankedWeights); sizesWriter.Flush(); weightsWriter.Flush(); } sizesWriter.Dispose(); weightsWriter.Dispose(); } Global.PrintFile.WriteFileInfo(file, true); } }
private SegmentZone[] ComputeSegment(int segment) { double[] sizeFactors = Global.ContainerDaySim.GetInstance <SamplingWeightsSettingsFactory>().SamplingWeightsSettings.SizeFactors[segment]; double[] weightFactors = Global.ContainerDaySim.GetInstance <SamplingWeightsSettingsFactory>().SamplingWeightsSettings.WeightFactors[segment]; SegmentZone[] segmentZones = new SegmentZone[_zoneCount]; foreach (IParcelWrapper parcel in _eligibleParcels) { SegmentZone segmentZone = segmentZones[parcel.ZoneId]; IZone zone = _eligibleZones[parcel.ZoneId]; if (segmentZone == null) { segmentZone = new SegmentZone(_parcelCounts[parcel.ZoneId], _zoneCount) { Id = parcel.ZoneId, Key = zone.Key }; segmentZones[segmentZone.Id] = segmentZone; } double openSpace = (Global.Configuration.UseParcelLandUseCodeAsSquareFeetOpenSpace) ? parcel.LandUseCode : parcel.OpenSpaceType2Buffer1; double openSpaceSize = (Global.Configuration.UseLogOfSquareFeetOpenSpaceInDestinationSampling || Global.Configuration.UseParcelLandUseCodeAsSquareFeetOpenSpace) ? Math.Log(openSpace + 1.0) : openSpace; double factor = Math.Exp(sizeFactors[0]) * parcel.EmploymentEducation + Math.Exp(sizeFactors[1]) * parcel.EmploymentFood + Math.Exp(sizeFactors[2]) * parcel.EmploymentGovernment + Math.Exp(sizeFactors[3]) * parcel.EmploymentIndustrial + Math.Exp(sizeFactors[4]) * parcel.EmploymentMedical + Math.Exp(sizeFactors[5]) * parcel.EmploymentOffice + Math.Exp(sizeFactors[6]) * parcel.EmploymentAgricultureConstruction + Math.Exp(sizeFactors[7]) * parcel.EmploymentRetail + Math.Exp(sizeFactors[8]) * parcel.EmploymentService + Math.Exp(sizeFactors[9]) * parcel.EmploymentTotal + Math.Exp(sizeFactors[10]) * parcel.Households + Math.Exp(sizeFactors[11]) * parcel.StudentsK8 + Math.Exp(sizeFactors[12]) * parcel.StudentsUniversity + Math.Exp(sizeFactors[13]) * parcel.GetLandUseCode19() + Math.Exp(sizeFactors[14]) * parcel.OpenSpaceType1Buffer1 + Math.Exp(sizeFactors[15]) * openSpaceSize + Math.Exp(sizeFactors[16]) * parcel.StudentsHighSchool; double size = 100 * factor; if (size >= Global.Configuration.MinParcelSize) { segmentZone.TotalSize += size; } segmentZone.SetSize(parcel.Sequence, parcel.Id, size); } foreach (SegmentZone origin in segmentZones.Where(o => o != null)) { origin.RankSizes(); foreach (SegmentZone destination in segmentZones.Where(d => d != null)) { SkimValue skimValue = ImpedanceRoster.GetValue(_variableName, _mode, _pathType, _vot, _minute, origin.Id, destination.Id); //jb 20130707 mimic mb fix for 0 intrazonals if (Global.Configuration.DestinationScale == Global.Settings.DestinationScales.Zone && origin.Id == destination.Id && skimValue.Variable < Constants.EPSILON) { if (_variableName == "distance") { skimValue.Variable = 0.25 * Global.Settings.DistanceUnitsPerMile; } else if (_variableName == "ivtime" || _variableName == "time" || _variableName == "ivtfree") { skimValue.Variable = (_mode == Global.Settings.Modes.Walk) ? 5 : (_mode == Global.Settings.Modes.Bike) ? 2 : (_mode > Global.Settings.Modes.Bike && _mode < Global.Settings.Modes.Transit) ? 1 : 0; } } double sovInVehicleTime = skimValue.Variable; // give 0 weight if not connected in SOV matrix double weight = sovInVehicleTime < Constants.EPSILON ? 0.0 : Math.Exp(-2 * sovInVehicleTime * 100 / weightFactors[0]) * destination.TotalSize; origin.TotalWeight += weight; origin.SetWeight(destination.Id, weight); } origin.RankWeights(); } return(segmentZones); }
public void SetCurrentSegment(SegmentZone z) { serialData.currentSegment = z; }