Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 public ProcessChain(EpistemicModel epistemicModel)
 {
     _epistemicModel = epistemicModel;
     _epistemicModel.GenerateAllActionModelsFromInfos();
     _actionModels = _epistemicModel.GetActionModels();
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 public ProcessChain(EpistemicModel epistemicModel)
 {
     _epistemicModel = epistemicModel;
     _epistemicModel.GenerateAllActionModelsFromInfos();
     _actionModels = _epistemicModel.GetActionModels();
 }
Esempio n. 6
0
        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;
        }