Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 public void AddPurpose(IPurpose purpose)
 {
     if (Purposes.ContainsKey(purpose.Name))
     {
         return;
     }
     Purposes.Add(purpose.Name, purpose);
 }
Ejemplo n.º 3
0
        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]);
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
                }
            }
        }
Ejemplo n.º 9
0
 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;
 }
Ejemplo n.º 10
0
 public void AddMind(IPurpose purpose)
 {
     PurposeObserver.AddPurpose(purpose);
 }
Ejemplo n.º 11
0
 public void AddMind(IPurpose purpose)
 {
     // Unused
 }
Ejemplo n.º 12
0
 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;
 }
Ejemplo n.º 13
0
 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;
 }
Ejemplo n.º 14
0
 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 );
     }
 }