private void searchRoundImprovement(ArrayList<Integer> list){
		//
		iterationStep++;
		//
		int costsOrg = sol.getCumulativeCost();
		List<List<Game>> oldSolution = sol.deepCopy();
		List<List<Game>> listRounds = new ArrayList<List<Game>>();
		List<Integer> idxRounds = new ArrayList<Integer>();
		String change = "Rounds: ";
		//
		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();
		//
		if(orgSolutionFalse && !badConstraint){
			//System.out.println("repair .... NEW SOLUTION (round exchange): "+costs);
			//System.out.println(sol);
			orgSolutionFalse = (sol.checkConstraint());
			if(Util.protocolBoolean){
				Util.protocol += "repair .... NEW SOLUTION (games exchange): "+costs+"\n";
				Util.protocol += sol+"\n";
			}
		}
		else if((costsOrg<=costs) || badConstraint){
			sol.setSolution(oldSolution);
		}
		else{
			//System.out.println("Improvement "+change+": "+costs);
			improvement = true;
			if(Util.protocolBoolean){
				Util.protocol += "Improvement "+change+": "+costs+"\n";
			}
		}
	}