Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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();
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        //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);
        }
Exemplo n.º 6
0
        // 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);
        }