public static boolean searchProcedure(TreeSet<Integer> routingUnknown){
		if(noImproveRnd++ > MAX_NO_IMPROVE_ROUND)
			return false;
		
		if(routingUnknown.size() <= 0)
			return compareCost(current);
		
		TreeSet<Integer> stepRoutingUnknown = new TreeSet<Integer>(routingUnknown);
		int index = stepRoutingUnknown.pollFirst();
		boolean ret = false;
		Procedure pr = current.routAtrrList.get(index);
		for(String s : pr.attrCdt){
			pr.setRoutAtrr(s);
			if(estimateCost(current) >= bestCost)
				continue;
			if(searchProcedure(stepRoutingUnknown))
				ret = true;
		}
		return ret;
	}