Esempio n. 1
0
        public void ResetLabels(int[] trueValues)
        {
            if (trueValues == null)
            {
                trueValues = new int[0];
            }

            if (trueValues.Any(o => o > 7))
            {
                throw new ArgumentOutOfRangeException("");
            }

            while (_viewport.Children.Count > _viewportOffset_Init)
            {
                _viewport.Children.RemoveAt(_viewport.Children.Count - 1);
            }

            VectorND center = new VectorND(.5, .5, .5);

            // Add the numbers
            for (int cntr = 0; cntr < 8; cntr++)
            {
                VectorND position = new VectorND(UtilityCore.ConvertToBase2(cntr, 3).Select(o => o ? 1d : 0d).ToArray());
                position = position - center;
                position = center + (position * 1.2);

                Color color = trueValues.Contains(cntr) ?
                              TrueColor :
                              FalseColor;

                AddText3D(cntr.ToString(), position.ToPoint3D(), position.ToVector3D().ToUnit(), .1, color, false);
            }

            _viewportOffset_Labels = _viewport.Children.Count;
        }
Esempio n. 2
0
        /// <summary>
        /// PickANumber is meant to be very simple.  A few numbers (bit patterns) that should have an output of 1, all others have an output of 0
        /// </summary>
        /// <param name="trueVectors">These are the bit patterns that will return an output of 1</param>
        public PAN_Evaluator(int inputArrSize, bool[][] trueVectors)
        {
            _trueVectors = trueVectors;

            _allCases = new Tuple <double[], double> [Convert.ToInt32(Math.Pow(2, inputArrSize)) + 1];

            for (int cntr = 0; cntr < _allCases.Length; cntr++)
            {
                bool[] input = UtilityCore.ConvertToBase2(cntr, inputArrSize);

                bool isTrueCase = trueVectors.Any(o => UtilityCore.IsArrayEqual(o, input));

                _allCases[cntr] = Tuple.Create(
                    input.Select(o => o ? 1d : 0d).ToArray(),
                    isTrueCase ? 1d : 0d);
            }

            _allCases[_allCases.Length - 1] = Tuple.Create(
                Enumerable.Range(0, inputArrSize).Select(o => .5).ToArray(),
                0d);

            _maxScore = Math.Pow(ERRORMULT, inputArrSize);
        }
Esempio n. 3
0
 public static bool[][] GetTrueVectors(int inputCount, int[] trueValues)
 {
     return(trueValues.
            Select(o => UtilityCore.ConvertToBase2(o, inputCount)).
            ToArray());
 }