/// <summary> /// Initializes a new instance of the <see cref="CooperationStrategyFitness"/> class. /// </summary> /// <param name="cooperationStrategy">The cooperation strategy.</param> /// <param name="totalPayoff">The total payoff.</param> public CooperationStrategyFitness(CooperationStrategy cooperationStrategy, int totalPayoff) { Requires.NotNull(cooperationStrategy, "cooperationStrategy"); this.Strategy = cooperationStrategy; this.TotalPayoff = totalPayoff; }
/// <summary> /// Calculates the total payoff. /// </summary> /// <param name="cooperationStrategy">The cooperation strategy.</param> /// <param name="simulationResults">The simulation results.</param> /// <returns>The payoff.</returns> private static int CalculateTotalPayoff(CooperationStrategy cooperationStrategy, List<CooperationStrategyMatchupSimulationResult> simulationResults) { Requires.NotNull(cooperationStrategy, "cooperationStrategy"); Requires.NotNull(simulationResults, "simulationResults"); return simulationResults .Where(simulationResult => simulationResult.Matchup.StrategyA == cooperationStrategy) .Sum(simulationResult => simulationResult.PayoffForStrategyA) + simulationResults .Where(simulationResult => simulationResult.Matchup.StrategyB == cooperationStrategy) .Sum(simulationResult => simulationResult.PayoffForStrategyB); }