package optimizacion;

import operaciones.Matriz;

/**
 * <p>Title: Ejemplo de aplicacion de busquedas aleatorias</p>
 * <p>Description: minimiza una funcion utilizando
 * busqueda aleatoria y simulated annealing</p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: UMSNH</p>
 * @author Dr. Felix Calderon Solorio
 * @version 1.0
 */

public class ejemplo_02 extends aleatoria{

        /**
         * Clase principal
         * @param args String[]
         */

    public static void main(String[] args) {
        double r[][] = {{-2,2}, {-2,2}};

        ejemplo_02 aplica = new ejemplo_02(r, 100000);
        aplica.busqueda();
        aplica.SA(10000, 0.99);
    }

    /**
     * Constructor local
     * @param r double[][]
     * @param n int
     */

    ejemplo_02(double r[][], int n)
    {
        super(r, n);
    }

    /**
     * Funci�n a minimizar.
     * @param x double[]
     * @return double
     */

    public double funcion(double x[]) {
        double f, x1 = x[0], x2 = x[1];

        f = (x1 - 2.0) * (x1 - 2.0) * (x1 - 2.0) * (x1 - 2.0) +
            (x1 - 2.0) * (x1 - 2.0) * x2 * x2 +
            (x2 + 1) * (x2 + 1);

        return f;
    }
}
