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()); }
private void Combine(PSOProgressEventArgs progress, int iIter) { var snapshotsAcrossRun = MGHelper.GetCol(progress.Snapshots, iIter); combined[iIter] = IterationSnapshot.Combine(snapshotsAcrossRun); }