示例#1
0
        public NestedMarkovDecisionProcess(ModelCapacity modelCapacity)
        {
            var modelSize = modelCapacity.DeriveModelByteSize(StateSize, TransitionSize);

            StateLabeling = new LabelVector();
            States        = (int)modelSize.NumberOfStates;

            _maxNumberOfContinuationGraphElements = modelSize.NumberOfTransitions * 10L;
            _maxNumberOfContinuationGraphElements = Math.Max(_maxNumberOfContinuationGraphElements, 1024);

            Requires.InRange(_maxNumberOfContinuationGraphElements, nameof(_maxNumberOfContinuationGraphElements), 1024, Int64.MaxValue - 1);

            _stateToRootOfContinuationGraphBuffer.Resize(States * sizeof(long), zeroMemory: false);
            _stateToRootOfContinuationGraphMemory = (long *)_stateToRootOfContinuationGraphBuffer.Pointer;

            _continuationGraphBuffer.Resize((long)_maxNumberOfContinuationGraphElements * sizeof(ContinuationGraphElement), zeroMemory: false);
            _continuationGraph = (ContinuationGraphElement *)_continuationGraphBuffer.Pointer;

            MemoryBuffer.SetAllBitsMemoryWithInitblk.ClearWithMinus1(_stateToRootOfContinuationGraphMemory, States);
        }
示例#2
0
        public LabeledTransitionMarkovDecisionProcess(long maxNumberOfStates, long maxNumberOfTransitions)
        {
            Requires.InRange(maxNumberOfStates, nameof(maxNumberOfStates), 1024, Int32.MaxValue - 1);

            _maxNumberOfTransitionTargets         = maxNumberOfTransitions / (AvgGraphNodesPerSucceedingState + 1);
            _maxNumberOfContinuationGraphElements = _maxNumberOfTransitionTargets * AvgGraphNodesPerSucceedingState;

            Requires.InRange(_maxNumberOfTransitionTargets, nameof(_maxNumberOfTransitionTargets), 1024, Int32.MaxValue - 1);
            Requires.InRange(_maxNumberOfContinuationGraphElements, nameof(_maxNumberOfContinuationGraphElements), 1024, Int64.MaxValue - 1);

            _stateStorageStateToRootOfContinuationGraphBuffer.Resize((long)maxNumberOfStates * sizeof(long), zeroMemory: false);
            _stateStorageStateToRootOfContinuationGraphMemory = (long *)_stateStorageStateToRootOfContinuationGraphBuffer.Pointer;

            _continuationGraphBuffer.Resize((long)_maxNumberOfContinuationGraphElements * sizeof(ContinuationGraphElement), zeroMemory: false);
            _continuationGraph = (ContinuationGraphElement *)_continuationGraphBuffer.Pointer;

            _transitionTargetBuffer.Resize((long)_maxNumberOfTransitionTargets * sizeof(TransitionTargetElement), zeroMemory: false);
            _transitionTarget = (TransitionTargetElement *)_transitionTargetBuffer.Pointer;

            MemoryBuffer.SetAllBitsMemoryWithInitblk.ClearWithMinus1(_stateStorageStateToRootOfContinuationGraphMemory, maxNumberOfStates);
        }