Esempio n. 1
0
        public void UpdateIntermediatePlan(byte layerIndex, PlannerResult plan)
        {
            if (layerIndex >= _domain.IntermediateLayerCount)
            {
                return;
            }

            var planCount      = plan.Count;
            var planBufferSize = plan.BufferSize;

            if (planCount > planBufferSize)
            {
                return;
            }

            var actionPool       = _domain.IntermediateLayers[layerIndex];
            var actionPoolLength = actionPool.Length;
            var currentPlan      = _intermediateGoals[layerIndex] = new string[planCount];

            for (byte i = 0; i < planCount; i++)
            {
                if (plan[i] < actionPoolLength && actionPool[i] != null)
                {
                    currentPlan[i] = actionPool[i].name;
                }
                else
                {
                    currentPlan[i] = "INVALID";
                }
            }

            _activeGoalsIndices[layerIndex] = plan.CurrentIndex;
        }
Esempio n. 2
0
        public MainPlannerJob(
            RawLayer layer,
            PlannerResult previousLayerResult,
            PlannerResult currentPlan,
            float maxFScore,
            RawBlackboardArray datasets,
            PlannerResult output)
        {
            // domain
            layer.Break(out _targets, out _actions);
            _goal = default;

            // layering
            _previousLayerResult = previousLayerResult;

            // previous run
            _currentPlan = currentPlan;

            // settings
            _maxFScore = maxFScore;

            // runtime data
            _datasets = datasets;

            // output
            _output = output;
        }
Esempio n. 3
0
        public void UpdateCorePlan(PlannerResult plan)
        {
            var planCount      = plan.Count;
            var planBufferSize = plan.BufferSize;

            if (planCount > planBufferSize)
            {
                return;
            }

            var actionPool       = _domain.Actions;
            var actionPoolLength = actionPool.Length;
            var currentPlan      = _actions = new string[planCount];

            _executables = new string[planCount][];
            _services    = new string[planCount][];

            for (byte i = 0; i < planCount; i++)
            {
                var currentAction = actionPool[i];
                if (plan[i] < actionPoolLength && currentAction != null)
                {
                    currentPlan[i] = currentAction.name;

                    var executablesPool    = currentAction.Collection4;
                    var executablesCount   = executablesPool.Length;
                    var currentExecutables = _executables[i] = new string[executablesCount];
                    for (var j = 0; j < executablesCount; j++)
                    {
                        currentExecutables[j] = ((Object)executablesPool[j]).name;
                    }

                    var servicesPool    = currentAction.Collection5;
                    var servicesCount   = servicesPool.Length;
                    var currentServices = _services[i] = new string[servicesCount];
                    for (var j = 0; j < servicesCount; j++)
                    {
                        currentServices[j] = ((Object)servicesPool[j]).name;
                    }
                }
                else
                {
                    currentPlan[i] = "INVALID";

                    _executables[i] = new string[0];
                    _services[i]    = new string[0];
                }
            }

            _activeActionIndex = plan.CurrentIndex;
        }
Esempio n. 4
0
 public GoalCalculatorJob(IBlackboardComponent blackboard, RawInsistenceCalculatorsArray domainData, PlannerResult result)
 {
     _blackboard            = blackboard.Data;
     _insistenceCalculators = domainData;
     _result = result;
 }