public override TestElement Deserialize(Page page, bool isCopy = false) { if (isCopy) { Name = page.ParentTest.GetFreeName(Name); } ItemSet itemSet = new ItemSet(Name, page, GridPosition, GridSize); itemSet.Border = Border; itemSet.Role = Role; itemSet.AlternativesNaming = AlternativesNaming; foreach (string str in Alternatives) { itemSet.AddAlternative(str); } itemSet.ItemsNaming = ItemsNaming; foreach (Item it in Items) { itemSet.AddItem(it); } itemSet.NumberOfCheckedAlternativesAllowed = NumberOfCheckedAlternativesAllowed; itemSet.ApplyScoreTooManyAlternatives = ApplyScoreTooManyAlternatives; itemSet.ScoreIfTooManyAlternativesAreChecked = ScoreIfTooManyAlternativesAreChecked; itemSet.Description = Description; itemSet.Columns = Columns; return(itemSet); }
private void menuHeadersInsert(object sender, EventArgs e) { if (dataGrid.SelectedRows.Count == 1) { ItemSet.AddItem(new Item(), dataGrid.SelectedRows[0].Index - 1); FillGrid(); } else if (dataGrid.SelectedColumns.Count == 1) { ItemSet.AddAlternative("", dataGrid.SelectedColumns[0].Index - 1); FillGrid(); } }
private int Mine(FPTree fpTree, ItemSet anItemSet) { int minedItemSets = 0; FPTree projectedTree; projectedTree = fpTree.Project(anItemSet.GetLastItem()); minedItemSets = projectedTree.FrequentItems.Count; foreach (Item anItem in projectedTree.FrequentItems) { ItemSet nextItemSet = anItemSet.Clone(); nextItemSet.AddItem(anItem); minedItemSets += Mine(projectedTree, nextItemSet); } return(minedItemSets); }
public int GenerateFrequentItemSets() { List <Item> frequentItems = fpTree.FrequentItems; int totalFrequentItemSets = frequentItems.Count; foreach (Item anItem in frequentItems) { ItemSet anItemSet = new ItemSet(); anItemSet.AddItem(anItem); totalFrequentItemSets += Mine(fpTree, anItemSet); Console.WriteLine(totalFrequentItemSets + " itemsets for " + anItem.Symbol); } Console.WriteLine(totalFrequentItemSets); return(totalFrequentItemSets); }
//generate frequent itemsets public int GenerateFrequentItemSets() { var watch = System.Diagnostics.Stopwatch.StartNew(); List <ItemSet> previousItemSets = new List <ItemSet>(); //holds itemsets found in previous calculation //insert the frequent 1-itemsets List <Item> items = inputDatabaseHelper.CalculateFrequencyAllItems(); foreach (Item anItem in items) { if (anItem.SupportCount >= MinimumSupportCount) // if frequent { ItemSet anItemSet = new ItemSet(); anItemSet.AddItem(anItem); previousItemSets.Add(anItemSet); } } int itemSetLength = 1; int totalFrequentItemSets = 0; Console.WriteLine("generated " + itemSetLength.ToString() + "-itemset total " + previousItemSets.Count + " itemsets"); totalFrequentItemSets += previousItemSets.Count; while (previousItemSets.Count != 0) { itemSetLength++; List <ItemSet> newCandidates = GetNextCandidates(previousItemSets); previousItemSets.Clear(); previousItemSets = GetFrequentItemSetsFromCandidates(newCandidates); totalFrequentItemSets += previousItemSets.Count; Console.WriteLine("generated " + itemSetLength.ToString() + "-itemset total " + previousItemSets.Count + " itemsets"); } watch.Stop(); outputDatabaseHelper.WriteAggregatedResult(inputDatabaseHelper.DatabaseName, MinimumSupport, totalFrequentItemSets, watch.ElapsedMilliseconds); Console.WriteLine("Aggregated Result Written to " + outputDatabaseHelper.DatabasePath); return(totalFrequentItemSets); }
// tries to add item, if item added returns private static bool AddItemToItemSet(ItemSet set, bool chaosItems = false, bool honorOrder = true) { string listName; switch (chaosItems) { case false: listName = "ItemList"; break; case true: listName = "ItemListChaos"; break; default: throw new Exception("How did you manage to provide a value neither true or false for a boolean?"); } Item minItem = null; double minDistance = double.PositiveInfinity; // TODO: crashes here after some time foreach (StashTab s in StashTabList.StashTabs) { foreach (Item i in ((List <Item>)Utility.GetPropertyValue(s, listName))) { if (set.GetNextItemClass() == i.ItemType || (!honorOrder && set.IsValidItem(i))) { if (set.GetItemDistance(i) < minDistance) { //Trace.WriteLine(minDistance, "minDistance"); minDistance = set.GetItemDistance(i); minItem = i; } } } } if (minItem != null) { set.AddItem(minItem); StashTab tab = GetStashTabFromItem(minItem); ((List <Item>)Utility.GetPropertyValue(tab, listName)).Remove(minItem); //tab.ItemListChaos.Remove(minItem); return(true); } else { // Looks ugly but in case we allow TwoHandWeapons we need to consider that adding a 1H fails but we might have a 2H (this only applies if we honor the order) if (honorOrder) { string nextItemType = set.GetNextItemClass(); if (nextItemType == "TwoHandWeapons") { nextItemType = "OneHandWeapons"; foreach (StashTab s in StashTabList.StashTabs) { foreach (Item i in ((List <Item>)Utility.GetPropertyValue(s, listName))) { if (nextItemType == i.ItemType) { if (set.GetItemDistance(i) < minDistance) { //Trace.WriteLine(minDistance, "minDistance"); minDistance = set.GetItemDistance(i); minItem = i; } } } } if (minItem != null) { set.AddItem(minItem); StashTab tab = GetStashTabFromItem(minItem); ((List <Item>)Utility.GetPropertyValue(tab, listName)).Remove(minItem); //tab.ItemListChaos.Remove(minItem); return(true); } } } } return(false); }