public Test1DimCA() : base() { parameters = new CAParameters(NeighbourHoodSize: 3, CellStateCount: 2, CellWorldWidth: 5, MaxGeneration: 40); MakeStates(parameters.CellStateCount); //seed = new float[] { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 }; //goal = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; seed = new float[] { 0, 0, 1, 0, 0 }; goal = new float[] { 0, 1, 1, 1, 0 }; if (seed.Length != parameters.CellWorldWidth || goal.Length != parameters.CellWorldWidth) { throw new FormatException("seed not compatible with experiment parameters"); } cells = new OneDimCell[parameters.CellWorldWidth]; for (int i = 0; i < parameters.CellWorldWidth; i++) { cells[i] = new OneDimCell(i, cells, parameters.NeighbourHoodSize); } foreach (BaseCell cell in cells) { cell.InitializeNeighbourhood(); } }
public Test2DimCA() : base() { parameters = new CAParameters(NeighbourHoodSize: 5, CellStateCount: 2, CellWorldWidth: 10, MaxGeneration: 4); MakeStates(parameters.CellStateCount); seed = new float[10][]; seed[0] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; seed[1] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; seed[2] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; seed[3] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; seed[4] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; seed[5] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; seed[6] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; seed[7] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; seed[8] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; seed[9] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; goal = new float[10][]; goal[0] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; goal[1] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; goal[2] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; goal[3] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; goal[4] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; goal[5] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; goal[6] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; goal[7] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; goal[8] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; goal[9] = new float[] { 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 }; if (seed.Length != parameters.CellWorldWidth || goal.Length != parameters.CellWorldWidth) { throw new FormatException("seed not compatible with experiment parameters" + seed.Length + " " + goal.Length); } cells = new TwoDimCell[parameters.CellWorldWidth][]; for (int i = 0; i < parameters.CellWorldWidth; i++) { cells[i] = new TwoDimCell[parameters.CellWorldHeight]; for (int j = 0; j < parameters.CellWorldWidth; j++) { cells[i][j] = new TwoDimCell(i, j, cells, parameters.NeighbourHoodSize); } } foreach (TwoDimCell[] cellRow in cells) { foreach (TwoDimCell cell in cellRow) { cell.InitializeNeighbourhood(); } } }
public LambdaExperiment() : base() { parameters = new CAParameters(NeighbourHoodSize: 3, CellStateCount: 2, CellWorldWidth: 15, MaxGeneration: 40, MaxFitness: 64); //8 rules to get right, squared => 64 MakeStates(parameters.CellStateCount); }