示例#1
0
        // Получение входов нейросети (входы первого слоя)
        private NodeKnowledgeNet[] GetInputNodesKnowledgeNet(string s_NameFirstLayer)
        {
            // Получение входных узлов из БЗ
            SparqlResultSet s_InputNodesNet = (SparqlResultSet)g_Graph.ExecuteQuery(GetRequests("getinputnodesnet", s_NameFirstLayer));

            // Массив узлов
            NodeKnowledgeNet[] n_Nodes = new NodeKnowledgeNet[s_InputNodesNet.Count];
            // Просмотр каждого узла и получение информации для него
            for (int i = 0; i < s_InputNodesNet.Count; i++)
            {
                // Имя узла
                string s_NameNode = GetName(s_InputNodesNet[i]["input"]);
                // Label узла
                string s_Label = s_InputNodesNet[i]["label"].ToString();
                // Связанные узлы (для входов сети нет)
                string[] s_NamesLinkedNodes = null;
                // Имя оператора (для входов сети нет)
                string s_NameOperator = "";
                // Значение для оператора (для входов сети нет)
                double d_Value = 0;
                // Создание узла
                n_Nodes[i] = new NodeKnowledgeNet(s_NameNode, s_Label, s_NamesLinkedNodes, s_NameOperator, d_Value);
            }

            return(n_Nodes);
        }
        // Получение конкретного смещения
        private static double GetOffset(NodeKnowledgeNet n_Node)
        {
            double d_Offset;

            switch (n_Node.GetNameOperator)
            {
            case "ins:less":
                d_Offset = n_Node.GetValue;
                break;

            case "ins:more":
                d_Offset = -n_Node.GetValue;
                break;

            case "ins:or":
                d_Offset = -0.5;
                break;

            case "ins:and":
                d_Offset = -n_Node.GetNamesLinkedNodes.Length + 0.5;
                break;

            case "ins:equal":
                d_Offset = 0.5;
                break;

            default:
                d_Offset = 0;
                break;
            }
            return(d_Offset);
        }
示例#3
0
        // Получение выходов любого слоя
        private NodeKnowledgeNet[] GetOutputNodes(string s_NameLayer)
        {
            // Получение выходных узлов из БЗ
            SparqlResultSet s_OutputNodes = (SparqlResultSet)g_Graph.ExecuteQuery(GetRequests("getoutputnodes", s_NameLayer));

            // Массив узлов
            NodeKnowledgeNet[] n_Nodes = new NodeKnowledgeNet[s_OutputNodes.Count];
            // Просмотр каждого узла и получение информации для него
            for (int i = 0; i < s_OutputNodes.Count; i++)
            {
                // Имя узла
                string s_NameNode = GetName(s_OutputNodes[i]["output"]);
                // Label узла
                string s_Label = s_OutputNodes[i]["label"].ToString();
                // Связанные узлы
                SparqlResultSet s_LinkedNodes      = (SparqlResultSet)g_Graph.ExecuteQuery(GetRequests("getlinkednodes", s_NameNode));
                string[]        s_NamesLinkedNodes = new string[s_LinkedNodes.Count];
                for (int j = 0; j < s_LinkedNodes.Count; j++)
                {
                    s_NamesLinkedNodes[j] = GetName(s_LinkedNodes[j]["linked"]);
                }
                // Имя оператора
                SparqlResultSet s_Operator     = (SparqlResultSet)g_Graph.ExecuteQuery(GetRequests("getoperator", s_NameNode));
                string          s_NameOperator = GetName(s_Operator[0]["operator"]);
                // Значение для оператора, если оператор or или and, то значение не получать
                double d_Value = 0;
                if (s_NameOperator != "ins:or" && s_NameOperator != "ins:and")
                {
                    SparqlResultSet s_Value = (SparqlResultSet)g_Graph.ExecuteQuery(GetRequests("getvalue", s_NameNode));
                    d_Value = Convert.ToDouble(s_Value[0]["value"].ToString());
                }
                // Создание узла
                n_Nodes[i] = new NodeKnowledgeNet(s_NameNode, s_Label, s_NamesLinkedNodes, s_NameOperator, d_Value);
            }

            return(n_Nodes);
        }
        // Получение конкретного веса
        private static double GetWeight(string s_InputName, NodeKnowledgeNet n_Node)
        {
            double d_Weight = 0;
            string s_Name   = Array.Find(n_Node.GetNamesLinkedNodes, x => x == s_InputName);

            if (s_Name != null)
            {
                switch (n_Node.GetNameOperator)
                {
                case "ins:less":
                    d_Weight = -1;
                    break;

                case "ins:more":
                    d_Weight = 1;
                    break;

                case "ins:or":
                    d_Weight = 1;
                    break;

                case "ins:and":
                    d_Weight = 1;
                    break;

                case "ins:equal":
                    d_Weight = -1;
                    break;

                default:
                    d_Weight = 0;
                    break;
                }
            }
            return(d_Weight);
        }