simulation

package
v0.0.0-...-9aba028 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 21, 2020 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProgressCounterSimulation = 11
	ProgressRunStats          = 5
)

Variables

View Source
var AllAntagonistStrategyCount = []int{16}
View Source
var AllDepthOfRandomNewTree = []int{1}
View Source
var AllDivByZeroPenalty = []float64{-1}
View Source
var AllDivByZeroStrategy = []string{
	evolution.DivByZeroSteadyPenalize,
}
View Source
var AllEachPopulationSize = []int{64}
View Source
var AllExpressions = []string{
	"x",
	"x*x*x*x*x*x*x*x",
	"x*x*x+2*x/3*x*x+5",
}
View Source
var AllFitStratAntThreshMult = []float64{16}
View Source
var AllFitStratProThreshMult = []float64{1}
View Source
var AllFitnessStrategyType = []string{evolution.FitnessDualThresholdedRatio}
View Source
var AllGenerationsCount = []int{50}
View Source
var AllMaxGenerations = []int{500}
View Source
var AllMinimumGenerationMeanBeforeTerminate = []float64{0.05}
View Source
var AllMinimumTopProtagonistMeanBeforeTerminate = []float64{0.1}
View Source
var AllPossibleStrategies = [][]evolution.Strategy{
	AllStrategies,
}
View Source
var AllProtagonistMinGenAvgFit = []float64{0.7}
View Source
var AllProtagonistStrategyCount = []int{16}
View Source
var AllRanges = []int{20}
View Source
var AllReproduction = []evolution.Reproduction{
	{
		CrossoverStrategy:     evolution.CrossoverSinglePoint,
		ProbabilityOfMutation: 0.3,
	},
	{
		CrossoverStrategy:     evolution.CrossoverUniform,
		ProbabilityOfMutation: 0.3,
	},
}
View Source
var AllSeed = []int{-10}
View Source
var AllSelectionParentType = []evolution.ParentSelection{
	{
		Type:           evolution.ParentSelectionTournament,
		TournamentSize: 3,
	},
}
View Source
var AllSurvivorSelection = []evolution.SurvivorSelection{
	{
		Type:               evolution.SurvivorSelectionFitnessBased,
		SurvivorPercentage: 0.3,
	},
	{
		Type:               evolution.SurvivorSelectionFitnessBased,
		SurvivorPercentage: 0.7,
	},
}
View Source
var AllTopologies = []evolution.Topology{
	{
		Type:                  evolution.TopologyHallOfFame,
		HoFGenerationInterval: 0.1,
	},
	{
		Type:               evolution.TopologySingleEliminationTournament,
		SETNoOfTournaments: 0.2,
	},
	{
		Type: evolution.TopologyRoundRobin,
	},
	{
		Type:     evolution.TopologyKRandom,
		KRandomK: 3,
	},
}

Functions

func PrepareSimulation

func PrepareSimulation(params evolution.EvolutionParams, count int) *evolution.EvolutionEngine

PrepareSimulation takes in the given evolution parameters and a count variable and returns the engine that can be started run the simulation. The evolution engine will run count times.

func WriteIndexProgressToFile

func WriteIndexProgressToFile(indexProgress IndexProgress, indexFile string) error

func WriteRunStrategy

func WriteRunStrategy(runStrat []RunStrategyStatistics, outputPath string) error

Types

type GenerationalAverages

type GenerationalAverages struct {
	Antagonists  []evolution.Individual `csv:"A"`
	Protagonists []evolution.Individual `csv:"A"`
}

type IndexProgress

type IndexProgress struct {
	ExpressionIndex              int `expressionIndex`
	RangesIndex                  int `json:"rangesIndex"`
	SeedIndex                    int `json:"seedIndex"`
	GenerationsCountIndex        int `json:"generationsCountIndex"`
	EachPopulationIndex          int `json:"eachPopulationIndex"`
	ReproductionIndex            int `json:"reproductionIndex"`
	AllDepthOfRandomNewTreeIndex int `json:"allDepthOfRandomNewTreeIndex"`
	AntagonistStrategyCountIndex int `json:"antagonistStrategyCountIndex"`
	ProStratCountInd             int `json:"protagonisttStrategyCountIndex"`
	FitnessStrategyTypeIndex     int `json:"fitnessStrategyTypeIndex"`
	FitStratAntThresMultIndex    int `json:"fitStratAntThresMultIndex"`
	FitStratProtThreshMultIndex  int `json:"fitStratProtThreshMultIndex"`
	SelectParentTypeIndex        int `json:"selectParentTypeIndex"`
	SelectSurvivorPercentIndex   int `json:"selectSurvivorPercentIndex"`
	StrategiesAntagonistIndex    int `json:"strategiesAntagonistIndex"`
	StrategiesProtagonistIndex   int `json:"strategiesProtagonistIndex"`
	DivByZeroStrategy            int `json:"divByZeroStrategy"`
	DivByZeroPenalty             int `json:"divByZeroPenalty"`
	TournamentSelectionIndex     int `json:"tournamentSelectionIndex"`
	NumberOfRunsPerState         int `json:"numberOfRunsPerState"`
}

