Ejemplo n.º 1
0
        public static string MicrogridVarsToString(Microgrid microgrid,
                                                   MicrogridVar[] mVars   = null,
                                                   MVarDirection?varFlags = null)
        {
            var dict = new Dictionary <string, List <float> >();

            mVars = mVars ??
                    (MicrogridVar[])Enum.GetValues(typeof(MicrogridVar));

            if (varFlags.HasValue)
            {
                mVars = mVars
                        .Where(x => x.HasExpectedFlags(varFlags.Value))
                        .ToArray();
            }

            foreach (MicrogridVar mvar in mVars)
            {
                if (accessorLists.ContainsKey(mvar))
                {
                    var valueList = accessorLists[mvar].Get(microgrid);
                    dict.Add(enumToHeader[mvar], valueList);
                }
                else if (accessorFloats.ContainsKey(mvar))
                {
                    var value     = accessorFloats[mvar].Get(microgrid);
                    var valueList = new List <float>()
                    {
                        value
                    };
                    dict.Add(enumToHeader[mvar], valueList);
                }
                else if (accessor2DArray.ContainsKey(mvar))
                {
                    var value = accessor2DArray[mvar].Get(microgrid);
                    for (int i = 0; i < value.GetLength(0); i++)
                    {
                        var valueList = new List <float>(MGHelper.GetRow(value, i));
                        var str       = enumToHeader[mvar] + GetArrayString(mvar, i);
                        dict.Add(str, valueList);
                    }
                }
                else if (accessorBools.ContainsKey(mvar))
                {
                    var value     = accessorBools[mvar].Get(microgrid);
                    var valueList = new List <float>()
                    {
                        value ? 1.0f : 0.0f
                    };
                    dict.Add(enumToHeader[mvar], valueList);
                }
                else
                {
                    Debug.Log("Microgrid variable " + mvar + "has no " +
                              "associated accesor and cannot be saved to string.");
                }
            }

            var builder     = new StringBuilder();
            var lineBuilder = new StringBuilder();
            int max         = dict.Values.Max(x => x.Count);

            for (int i = -1; i < max; i++)
            {
                foreach (KeyValuePair <string, List <float> > kvp in dict)
                {
                    if (i == -1)
                    {
                        lineBuilder.Append(kvp.Key).Append(",");
                    }
                    else
                    {
                        if (i < kvp.Value.Count)
                        {
                            lineBuilder.Append(kvp.Value[i]);
                        }
                        lineBuilder.Append(",");
                    }
                }
                builder.AppendLine(lineBuilder.ToString());
                lineBuilder.Clear();
            }

            return(builder.ToString());
        }
Ejemplo n.º 2
0
        private void Combine(PSOProgressEventArgs progress, int iIter)
        {
            var snapshotsAcrossRun = MGHelper.GetCol(progress.Snapshots, iIter);

            combined[iIter] = IterationSnapshot.Combine(snapshotsAcrossRun);
        }