private void searchPossibleRoundImprovements(ArrayList<Integer> list){
		//
		boolean badConstraintBeg = sol.checkConstraint();
		//
		List<List<Game>> oldSolution = sol.deepCopy();
		List<List<Game>> listRounds = new ArrayList<List<Game>>();
		List<Integer> idxRounds = new ArrayList<Integer>();
		String change = "Rounds: ";
		//
		iterationStep++;
		//
		for(int ind=0; ind<list.size(); ind++){
			int idx = list.get(ind);
			List<Game> round = sol.getRound(idx);
			listRounds.add(round);
			change = change+" "+idx+" ";
			if(ind==(list.size()-1)){
				idxRounds.add(list.get(0));
			}
			else{
				idxRounds.add(list.get(ind+1));
			}
		}
		//
		for(int ind=0; ind<list.size(); ind++){
			sol.getSolution().set(idxRounds.get(ind), listRounds.get(ind));
		}
		//
		int costs = sol.getCumulativeCost();
		boolean badConstraint = sol.checkConstraint();
		//
		change = change+": "+costs;
		//
		if(badConstraintBeg && !badConstraint){
			//System.out.println("repair .... NEW SOLUTION (round exchange): "+costs);
			//System.out.println(sol);
			badConstraintBeg = (sol.checkConstraint());
		}
		else if((currentCosts<=costs) || badConstraint){
			sol.setSolution(oldSolution);
		}
		else{
			//System.out.println("possible "+costs);
			solPossible.add(sol.deepCopy());
			solPossibleChoice.add(change);
			sol.setSolution(oldSolution);
			//currentCosts = costs;
		}
	}