public void FitnessTestCrazy1()
        {
            ModelHelper.SetBpmModel(new BpmModel.Builder(ModelHelper.GetBpmModel()).SetAlpha(0.0).Build());
            var fitness = new BpmnFitness(false);

            var genome0 = "<PI;AND(SEQ(a2;a6);SEQ(a3;XOR(v[1,5];a8;a7)));PO>".ParseBpmGenome();
            var f0      = fitness.Evaluate(genome0) as BpmSolution;

            Debug.WriteLine(f0.Fitness);

            var genome1 = "<PI;SEQ(a1;SEQ(a1;a6;a3;XOR(v[1,5];a6;a7));a3;XOR(v[1,5];a8;a7));PO>".ParseBpmGenome();
            var f1      = fitness.Evaluate(genome1) as BpmSolution;

            Debug.WriteLine(f1.Fitness);

            Assert.IsTrue(f0.Fitness > f1.Fitness);
        }
        public void FitnessSimilar2()
        {
            ModelHelper.SetBpmModel(new BpmModel.Builder(ModelHelper.GetBpmModel()).SetAlpha(0.0).Build());
            var fitness = new BpmnFitness(false);

            var genome0 = "<PI;SEQ(a1;a3;a6;XOR(v[1,5];a8;a7));PO>".ParseBpmGenome();
            var f0      = fitness.Evaluate(genome0) as BpmSolution;

            Debug.WriteLine(f0.Fitness);

            var genome1 = "<PI;SEQ(a1;a3;a6;XOR(v[1,5];a8;XOR(v[1,5];a8;a7)));PO>".ParseBpmGenome();
            var f1      = fitness.Evaluate(genome1) as BpmSolution;

            Debug.WriteLine(f1.Fitness);

            Assert.AreEqual(f0.Fitness, f1.Fitness);
        }
        public void FitnessTestCrazy4()
        {
            ModelHelper.SetBpmModel(new BpmModel.Builder(ModelHelper.GetBpmModel()).SetAlpha(0.0).Build());
            var fitness = new BpmnFitness(false);

            var genome0 = "<PI;AND(SEQ(a2;a6);SEQ(a3;a7));PO>".ParseBpmGenome();
            var f0      = fitness.Evaluate(genome0) as BpmSolution;

            Debug.WriteLine(f0.Fitness);
        }
        public void FitnessTest()
        {
            ModelHelper.SetBpmModel(new BpmModel.Builder(ModelHelper.GetBpmModel()).SetAlpha(0.0).Build());
            var fitness = new BpmnFitness(false);

            // start
            var genome1 = "<PI;SEQ(a1;SEQ(SEQ(a3;a1;a6);a1);XOR(v[1,5];a8;a7);a1);PO>".ParseBpmGenome();
            var f1      = fitness.Evaluate(genome1) as BpmSolution;

            Debug.WriteLine(f1.Fitness);

            // move a1 down
            var genome2 = "<PI;SEQ(SEQ(SEQ(a1;a3;a1;a6);a1);XOR(v[1,5];a8;a7);a1);PO>".ParseBpmGenome();
            var f2      = fitness.Evaluate(genome2) as BpmSolution;

            Debug.WriteLine(f2.Fitness);

            // remove SEQ
            var genome3 = "<PI;SEQ(SEQ(a1;a3;a1;a6;a1);XOR(v[1,5];a8;a7);a1);PO>".ParseBpmGenome();
            var f3      = fitness.Evaluate(genome3) as BpmSolution;

            Debug.WriteLine(f3.Fitness);

            // remove SEQ
            var genome4 = "<PI;SEQ(a1;a3;a1;a6;a1;XOR(v[1,5];a8;a7);a1);PO>".ParseBpmGenome();
            var f4      = fitness.Evaluate(genome4) as BpmSolution;

            Debug.WriteLine(f4.Fitness);

            // remove a1
            var genome5 = "<PI;SEQ(a1;a3;a1;a6;a1;XOR(v[1,5];a8;a7));PO>".ParseBpmGenome();
            var f5      = fitness.Evaluate(genome5) as BpmSolution;

            Debug.WriteLine(f5.Fitness);

            // remove a1
            var genome6 = "<PI;SEQ(a1;a3;a1;a6;XOR(v[1,5];a8;a7));PO>".ParseBpmGenome();
            var f6      = fitness.Evaluate(genome6) as BpmSolution;

            Debug.WriteLine(f6.Fitness);

            // remove a1
            var genome7 = "<PI;SEQ(a1;a3;a6;XOR(v[1,5];a8;a7));PO>".ParseBpmGenome();
            var f7      = fitness.Evaluate(genome7) as BpmSolution;

            Debug.WriteLine(f7.Fitness);

            Assert.IsTrue(f1.Fitness == f2.Fitness);
            Assert.IsTrue(f2.Fitness == f3.Fitness);
            Assert.IsTrue(f3.Fitness == f4.Fitness);
            Assert.IsTrue(f4.Fitness < f5.Fitness);
            Assert.IsTrue(f5.Fitness < f6.Fitness);
            Assert.IsTrue(f6.Fitness < f7.Fitness);
        }
        public void FitnessSimilarPaperGenome()
        {
            ModelHelper.SetBpmModel(new BpmModel.Builder(ModelHelper.GetBpmModel()).SetAlpha(0.05).Build());
            var fitness = new BpmnFitness(false);

            var genome0 = "<PI;AND(SEQ(a2;a6);SEQ(a3;XOR(v[1,5];a8;a7)));PO>".ParseBpmGenome();
            var f0      = fitness.Evaluate(genome0) as BpmSolution;

            Debug.WriteLine(f0.Fitness);

            var genome1 = "<PI;AND(SEQ(a1;a6);SEQ(a4;XOR(v[1,5];a8;a7)));PO>".ParseBpmGenome();
            var f1      = fitness.Evaluate(genome1) as BpmSolution;

            Debug.WriteLine(f1.Fitness);

            var genome2 = "<PI;AND(SEQ(a1;a5);SEQ(XOR(v[1,3];a4;a3);XOR(v[1,5];a8;a7)));PO>".ParseBpmGenome();
            var f2      = fitness.Evaluate(genome2) as BpmSolution;

            Debug.WriteLine(f2.Fitness);

            var genome3 = "<PI;AND(SEQ(a1;a5);SEQ(a4;XOR(v[1,5];a8;a7)));PO>".ParseBpmGenome();
            var f3      = fitness.Evaluate(genome3) as BpmSolution;

            Debug.WriteLine(f3.Fitness);

            var genome4 = "<PI;AND(SEQ(XOR(v[1,2];a1;a2);a5);SEQ(XOR(v[1,4];a3;a4);XOR(v[1,5];a8;a7)));PO>"
                          .ParseBpmGenome();
            var f4 = fitness.Evaluate(genome4) as BpmSolution;

            Debug.WriteLine(f4.Fitness);

            Assert.IsTrue(f0.Fitness > f1.Fitness);
            Assert.IsTrue(f1.Fitness > f2.Fitness);
            Assert.IsTrue(f2.Fitness > f3.Fitness);
            Assert.IsTrue(f3.Fitness > f4.Fitness);
        }