type RunBasedStatistics

type RunBasedStatistics struct {
	TopAntagonist          float64 `csv:"runTopA"`
	TopProtagonist         float64 `csv:"runTopP"`
	TopAntagonistDelta     float64 `csv:"runTopADelta"`
	TopProtagonistDelta    float64 `csv:"runTopPDelta"`
	TopAntagonistStrategy  string  `csv:"runTopAStrategy"`
	TopProtagonistStrategy string  `csv:"runTopPStrategy"`
	TopAntagonistEquation  string  `csv:"runTopAEquation"`
	TopProtagonistEquation string  `csv:"runTopPEquation"`

	FinalAntagonist          float64 `csv:"runFinalA"`
	FinalProtagonist         float64 `csv:"runFinalP"`
	FinalAntagonistDelta     float64 `csv:"runFinalADelta"`
	FinalProtagonistDelta    float64 `csv:"runFinalPDelta"`
	FinalAntagonistStrategy  string  `csv:"runFinalAStrategy"`
	FinalProtagonistStrategy string  `csv:"runFinalPStrategy"`
	FinalAntagonistEquation  string  `csv:"runFinalAEquation"`
	FinalProtagonistEquation string  `csv:"runFinalPEquation"`

	Run int `csv:"run"`
}

type RunBestIndividualStatistic

type RunBestIndividualStatistic struct {
	SpecEquation string `csv:"specEquation"`
	SpecRange    int    `csv:"range"`
	SpecSeed     int    `csv:"seed"`

	AntagonistID                string  `csv:"AID"`
	ProtagonistID               string  `csv:"PID"`
	Antagonist                  float64 `csv:"AAvg"`
	Protagonist                 float64 `csv:"PAvg"`
	MeanCorrelation             float64 `csv:"meanCorrInRun"`
	MeanCovariance              float64 `csv:"meanCovInRun"`
	AntagonistBestFitness       float64 `csv:"ABestFit"`
	ProtagonistBestFitness      float64 `csv:"PBestFit"`
	AntagonistStdDev            float64 `csv:"AStdDev"`
	ProtagonistStdDev           float64 `csv:"PStdDev"`
	AntagonistAverageDelta      float64 `csv:"AAvgDelta"`
	ProtagonistAverageDelta     float64 `csv:"PAvgDelta"`
	AntagonistBestDelta         float64 `csv:"ABestDelta"`
	ProtagonistBestDelta        float64 `csv:"PBestDelta"`
	AntagonistEquation          string  `csv:"AEquation"`
	ProtagonistEquation         string  `csv:"PEquation"`
	AntagonistStrategy          string  `csv:"AStrat"`
	ProtagonistStrategy         string  `csv:"PStrat"`
	AntagonistDominantStrategy  string  `csv:"ADomStrat"`
	ProtagonistDominantStrategy string  `csv:"PDomStrat"`
	AntagonistGeneration        int     `csv:"AGen"`
	ProtagonistGeneration       int     `csv:"PGen"`
	AntagonistBirthGen          int     `csv:"ABirthGen"`
	ProtagonistBirthGen         int     `csv:"PBirthGen"`
	AntagonistAge               int     `csv:"AAge"`
	ProtagonistAge              int     `csv:"PAge"`
	AntagonistNoOfCompetitions  int     `csv:"ANoC"`
	ProtagonistNoOfCompetitions int     `csv:"PNoC"`

	FinalAntagonist                  float64 `csv:"finAAvg"`
	FinalProtagonist                 float64 `csv:"finPAvg"`
	FinalAntagonistBestFitness       float64 `csv:"finABestFit"`
	FinalProtagonistBestFitness      float64 `csv:"finPBestFit"`
	FinalAntagonistStdDev            float64 `csv:"finAStdDev"`
	FinalProtagonistStdDev           float64 `csv:"finPStdDev"`
	FinalAntagonistAverageDelta      float64 `csv:"finAAvgDelta"`
	FinalProtagonistAverageDelta     float64 `csv:"finPAvgDelta"`
	FinalAntagonistBestDelta         float64 `csv:"finABestDelta"`
	FinalProtagonistBestDelta        float64 `csv:"finPBestDelta"`
	FinalAntagonistEquation          string  `csv:"finAEquation"`
	FinalProtagonistEquation         string  `csv:"finPEquation"`
	FinalAntagonistStrategy          string  `csv:"finAStrat"`
	FinalProtagonistStrategy         string  `csv:"finPStrat"`
	FinalAntagonistDominantStrategy  string  `csv:"finADomStrat"`
	FinalProtagonistDominantStrategy string  `csv:"finPDomStrat"`
	FinalAntagonistBirthGen          int     `csv:"finABirthGen"`
	FinalProtagonistBirthGen         int     `csv:"finPBirthGen"`
	FinalAntagonistAge               int     `csv:"finAAge"`
	FinalProtagonistAge              int     `csv:"finPAge"`
	FinalAntagonistNoOfCompetitions  int     `csv:"finANoC"`
	FinalProtagonistNoOfCompetitions int     `csv:"finPNoC"`

	Run int `csv:"run"`
}

