Exemple #1
0
    public Action_MakeAxe()
    {
        Init();
        actionID = "MakeAxe";


        VariationData ironAxe = new VariationData();

        ironAxe.AddRequiredWorldState(WorldStateKey.eHasItem, (int)ItemType.Iron);
        ironAxe.AddRequiredWorldState(WorldStateKey.eHasItem, (int)ItemType.Wood);
        ironAxe.AddSatisfyWorldState(WorldStateKey.eHasItem, (int)ItemType.IronAxe);
        ironAxe.benefitingSkill = Skills.Smithing;
        ironAxe.workCost        = 1f;
        ironAxe.range           = 1f;
        variations.Add(ironAxe);

        VariationData stoneAxe = new VariationData();

        stoneAxe.AddRequiredWorldState(WorldStateKey.eHasItem, (int)ItemType.Stone);
        stoneAxe.AddRequiredWorldState(WorldStateKey.eHasItem, (int)ItemType.Wood);
        stoneAxe.AddSatisfyWorldState(WorldStateKey.eHasItem, (int)ItemType.StoneAxe);
        stoneAxe.workCost = 4f;
        stoneAxe.range    = 1f;
        variations.Add(stoneAxe);
    }
Exemple #2
0
        protected override void Context()
        {
            base.Context();
            _runOptions = new SensitivityAnalysisRunOptions();
            _allEvents  = new List <SensitivityAnalysisEvent>();
            A.CallTo(() => _eventPublisher.PublishEvent(A <SensitivityAnalysisStartedEvent> ._))
            .Invokes(x => _allEvents.Add(x.GetArgument <SensitivityAnalysisStartedEvent>(0)));

            A.CallTo(() => _eventPublisher.PublishEvent(A <SensitivityAnalysisTerminatedEvent> ._))
            .Invokes(x => _allEvents.Add(x.GetArgument <SensitivityAnalysisTerminatedEvent>(0)));

            A.CallTo(() => _eventPublisher.PublishEvent(A <SensitivityAnalysisResultsUpdatedEvent> ._))
            .Invokes(x => _allEvents.Add(x.GetArgument <SensitivityAnalysisResultsUpdatedEvent>(0)));

            _variationData = A.Fake <VariationData>();
            _dataTable     = new DataTable();
            A.CallTo(() => _variationData.ToDataTable()).Returns(_dataTable);
            A.CallTo(() => _sensitivityAnalysisVariationDataCreator.CreateForRun(_sensitivityAnalysis)).Returns(_variationData);
            _populationRunResult = new PopulationRunResults {
                Results = new SimulationResults()
            };
            A.CallTo(() => _populationRunner.RunPopulationAsync(_modelCoreSimulation, _runOptions, _dataTable, null, null)).ReturnsAsync(_populationRunResult);

            _sensitivityAnalysisResults = new SensitivityAnalysisRunResult();
            A.CallTo(() => _runResultCalculator.CreateFor(_sensitivityAnalysis, _variationData, _populationRunResult.Results, false)).Returns(_sensitivityAnalysisResults);
        }
