public void calcNext(Optimum opt, Point TILE_SIZE, ArrayList<House> houses)
	{
		while (!opt.getPossibleSol().isEmpty() && !this.foundSolution)
		{		
			LinkedList<House> myHouses = new LinkedList<House>();
			for (int i = 0; i < opt.getPossibleSol().get(0).obj.length; i++)
			{
				for (int j = 0; j < opt.getPossibleSol().get(0).obj[i]; j++)
				{
					myHouses.add(House.copy(houses.get(i)));

				}
			}
			int[] currentSol = opt.getPossibleSol().get(0).obj; 
			System.out.println(opt.getPossibleSol().get(0));
			opt.getPossibleSol().remove(0);
			this.mapObjectsCopy = new ArrayList<MapObject>(mapObjects);
			this.gridCopy = Tile.copyGrid(grid);
			this.impossible = false;
			this.calcCont(opt, TILE_SIZE, myHouses,currentSol,new int[currentSol.length],0, true);
		}
	}