type RunBestIndividualStatistics

type RunBestIndividualStatistics []RunBestIndividualStatistic

func (*RunBestIndividualStatistics) ToCSV

func (e *RunBestIndividualStatistics) ToCSV(outputPath string) error

type RunEpochalStatistic

type RunEpochalStatistic struct {
	SpecEquation string `csv:"specEquation"`
	SpecRange    int    `csv:"range"`
	SpecSeed     int    `csv:"seed"`

	AntagonistID      string  `csv:"AID"`
	ProtagonistID     string  `csv:"PID"`
	Antagonist        float64 `csv:"A"`
	Protagonist       float64 `csv:"P"`
	AntagonistDelta   float64 `csv:"ADelta"`
	ProtagonistDelta  float64 `csv:"PDelta"`
	AntagonistStdDev  float64 `csv:"AStdDev"`
	ProtagonistStdDev float64 `csv:"PStdDev"`

	AntagonistAverageDelta      float64 `csv:"AAvgDelta"`
	ProtagonistAverageDelta     float64 `csv:"PAvgDelta"`
	AntagonistBestDelta         float64 `csv:"ABestDelta"`
	ProtagonistBestDelta        float64 `csv:"PBestDelta"`
	AntagonistEquation          string  `csv:"AEquation"`
	ProtagonistEquation         string  `csv:"PEquation"`
	AntagonistStrategy          string  `csv:"AStrat"`
	ProtagonistStrategy         string  `csv:"PStrat"`
	AntagonistDominantStrategy  string  `csv:"ADomStrat"`
	ProtagonistDominantStrategy string  `csv:"PDomStrat"`
	AntagonistGeneration        int     `csv:"AGen"`
	ProtagonistGeneration       int     `csv:"PGen"`

	FinalAntagonist                  float64 `csv:"finA"`
	FinalProtagonist                 float64 `csv:"finP"`
	FinalAntagonistStdDev            float64 `csv:"finAStdDev"`
	FinalProtagonistStdDev           float64 `csv:"finPStdDev"`
	FinalAntagonistDelta             float64 `csv:"finADelta"`
	FinalProtagonistDelta            float64 `csv:"finPDelta"`
	FinalAntagonistBestDelta         float64 `csv:"finABestDelta"`
	FinalProtagonistBestDelta        float64 `csv:"finPBestDelta"`
	FinalAntagonistEquation          string  `csv:"finAEquation"`
	FinalProtagonistEquation         string  `csv:"finPEquation"`
	FinalAntagonistStrategy          string  `csv:"finAStrat"`
	FinalProtagonistStrategy         string  `csv:"finPStrat"`
	FinalAntagonistDominantStrategy  string  `csv:"finADomStrat"`
	FinalProtagonistDominantStrategy string  `csv:"finPDomStrat"`

	Epoch int `csv:"epoch"`
	Run   int `csv:"run"`
}

type RunEpochalStatistics

type RunEpochalStatistics []RunEpochalStatistic

func (*RunEpochalStatistics) ToCSV

