private String swapVegetables(List<IGMVVegetable> vegList, double minRowLength) {

		List<IGMVVariety> varieties = new ArrayList<IGMVVariety>();
		for (IGMVVegetable veg : vegList) {
			varieties.addAll(veg.getVarieties());
		}
		Collections.shuffle(varieties);
		for (IGMVVariety varietyTo : varieties) {
			Set<SwapUnit> unitsFrom = new HashSet<SwapUnit>();
			
			if (varietyTo.getActualRowLength() == 0) {
				double requiredLength = varietyTo.getMinimumRowLength();
				double availableLength = 0;
				boolean unitsMet = true;
				while (availableLength < requiredLength) {
					SwapUnit unitFrom = findVarietyToSwapFrom(varieties,
							minRowLength);
					if (unitFrom == null) {
						unitsMet = false;
						break;
					}
					unitsFrom.add(unitFrom);
					availableLength += unitFrom.length;
				}
				if (!unitsMet) {
					unitsFrom.clear();
					continue;
				}
			} else {
				SwapUnit unitFrom = findVarietyToSwapFrom(varieties,
						minRowLength);
				if (unitFrom == null) {
					continue;
				}
				unitsFrom.add(unitFrom);
			}
			System.out.println("VarietyTo " + varietyTo + " \n UnitsFrom " + unitsFrom);
			if (unitsFrom != null && !unitsFrom.isEmpty()) {
				doSwapping(varietyTo, unitsFrom);
				return unitsFrom + "=>" + varietyTo;
			}
		}
		return null;
		
	}