private void AddPurpose(StreamWriter writer, double[] totals, IPurpose purpose) { // start the line with the purpose name writer.Write(purpose.PurposeName); var flows = purpose.Flows; if (flows == null) { for (int i = 0; i < totals.Length; i++) { writer.Write(','); writer.Write(0); } } else { int index = 0; for (int i = 0; i < flows.Count; i++) { AddMode(writer, totals, ref index, flows[i]); } } // complete the line of data writer.WriteLine(); }
public void AddPurpose(IPurpose purpose) { if (Purposes.ContainsKey(purpose.Name)) { return; } Purposes.Add(purpose.Name, purpose); }
private void LoadData(float[] ret, IPurpose purpose) { var data = purpose.Flows; if (data == null) { return; } for (int i = 0; i < data.Count; i++) { LoadData(ret, data[i]); } }
private void AddPurposeData(IPurpose purpose, float[][] driveData, SparseArray <float> production, FloatList purposeDrive, FloatList purposeOther) { var modes = purpose.Flows; if (modes == null) { return; } var length = modes.Count; for (int i = 0; i < length; i++) { AddPurposeData(driveData, modes[i], production, purposeDrive, purposeOther); } }
private bool LinkPurposeName(string purposeName, out IPurpose destinationPurpose) { var purposes = Root.Purpose; foreach (var p in purposes) { if (p.PurposeName == purposeName) { destinationPurpose = p; return(true); } } // if we haven't found it, fill it in here destinationPurpose = null; return(false); }
public bool RuntimeValidation(ref string error) { foreach (var purp in this.Root.Purpose) { if (purp.PurposeName == this.OtherPurposeName) { this.OtherPurpose = purp; break; } } if (OtherPurpose == null) { error = "The purpose " + this.OtherPurposeName + " can not be found by " + this.PurposeName + " in order to be inversed!"; return(false); } return(true); }
private float[][] LookUpPurposeData(IPurpose purpose) { var data = purpose.Flows; if (data == null) { return(null); } TreeData <float[][]> currentPoint = data[AutoDrivePath[0]]; var length = AutoDrivePath.Count; for (int i = 1; i < length; i++) { currentPoint = currentPoint.Children[AutoDrivePath[i]]; } return(currentPoint.Result); }
public IEnumerable <ODData <float> > Read() { IPurpose purpose = GetPurpose(); var zones = this.Root.ZoneSystem.ZoneArray.GetFlatData(); float[] ret = new float[zones.Length * zones.Length]; LoadData(ret, purpose); var odData = new ODData <float>(); for (int i = 0; i < zones.Length; i++) { odData.O = zones[i].ZoneNumber; for (int j = 0; j < zones.Length; j++) { odData.D = zones[j].ZoneNumber; odData.Data = ret[i * zones.Length + j]; yield return(odData); } } }
public bool RuntimeValidation(ref string error) { foreach ( var purp in this.Root.Purpose ) { if ( purp.PurposeName == this.OtherPurposeName ) { this.OtherPurpose = purp; break; } } if ( OtherPurpose == null ) { error = "The purpose " + this.OtherPurposeName + " can not be found by " + this.PurposeName + " in order to be inversed!"; return false; } return true; }
public void AddMind(IPurpose purpose) { PurposeObserver.AddPurpose(purpose); }
public void AddMind(IPurpose purpose) { // Unused }
private float[][] LookUpPurposeData(IPurpose purpose) { var data = purpose.Flows; if ( data == null ) return null; TreeData<float[][]> currentPoint = data[this.AutoDrivePath[0]]; var length = this.AutoDrivePath.Count; for ( int i = 1; i < length; i++ ) { currentPoint = currentPoint.Children[this.AutoDrivePath[i]]; } return currentPoint.Result; }
private bool LinkPurposeName(string purposeName, out IPurpose destinationPurpose) { var purposes = this.Root.Purpose; foreach ( var p in purposes ) { if ( p.PurposeName == purposeName ) { destinationPurpose = p; return true; } } // if we haven't found it, fill it in here destinationPurpose = null; return false; }
private void AddPurposeData(IPurpose purpose, float[][] driveData, SparseArray<float> production, FloatList purposeDrive, FloatList purposeOther) { var modes = purpose.Flows; if ( modes == null ) return; var length = modes.Count; for ( int i = 0; i < length; i++ ) { AddPurposeData( driveData, modes[i], production, purposeDrive, purposeOther ); } }