Esempio n. 1
0
        private double ResolveRecursion(IItemNumerical item, Node.Node node)
        {
            double res = 0;

            if (node == null)
            {
                throw new Exception();
            }

            if (node.IsTerminal)
            {
                return(node.Average);
            }

            if (!item.HasValue(node.FeatureName))
            {
                throw new Exception();
            }

            var v = item.GetValue(node.FeatureName);

            if (v < node.FeatureValue)
            {
                res = ResolveRecursion(item, node.Less);
            }
            else
            {
                res = ResolveRecursion(item, node.Greater);
            }

            return(res);
        }
Esempio n. 2
0
        public double Resolve(IItemNumerical item)
        {
            if (_trees == null || _trees.Count == 0)
            {
                throw new Exception();
            }

            object obj = new object();

            double sum = 0;

            Parallel.ForEach(_trees, (t) => {
                double d = t.Resolve(item);
                lock (obj)
                {
                    sum = sum + d;
                }
            });

            return(sum / _trees.Count);
        }
        private void BtnResolve_Click(object obj)
        {
            Result = string.Empty;
            if (_forest == null)
            {
                return;
            }
            IItemNumerical item = _forest.CreateItem();
            int            i    = 0;

            foreach (NameValue nv in NameValueList)
            {
                item.SetValue(nv.Name, nv.Value);
                i++;
            }
            if (i == 0)
            {
                return;
            }
            double res = _forest.Resolve(item);

            Result = res.ToString();
        }
        private void _forest_ForestGrowComplete(object sender, EventArgs e)
        {
            Progress            = 100;
            IsBtnGenerateEnable = true;
            IsBtnResolveEnable  = true;

            App.Current.Dispatcher.Invoke(() => { NameValueList.Clear(); });
            IItemNumerical item  = _forest.CreateItem();
            var            names = _forest.GetFeatureNames();

            foreach (var name in names)
            {
                if (name == ResolutionFeatureName)
                {
                    continue;
                }
                App.Current.Dispatcher.Invoke(() =>
                {
                    NameValueList.Add(new NameValue {
                        Name = name, Value = 0
                    });
                });
            }
        }
Esempio n. 5
0
 public double Resolve(IItemNumerical item)
 {
     return(ResolveRecursion(item, _root));
 }