func (e *RunEpochalStatistics) ToCSV(outputPath string) error

type RunGenerationalStatistic

type RunGenerationalStatistic struct {
	Generation int `csv:"gen"`

	SpecEquation string `csv:"specEquation"`
	SpecRange    int    `csv:"range"`
	SpecSeed     int    `csv:"seed"`

	AntagonistEquation  string `csv:"topAEquation"`
	ProtagonistEquation string `csv:"topPEquation"`

	// Generation Stats
	Correlation float64 `csv:"correlation"`
	Covariance  float64 `csv:"covariance"`

	AntagonistMean        float64 `csv:"AMean"`
	ProtagonistMean       float64 `csv:"PMean"`
	AntagonistStdDev      float64 `csv:"AStd"`
	ProtagonistStdDev     float64 `csv:"PStd"`
	AntagonistVariance    float64 `csv:"AVar"`
	ProtagonistVariance   float64 `csv:"PVar"`
	AntagonistSkew        float64 `csv:"ASkew"`
	ProtagonistSkew       float64 `csv:"PSkew"`
	AntagonistExKurtosis  float64 `csv:"AExKur"`
	ProtagonistExKurtosis float64 `csv:"PExKur"`

	// Top Individual In Generation Stats
	TopAntagonistMeanFitness    float64 `csv:"topAMean"`
	TopProtagonistMeanFitness   float64 `csv:"topPMean"`
	AntagonistBestFitness       float64 `csv:"topABest"`
	ProtagonistBestFitness      float64 `csv:"topPBest"`
	AntagonistAverageDelta      float64 `csv:"topAMeanDelta"`
	ProtagonistAverageDelta     float64 `csv:"topPMeanDelta"`
	AntagonistBestDelta         float64 `csv:"topABestDelta"`
	ProtagonistBestDelta        float64 `csv:"topPBestDelta"`
	AntagonistStrategy          string  `csv:"topAStrat"`
	ProtagonistStrategy         string  `csv:"topPStrat"`
	AntagonistDominantStrategy  string  `csv:"topADomStrat"`
	ProtagonistDominantStrategy string  `csv:"topPDomStrat"`
	AntagonistBirthGen          int     `csv:"topABirthGen"`
	ProtagonistBirthGen         int     `csv:"topPBirthGen"`
	AntagonistAge               int     `csv:"topAAge"`
	ProtagonistAge              int     `csv:"topPAge"`

	Run int `csv:"run"`
}

RunGenerationalStatistics refer to statistics per generation. So Top or Bottom refer to the best or worst in the given generation and not a cumulative of the evolutionary process.

type RunGenerationalStatistics

type RunGenerationalStatistics []RunGenerationalStatistic

func (*RunGenerationalStatistics) ToCSV

func (g *RunGenerationalStatistics) ToCSV(outputPath string) error

type RunStrategyStatistic

type RunStrategyStatistic struct {
	Antagonist            string `csv:"A"`
	Protagonist           string `csv:"P"`
	FinalAntagonist       string `csv:"AFinal"`
	FinalProtagonist      string `csv:"PFinal"`
	AntagonistGeneration  int    `csv:"AGen"`
	ProtagonistGeneration int    `csv:"PGen"`
	StrategyCount         int    `csv:"count"`
	Run                   int    `csv:"run"`
}

type RunStrategyStatistics

type RunStrategyStatistics []RunStrategyStatistic

func (*RunStrategyStatistics) ToCSV

func (e *RunStrategyStatistics) ToCSV(outputPath string) error

type Simulation

type Simulation struct {
	Mutext                sync.Mutex
	CurrentEvolutionState evolution.EvolutionParams `json:"currentEvolutionState"`
	NumberOfRunsPerState  int                       `json:"numberOfRunsPerState"`
	Name                  string                    `json:"name"`
	StatsFiles            []string                  `json:"statsFiles"`

	ProgressBar *uiprogress.Bar

	// Output-Only
	OutputDir       string               `json:"outputDir"`
	RPath           string               `json:"rPath"`
	SimulationStats []SimulationRunStats `json:"simulationStats"`
	DataPath        string
}

func (*Simulation) Begin

func (*Simulation) BestIndividualsInRun

func (s *Simulation) BestIndividualsInRun(params evolution.EvolutionParams) (runBest RunBestIndividualStatistics, err error)

BestIndividualInRun returns a CSV type of the best antagonist and protagonist in the given run, as well as the final individuals produced

