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(); }
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)); }
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 }