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; }
/// <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); }
public static bool[][] GetTrueVectors(int inputCount, int[] trueValues) { return(trueValues. Select(o => UtilityCore.ConvertToBase2(o, inputCount)). ToArray()); }