コード例 #1
0
        public void GenerateRulesFLS(RuleClusterDTO kuralKume)
        {
            //var ozdirenc = GorunenAdDuzenle(kuralKume.OzdirencList);
            //#region Inputs
            //List<LinguisticVariable> inputs = new List<LinguisticVariable>();

            //var Ozdirenc = new LinguisticVariable("Ozdirenc");
            //List<IMembershipFunction> InputMembershipFunctions = new List<IMembershipFunction>();
            //foreach (var item in ozdirenc)
            //{
            //    InputMembershipFunctions.Add(Ozdirenc.MembershipFunctions.AddRectangle(item.Adi, item.MinDeger, item.MaxDeger));
            //}
            //inputs.Add(Ozdirenc);
            //var Mukavemet = new LinguisticVariable("Mukavemet");
            //var CokGevsek = Mukavemet.MembershipFunctions.AddRectangle(_commonManager.Mukavemet[0].Adi, _commonManager.Mukavemet[0].MinDeger, _commonManager.Mukavemet[0].MaxDeger);
            //var Gevsek = Mukavemet.MembershipFunctions.AddRectangle(_commonManager.Mukavemet[1].Adi, _commonManager.Mukavemet[1].MinDeger, _commonManager.Mukavemet[1].MaxDeger);
            //var Orta = Mukavemet.MembershipFunctions.AddRectangle(_commonManager.Mukavemet[2].Adi, _commonManager.Mukavemet[2].MinDeger, _commonManager.Mukavemet[2].MaxDeger);
            //var Siki = Mukavemet.MembershipFunctions.AddRectangle(_commonManager.Mukavemet[3].Adi, _commonManager.Mukavemet[3].MinDeger, _commonManager.Mukavemet[3].MaxDeger);
            //var Kaya = Mukavemet.MembershipFunctions.AddRectangle(_commonManager.Mukavemet[4].Adi, _commonManager.Mukavemet[4].MinDeger, _commonManager.Mukavemet[4].MaxDeger);
            //inputs.Add(Mukavemet);

            //var Doygunluk = new LinguisticVariable("Doygunluk");
            //var GazaDoygun = Doygunluk.MembershipFunctions.AddRectangle(_commonManager.Doygunluk[0].Adi, _commonManager.Doygunluk[0].MinDeger, _commonManager.Doygunluk[0].MaxDeger);
            //var Belirsiz = Doygunluk.MembershipFunctions.AddRectangle(_commonManager.Doygunluk[1].Adi, _commonManager.Doygunluk[1].MinDeger, _commonManager.Doygunluk[1].MaxDeger);
            //var SuyaDoygun = Doygunluk.MembershipFunctions.AddRectangle(_commonManager.Doygunluk[2].Adi, _commonManager.Doygunluk[2].MinDeger, _commonManager.Doygunluk[2].MaxDeger);
            //inputs.Add(Doygunluk);
            //#endregion

            //#region Output
            //var Toprak = new LinguisticVariable("Toprak");
            //List<IMembershipFunction> OutputMembershipFunctions = new List<IMembershipFunction>();
            //foreach (var item in ozdirenc)
            //{
            //    OutputMembershipFunctions.Add(Toprak.MembershipFunctions.AddRectangle(item.Adi, item.MinDeger, item.MaxDeger));
            //}
            //#endregion

            //IFuzzyEngine fuzzyEngine = new FuzzyEngineFactory().Default();

            //var rule1 = Rule.If(Ozdirenc.Is("").And(Mukavemet.Is(CokGevsek))).Then(Mukavemet.Is(Orta));

            //foreach (var kuralKumeItem in kuralKume.KuralList)
            //{
            //    foreach (var item in kuralKumeItem.Kurallar)
            //    {
            //        item.
            //    }
            //    var rule = Rule.If(Ozdirenc.Is(InputMembershipFunctions[0]));
            //}



            throw new System.NotImplementedException();
        }
コード例 #2
0
        public JsonResult KumeKaydet(RuleClusterDTO kuralKume)
        {
            var sonuc = _fuzzyManager.SaveCluster(kuralKume);

            return(Json(new { Sonuc = sonuc.Result, Nesne = sonuc.Object, Mesaj = sonuc.Message, Exception = sonuc.Exception }, JsonRequestBehavior.AllowGet));
        }
