Пример #1
0
        public DiscreteFuzzySetBLL Discretize(ContinuousFuzzySetBLL ConFS, double StartPoint, double epsilon)
        {
            DiscreteFuzzySetBLL DiscFS = new DiscreteFuzzySetBLL();
            DiscFS.FuzzySetName = ConFS.FuzzySetName;
            DiscFS.FuzzySet = ConFS.FuzzySet;

            for (double value = StartPoint; value <= ConFS.Bottom_Right; value += epsilon)
            {
                double membership = ConFS.GetMembershipAt(value);
                DiscFS.AddPoint(value, membership);
            }

            return DiscFS;
        }
Пример #2
0
        public int DeleteDiscreteFS(DiscreteFuzzySetBLL disc)
        {
            try
            {
                int result = 0;

                if (IsExistFSName(disc.FuzzySetName))//Delete object
                {
                    var _disc = db.DiscreteLibaries.FirstOrDefault(id => id.LanguisticLabel == disc.FuzzySetName);

                    db.DeleteObject(_disc);
                    return result = db.SaveChanges();
                }
                else//Doing nothing
                {
                    return result = -1;
                }
            }
            catch
            {
                //throw new Exception(ex.Message);
                return -1;
            }
        }
Пример #3
0
        private FzTupleEntity IsSatisfyExpression(String[] splitedList, FzTupleEntity tuple)
        {
            FzTupleEntity result = new FzTupleEntity() { ValuesOnPerRow = tuple.ValuesOnPerRow };

            int indexAttr = Convert.ToInt32(splitedList[0]);
            String dataType = this._attributes[indexAttr].DataType.DataType;
            Object value = tuple.ValuesOnPerRow[indexAttr];//we don't know the data type of value
            int count = 0;

            DiscreteFuzzySetBLL disFS = new DiscreteFuzzySetBLL().GetByName(splitedList[2]);//2 is value input
            ContinuousFuzzySetBLL conFS = new ContinuousFuzzySetBLL().GetByName(splitedList[2]);

            if (conFS != null)//continuous fuzzy set is priorer than discrete fuzzy set
            {
                Double uValue = FuzzyCompare(Convert.ToDouble(value), conFS, splitedList[1]);//1 is operator
                Double uRelation = Convert.ToDouble(tuple.ValuesOnPerRow[tuple.ValuesOnPerRow.Count - 1]);
                if (uValue != 0)
                {
                    result.ValuesOnPerRow[tuple.ValuesOnPerRow.Count - 1] = Math.Min(uValue, uRelation);
                    count++;
                }
            }

            if (disFS != null && conFS == null)
            {
                Double uValue = FuzzyCompare(Convert.ToDouble(value), disFS, splitedList[1]);
                Double uRelation = Convert.ToDouble(tuple.ValuesOnPerRow[tuple.ValuesOnPerRow.Count - 1]);
                if (uValue != 0)
                {
                    result.ValuesOnPerRow[tuple.ValuesOnPerRow.Count - 1] = Math.Min(uValue, uRelation);
                    count++;
                }
            }

            if (disFS == null && conFS == null)
            {
                if (ObjectCompare(value, splitedList[2], splitedList[1], dataType))
                {
                    count++;
                }
            }

            if (count == 1)//it mean the tuple is satisfied with all the compare operative
            {
                return result;
            }

            return null;
        }
Пример #4
0
        private Double FuzzyCompare(Double value, DiscreteFuzzySetBLL set, String opr)
        {
            Double result = 0;

            switch (opr)
            {
                case "<"://
                    if (set.GetMinValue() > value)
                    {
                        result = 1;
                    }
                    return result;

                case ">":
                    if (set.GetMaxValue() < value)
                    {
                        result = 1;
                    }
                    return result;

                case "<=":
                    if (value <= set.GetMaxValue())
                    {
                        result = 1;
                    }
                    return result;

                case ">=":
                    if (value >= set.GetMaxValue())
                    {
                        result = 1;//select
                    }
                    return result;

                case "=":
                    if (set.IsMember(value))
                    {
                        result = set.GetMembershipAt(value);
                    }
                    return result;

                case "!="://No need to get the membership
                    if (!set.IsMember(value))
                    {
                        result = 1;
                    }
                    return result;
            }

            return result;
        }