Exemple #3
0
    public Action_ChopTree()
    {
        Init();
        actionID = "ChopTree";

        VariationData ironAxe = new VariationData();

        ironAxe.AddRequiredWorldState(WorldStateKey.eHasItem, (int)ItemType.IronAxe);
        ironAxe.AddRequiredWorldState(WorldStateKey.bIsTreeAvailable, 1);
        ironAxe.AddSatisfyWorldState(WorldStateKey.eHasItem, (int)ItemType.Log);
        ironAxe.benefitingSkill = Skills.WoodCutting;
        ironAxe.workCost        = 4f;
        ironAxe.range           = 1f;
        variations.Add(ironAxe);

        VariationData stoneAxe = new VariationData();

        stoneAxe.AddRequiredWorldState(WorldStateKey.eHasItem, (int)ItemType.StoneAxe);
        stoneAxe.AddRequiredWorldState(WorldStateKey.bIsTreeAvailable, 1);
        stoneAxe.AddSatisfyWorldState(WorldStateKey.eHasItem, (int)ItemType.Log);
        stoneAxe.benefitingSkill = Skills.WoodCutting;
        stoneAxe.workCost        = 12f;
        stoneAxe.range           = 1f;
        variations.Add(stoneAxe);
    }
        protected override void Context()
        {
            _pkAnalysisTask = A.Fake <ISensitivityAnalysisPKAnalysesTask>();
            sut             = new SensitivityAnalysisRunResultCalculator(_pkAnalysisTask);

            _pkAnalyses          = new PopulationSimulationPKAnalyses();
            _sensitivityAnalysis = new SensitivityAnalysis();
            _variationData       = new VariationData();
            _simulationResults   = new SimulationResults();


            A.CallTo(_pkAnalysisTask).WithReturnType <PopulationSimulationPKAnalyses>().Returns(_pkAnalyses);
        }
        public VariationData CreateForRun(SensitivityAnalysis sensitivityAnalysis)
        {
            var variationData = new VariationData
            {
                Name           = sensitivityAnalysis.Name,
                ParameterPaths = sensitivityAnalysis.AllSensitivityParameters.Select(x => x.ParameterSelection.Path).ToList(),
                DefaultValues  = sensitivityAnalysis.AllSensitivityParameters.Select(x => x.Parameter.Value).ToList(),
            };

            sensitivityAnalysis.AllSensitivityParameters.Each(parameter =>
            {
                variationData.AddVariationValues(parameter.Name, sensitivityAnalysis.AllParameterVariationsFor(parameter).ToList());
            });

            return(variationData);
        }
Exemple #6
0
        private void addPKAnalysisSensitivities(VariationData variationData, SimulationResults simulationResults, SensitivityAnalysisRunResult sensitivityRunResult, SensitivityAnalysis sensitivityAnalysis)
        {
            var pkAnalyses = _pkAnalysesTask.CalculateFor(sensitivityAnalysis.Simulation, simulationResults);

            foreach (var pkParameter in pkAnalyses.All())
            {
                sensitivityAnalysis.AllSensitivityParameters.Each(sensitivityParameter =>
                {
                    var pkSensitivity = calculatePKParameterSensitivity(sensitivityParameter, variationData, pkParameter);
                    if (pkSensitivity != null)
                    {
                        sensitivityRunResult.AddPKParameterSensitivity(pkSensitivity);
                    }
                });
            }
        }
Exemple #7
0
        private void addOutputSensitivities(VariationData variationData, SimulationResults simulationResults, SensitivityAnalysisRunResult sensitivityRunResult, SensitivityAnalysis sensitivityAnalysis)
        {
            variationData.AllVariations.Each(variation =>
            {
                //one variation corresponds to one row in the simulation table (e.g. one IndividualId)
                //this is the variation of one parameter compared to the base simulation
                var resultsForVariation = simulationResults.ResultsFor(variation.VariationId);

                //Retrieve this parameter
                var sensitivityParameter = sensitivityAnalysis.SensitivityParameterByName(variation.ParameterName);
                var parameterPath        = sensitivityParameter.ParameterSelection.Path;

                //For all output, we add the sensitivity
                resultsForVariation.AllValues.Each(outputValue =>
                {
                    var outputParameterSensitivity = calculateOutputParameterSensitivity(outputValue, variation, parameterPath);
                    sensitivityRunResult.AddOutputParameterSensitivity(outputParameterSensitivity);
                });
            });
        }