コード例 #3
0
        public ResultDTO SaveCluster(RuleClusterDTO ruleCluster)
        {
            ResultDTO sonuc       = new ResultDTO();
            var       resistivity = EditVisibleName(ruleCluster.ResistivityList);
            var       soil        = EditVisibleName(ruleCluster.SoilList);

            #region Database Operations

            try
            {
                _unitOfWork.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);

                #region Rule
                Kural rule = new Kural
                {
                    KuralAdi      = ruleCluster.RuleName,
                    AktifMi       = true,
                    EklenmeTarihi = DateTime.Now
                };
                _ruleService.BulkInsert(rule);
                #endregion

                #region RuleListText
                List <KuralListText> rules = new List <KuralListText>();
                foreach (var ruleListItem2 in ruleCluster.RuleList)
                {
                    string ruleText = GenerateRule(ruleListItem2);
                    rules.Add(new KuralListText {
                        KuralID = rule.KuralID, KuralText = ruleText
                    });
                }
                _ruleListTextService.BulkInsertRange(rules);
                #endregion

                #region Input Variable
                Degisken resistivityVariable = new Degisken
                {
                    KuralID            = rule.KuralID,
                    DegiskenTipID      = (byte)Enums.VariableType.Input,
                    DegiskenAdi        = "Özdirenç",
                    DegiskenGorunenAdi = "Ozdirenc"
                };
                _variableService.BulkInsert(resistivityVariable);
                var ozdirencItem = (from a in resistivity
                                    select new DegiskenItem()
                {
                    DegiskenID = resistivityVariable.DegiskenID,
                    DegiskenItemAdi = a.Name,
                    DegiskenItemGorunenAdi = a.VisibleName,
                    MinDeger = a.MinValue,
                    MaxDeger = a.MaxValue
                });
                _variableItemService.BulkInsertRange(ozdirencItem);
                #endregion

                #region Output Variable
                Degisken soilVariable = new Degisken
                {
                    KuralID            = rule.KuralID,
                    DegiskenTipID      = (byte)Enums.VariableType.Output,
                    DegiskenAdi        = "Toprak",
                    DegiskenGorunenAdi = "Toprak"
                };
                _variableService.BulkInsert(soilVariable);
                var soilItem = (from a in soil
                                select new DegiskenItem()
                {
                    DegiskenID = soilVariable.DegiskenID,
                    DegiskenItemAdi = a.Name,
                    DegiskenItemGorunenAdi = a.VisibleName,
                    MinDeger = a.MinValue,
                    MaxDeger = a.MaxValue
                });
                _variableItemService.BulkInsertRange(soilItem);
                #endregion

                #region RuleList
                List <KuralListItem> ruleListItem = new List <KuralListItem>();
                for (int i = 0; i < ruleCluster.RuleList.Count; i++)
                {
                    var ruleList = (new KuralList {
                        KuralID = rule.KuralID, SiraNo = (byte)(i + 1)
                    });
                    _ruleListService.BulkInsert(ruleList);

                    foreach (var item in ruleCluster.RuleList)
                    {
                        var InputVariableId = _variableItemService.Queryable().FirstOrDefault(d => d.Degisken.DegiskenTipID == (byte)Enums.VariableType.Input && d.DegiskenItemAdi == item.Rule.Resistivity).DegiskenItemID;
                        ruleListItem.Add(new KuralListItem {
                            KuralListID = ruleList.KuralListID, DegiskenItemID = InputVariableId
                        });

                        var OutputVariableId = _variableItemService.Queryable().FirstOrDefault(d => d.Degisken.DegiskenTipID == (byte)Enums.VariableType.Output && d.DegiskenItemAdi == item.Rule.Soil).DegiskenItemID;
                        ruleListItem.Add(new KuralListItem {
                            KuralListID = ruleList.KuralListID, DegiskenItemID = InputVariableId
                        });
                    }
                }
                _ruleListItemService.BulkInsertRange(ruleListItem);
                #endregion

                _unitOfWork.Commit();
                sonuc.Result  = true;
                sonuc.Message = "Save Successful For Rule Cluster.";
                sonuc.Object  = null;
                return(sonuc);
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                sonuc.Result  = false;
                sonuc.Message = "An Error Occured While Saving Rule Cluster. Error: " + ex.Message;
                sonuc.Object  = null;
                return(sonuc);
            }

            #endregion
        }