func (*Simulation) EpochalInRun

func (s *Simulation) EpochalInRun(params evolution.EvolutionParams) (runEpochal RunEpochalStatistics, err error)

func (*Simulation) GenerationalInRun

func (s *Simulation) GenerationalInRun(params evolution.EvolutionParams) (runGen RunGenerationalStatistics, err error)

BestIndividualInRun returns a CSV type of the best antagonist and protagonist in the given run, as well as the final individuals produced

func (*Simulation) RunRScript

func (s *Simulation) RunRScript(RPath, dirPath string, RFiles []string, logChan chan evolog.Logger,
	errChan chan error)

func (*Simulation) SimulationBestActualIndividuals

func (s *Simulation) SimulationBestActualIndividuals(params evolution.EvolutionParams) (bestActualIndividuals SimulationBestActualIndividual, err error)

SimulationBestActualIndividuals returns the best actual individuals in the entire simulation

func (*Simulation) SimulationBestEpochal

func (s *Simulation) SimulationBestEpochal(params evolution.EvolutionParams) (bestEpochs SimulationBestEpochs, err error)

func (*Simulation) SimulationBestIndividual

func (s *Simulation) SimulationBestIndividual(params evolution.EvolutionParams) (simulationBestIndividuals SimulationBestIndividuals,
	err error)

SimulationBestIndividual returns the best antagonist and protagonist in all runs

func (*Simulation) SimulationBestIndividuals

func (s *Simulation) SimulationBestIndividuals(params evolution.EvolutionParams) (
	simulationBestIndividuals SimulationBestIndividuals,
	err error)

SimulationBestIndividual returns the best antagonist and protagonist in all runs

func (*Simulation) SimulationBestStrategy

func (s *Simulation) SimulationBestStrategy(params evolution.EvolutionParams) (simulationStrategy SimulationStrategyStatistics,
	err error)

func (*Simulation) SpewJSONNoSplit

func (s *Simulation) SpewJSONNoSplit(projectAbsolutePath, paramsDir string) error

SpewJSON enables the creation of multiple JSON files containing parameter information. baseRelDir is the relative directory to the parameter folder. Should be within the project. Split should be the number of files per folder. It will try split them evenly

func (*Simulation) StartEngine

func (s *Simulation) StartEngine(engine *evolution.EvolutionEngine) error

func (*Simulation) StrategyInRun

func (s *Simulation) StrategyInRun(params evolution.EvolutionParams) (runStrategy RunStrategyStatistics, err error)

type SimulationBestActualIndividual

type SimulationBestActualIndividual struct {
	Antagonist            evolution.Individual
	Protagonist           evolution.Individual
	AntagonistGeneration  int
	ProtagonistGeneration int
	AntagonistRun         int
	ProtagonistRun        int
	Correlation           float64
	Covariance            float64
}

########################################### BEST INDIVIDUAL ##############

type SimulationBestEpoch

type SimulationBestEpoch struct {
	SpecEquation string `csv:"specEquation"`
	SpecRange    int    `csv:"range"`
	SpecSeed     int    `csv:"seed"`

	Epoch                       int     `csv:"epoch"`
	Antagonist                  float64 `csv:"AAvg"`
	Protagonist                 float64 `csv:"PAvg"`
	AntagonistBestDelta         float64 `csv:"ABestDelta"`
	ProtagonistBestDelta        float64 `csv:"PBestDelta"`
	AntagonistAverageDelta      float64 `csv:"PAverageDelta"`
	ProtagonistAverageDelta     float64 `csv:"PAverageDelta"`
	AntagonistBestFitness       float64 `csv:"ABestFit"`
	ProtagonistBestFitness      float64 `csv:"PBestFit"`
	AntagonistStdDev            float64 `csv:"AStdDev"`
	ProtagonistStdDev           float64 `csv:"PStdDev"`
	AntagonistEquation          string  `csv:"AEquation"`
	ProtagonistEquation         string  `csv:"PEquation"`
	AntagonistStrategy          string  `csv:"AStrat"`
	ProtagonistStrategy         string  `csv:"PStrat"`
	AntagonistDominantStrategy  string  `csv:"ADomStrat"`
	ProtagonistDominantStrategy string  `csv:"PDomStrat"`
	AntagonistGeneration        int     `csv:"AGen"`
	ProtagonistGeneration       int     `csv:"PGen"`
	AntagonistBirthGen          int     `csv:"ABirthGen"`
	ProtagonistBirthGen         int     `csv:"PBirthGen"`
	AntagonistAge               int     `csv:"AAge"`
	ProtagonistAge              int     `csv:"PAge"`
	AntagonistRun               int     `csv:"ARun"`
	ProtagonistRun              int     `csv:"PRun"`
}

