private void networkInteractions()
	{
		double affinities[][] = new double[cellList.size()][cellList.size()]; // affinities
																			  // array

		// Calculate affinities between all network cells, only the upper
		// diagonal
		// of the affinities array needs to be filled out

		for (int i = 0; i < cellList.size(); i++)
		{
			for (int j = 0; j < cellList.size(); j++)
			{
				if(i > j)
				{
					affinities[i][j] = 0;
				}
				else
				{
					affinities[i][j] = cellList.get(i).getAffinity(cellList.get(j));
				}
			}
		}

		// Network cells are copied into an array for comparision purposes, as
		// cells will be deleted from the main cellList ArrayList, thus it
		// cannot be iterated through

		NetworkCell[] cellArray = cellList.toArray(new NetworkCell[0]);

		// For each pair of cells in the network (the upper diagonal of the
		// affinities array), if their affinity is below a threshold determined
		// by
		// the suppThres parameter, then the cell with the lowest fitness is
		// removed
		// from the network

		for (int i = 0; i < cellArray.length; i++)
		{
			for (int j = 0; j < cellArray.length; j++)
			{
				if((i < j) && (affinities[i][j] < suppThres))
				{
					if(cellArray[i].getFitness() < cellArray[j].getFitness())
					{
						cellList.remove(cellArray[i]);
					}
					else
					{
						cellList.remove(cellArray[j]);
					}
				}
			}
		}
	}