protected void simulate() {
		for (Cell cell : grid.getAllCells()) {
			cell.step();
		}
		for (Ant ant : agentAntList) {
			ant.step();
		}
		if (evolutionTab.isSimulationOn()) {
			evolutionManager.evolve(agentParentList, agentAntList);
		} else {
			double dropOffRate = this.simulationConfig.getDropoffRate();
			double bestCellNext = this.simulationConfig.getBestCellNext();
			int capacity = this.simulationConfig.getFoodTakenByAnt();
			if (simulationConfig.getNewAgentRate() > (1.0 - Math.random())) {
				agentAntList.add(new Ant(startingLives, capacity, dropOffRate, bestCellNext, grid.getAnthillCell()));
			}
		}
		if ((simulationConfig.getNewFoodRate() / 100.0) > (1.0 - Math.random())) {
			grid.insertFoodintodEmptyCell();
		}
		List<Ant> livingAnts = agentAntList.stream().filter(a -> a.isAlive()).collect(Collectors.toCollection(ArrayList::new));
		agentAntList.clear();
		agentAntList.addAll(livingAnts);
	}