type SimulationBestEpochs

type SimulationBestEpochs []SimulationBestEpoch

func (*SimulationBestEpochs) ToCSV

func (s *SimulationBestEpochs) ToCSV(outputPath string) error

type SimulationBestIndividual

type SimulationBestIndividual struct {
	SpecEquation string `csv:"specEquation"`
	SpecRange    int    `csv:"range"`
	SpecSeed     int    `csv:"seed"`

	Correlation float64 `csv:"corr"`
	Covariance  float64 `csv:"cov"`

	AntagonistID                string  `csv:"AID"`
	ProtagonistID               string  `csv:"PID"`
	Antagonist                  float64 `csv:"AAvg"`
	Protagonist                 float64 `csv:"PAvg"`
	AntagonistBestFitness       float64 `csv:"ABestFit"`
	ProtagonistBestFitness      float64 `csv:"PBestFit"`
	AntagonistStdDev            float64 `csv:"AStdDev"`
	ProtagonistStdDev           float64 `csv:"PStdDev"`
	AntagonistAverageDelta      float64 `csv:"AAverageDelta"`
	ProtagonistAverageDelta     float64 `csv:"PAverageDelta"`
	AntagonistBestDelta         float64 `csv:"ABestDelta"`
	ProtagonistBestDelta        float64 `csv:"PBestDelta"`
	AntagonistEquation          string  `csv:"AEquation"`
	ProtagonistEquation         string  `csv:"PEquation"`
	AntagonistStrategy          string  `csv:"AStrat"`
	ProtagonistStrategy         string  `csv:"PStrat"`
	AntagonistDominantStrategy  string  `csv:"ADomStrat"`
	ProtagonistDominantStrategy string  `csv:"PDomStrat"`
	AntagonistGeneration        int     `csv:"AGen"`
	ProtagonistGeneration       int     `csv:"PGen"`
	AntagonistBirthGen          int     `csv:"ABirthGen"`
	ProtagonistBirthGen         int     `csv:"PBirthGen"`
	AntagonistAge               int     `csv:"AAge"`
	ProtagonistAge              int     `csv:"PAge"`
	AntagonistRun               int     `csv:"ARun"`
	ProtagonistRun              int     `csv:"PRun"`
	AntagonistNoOfCompetitions  int     `csv:"ANoC"`
	ProtagonistNoOfCompetitions int     `csv:"PNoC"`
}

type SimulationBestIndividuals

type SimulationBestIndividuals []SimulationBestIndividual

func (*SimulationBestIndividuals) ToCSV

func (s *SimulationBestIndividuals) ToCSV(outputPath string) error

type SimulationRunStats

type SimulationRunStats struct {
	TopAntagonist            evolution.Individual
	TopProtagonist           evolution.Individual
	TopAntagonistByDelta     evolution.Individual
	TopProtagonistByDelta    evolution.Individual
	TopAntagonistByDeltaAvg  evolution.Individual
	TopProtagonistByDeltaAvg evolution.Individual
	TopAntagonistGeneration  int
	TopProtagonistGeneration int
	FinalAntagonist          evolution.Individual
	FinalProtagonist         evolution.Individual
	Generational             evolution.Generational
	MeanCorrelation          float64
	MeanCovariance           float64
}

type SimulationStrategyStatistic

type SimulationStrategyStatistic struct {
	Antagonist            string `csv:"A"`
	Protagonist           string `csv:"P"`
	AntagonistEquation    string `csv:"AEquation"`
	ProtagonistEquation   string `csv:"PEquation"`
	AntagonistGeneration  int    `csv:"AGen"`
	ProtagonistGeneration int    `csv:"PGen"`
	AntagonistRun         int    `csv:"ARun"`
	ProtagonistRun        int    `csv:"PRun"`
	StrategyCount         int    `csv:"count"`
	Run                   int    `csv:"run"`
}

type SimulationStrategyStatistics

type SimulationStrategyStatistics []SimulationStrategyStatistic

func (*SimulationStrategyStatistics) ToCSV

func (e *SimulationStrategyStatistics) ToCSV(outputPath string) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL