private void LoadInBaseData(SparseTwinIndex <float> ret, IReadODData <float> data) { foreach (var point in data.Read()) { ret[point.O, point.D] = point.Data; } }
private SparseTwinIndex <float> BuildOD(IReadODData <float> dataSource, int modeChoiceIndex, int demographicIndex) { // Setup the mode choice to have the right parameters Root.ModeParameterDatabase.ApplyParameterSet(modeChoiceIndex, demographicIndex); // build a matrix to store var ret = Root.ZoneSystem.ZoneArray.CreateSquareTwinArray <float>(); // there is no point trying to do this in parallel since most likely everything is being streamed off of disk anyways foreach (var dataPoint in dataSource.Read()) { // no point trying to use the flat structure since we are dealing with entries from sparse space ret[dataPoint.O, dataPoint.D] = dataPoint.Data; } return(ret); }
private void GatherData(SparseTwinIndex <float> storage, IReadODData <float> dataSource, string taskName) { foreach (var point in dataSource.Read()) { if (storage.ContainsIndex(point.O, point.D)) { storage[point.O, point.D] = point.Data; } else { throw new XTMFRuntimeException(this, "In '" + Name + "' while gathering the " + taskName + " we encountered an invalid data point at " + point.O + ":" + point.D + " trying to assign a value of " + point.Data); } } }
private void LoadData(float[] data, IReadODData <float> readODData, int dataTypeOffset, SparseArray <IZone> zoneArray, int timesLoaded) { if (readODData == null) { return; } var zones = zoneArray.GetFlatData(); var numberOfZones = zones.Length; int previousPointO = -1; int previousFlatO = -1; if (timesLoaded == 0) { foreach (var point in readODData.Read()) { var o = point.O == previousPointO ? previousFlatO : zoneArray.GetFlatIndex(point.O); var d = zoneArray.GetFlatIndex(point.D); if (o >= 0 & d >= 0) { previousPointO = point.O; previousFlatO = o; var index = (o * numberOfZones + d) * NumberOfDataTypes + dataTypeOffset; data[index] = point.Data; } } } else { var iteration = timesLoaded + 1; var previousFraction = 1.0f / 2.0f; var currentFraction = 1.0f / 2.0f; foreach (var point in readODData.Read()) { var o = point.O == previousPointO ? previousFlatO : zoneArray.GetFlatIndex(point.O); var d = zoneArray.GetFlatIndex(point.D); if (o >= 0 & d >= 0) { previousPointO = point.O; previousFlatO = o; var index = (o * numberOfZones + d) * NumberOfDataTypes + dataTypeOffset; data[index] = data[index] * previousFraction + point.Data * currentFraction; } } } }
private void LoadInBaseData(SparseTwinIndex <float> ret, IReadODData <float> data) { try { Parallel.ForEach(data.Read(), delegate(ODData <float> point) { ret[point.O, point.D] = point.Data; }); } catch (AggregateException e) { if (e.InnerException is XTMFRuntimeException) { throw new XTMFRuntimeException(this, e.Message); } throw new XTMFRuntimeException(this, e.Message + "\r\n" + e.StackTrace); } }
private void LoadData(float[] data, IReadODData <float> readODData, int dataTypeOffset, bool applyTimeBlending) { if (readODData == null) { return; } var numberOfZones = Zones.Length; var dataTypes = (int)DataTypes.NumberOfDataTypes; if (applyTimeBlending) { var iteration = IterativeRoot.CurrentIteration; var previousFraction = 1.0f / (iteration + 1.0f); var currentFraction = iteration / (1.0f + iteration); foreach (var point in readODData.Read()) { var o = ZoneArray.GetFlatIndex(point.O); var d = ZoneArray.GetFlatIndex(point.D); if (o >= 0 & d >= 0) { data[(o * numberOfZones + d) * dataTypes + dataTypeOffset] = data[(o * numberOfZones + d) * dataTypes + dataTypeOffset] * previousFraction + point.Data * currentFraction; } } } else { foreach (var point in readODData.Read()) { var o = ZoneArray.GetFlatIndex(point.O); var d = ZoneArray.GetFlatIndex(point.D); if (o >= 0 & d >= 0) { data[(o * numberOfZones + d) * dataTypes + dataTypeOffset] = point.Data; } } } }
private void LoadInBaseData(SparseTwinIndex<float> ret, IReadODData<float> data) { foreach ( var point in data.Read() ) { ret[point.O, point.D] = point.Data; } }
private void LoadData(float[] data, IReadODData<float> readODData, int dataTypeOffset, SparseArray<IZone> zoneArray, int timesLoaded) { if(readODData == null) { return; } var zones = zoneArray.GetFlatData(); var numberOfZones = zones.Length; var dataTypes = (int)DataTypes.NumberOfDataTypes; int previousPointO = -1; int previousFlatO = -1; if(timesLoaded == 0) { foreach(var point in readODData.Read()) { var o = point.O == previousPointO ? previousFlatO : zoneArray.GetFlatIndex(point.O); var d = zoneArray.GetFlatIndex(point.D); if(o >= 0 & d >= 0) { previousPointO = point.O; previousFlatO = o; var index = (o * numberOfZones + d) * dataTypes + dataTypeOffset; data[index] = point.Data; } } } else { var iteration = timesLoaded + 1; var previousFraction = 1.0f / (iteration + 1.0f); var currentFraction = iteration / (1.0f + iteration); foreach(var point in readODData.Read()) { var o = point.O == previousPointO ? previousFlatO : zoneArray.GetFlatIndex(point.O); var d = zoneArray.GetFlatIndex(point.D); if(o >= 0 & d >= 0) { previousPointO = point.O; previousFlatO = o; var index = (o * numberOfZones + d) * dataTypes + dataTypeOffset; data[index] = data[index] * previousFraction + point.Data * currentFraction; } } } }
private void LoadData(float[] data, IReadODData<float> readODData, int dataTypeOffset, bool applyBlending) { if(readODData == null ) { return; } var numberOfZones = Zones.Length; var dataTypes = (int)DataTypes.NumberOfDataTypes; if(applyBlending) { var iteration = IterativeRoot.CurrentIteration; var previousFraction = 1.0f/ (iteration + 1.0f); var currentFraction = iteration / (1.0f + iteration); foreach(var point in readODData.Read()) { var o = ZoneArray.GetFlatIndex(point.O); var d = ZoneArray.GetFlatIndex(point.D); if(o >= 0 & d >= 0) { data[(o * numberOfZones + d) * dataTypes + dataTypeOffset] = data[(o * numberOfZones + d) * dataTypes + dataTypeOffset] * previousFraction + point.Data * currentFraction; } } } else { foreach(var point in readODData.Read()) { var o = ZoneArray.GetFlatIndex(point.O); var d = ZoneArray.GetFlatIndex(point.D); if(o >= 0 & d >= 0) { data[(o * numberOfZones + d) * dataTypes + dataTypeOffset] = point.Data; } } } }
private SparseTwinIndex<float> BuildOD(IReadODData<float> dataSource, int modeChoiceIndex, int demographicIndex) { // Setup the mode choice to have the right parameters this.Root.ModeParameterDatabase.ApplyParameterSet( modeChoiceIndex, demographicIndex ); // build a matrix to store var ret = this.Root.ZoneSystem.ZoneArray.CreateSquareTwinArray<float>(); // there is no point trying to do this in parallel since most likely everything is being streamed off of disk anyways foreach ( var dataPoint in dataSource.Read() ) { // no point trying to use the flat structure since we are dealing with entries from sparse space ret[dataPoint.O, dataPoint.D] = dataPoint.Data; } return ret; }