public static ArrayList<Camion> heuristica(GrafoTabla Grafico, ArrayList<Camion> Camiones){
        ArrayList<Camion> Solucion = Camiones;
        ArrayList<Camion> SolucionVecina = new ArrayList();
        double gama = 0.0;
        Random random = new Random();    
        double poison = 0.0;

        for(double t=50000.0;t>10.0;t=0.99*t){
            for(int i=45;i>0;i--){
                SolucionVecina = getSolucionVecina(Grafico, Solucion);
       
                //System.out.println(""+getResultadoFuncionObjetivo(SolucionVecina)+"/"+getResultadoFuncionObjetivo(Solucion));
                if(getResultadoFuncionObjetivoConCarga(SolucionVecina)<getResultadoFuncionObjetivoConCarga(Solucion)){
               
                    Solucion = SolucionVecina;
                }else{
       
                    gama =  getResultadoFuncionObjetivoConCarga(SolucionVecina) - getResultadoFuncionObjetivoConCarga(Solucion);
                    poison = random.nextInt()%100;
                    
                    if(poison<0)
                        poison *= -1;
                    
                    if(poison/100<Math.exp(-gama/t)){
                        Solucion = SolucionVecina;
                    }
                }
            }
        }
        return Solucion;
    }