private void btnInfer_Click(object sender, EventArgs e) { NormalizeAllRange2Element(); // To infer good rules var learningRecrods = FreezedFiles .Concat(Enumerable.Repeat(_activeFile, 1)) .Select(f => new LearningRecord(f.Ast, f.Range2Elements.Values)) .ToList(); var filters = RuleLearner.Learn(learningRecrods).ToList(); var newModifiableItems = new List <RuleListViewItem>(); _eventEnabled = false; foreach (var filter in filters) { var freezedRuleItem = lvFreezedRule.Items.Cast <RuleListViewItem>() .FirstOrDefault(i => i.Filter.TryUpdateProperties(filter)); if (freezedRuleItem != null) { freezedRuleItem.Update(Files); continue; } var modifiableRuleItem = lvModifiableRule.Items.Cast <RuleListViewItem>() .FirstOrDefault(i => i.Filter.TryUpdateProperties(filter)); if (modifiableRuleItem != null) { modifiableRuleItem.Update(Files); newModifiableItems.Add(modifiableRuleItem); continue; } var item = new RuleListViewItem(filter, Files); if (filter is NopFilter) { item.Checked = true; //TODO: should use "filter is NopFilter;" ? } newModifiableItems.Add(item); } lvModifiableRule.Items.Clear(); var sortedModifiableItems = newModifiableItems .OrderByDescending(i => i.ExactMatch) .ThenByDescending(i => i.Filter.LivingTime); foreach (var item in sortedModifiableItems) { lvModifiableRule.Items.Add(item); } _eventEnabled = true; lvRule_ItemChecked(null, null); }
private void btnInfer_Click(object sender, EventArgs e) { NormalizeAllRange2Element(); // To infer good rules var learningRecrods = FreezedFiles .Concat(Enumerable.Repeat(_activeFile, 1)) .Select(f => new LearningRecord(f.Ast, f.Range2Elements.Values)) .ToList(); var filters = RuleLearner.Learn(learningRecrods).ToList(); var newModifiableItems = new List<RuleListViewItem>(); _eventEnabled = false; foreach (var filter in filters) { var freezedRuleItem = lvFreezedRule.Items.Cast<RuleListViewItem>() .FirstOrDefault(i => i.Filter.TryUpdateProperties(filter)); if (freezedRuleItem != null) { freezedRuleItem.Update(Files); continue; } var modifiableRuleItem = lvModifiableRule.Items.Cast<RuleListViewItem>() .FirstOrDefault(i => i.Filter.TryUpdateProperties(filter)); if (modifiableRuleItem != null) { modifiableRuleItem.Update(Files); newModifiableItems.Add(modifiableRuleItem); continue; } var item = new RuleListViewItem(filter, Files); if (filter is NopFilter) { item.Checked = true; //TODO: should use "filter is NopFilter;" ? } newModifiableItems.Add(item); } lvModifiableRule.Items.Clear(); var sortedModifiableItems = newModifiableItems .OrderByDescending(i => i.ExactMatch) .ThenByDescending(i => i.Filter.LivingTime); foreach (var item in sortedModifiableItems) { lvModifiableRule.Items.Add(item); } _eventEnabled = true; lvRule_ItemChecked(null, null); }