private void FillFormWithModel(EpistemicModel newModel) { agents_ARL.ClearItems(); foreach (string agentName in newModel.GetAgentNames()) { agents_ARL.AddItemToList(agentName); } atomics_ARL.ClearItems(); foreach (string atomicName in newModel.GetAtomicNames()) { atomics_ARL.AddItemToList(atomicName); } ActionModels_ARL.ClearItems(); foreach (string secretName in newModel.GetSecretAnnouncementInfoNames()) { ActionModels_ARL.AddTextToList(secretName); EpisModel.CreateSecretAnnouncementInfo(secretName); EpisModel.GetSecretAnnouncementInfo(secretName) .CopyFrom(newModel.GetSecretAnnouncementInfo(secretName)); } foreach (string publicName in newModel.GetPublicAnnouncementInfoNames()) { ActionModels_ARL.AddTextToList(publicName); EpisModel.CreatePublicAnnouncementInfo(publicName); EpisModel.GetPublicAnnouncementInfo(publicName) .CopyFrom(newModel.GetPublicAnnouncementInfo(publicName)); } }
public static ProcessChain FromText(string[] lines) { ProcessChain processChain = new ProcessChain(EpistemicModel.FromText(ref lines)); int ln = 0; try { if (!lines.Any()) { return(processChain); } if (lines[ln++] != "START_MODEL_VARS") { return(null); } int modelCount = int.Parse(lines[ln++]); for (int i = 0; i < modelCount; i++) { processChain.CreateNewModel(lines[ln++]); } if (lines[ln++] != "END_MODEL_VARS") { return(null); } if (lines[ln++] != "START_PROCESS") { return(null); } int procCount = int.Parse(lines[ln++]); for (int i = 0; i < procCount; i++) { string procName = lines[ln++]; EpistemicProcess ep = processChain.CreateNewProcess(procName); ep.Start = new ModelConfiguration(lines[ln++]); ep.Resault = new ModelConfiguration(lines[ln++]); int actionCount = int.Parse(lines[ln++]); for (int j = 0; j < actionCount; j++) { ep.AddActionModel(processChain._actionModels[lines[ln++]]); } } if (lines[ln++] != "END_PROCESS") { return(null); } } catch (IndexOutOfRangeException) { return(null); } return(processChain); }
public ProcessChain(EpistemicModel epistemicModel) { _epistemicModel = epistemicModel; _epistemicModel.GenerateAllActionModelsFromInfos(); _actionModels = _epistemicModel.GetActionModels(); }
public static EpistemicModel FromText(ref string[] lines) { EpistemicModel model = new EpistemicModel(); int lineNum = 0; if (lines[lineNum++] == "START_AGENTS") { int agentCount = int.Parse(lines[lineNum++]); int i; for (i = lineNum; i < agentCount + lineNum; i++) { model.AddAgent(lines[i]); } lineNum = i; if (lines[lineNum++] != "END_AGENTS") { return(null); } } else { return(null); } if (lines[lineNum++] == "START_ATOMICS") { int atomicCount = int.Parse(lines[lineNum++]); int i; for (i = lineNum; i < atomicCount + lineNum; i++) { model.AddAtomic(lines[i]); } lineNum = i; if (lines[lineNum++] != "END_ATOMICS") { return(null); } } else { return(null); } if (lines[lineNum++] == "START_ANN_INFO") { int infoCount = int.Parse(lines[lineNum++]); for (int i = 0; i < infoCount; i++) { if (lines[lineNum] == "Secret") { lineNum++; SecretAnnouncementInfo info = new SecretAnnouncementInfo(); string infoName = lines[lineNum++]; info.Announcement.Expression = lines[lineNum++]; int audienceCount = int.Parse(lines[lineNum++]); for (int j = 0; j < audienceCount; j++) { info.AddNewAudience(lines[lineNum++]); } model._secretAnnouncementInfos.Add(infoName, info); } else if (lines[lineNum] == "Public") { lineNum++; PublicAnnouncementInfo info = new PublicAnnouncementInfo(); string infoName = lines[lineNum++]; info.Announcement.Expression = lines[lineNum++]; int audienceCount = int.Parse(lines[lineNum++]); for (int j = 0; j < audienceCount; j++) { info.AddNewAudience(lines[lineNum++]); } model._publicAnnouncementInfos.Add(infoName, info); } } if (lines[lineNum++] != "END_ANN_INFO") { return(null); } } else { return(null); } List <string> newData = lines.ToList(); newData.RemoveRange(0, lineNum); lines = newData.ToArray(); return(model); }
public static EpistemicModel FromText(ref string[] lines) { EpistemicModel model = new EpistemicModel(); int lineNum = 0; if (lines[lineNum++] == "START_AGENTS") { int agentCount = int.Parse(lines[lineNum++]); int i; for (i = lineNum; i < agentCount+lineNum; i++) { model.AddAgent(lines[i]); } lineNum = i; if (lines[lineNum++] != "END_AGENTS") { return null; } } else { return null; } if (lines[lineNum++] == "START_ATOMICS") { int atomicCount = int.Parse(lines[lineNum++]); int i; for (i = lineNum; i < atomicCount + lineNum; i++) { model.AddAtomic(lines[i]); } lineNum = i; if (lines[lineNum++] != "END_ATOMICS") { return null; } } else { return null; } if (lines[lineNum++] == "START_ANN_INFO") { int infoCount = int.Parse(lines[lineNum++]); for (int i = 0; i < infoCount ; i++) { if (lines[lineNum] == "Secret") { lineNum++; SecretAnnouncementInfo info = new SecretAnnouncementInfo(); string infoName = lines[lineNum++]; info.Announcement.Expression = lines[lineNum++]; int audienceCount = int.Parse(lines[lineNum++]); for (int j = 0; j < audienceCount; j++) { info.AddNewAudience(lines[lineNum++]); } model._secretAnnouncementInfos.Add(infoName , info); } else if(lines[lineNum] == "Public") { lineNum++; PublicAnnouncementInfo info = new PublicAnnouncementInfo(); string infoName = lines[lineNum++]; info.Announcement.Expression = lines[lineNum++]; int audienceCount = int.Parse(lines[lineNum++]); for (int j = 0; j < audienceCount; j++) { info.AddNewAudience(lines[lineNum++]); } model._publicAnnouncementInfos.Add(infoName, info); } } if (lines[lineNum++] != "END_ANN_INFO") { return null; } } else { return null; } List<string> newData = lines.ToList(); newData.RemoveRange(0, lineNum); lines = newData.ToArray(); return model; }