public void TestScoreClosestBinary()
        {
            _cpTaskEnv = CreateEnvironment(FitnessFunction.ClosestBinary);
            _cpTaskEnv.ResetAll();
            // All values are correct
            double[][] actions = new double[_cpTaskEnv.Sequence.Length][];
            for (int i = 0; i < _cpTaskEnv.Sequence.Length; i++)
            {
                actions[i] = new double[_cpTaskEnv.Sequence[i].Length];
                for (int j = 0; j < _cpTaskEnv.Sequence[i].Length; j++)
                {
                    if (_cpTaskEnv.Sequence[i][j] == 1) actions[i][j] = 0.6;
                    else actions[i][j] = 0.4;
                }
            }
            double score = CalcScore(actions);
            Assert.AreEqual(score, _cpTaskEnv.MaxScore, "Max score assert");

            // All values are wrong
            _cpTaskEnv.ResetAll();
            actions = new double[_cpTaskEnv.Sequence.Length][];
            for (int i = 0; i < _cpTaskEnv.Sequence.Length; i++)
            {
                actions[i] = new double[_cpTaskEnv.Sequence[i].Length];
                for (int j = 0; j < _cpTaskEnv.Sequence[i].Length; j++)
                {
                    if (_cpTaskEnv.Sequence[i][j] == 1) actions[i][j] = 0.4;
                    else actions[i][j] = 0.6;
                }
            }
            score = CalcScore(actions);
            Assert.AreEqual(score, 0, "Min score assert");
        }
 private void FastForwardToStep(CopyTaskEnvironment env, int step)
 {
     double[] initialObservation = _cpTaskEnv.InitialObservation;
     double[] dummyAction = new double[] { 0, 0 };
     for (int i = 1; i < step; i++)
     {
         _cpTaskEnv.PerformAction(dummyAction);
     }
 }
 public void Before()
 {
     _cpTaskEnv = CreateEnvironment(FitnessFunction.StrictCloseToTarget);
     _cpTaskEnv.ResetAll();
 }
        public void TestScoreStrictCloseToTarget()
        {
            _cpTaskEnv = CreateEnvironment(FitnessFunction.StrictCloseToTarget);
            _cpTaskEnv.ResetAll();
            // All values are correct
            double[][] actions = Utilities.DeepCopy(_cpTaskEnv.Sequence);
            double score = CalcScore(actions);
            Assert.AreEqual(_cpTaskEnv.CurrentScore, _cpTaskEnv.MaxScore, "Max score assert");

            // All values are wrong
            _cpTaskEnv.ResetAll();
            actions = Utilities.DeepCopy(_cpTaskEnv.Sequence);
            for (int i = 0; i < actions.Length; i++)
            {
                for (int j = 0; j < actions[i].Length; j++)
                {
                    if (actions[i][j] == 1) actions[i][j] = 0;
                    else actions[i][j] = 1;
                }
            }
            Assert.AreEqual(_cpTaskEnv.CurrentScore, 0, "Min score assert");
        }