Exemple #8
0
    public Action_MineIron()
    {
        Init();
        actionID = "MineIron";

        VariationData ironPick = new VariationData();

        ironPick.AddRequiredWorldState(WorldStateKey.eHasItem, (int)ItemType.IronPickaxe);
        ironPick.AddSatisfyWorldState(WorldStateKey.eHasItem, (int)ItemType.Iron);
        ironPick.workCost = 5f;
        ironPick.range    = 1f;
        variations.Add(ironPick);

        VariationData stonePick = new VariationData();

        stonePick.AddRequiredWorldState(WorldStateKey.eHasItem, (int)ItemType.StoneAxe);
        stonePick.AddSatisfyWorldState(WorldStateKey.eHasItem, (int)ItemType.Iron);
        stonePick.workCost = 15f;
        stonePick.range    = 1f;
        variations.Add(stonePick);
    }
Exemple #9
0
        private PKParameterSensitivity calculateParameterSensitivity(SensitivityParameter sensitivityParameter, int sensitivityParameterIndex, VariationData variationData, QuantityPKParameter pkParameter)
        {
            var defaultParameterValue = sensitivityParameter.DefaultValue;
            var defaultPKValue        = pkParameter.Values[variationData.DefaultVariationId];
            var allVariations         = variationData.VariationsFor(sensitivityParameter.Name);

            if (float.IsNaN(defaultPKValue) || defaultPKValue == 0 || defaultParameterValue == 0 || !allVariations.Any())
            {
                return(null);
            }

            var sensitivity = new PKParameterSensitivity
            {
                ParameterName   = sensitivityParameter.Name,
                PKParameterName = pkParameter.Name,
                QuantityPath    = pkParameter.QuantityPath,
                Value           = double.NaN
            };

            var delta = (from variation in allVariations
                         let deltaP = difference(variation.Variation[sensitivityParameterIndex], defaultParameterValue)
                                      let deltaPK = difference(pkParameter.Values[variation.VariationId], defaultPKValue)
                                                    select deltaPK / deltaP).Sum();

            sensitivity.Value = delta * defaultParameterValue / defaultPKValue / allVariations.Count;

            if (Math.Abs(sensitivity.Value) < Constants.SENSITIVITY_THRESHOLD)
            {
                sensitivity.Value = 0.0;
            }

            return(sensitivity);
        }
Exemple #10
0
        public SensitivityAnalysisRunResult CreateFor(SensitivityAnalysis sensitivityAnalysis, VariationData variationData, SimulationResults simulationResults)
        {
            var sensitivityRunResult = new SensitivityAnalysisRunResult();

            var pkAnalyses = _pkAnalysesTask.CalculateFor(sensitivityAnalysis.Simulation, variationData.NumberOfVariations, simulationResults);

            foreach (var pkParameter in pkAnalyses.All())
            {
                sensitivityAnalysis.AllSensitivityParameters.Each((sensitivityParameter, index) =>
                {
                    var pkSensitivity = calculateParameterSensitivity(sensitivityParameter, index, variationData, pkParameter);
                    if (pkSensitivity != null)
                    {
                        sensitivityRunResult.AddPKParameterSensitivity(pkSensitivity);
                    }
                });
            }

            return(sensitivityRunResult);
        }
Exemple #11
0
 private Task <SensitivityAnalysisRunResult> calculateSensitivityBasedOn(SensitivityAnalysis sensitivityAnalysis, VariationData variationData, PopulationRunResults runResults)
 {
     return(Task.Run(() => _runResultCalculator.CreateFor(sensitivityAnalysis, variationData, runResults.Results)));
 }
Exemple #12
0
        public SensitivityAnalysisRunResult CreateFor(SensitivityAnalysis sensitivityAnalysis, VariationData variationData, SimulationResults simulationResults, bool addOutputParameterSensitivitiesToResult)
        {
            var sensitivityRunResult = new SensitivityAnalysisRunResult();

            addPKAnalysisSensitivities(variationData, simulationResults, sensitivityRunResult, sensitivityAnalysis);

            if (addOutputParameterSensitivitiesToResult)
            {
                addOutputSensitivities(variationData, simulationResults, sensitivityRunResult, sensitivityAnalysis);
            }

            return(sensitivityRunResult);
        }