protected Plateau voisin(){
		Plateau tmp=new Plateau(plat);
		listeTmp=new ArrayList<Polyominos>();
		for(Polyominos p : listePolyo){
			listeTmp.add(new Polyominos(p));
		}
		/** on enleve un certain pourcentage de piece qui sont deja placer sur le plateau **/

		//melange de la liste des polyominos
		Collections.shuffle(listeTmp);
		
		//index de parcour
		int k=0;
		int l=0;
		
		//polyominos qui va etre selection et peut etre supprimé
		Polyominos pol;
		
		//Nombre de polyo a remove du plateau
		int nbSupp=(int)(Math.ceil(listeTmp.size()*0.3));
		
		//on enleve les pieces
		while(k<nbSupp && l<listeTmp.size()){
			
			//recuperation du polyominos a supprimmé
			pol=listeTmp.get(l);
			
			//on regarde si le polyominos est pose 
			if(pol.pose){
				
				//suppression du polyominos
				tmp.removeBlock(pol);
				
				//on replace sont nombre de variante a sa valeur initial
				pol.resetNbVarianteRestante();
				k++;
			}
			l++;
		}

		/** On transforme un certain pourcentage de piece  **/
		
		//nombre de pieces a transformer
		int nbPolyoTransf=(int)Math.ceil(listeTmp.size()*0.2);
		
		//on mute le nombre de piece voulu
		for(int i=0;i<nbPolyoTransf;i++){
			
			
			// index de la pieces a transformer
			int indexTransf;
			
			// polyominos qui va etre transformer
			Polyominos p;
			
			//tant que nous n'avons pas trouver de piece non poser
			do{
				indexTransf=(int)(Math.random()*listeTmp.size());
				p=listeTmp.get(indexTransf);
			}while(p.pose);
			
			//on effectue une transformation aleatoire sur le polyominos
			p.getVarianteAleat();
			
			
		}
		
		/** On repose des polyominos **/
		
		for(Polyominos p1 : listeTmp){
			//on essaie de poser le polyominos si celui-ci n'est pas deja poser
			if(!p1.pose){
				tmp.simpleAddBlock(p1);
			}
		}
		
		return tmp;
	}