private void OnLoaded() { #region Ładowanie Plików List <Record> data = XlsxReader.ReadXlsx("..\\..\\..\\Resources\\weatherAUS.xlsx"); List <LinguisticVariable> variables = LinguisticVariableSerializer.Deserialize("..\\..\\..\\Resources\\linguisticVariables.xml"); List <LinguisticVariable> quantifiers = LinguisticVariableSerializer.Deserialize("..\\..\\..\\Resources\\linguisticQuantifiers.xml"); List <LinguisticVariable> qualificators = LinguisticVariableSerializer.Deserialize("..\\..\\..\\Resources\\linguisticQualificators.xml"); #endregion var groups = variables.GroupBy(variable => variable.MemberToExtract).ToList(); List <FuzzySet> sets = new List <FuzzySet>(); foreach (var group in groups) { var movedGroupings = new List <Tuple <string, List <LinguisticVariable> > > { new Tuple <string, List <LinguisticVariable> >(group.Key, group.ToList()) }; movedGroupings.AddRange(groups.Where(linguisticVariables => linguisticVariables != group).Take(2) .Select(g => new Tuple <string, List <LinguisticVariable> >(g.Key, g.ToList()))); sets = sets.Concat(GetSets(data, movedGroupings)).ToList(); } var i = 0; List <double> qualities = new List <double>(); foreach (var fuzzySet in sets) { Process(fuzzySet); fuzzySet.Qualificator = new FuzzySet(data, qualificators[i++]); if (i == qualificators.Count) { i = 0; } Process(fuzzySet); void Process(FuzzySet set) { SummarizationResult summarizationResult = new SummarizationResult(); string bestResult = ""; double quality = 0; foreach (var quantifier in quantifiers) { double degreeOfTruth = set.DegreeOfTruth(quantifier); var summarization = $"{quantifier.Name} wpisów wskazuje {set} [Jakość: {degreeOfTruth:N3}]"; if (degreeOfTruth > quality) { bestResult = summarization; quality = degreeOfTruth; } summarizationResult.AllSummarizations.Add(summarization); } qualities.Add(quality); summarizationResult.BestSummarization = bestResult; Summarizations.Add(summarizationResult); } } Results.ItemsSource = Summarizations; }
private void OnLoaded(object sender, RoutedEventArgs e) { var data = new DataExtractor().ObtainRecords().ToList(); var variables = JsonConvert.DeserializeObject <List <LinguisticVariable> >( File.ReadAllText("Data/linguisticVariables.json")); var quantifiers = JsonConvert.DeserializeObject <List <LinguisticVariable> >( File.ReadAllText("Data/linguisticQuantifiers.json")); var qualificators = JsonConvert.DeserializeObject <List <LinguisticVariable> >( File.ReadAllText("Data/linguisticQualificators.json")); var groupings = variables.GroupBy(variable => variable.MemberToExtract).ToList(); var sets = new List <FuzzySet>(); foreach (var grouping in groupings) { var movedGroping = new List <Tuple <string, List <LinguisticVariable> > > { new Tuple <string, List <LinguisticVariable> >(grouping.Key, grouping.ToList()) }; movedGroping.AddRange(groupings.Where(linguisticVariables => linguisticVariables != grouping).Take(2) .Select(g => new Tuple <string, List <LinguisticVariable> >(g.Key, g.ToList()))); sets = sets.Concat(GetSets(data, movedGroping)).ToList(); } var i = 0; var sw = new Stopwatch(); sw.Start(); var summarizations = new List <SummarizationResult>(); var qualities = new List <double>(); foreach (var fuzzySet in sets) { Process(fuzzySet); fuzzySet.Qualificator = new FuzzySet(data, qualificators[i++]); if (i == qualificators.Count) { i = 0; } Process(fuzzySet); void Process(FuzzySet set) { var result = new SummarizationResult(); var best = ""; double quality = 0; foreach (var quantifier in quantifiers) { var t = set.DegreeOfTruth(quantifier); var summarization = $"{quantifier.Name} people {set} [Quality: {t:N5}]"; if (t > quality) { best = summarization; quality = t; } result.AllSummarizations.Add(summarization); } qualities.Add(quality); result.BestSummarization = best; summarizations.Add(result); } } sw.Stop(); var avg = qualities.Average(); Results.ItemsSource = summarizations; }