示例#1
0
    public Block Mutate(float noice)
    {
        Block mutation = new Block();

        mutation.MountainEntities = new List <Mountain>();
        foreach (Mountain mountain in this.MountainEntities)
        {
            mutation.MountainEntities.Add(mountain.Mutate(noice));
        }
        EvalBlock eval = new EvalBlock();

        eval.BlockGrade(mutation);
        return(mutation);
    }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        private void EvalEmpty(EvalBlock b)
        {
            var evalMatch = Evaluator.Eval(null);

            if (b.Context.IsTestRun)
            {
                b.Context.Log($"Condition: Eval: {evalMatch}, Query Returned No Series( reduced to null / no value )");
            }

            if (evalMatch)
            {
                b.EvalMatchCount++;
                b.Matches.Add(new EvalMatch("NoData", null));
            }
        }
示例#3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="series"></param>
        private void Eval(EvalBlock b, TimeSeries series)
        {
            var reducedValue = Reducer.Reduce(series);
            var evalMatch    = Evaluator.Eval(reducedValue);

            if (!reducedValue.HasValue)
            {
                b.EmptySerieCount++;
            }

            if (b.Context.IsTestRun)
            {
                b.Context.Log($"Condition [{Index}], Eval: {evalMatch}, Metric: {series.Name}, Value: {reducedValue}");
            }

            if (evalMatch)
            {
                b.Matches.Add(new EvalMatch(series.Name, reducedValue, series.Tags));
                b.EvalMatchCount++;
            }
        }
示例#4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="seriesList"></param>
        private Result Eval(EvaluationContext context, TimeSeriesList seriesList)
        {
            context.Log($"Condition [{Index}]: Query Result", seriesList);

            var b = EvalBlock.Create(context);

            seriesList.ForEach(s => Eval(b, s));

            if (0 == seriesList.Count)
            {
                EvalEmpty(b);
            }

            return(new Result()
            {
                Firing = b.EvalMatchCount > 0,
                NoDataFound = (b.EmptySerieCount == seriesList.Count),
                Operator = Operator,
                Matches = b.Matches
            });
        }
示例#5
0
    private void GenerateMutateAndRelease()
    {
        Block bestBlock = null;

        //Create Blocks
        for (int i = 0; i < 12; i++)
        {
            EvalBlock eval = new EvalBlock();
            Block     tmp  = new Block();
            eval.BlockGrade(tmp);
            TemporalBlockQueue.Add(tmp);
        }

        // Debug.Log("Initial > : " + _PrintQueue());
        for (int i = 0; i < 5; i++)
        {
            _ReduceAndMutate();
            // Debug.Log("Mutation #" + (i + 1) + ": " + _PrintQueue());
        }

        bestBlock = TemporalBlockQueue[TemporalBlockQueue.Count - 1];
        Debug.Log("[MUTATOR] ===================== ADDED TO QUEUE BLOCK G: " + bestBlock.grade);
        Mutate.BlockQueue.Enqueue(bestBlock);
    }