Пример #5
0
        public List<DiscreteFuzzySetBLL> GetAllDiscreteFuzzySet()
        {
            List<DiscreteFuzzySetBLL> resultList = new List<DiscreteFuzzySetBLL>();

            ///Get all discrete fuzzy set
            var disc = from d in db.DiscreteLibaries
                       select d;

            foreach (var item in disc.ToList())
            {
                DiscreteFuzzySetBLL result = new DiscreteFuzzySetBLL();
                //Get list values
                result.ValueSet = SplitString(item.Values.ToString());

                //Get list memberships
                result.MembershipSet = SplitString(item.Memberships.ToString());

                //Get Other values
                result.FuzzySetName = item.LanguisticLabel;

                //Some get FuzzySet Fomr referenced object

                //finally, add to list
                resultList.Add(result);
            }

            return resultList;
        }
Пример #6
0
        public int UpdateDiscreteFS(DiscreteFuzzySetBLL disc)
        {
            try
            {
                int result = 0;

                if (!IsExistFSName(disc.FuzzySetName))//Add new object
                {
                    //Insert mother library (contens both discrete library and continuous library)
                    //FuzzySetBLL mother = new FuzzySetBLL(disc.FuzzySetName, disc.FuzzySet);

                    //if (new FuzzySetDAL().UpdateFuzzySet(mother) == 1)
                    //{
                    //Insert child library
                    DiscreteLibary child = new DiscreteLibary();
                    child.LanguisticLabel = disc.FuzzySetName;
                    child.Values = ConvertToString(disc.ValueSet);
                    child.Memberships = ConvertToString(disc.MembershipSet);

                    db.AddToDiscreteLibaries(child);
                    return result = db.SaveChanges(true);
                    //}
                    //else
                    //{
                    //    return -1;
                    //}
                }
                else//Just update values and memberships
                {
                    var _disc = db.DiscreteLibaries.FirstOrDefault(id => id.LanguisticLabel == disc.FuzzySetName);
                    //_disc.LanguisticLabel = disc.FuzzySetName;
                    _disc.Values = ConvertToString(disc.ValueSet);
                    _disc.Memberships = ConvertToString(disc.MembershipSet);

                    return result = db.SaveChanges();
                }
            }
            catch (SQLiteException ex)
            {
                //throw new Exception(ex.Message);
                return -1;
            }
        }
Пример #7
0
        public DiscreteFuzzySetBLL GetDiscreteFuzzySetByName(String name)
        {
            DiscreteFuzzySetBLL result = new DiscreteFuzzySetBLL();
            var disc = db.DiscreteLibaries.SingleOrDefault(id => id.LanguisticLabel == name);

            if (disc != null)
            {
                result.FuzzySetName = disc.LanguisticLabel;
                //Some get fuzzySet from referenced object
                result.ValueSet = SplitString(disc.Values);
                result.MembershipSet = SplitString(disc.Memberships);
            }
            else
                result = null;

            return result;
        }
Пример #8
0
        private DiscreteFuzzySetBLL GetDataRows()
        {
            DiscreteFuzzySetBLL result = new DiscreteFuzzySetBLL();
            result.FuzzySetName = this.txtLinguistic.Text.Trim();

            for (int i = 0; i < gridView1.DataRowCount; i++)
            {
                result.AddPoint(Convert.ToDouble(gridView1.GetRowCellValue(i, "values").ToString()),
                                Convert.ToDouble(gridView1.GetRowCellValue(i, "memberships").ToString()));
            }

            return result;
        }
Пример #9
0
        private void RefreshData()
        {
            BindingList<Data> gridDataList = new BindingList<Data>();
            List<DiscreteFuzzySetBLL> list = new DiscreteFuzzySetBLL().GetAll();

            foreach (var item in list)
            {
                gridDataList.Add(new Data(false, item.FuzzySetName,
                    ConvertToString(item.ValueSet), ConvertToString(item.MembershipSet)));
            }

            gridControl1.DataSource = null;
            gridControl1.DataSource = gridDataList;
        }
Пример #10
0
        private List<DiscreteFuzzySetBLL> GetSelectedRows()
        {
            List<DiscreteFuzzySetBLL> result = new List<DiscreteFuzzySetBLL>();

            for (int i = 0; i < gridView1.DataRowCount; i++)
            {
                if (gridView1.GetRowCellValue(i, "check").ToString() == "True")
                {
                    DiscreteFuzzySetBLL set = new DiscreteFuzzySetBLL();
                    set.FuzzySetName = gridView1.GetRowCellValue(i, "name").ToString().Trim();
                    set.ValueSet = SplitString(gridView1.GetRowCellValue(i, "values").ToString().Trim());
                    set.MembershipSet = SplitString(gridView1.GetRowCellValue(i, "memberships").ToString().Trim());

                    result.Add(set);
                }
            }

            return result;
        }