コード例 #1
0
ファイル: MainForm.cs プロジェクト: Lomotkov/modelExecutor
 private void Output()
 {
     textBox4.Text  = neoDataLoader.GetNumberOfAgents();
     agentInstances = new List <string>();
     agentInstances = neoDataLoader.GetAllInstancesIdByName("Агент");
     this.listBox_Agents.Items.Clear();
     foreach (String str in agentInstances)
     {
         this.listBox_Agents.Items.Add("Человек. ID: " + str);
     }
     this.dataGridView_agentParameters.DataSource = new object();
 }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
        public void Algorithm()
        {
            using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
            {
                agentInstances = neoDataLoader.GetAllInstancesIdByName("Агент");
            }

            foreach (string agentID in agentInstances)
            {
                // Получаем формулу на текущем состоянии

                string currentStateID;
                string currentStateFormula;
                using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
                {
                    string        stateID         = neoDataLoader.GetParameterValue(agentID, "Состояние");
                    List <String> relatedStatesId = neoDataLoader.GetStatesInWhichNodeGoes(stateID);
                    foreach (string state in relatedStatesId)
                    {
                        if (ExpressionChecker(neoDataLoader.GetRelationshipBetweenStatementsParameterValue(stateID, state, "comment")))     // Состояние меняется каждый раз ДОПИШИ ПАРСЕР ФОРМУЛ я хочу спать, не могу
                        {
                            neoDataLoader.SetNodeParameter(agentID, "Состояние", state);
                        }
                        foreach (string food in neoDataLoader.GetAllNodesWithNameInstancesId("Пища")) //Тут состояние не менятся на покой пока не будет найдена пища
                        {
                            if (checkSamePosition(food, agentID))
                            {
                                neoDataLoader.SetNodeParameter(agentID, "Состояние", "0");
                            }
                        }
                    }
                    currentStateID      = neoDataLoader.GetParameterValue(agentID, "Состояние");
                    currentStateFormula = neoDataLoader.GetParameterValue(currentStateID, "comment");
                }
                // Парсим формулу и применяем её (надо сделать проверку может ли она быть применена)

                FormulaParser(currentStateFormula, agentID);
                try
                {
                    if (currentStateID.Equals("1"))
                    { //1 = Перемещение (Это костыль)
                        neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text);
                        moving(System.Convert.ToInt32(neoDataLoader.GetParameterValue(agentID, "X")), System.Convert.ToInt32(neoDataLoader.GetParameterValue(agentID, "Y")), agentID);
                    }
                }
                catch (FormatException)
                {
                    // the FormatException is thrown when the string text does
                    // not represent a valid integer.
                }
                catch (OverflowException)
                {
                    // the OverflowException is thrown when the string is a valid integer,
                    // but is too large for a 32 bit integer.  Use Convert.ToInt64 in
                    // this case.
                }
                //Здесь делаем проверку перехода в другое состояние и, если можем перейти, переходим
                TransitionParser(); ////// Заглушка
            }
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
 public double CalculateAverageSatiety()
 {
     using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
     {
         List <string> agentsID = neoDataLoader.GetAllInstancesIdByName("Агент");
         double        sum      = 0;
         foreach (string agent in agentsID)
         {
             sum += Convert.ToDouble(neoDataLoader.GetParameterValue(agent, "Сытость"));
         }
         sum /= agentsID.Count();
         return(sum);
     }
 }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
        public string searchNeededItem(int X, int Y, string agentId, string neededItemName)
        {
            List <string> items = neoDataLoader.GetAllInstancesIdByName(neededItemName);

            foreach (string item in items)
            {
                int rangeOfVision = Convert.ToInt32(neoDataLoader.GetParameterValue(agentId, "Обзор"));
                int Xitem         = Convert.ToInt32(neoDataLoader.GetParameterValue(item, "X"));
                int Yitem         = Convert.ToInt32(neoDataLoader.GetParameterValue(item, "Y"));
                if ((Math.Pow(X - Xitem, 2) + Math.Pow(Y - Yitem, 2)) <= Math.Pow(rangeOfVision, 2))
                {
                    return(item);
                }
            }
            return(null);
        }
コード例 #5
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
 public double CalculateAverageFood() // Здесь дичайшие костыли
 {
     using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
     {
         List <string> agentsID = neoDataLoader.GetAllInstancesIdByName("Агент");
         double        sum      = 0;
         foreach (string agent in agentsID)
         {
             sum += Convert.ToDouble(
                 neoDataLoader.GetStatementResult(
                     "match(n) where id(n) = " + agent + " return n.Пища"
                     ).Single()[0].As <string>());
         }
         sum /= agentsID.Count();
         return(sum);
     }
 }