Пример #1
0
        internal McmcSim(
            EstimationDesign estimationDesign,
            Simulation simulation,
            ISimData simData,
            Arr <ChainState> chainStates
            )
        {
            RequireNotNull(estimationDesign);
            RequireNotNull(simulation);
            RequireNotNull(simData);
            RequireTrue(chainStates.IsEmpty || chainStates.Count == estimationDesign.Chains);

            _estimationDesign = estimationDesign;
            _simulation       = simulation;
            _simData          = simData;
            ChainStates       = chainStates;

            _proposalLoopWaitInterval = _simData
                                        .GetExecutionInterval(_simulation)
                                        .Match(t => t.ms * 2, 200);

            _updateBatchThreshold = 2 * estimationDesign.Chains;

            _defaultInput = simulation.SimConfig.SimInput;
            var parameters = _defaultInput.SimParameters;

            _invariants = _estimationDesign.Priors
                          .Filter(mp => mp.Distribution.DistributionType == DistributionType.Invariant)
                          .Map(mp => parameters.GetParameter(mp.Name).With(mp.Distribution.Mean));

            _targetParameters = _estimationDesign.Priors
                                .Filter(mp => mp.Distribution.DistributionType != DistributionType.Invariant)
                                .Map(mp => parameters.GetParameter(mp.Name));
        }
Пример #2
0
 internal static string GetDescription(this EstimationDesign estimationDesign) =>
 GetDescription(
     estimationDesign.Priors,
     estimationDesign.Outputs,
     estimationDesign.Iterations,
     estimationDesign.BurnIn,
     estimationDesign.Chains
     );
Пример #3
0
        internal static void UpdateEstimationDesign(EstimationDesign instance, string pathToEstimationDesignsDirectory, ISimEvidence evidence)
        {
            RequireDirectory(pathToEstimationDesignsDirectory);

            var pathToEstimationDesignDirectory = GetPathToEstimationDesign(instance, pathToEstimationDesignsDirectory);

            RequireDirectory(pathToEstimationDesignDirectory);

            SaveDesign(
                instance.CreatedOn,
                instance.Priors,
                instance.Outputs,
                instance.Observations,
                instance.Iterations,
                instance.BurnIn,
                instance.Chains,
                instance.TargetAcceptRate,
                instance.UseApproximation,
                pathToEstimationDesignDirectory,
                evidence
                );
        }
Пример #4
0
 internal static string GetPathToEstimationDesign(EstimationDesign instance, string pathToEstimationDesignsDirectory) =>
 GetPathToEstimationDesign(instance.CreatedOn, pathToEstimationDesignsDirectory);