private static AlgorithmConfiguration MakeAlgorithmConfiguration( CognitiveLevel cognitiveLevel, Demographic demographic, IEnumerable <Probability> probabilities) { return(new AlgorithmConfiguration { CognitiveLevel = cognitiveLevel, DemographicConfiguration = new DemographicProcessesConfiguration { AdoptionProbability = demographic.AdoptionProbability, BirthProbability = demographic.BirthProbability, DeathProbability = demographic.DeathProbability, HomosexualTypeRate = demographic.HomosexualTypeRate, MinimumAgeForHouseholdHead = demographic.MinimumAgeForHouseholdHead, PairingAgeMax = demographic.PairingAgeMax, PairingAgeMin = demographic.PairingAgeMin, PairingProbability = demographic.PairingProbability, SexualOrientationRate = demographic.SexualOrientationRate, YearsBetweenBirths = demographic.YearsBetweenBirths, MaximumAge = demographic.MaximumAge }, ProbabilitiesConfiguration = probabilities.Select(p => new ProbabilitiesConfiguration { FilePath = p.FileName, Variable = p.VariableParameter, VariableType = p.VariableType, WithHeader = p.IgnoreFirstLine // ignore first line means there is a header }).ToArray(), UseDimographicProcesses = demographic.DemographicChange }); }
/// <summary> /// Create processes configuration for specific cognitive level /// </summary> /// <param name="cognitiveLevel"></param> /// <returns></returns> public static ProcessesConfiguration GetProcessesConfiguration(CognitiveLevel cognitiveLevel) { switch (cognitiveLevel) { case CognitiveLevel.CL1: return(new ProcessesConfiguration { ActionTakingEnabled = true, DecisionOptionSelectionEnabled = true, DecisionOptionSelectionPart2Enabled = true, AgentRandomizationEnabled = true, }); case CognitiveLevel.CL2: return(new ProcessesConfiguration { ActionTakingEnabled = true, AnticipatoryLearningEnabled = true, DecisionOptionSelectionEnabled = true, DecisionOptionSelectionPart2Enabled = true, AgentRandomizationEnabled = true }); case CognitiveLevel.CL3: return(new ProcessesConfiguration { ActionTakingEnabled = true, AnticipatoryLearningEnabled = true, DecisionOptionSelectionEnabled = true, DecisionOptionSelectionPart2Enabled = true, SocialLearningEnabled = true, AgentRandomizationEnabled = true, }); case CognitiveLevel.CL4: return(new ProcessesConfiguration { ActionTakingEnabled = true, AnticipatoryLearningEnabled = true, DecisionOptionSelectionEnabled = true, DecisionOptionSelectionPart2Enabled = true, SocialLearningEnabled = true, CounterfactualThinkingEnabled = true, InnovationEnabled = true, ReproductionEnabled = true, AgentRandomizationEnabled = true }); default: throw new SosielAlgorithmException("Unknown cognitive level"); } }