Exemple #1
0
        /// <summary>
        /// Переопределение базового сравнения
        /// </summary>
        /// <param name="obj">Объект для сравнения с текущим</param>
        /// <returns>true если равны false иначе</returns>
        public override bool Equals(System.Object obj)
        {
            Element_Fuzzy_sets <Tip_Element> p = obj as Element_Fuzzy_sets <Tip_Element>;

            if ((System.Object)p == null || obj == null)
            {
                return(false);
            }
            return((Element.CompareTo(p.Element) == 0) && (Accessory_Function == p.Accessory_Function));
        }
Exemple #2
0
        /// <summary>
        /// Удаляет из нечёткого множества указанный элемент.
        /// </summary>
        /// <param name="Element">Элемент нечёткого множества</param>
        public void Delete(Element_Fuzzy_sets <Tip_Element> Element)
        {
            if (Mass == null)//если множество не объявлено, объявляем его
            {
                Mass = new List <Element_Fuzzy_sets <Tip_Element> >();
            }

            if (Mass.Contains(Element)) //если такого элемента еще в множестве нету
            {
                Mass.Remove(Element);   //добавляем элемент
            }
        }
Exemple #3
0
        /// <summary>
        /// Сортировка нечёткого множества по значению функции принадлежности элемента множеству
        /// </summary>
        /// <param name="A">Нечёткое множество</param>
        /// <param name="low">Начальный элемент</param>
        /// <param name="high">Конечный элемент</param>
        public static Fuzzy_sets <Tip_Element> qSort_from_Accessory_Function(Fuzzy_sets <Tip_Element> A, int low = 0, int high = 0)
        {
            int i = low;
            int j = high;
            Element_Fuzzy_sets <Tip_Element> x = A[(low + high) / 2];  // x - опорный элемент посредине между low и high

            do
            {
                while (A[i].Accessory_Function < x.Accessory_Function)
                {
                    ++i;                                                     // поиск элемента для переноса в старшую часть
                }
                while (A[j].Accessory_Function > x.Accessory_Function)
                {
                    --j;                                                     // поиск элемента для переноса в младшую часть
                }
                if (i <= j)
                {
                    // обмен элементов местами:
                    Element_Fuzzy_sets <Tip_Element> temp = A[i];
                    A[i] = A[j];
                    A[j] = temp;
                    // переход к следующим элементам:
                    i++; j--;
                }
            } while (i < j);
            if (low < j)
            {
                qSort_from_Accessory_Function(A, low, j);
            }
            if (i < high)
            {
                qSort_from_Accessory_Function(A, i, high);
            }
            return(A);
        }