示例#1
0
        public SCPSolution Clone()
        {
            List <SCPAttribute> attributes = new List <SCPAttribute>();

            Sets.ForEach(s => s.Attributes.ForEach(a1 =>
            {
                if (attributes.Exists(a2 => a2.Tag == a1.Tag) == false)
                {
                    attributes.Add(a1.Copy());
                }
            }));

            SCPSolution clone = new SCPSolution();

            Sets.ForEach(s =>
            {
                SCPSet set = s.Copy();
                clone.Sets.Add(set);
                s.Attributes.ForEach(a1 =>
                {
                    SCPAttribute attribute = attributes.Find(a2 => a2.Tag == a1.Tag);
                    attribute.UsedIn.Add(set);
                    set.Attributes.Add(attribute);
                });
            });

            clone.CriticalList = new List <SCPSet>(CriticalList);

            return(clone);
        }
示例#2
0
        public object Clone()
        {
            SCPDataSet copy = new SCPDataSet();

            copy.Size = Size;
            Sets.ForEach(s => copy.Sets.Add((SCPSet)s.Copy()));
            Attributes.ForEach(a => copy.Attributes.Add(a.Copy()));

            Sets.ForEach(s1 =>
            {
                SCPSet set = copy.Sets.Find(s2 => s2.Tag == s1.Tag);
                s1.Attributes.ForEach(a1 =>
                {
                    SCPAttribute attribute = copy.Attributes.Find(a2 => a2.Tag == a1.Tag);
                    set.Attributes.Add(attribute);
                });
            });

            Attributes.ForEach(a1 =>
            {
                SCPAttribute attribute = copy.Attributes.Find(a2 => a2.Tag == a1.Tag);
                a1.UsedIn.ForEach(s1 => attribute.UsedIn.Add(copy.Sets.Find(s2 => s2.Tag == s1.Tag)));
            });

            return(copy);
        }
示例#3
0
 public int GetAttributeRedundancy(SCPAttribute attribute)
 {
     if (USet == null)
     {
         return(0);
     }
     return(USet.Where(u => u == attribute.Tag).Count());
 }
示例#4
0
        public SCPAttribute Copy()
        {
            SCPAttribute copy = new SCPAttribute();

            copy.UsedIn      = new List <SCPSet>();
            copy.Cost        = Cost;
            copy.Tag         = Tag;
            copy.Weight      = Weight;
            copy.Frequency   = Frequency;
            copy.Visit       = Visit;
            copy.Probibility = 0;
            return(copy);
        }
示例#5
0
        public object Clone()
        {
            SCPAttribute clone = new SCPAttribute();

            clone.UsedIn = new List <SCPSet>();
            UsedIn.ForEach(s => clone.UsedIn.Add((SCPSet)s.Clone()));
            clone.Cost        = Cost;
            clone.Tag         = Tag;
            clone.Weight      = Weight;
            clone.Frequency   = Frequency;
            clone.Visit       = Visit;
            clone.Probibility = Probibility;
            return(clone);
        }