private void optimizarCaminos()
	{
		ArrayList<Integer> disponibles = new ArrayList<Integer>(); //metas dis�nibles
		ArrayList<Integer> asignados = new ArrayList<Integer>();  //metas asignadas
	
		//Asignando camino a bodega para los autos cargados, se elimina el camino a bodega de todos los autos
		asignarABodega();
		
		//Valor base para la funci�n a optimizar
		minCost=0;	
		for(int i=0;i<conjuntoCaminos.size();i++)
		{
			minCost+=conjuntoCaminos.get(i)[i].getLongitudCamino();	
		}
		
		//Creando vector
		if(conjuntoCaminos.size()!=0)
		{
			
		
			for(int i=0;i<conjuntoCaminos.get(0).length;i++)
			{
				disponibles.add(i);
			}
			
			asignadosFinal=new ArrayList<Integer>(disponibles);
			
			//Hallando asignaci�n de caminos �ptima
			asignarCaminos(disponibles,asignados);
			
			asignados=asignadosFinal;
			//carros que se han asignado a bodega
			int carrosABodega=0;
			//Asignando el camino escogido a cada veh�culo
			for(int i=0;i<conjuntoCaminosOptimizados.size();i++)
			{
				
				if(conjuntoCaminosOptimizados.get(i)==null)
				{
					conjuntoCaminosOptimizados.remove(i);
					conjuntoCaminosOptimizados.add(i,conjuntoCaminos.get(i-carrosABodega)[asignados.get(i-carrosABodega)]);
				}
				else
				{
					carrosABodega++;
				}
			}
		}
				
	}