private SwapUnit findVarietyToSwapFrom(List<IGMVVariety> varieties,
			double minRowLength) {
		List<IGMVVariety> temp = new ArrayList<IGMVVariety>();
		for (IGMVVariety v : varieties) {
			if (v.getActualRowLength() > 0)
				temp.add(v);
		}
		Collections.shuffle(temp);
		SwapUnit unit = null;

		for (IGMVVariety v : temp) {
			if (v.getActualRowLength() - minRowLength < v.getMinimumRowLength()
					&& ((v.getActualRowLength() - minRowLength) > 0)) {
				if (v.getActualRowLength() - v.getMinimumRowLength() < v
						.getMinimumRowLength()
						&& ((v.getActualRowLength() - v.getMinimumRowLength()) > 0)) {
					unit = new SwapUnit(v, v.getMinimumRowLength());
				}
			} else {
				unit = new SwapUnit(v, minRowLength);
			}

			if (unit != null)
				return unit;
		}
		return unit;

	}