public Decision Build(
            IIntMap<int>  outcomeArrows,
            IntInterval   possibleBounds,
            IIntFrequency frequency)
        {
            defaultAction = outcomeArrows.DefaultValue;
            this.actionIdToDecision[defaultAction] = new ActionDecision(defaultAction);

            Decision result;

            if (TryBuildElementaryTree(outcomeArrows, out result))
            {
                return result;
            }

            // TODO: Alternatively to averaging probability, each test can
            // be split if probability varies significantly within test range
            DecisionTest[] tests
                = outcomeArrows
                .EnumerateCoverage(possibleBounds)
                .Select(
                    a => new DecisionTest(a.Key, a.Value, frequency.Average(a.Key))
                    )
                    .ToArray();

            result = GenTree(new ArraySlice<DecisionTest>(tests));
            return result;
        }
        public Decision Build(
            IIntMap <int> outcomeArrows,
            IntInterval possibleBounds,
            IIntFrequency frequency)
        {
            defaultAction = outcomeArrows.DefaultValue;
            this.actionIdToDecision[defaultAction] = new ActionDecision(defaultAction);

            Decision result;

            if (TryBuildElementaryTree(outcomeArrows, out result))
            {
                return(result);
            }

            // TODO: Alternatively to averaging probability, each test can
            // be split if probability varies significantly within test range
            DecisionTest[] tests
                = outcomeArrows
                  .EnumerateCoverage(possibleBounds)
                  .Select(
                      a => new DecisionTest(a.Key, a.Value, frequency.Average(a.Key))
                      )
                  .ToArray();

            result = GenTree(new ArraySlice <DecisionTest>(tests));
            return(result);
        }
 public static SwitchGenerator Sparse(
     IIntMap<int>  arrows,
     IntInterval   possibleBounds,
     IIntFrequency frequency = null)
 {
     var result = new SparseSwitchGenerator(arrows, possibleBounds, frequency);
     return result;
 }
示例#4
0
        public static SwitchGenerator Sparse(
            IIntMap <int> arrows,
            IntInterval possibleBounds,
            IIntFrequency frequency = null)
        {
            var result = new SparseSwitchGenerator(arrows, possibleBounds, frequency);

            return(result);
        }
 public static SwitchGenerator Sparse(
     IntArrow<int>[] intervalToValue,
     int defaultValue,
     IntInterval   possibleBounds,
     IIntFrequency frequency = null)
 {
     var result = new SparseSwitchGenerator(intervalToValue, defaultValue, possibleBounds, frequency);
     return result;
 }
 public SparseSwitchGenerator(
     IIntMap<int>  intMap,
     IntInterval   possibleBounds,
     IIntFrequency frequency)
 {
     this.strategy = new InlineFirstDTStrategy(this);
     this.intMap = intMap;
     this.possibleBounds = possibleBounds;
     this.frequency = frequency ?? new UniformIntFrequency(possibleBounds);
 }
 public SparseSwitchGenerator(
     IntArrow<int>[] intArrows,
     int defaultValue,
     IntInterval possibleBounds,
     IIntFrequency frequency = null)
     : this(new MutableIntMap<int>(intArrows, defaultValue), 
         possibleBounds,
         frequency)
 {
 }
示例#8
0
        public static SwitchGenerator Sparse(
            IntArrow <int>[] intervalToValue,
            int defaultValue,
            IntInterval possibleBounds,
            IIntFrequency frequency = null)
        {
            var result = new SparseSwitchGenerator(intervalToValue, defaultValue, possibleBounds, frequency);

            return(result);
        }
 public SparseSwitchGenerator(
     IIntMap <int> intMap,
     IntInterval possibleBounds,
     IIntFrequency frequency)
 {
     this.strategy       = new InlineFirstDTStrategy(this);
     this.intMap         = intMap;
     this.possibleBounds = possibleBounds;
     this.frequency      = frequency ?? new UniformIntFrequency(possibleBounds);
 }
 public SparseSwitchGenerator(
     IntArrow <int>[] intArrows,
     int defaultValue,
     IntInterval possibleBounds,
     IIntFrequency frequency = null)
     : this(
         new MutableIntMap <int>(intArrows, defaultValue),
         possibleBounds,
         frequency)
 {
 }